diff --git a/.editorconfig b/.editorconfig index 8b92144453..8a5cf43521 100644 --- a/.editorconfig +++ b/.editorconfig @@ -127,6 +127,7 @@ csharp_indent_braces = false #csharp_indent_case_contents_when_block = true #csharp_indent_labels = one_less_than_current csharp_indent_switch_labels = true +xmldoc_indent_text = zeroindent # Space preferences csharp_space_after_cast = false diff --git a/.github/workflows/close-master-pr.yml b/.github/workflows/close-master-pr.yml index 51ce874dd0..42e512d556 100644 --- a/.github/workflows/close-master-pr.yml +++ b/.github/workflows/close-master-pr.yml @@ -12,7 +12,7 @@ jobs: steps: - uses: superbrothers/close-pull-request@v3 with: - comment: "Thank you for contributing to the Space Station 14 repository. Unfortunately, it looks like you submitted your pull request from the master branch. We suggest you follow [our git usage documentation](https://docs.spacestation14.com/en/general-development/setup/git-for-the-ss14-developer.html) \n\n You can move your current work from the master branch to another branch by doing `git branch >()); var jobIndex = _jobPrototypeIds.IndexOf(state.TargetIdJobPrototype); - // If the job index is < 0 that means they don't have a job registered in the station records. + // If the job index is < 0 that means they don't have a job registered in the station records + // or the IdCardComponent's JobPrototype field. // For example, a new ID from a box would have no job index. if (jobIndex < 0) { diff --git a/Content.Client/Actions/ActionsSystem.cs b/Content.Client/Actions/ActionsSystem.cs index 5f0a8e1f2f..0302739816 100644 --- a/Content.Client/Actions/ActionsSystem.cs +++ b/Content.Client/Actions/ActionsSystem.cs @@ -1,6 +1,7 @@ using System.IO; using System.Linq; using Content.Shared.Actions; +using Content.Shared.Charges.Systems; using JetBrains.Annotations; using Robust.Client.Player; using Robust.Shared.ContentPack; @@ -22,6 +23,7 @@ namespace Content.Client.Actions { public delegate void OnActionReplaced(EntityUid actionId); + [Dependency] private readonly SharedChargesSystem _sharedCharges = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IResourceManager _resources = default!; [Dependency] private readonly ISerializationManager _serialization = default!; @@ -51,29 +53,6 @@ namespace Content.Client.Actions SubscribeLocalEvent(OnEntityWorldTargetHandleState); } - public override void FrameUpdate(float frameTime) - { - base.FrameUpdate(frameTime); - - var worldActionQuery = EntityQueryEnumerator(); - while (worldActionQuery.MoveNext(out var uid, out var action)) - { - UpdateAction(uid, action); - } - - var instantActionQuery = EntityQueryEnumerator(); - while (instantActionQuery.MoveNext(out var uid, out var action)) - { - UpdateAction(uid, action); - } - - var entityActionQuery = EntityQueryEnumerator(); - while (entityActionQuery.MoveNext(out var uid, out var action)) - { - UpdateAction(uid, action); - } - } - private void OnInstantHandleState(EntityUid uid, InstantActionComponent component, ref ComponentHandleState args) { if (args.Current is not InstantActionComponentState state) @@ -127,9 +106,6 @@ namespace Content.Client.Actions component.Toggled = state.Toggled; component.Cooldown = state.Cooldown; component.UseDelay = state.UseDelay; - component.Charges = state.Charges; - component.MaxCharges = state.MaxCharges; - component.RenewCharges = state.RenewCharges; component.Container = EnsureEntity(state.Container, uid); component.EntityIcon = EnsureEntity(state.EntityIcon, uid); component.CheckCanInteract = state.CheckCanInteract; @@ -152,7 +128,8 @@ namespace Content.Client.Actions if (!ResolveActionData(actionId, ref action)) return; - action.IconColor = action.Charges < 1 ? action.DisabledIconColor : action.OriginalIconColor; + // TODO: Decouple this. + action.IconColor = _sharedCharges.GetCurrentCharges(actionId.Value) == 0 ? action.DisabledIconColor : action.OriginalIconColor; base.UpdateAction(actionId, action); if (_playerManager.LocalEntity != action.AttachedEntity) diff --git a/Content.Client/Administration/AdminNameOverlay.cs b/Content.Client/Administration/AdminNameOverlay.cs index c0f31f1e3d..0d424cbff0 100644 --- a/Content.Client/Administration/AdminNameOverlay.cs +++ b/Content.Client/Administration/AdminNameOverlay.cs @@ -6,6 +6,7 @@ using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.Ghost; using Content.Shared.Mind; +using Content.Shared.Roles; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; @@ -22,10 +23,11 @@ internal sealed class AdminNameOverlay : Overlay private readonly IEyeManager _eyeManager; private readonly EntityLookupSystem _entityLookup; private readonly IUserInterfaceManager _userInterfaceManager; + private readonly SharedRoleSystem _roles; private readonly Font _font; private readonly Font _fontBold; - private bool _overlayClassic; - private bool _overlaySymbols; + private AdminOverlayAntagFormat _overlayFormat; + private AdminOverlayAntagSymbolStyle _overlaySymbolStyle; private bool _overlayPlaytime; private bool _overlayStartingJob; private float _ghostFadeDistance; @@ -33,9 +35,10 @@ internal sealed class AdminNameOverlay : Overlay private int _overlayStackMax; private float _overlayMergeDistance; - //TODO make this adjustable via GUI + //TODO make this adjustable via GUI? private readonly ProtoId[] _filter = ["SoloAntagonist", "TeamAntagonist", "SiliconAntagonist", "FreeAgent"]; + private readonly string _antagLabelClassic = Loc.GetString("admin-overlay-antag-classic"); public AdminNameOverlay( @@ -45,20 +48,22 @@ internal sealed class AdminNameOverlay : Overlay IResourceCache resourceCache, EntityLookupSystem entityLookup, IUserInterfaceManager userInterfaceManager, - IConfigurationManager config) + IConfigurationManager config, + SharedRoleSystem roles) { _system = system; _entityManager = entityManager; _eyeManager = eyeManager; _entityLookup = entityLookup; _userInterfaceManager = userInterfaceManager; + _roles = roles; ZIndex = 200; // Setting these to a specific ttf would break the antag symbols _font = resourceCache.NotoStack(); _fontBold = resourceCache.NotoStack(variation: "Bold"); - config.OnValueChanged(CCVars.AdminOverlayClassic, (show) => { _overlayClassic = show; }, true); - config.OnValueChanged(CCVars.AdminOverlaySymbols, (show) => { _overlaySymbols = show; }, true); + config.OnValueChanged(CCVars.AdminOverlayAntagFormat, (show) => { _overlayFormat = UpdateOverlayFormat(show); }, true); + config.OnValueChanged(CCVars.AdminOverlaySymbolStyle, (show) => { _overlaySymbolStyle = UpdateOverlaySymbolStyle(show); }, true); config.OnValueChanged(CCVars.AdminOverlayPlaytime, (show) => { _overlayPlaytime = show; }, true); config.OnValueChanged(CCVars.AdminOverlayStartingJob, (show) => { _overlayStartingJob = show; }, true); config.OnValueChanged(CCVars.AdminOverlayGhostHideDistance, (f) => { _ghostHideDistance = f; }, true); @@ -67,6 +72,22 @@ internal sealed class AdminNameOverlay : Overlay config.OnValueChanged(CCVars.AdminOverlayMergeDistance, (f) => { _overlayMergeDistance = f; }, true); } + private AdminOverlayAntagFormat UpdateOverlayFormat(string formatString) + { + if (!Enum.TryParse(formatString, out var format)) + format = AdminOverlayAntagFormat.Binary; + + return format; + } + + private AdminOverlayAntagSymbolStyle UpdateOverlaySymbolStyle(string symbolString) + { + if (!Enum.TryParse(symbolString, out var symbolStyle)) + symbolStyle = AdminOverlayAntagSymbolStyle.Off; + + return symbolStyle; + } + public override OverlaySpace Space => OverlaySpace.ScreenSpace; protected override void Draw(in OverlayDrawArgs args) @@ -183,34 +204,56 @@ internal sealed class AdminNameOverlay : Overlay currentOffset += lineoffset; } - // Classic Antag Label - if (_overlayClassic && playerInfo.Antag) + // Determine antag symbol + string? symbol; + switch (_overlaySymbolStyle) { - var symbol = _overlaySymbols ? Loc.GetString("player-tab-antag-prefix") : string.Empty; - var label = _overlaySymbols - ? Loc.GetString("player-tab-character-name-antag-symbol", - ("symbol", symbol), - ("name", _antagLabelClassic)) - : _antagLabelClassic; - color = Color.OrangeRed; - color.A = alpha; - args.ScreenHandle.DrawString(_fontBold, screenCoordinates + currentOffset, label, uiScale, color); - currentOffset += lineoffset; + case AdminOverlayAntagSymbolStyle.Specific: + symbol = playerInfo.RoleProto.Symbol; + break; + case AdminOverlayAntagSymbolStyle.Basic: + symbol = Loc.GetString("player-tab-antag-prefix"); + break; + default: + case AdminOverlayAntagSymbolStyle.Off: + symbol = string.Empty; + break; } - // Role Type - else if (!_overlayClassic && _filter.Contains(playerInfo.RoleProto)) + + // Determine antag/role type name + string? text; + switch (_overlayFormat) { - var symbol = _overlaySymbols && playerInfo.Antag ? playerInfo.RoleProto.Symbol : string.Empty; - var role = Loc.GetString(playerInfo.RoleProto.Name).ToUpper(); - var label = _overlaySymbols - ? Loc.GetString("player-tab-character-name-antag-symbol", ("symbol", symbol), ("name", role)) - : role; - color = playerInfo.RoleProto.Color; - color.A = alpha; - args.ScreenHandle.DrawString(_fontBold, screenCoordinates + currentOffset, label, uiScale, color); - currentOffset += lineoffset; + case AdminOverlayAntagFormat.Roletype: + color = playerInfo.RoleProto.Color; + symbol = _filter.Contains(playerInfo.RoleProto) ? symbol : string.Empty; + text = _filter.Contains(playerInfo.RoleProto) + ? Loc.GetString(playerInfo.RoleProto.Name).ToUpper() + : string.Empty; + break; + case AdminOverlayAntagFormat.Subtype: + color = playerInfo.RoleProto.Color; + symbol = _filter.Contains(playerInfo.RoleProto) ? symbol : string.Empty; + text = _filter.Contains(playerInfo.RoleProto) + ? _roles.GetRoleSubtypeLabel(playerInfo.RoleProto.Name, playerInfo.Subtype).ToUpper() + : string.Empty; + break; + default: + case AdminOverlayAntagFormat.Binary: + color = Color.OrangeRed; + symbol = playerInfo.Antag ? symbol : string.Empty; + text = playerInfo.Antag ? _antagLabelClassic : string.Empty; + break; } + // Draw antag label + color.A = alpha; + var label = !string.IsNullOrEmpty(symbol) + ? Loc.GetString("player-tab-character-name-antag-symbol", ("symbol", symbol), ("name", text)) + : text; + args.ScreenHandle.DrawString(_fontBold, screenCoordinates + currentOffset, label, uiScale, color); + currentOffset += lineoffset; + //Save the coordinates and size of the text block, for stack merge check drawnOverlays.Add((screenCoordinatesCenter, currentOffset)); } diff --git a/Content.Client/Administration/OverlayOptions.cs b/Content.Client/Administration/OverlayOptions.cs new file mode 100644 index 0000000000..39195603bf --- /dev/null +++ b/Content.Client/Administration/OverlayOptions.cs @@ -0,0 +1,15 @@ +namespace Content.Client.Administration; + +public enum AdminOverlayAntagFormat +{ + Binary, + Roletype, + Subtype +} + +public enum AdminOverlayAntagSymbolStyle +{ + Off, + Basic, + Specific +} diff --git a/Content.Client/Administration/Systems/AdminSystem.Overlay.cs b/Content.Client/Administration/Systems/AdminSystem.Overlay.cs index ba56f4694f..a630df4521 100644 --- a/Content.Client/Administration/Systems/AdminSystem.Overlay.cs +++ b/Content.Client/Administration/Systems/AdminSystem.Overlay.cs @@ -1,4 +1,5 @@ using Content.Client.Administration.Managers; +using Content.Shared.Roles; using Robust.Client.Graphics; using Robust.Client.ResourceManagement; using Robust.Client.UserInterface; @@ -15,6 +16,7 @@ namespace Content.Client.Administration.Systems [Dependency] private readonly EntityLookupSystem _entityLookup = default!; [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!; [Dependency] private readonly IConfigurationManager _configurationManager = default!; + [Dependency] private readonly SharedRoleSystem _roles = default!; private AdminNameOverlay _adminNameOverlay = default!; @@ -30,7 +32,8 @@ namespace Content.Client.Administration.Systems _resourceCache, _entityLookup, _userInterfaceManager, - _configurationManager); + _configurationManager, + _roles); _adminManager.AdminStatusUpdated += OnAdminStatusUpdated; } @@ -46,7 +49,8 @@ namespace Content.Client.Administration.Systems public void AdminOverlayOn() { - if (_overlayManager.HasOverlay()) return; + if (_overlayManager.HasOverlay()) + return; _overlayManager.AddOverlay(_adminNameOverlay); OverlayEnabled?.Invoke(); } diff --git a/Content.Client/Administration/Systems/AdminVerbSystem.cs b/Content.Client/Administration/Systems/AdminVerbSystem.cs index dced59bbf2..1e15186706 100644 --- a/Content.Client/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Client/Administration/Systems/AdminVerbSystem.cs @@ -32,7 +32,7 @@ namespace Content.Client.Administration.Systems var verb = new VvVerb() { Text = Loc.GetString("view-variables"), - Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/vv.svg.192dpi.png")), + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/vv.svg.192dpi.png")), Act = () => _clientConsoleHost.ExecuteCommand($"vv {GetNetEntity(args.Target)}"), ClientExclusive = true // opening VV window is client-side. Don't ask server to run this verb. }; diff --git a/Content.Client/Administration/UI/AdminUIHelpers.cs b/Content.Client/Administration/UI/AdminUIHelpers.cs deleted file mode 100644 index 89ab33e931..0000000000 --- a/Content.Client/Administration/UI/AdminUIHelpers.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Threading; -using Content.Client.Stylesheets; -using Robust.Client.UserInterface.Controls; -using Timer = Robust.Shared.Timing.Timer; - -namespace Content.Client.Administration.UI; - -public static class AdminUIHelpers -{ - private static void ResetButton(Button button, ConfirmationData data) - { - data.Cancellation.Cancel(); - button.ModulateSelfOverride = null; - button.Text = data.OriginalText; - } - - public static bool RemoveConfirm(Button button, Dictionary confirmations) - { - if (confirmations.Remove(button, out var data)) - { - ResetButton(button, data); - return true; - } - - return false; - } - - public static void RemoveAllConfirms(Dictionary confirmations) - { - foreach (var (button, confirmation) in confirmations) - { - ResetButton(button, confirmation); - } - - confirmations.Clear(); - } - - public static bool TryConfirm(Button button, Dictionary confirmations) - { - if (RemoveConfirm(button, confirmations)) - return true; - - var data = new ConfirmationData(new CancellationTokenSource(), button.Text); - confirmations[button] = data; - - Timer.Spawn(TimeSpan.FromSeconds(5), () => - { - confirmations.Remove(button); - button.ModulateSelfOverride = null; - button.Text = data.OriginalText; - }, data.Cancellation.Token); - - button.ModulateSelfOverride = StyleNano.ButtonColorCautionDefault; - button.Text = Loc.GetString("admin-player-actions-confirm"); - return false; - } -} - -public readonly record struct ConfirmationData(CancellationTokenSource Cancellation, string? OriginalText); diff --git a/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml b/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml index d53101f68e..2c27fdd2ce 100644 --- a/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml +++ b/Content.Client/Administration/UI/Bwoink/BwoinkControl.xaml @@ -1,6 +1,7 @@  + xmlns:cc="clr-namespace:Content.Client.Administration.UI.CustomControls" + xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls"> @@ -18,9 +19,9 @@ - - - - - - - - + + + + + + + - - + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs b/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs new file mode 100644 index 0000000000..99b9de4a7d --- /dev/null +++ b/Content.Client/_CP14/ResearchTable/CP14ResearchRecipeControl.xaml.cs @@ -0,0 +1,60 @@ +using Content.Shared._CP14.Skill; +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Client.AutoGenerated; +using Robust.Client.GameObjects; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; + +namespace Content.Client._CP14.ResearchTable; + +[GenerateTypedNameReferences] +public sealed partial class CP14ResearchRecipeControl : Control +{ + [Dependency] private readonly IEntityManager _entity = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + + public event Action? OnResearch; + + private readonly SpriteSystem _sprite; + private readonly CP14SharedSkillSystem _skillSystem; + + private readonly CP14SkillPrototype _skillPrototype; + private readonly bool _craftable; + + public CP14ResearchRecipeControl(CP14ResearchUiEntry entry) + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + _sprite = _entity.System(); + _skillSystem = _entity.System(); + + _skillPrototype = _prototype.Index(entry.ProtoId); + _craftable = entry.Craftable; + + Button.OnPressed += _ => OnResearch?.Invoke(entry, _skillPrototype); + + UpdateColor(); + UpdateName(); + UpdateView(); + } + + private void UpdateColor() + { + if (_craftable) + return; + + Button.ModulateSelfOverride = Color.FromHex("#302622"); + } + + private void UpdateName() + { + Name.Text = $"{Loc.GetString(_skillSystem.GetSkillName(_skillPrototype))}" ; + } + + private void UpdateView() + { + View.Texture =_sprite.Frame0(_skillPrototype.Icon); + } +} diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs b/Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs new file mode 100644 index 0000000000..119e5d6063 --- /dev/null +++ b/Content.Client/_CP14/ResearchTable/CP14ResearchTableBoundUserInterface.cs @@ -0,0 +1,34 @@ +using Content.Shared._CP14.Skill; +using Robust.Client.UserInterface; + +namespace Content.Client._CP14.ResearchTable; + +public sealed class CP14ResearchTableBoundUserInterface : BoundUserInterface +{ + private CP14ResearchTableWindow? _window; + + public CP14ResearchTableBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey) + { + } + + protected override void Open() + { + base.Open(); + + _window = this.CreateWindow(); + + _window.OnResearch += entry => SendMessage(new CP14ResearchMessage(entry.ProtoId)); + } + + protected override void UpdateState(BoundUserInterfaceState state) + { + base.UpdateState(state); + + switch (state) + { + case CP14ResearchTableUiState recipesState: + _window?.UpdateState(recipesState); + break; + } + } +} diff --git a/Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml b/Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml new file mode 100644 index 0000000000..59a2e789bb --- /dev/null +++ b/Content.Client/_CP14/ResearchTable/CP14ResearchTableWindow.xaml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -67,7 +70,7 @@ - + @@ -75,12 +78,8 @@ - - - - - + diff --git a/Content.Client/_CP14/Workbench/CP14WorkbenchRecipeControl.xaml.cs b/Content.Client/_CP14/Workbench/CP14WorkbenchRecipeControl.xaml.cs index 8adf468ace..ec35e29b35 100644 --- a/Content.Client/_CP14/Workbench/CP14WorkbenchRecipeControl.xaml.cs +++ b/Content.Client/_CP14/Workbench/CP14WorkbenchRecipeControl.xaml.cs @@ -4,6 +4,7 @@ */ using Content.Shared._CP14.Workbench; +using Content.Shared._CP14.Workbench.Prototypes; using Robust.Client.AutoGenerated; using Robust.Client.GameObjects; using Robust.Client.UserInterface; @@ -13,37 +14,52 @@ using Robust.Shared.Prototypes; namespace Content.Client._CP14.Workbench; [GenerateTypedNameReferences] -public sealed partial class CP14WorkbenchRequirementControl : Control +public sealed partial class CP14WorkbenchRecipeControl : Control { [Dependency] private readonly IEntityManager _entity = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly IPrototypeManager _prototype = default!; + + public event Action? OnSelect; private readonly SpriteSystem _sprite; - public CP14WorkbenchRequirementControl() + private readonly CP14WorkbenchRecipePrototype _recipePrototype; + private readonly bool _craftable; + + public CP14WorkbenchRecipeControl(CP14WorkbenchUiRecipesEntry entry) { RobustXamlLoader.Load(this); IoCManager.InjectDependencies(this); _sprite = _entity.System(); + + _recipePrototype = _prototype.Index(entry.ProtoId); + _craftable = entry.Craftable; + + Button.OnPressed += _ => OnSelect?.Invoke(entry, _recipePrototype); + + UpdateColor(); + UpdateName(); + UpdateView(); } - public CP14WorkbenchRequirementControl(CP14WorkbenchCraftRequirement requirement) : this() + private void UpdateColor() { - Name.Text = requirement.GetRequirementTitle(_proto); + if (_craftable) + return; - var texture = requirement.GetRequirementTexture(_proto); - if (texture is not null) - { - View.Visible = true; - View.Texture = _sprite.Frame0(texture); - } + Button.ModulateSelfOverride = Color.FromHex("#302622"); + } - var entityView = requirement.GetRequirementEntityView(_proto); - if (entityView is not null) - { - EntityView.Visible = true; - EntityView.SetPrototype(entityView); - } + private void UpdateName() + { + var result = _prototype.Index(_recipePrototype.Result); + var counter = _recipePrototype.ResultCount > 1 ? $" x{_recipePrototype.ResultCount}" : ""; + Name.Text = $"{Loc.GetString(result.Name)} {counter}" ; + } + + private void UpdateView() + { + View.SetPrototype(_recipePrototype.Result); } } diff --git a/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.cs b/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.cs new file mode 100644 index 0000000000..8adf468ace --- /dev/null +++ b/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.cs @@ -0,0 +1,49 @@ +/* + * This file is sublicensed under MIT License + * https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT + */ + +using Content.Shared._CP14.Workbench; +using Robust.Client.AutoGenerated; +using Robust.Client.GameObjects; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Prototypes; + +namespace Content.Client._CP14.Workbench; + +[GenerateTypedNameReferences] +public sealed partial class CP14WorkbenchRequirementControl : Control +{ + [Dependency] private readonly IEntityManager _entity = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + + private readonly SpriteSystem _sprite; + + public CP14WorkbenchRequirementControl() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + _sprite = _entity.System(); + } + + public CP14WorkbenchRequirementControl(CP14WorkbenchCraftRequirement requirement) : this() + { + Name.Text = requirement.GetRequirementTitle(_proto); + + var texture = requirement.GetRequirementTexture(_proto); + if (texture is not null) + { + View.Visible = true; + View.Texture = _sprite.Frame0(texture); + } + + var entityView = requirement.GetRequirementEntityView(_proto); + if (entityView is not null) + { + EntityView.Visible = true; + EntityView.SetPrototype(entityView); + } + } +} diff --git a/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.xaml.cs b/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.xaml.cs deleted file mode 100644 index ec35e29b35..0000000000 --- a/Content.Client/_CP14/Workbench/CP14WorkbenchRequirementControl.xaml.cs +++ /dev/null @@ -1,65 +0,0 @@ -/* - * This file is sublicensed under MIT License - * https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT - */ - -using Content.Shared._CP14.Workbench; -using Content.Shared._CP14.Workbench.Prototypes; -using Robust.Client.AutoGenerated; -using Robust.Client.GameObjects; -using Robust.Client.UserInterface; -using Robust.Client.UserInterface.XAML; -using Robust.Shared.Prototypes; - -namespace Content.Client._CP14.Workbench; - -[GenerateTypedNameReferences] -public sealed partial class CP14WorkbenchRecipeControl : Control -{ - [Dependency] private readonly IEntityManager _entity = default!; - [Dependency] private readonly IPrototypeManager _prototype = default!; - - public event Action? OnSelect; - - private readonly SpriteSystem _sprite; - - private readonly CP14WorkbenchRecipePrototype _recipePrototype; - private readonly bool _craftable; - - public CP14WorkbenchRecipeControl(CP14WorkbenchUiRecipesEntry entry) - { - RobustXamlLoader.Load(this); - IoCManager.InjectDependencies(this); - - _sprite = _entity.System(); - - _recipePrototype = _prototype.Index(entry.ProtoId); - _craftable = entry.Craftable; - - Button.OnPressed += _ => OnSelect?.Invoke(entry, _recipePrototype); - - UpdateColor(); - UpdateName(); - UpdateView(); - } - - private void UpdateColor() - { - if (_craftable) - return; - - Button.ModulateSelfOverride = Color.FromHex("#302622"); - } - - private void UpdateName() - { - var result = _prototype.Index(_recipePrototype.Result); - var counter = _recipePrototype.ResultCount > 1 ? $" x{_recipePrototype.ResultCount}" : ""; - Name.Text = $"{Loc.GetString(result.Name)} {counter}" ; - } - - private void UpdateView() - { - View.SetPrototype(_recipePrototype.Result); - } -} diff --git a/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml b/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml index 619d3c8436..edaffe0a33 100644 --- a/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml +++ b/Content.Client/_CP14/Workbench/CP14WorkbenchWindow.xaml @@ -35,9 +35,9 @@ diff --git a/Content.Client/_CP14/WorldSprite/CP14WorldSpriteComponent.cs b/Content.Client/_CP14/WorldSprite/CP14WorldSpriteComponent.cs deleted file mode 100644 index 135f27591b..0000000000 --- a/Content.Client/_CP14/WorldSprite/CP14WorldSpriteComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Content.Client._CP14.WorldSprite; - -/// -/// RUN, IF YOU SEE THE CODE TO THIS FUCKING THING, YOU'LL DIE ON THE SPOT. -/// -[RegisterComponent] -public sealed partial class CP14WorldSpriteComponent : Component -{ - public bool Inited; -} diff --git a/Content.Client/_CP14/WorldSprite/CP14WorldSpriteSystem.cs b/Content.Client/_CP14/WorldSprite/CP14WorldSpriteSystem.cs deleted file mode 100644 index e995ab7a93..0000000000 --- a/Content.Client/_CP14/WorldSprite/CP14WorldSpriteSystem.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Content.Shared._CP14.WorldSprite; -using Content.Shared.Throwing; -using Robust.Client.GameObjects; -using Robust.Shared.Map.Components; - -namespace Content.Client._CP14.WorldSprite; - -public sealed class CP14WorldSpriteSystem : EntitySystem -{ - [Dependency] private readonly AppearanceSystem _appearance = default!; - - public override void Initialize() - { - base.Initialize(); - -#if DEBUG - SubscribeLocalEvent(OnComponentInit); -#endif - - SubscribeLocalEvent(OnParentChanged); - SubscribeLocalEvent(OnThrown); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var worldSpriteComponent)) - { - if (worldSpriteComponent.Inited) - continue; - - Update(uid); - } - } - -#if DEBUG - private void OnComponentInit(Entity entity, ref ComponentInit args) - { - if (!HasComp(entity)) - Log.Error($"Requires an {nameof(AppearanceComponent)} for {entity}"); - } -#endif - - private void OnParentChanged(Entity entity, ref EntParentChangedMessage args) - { - Update(entity); - } - - private void OnThrown(Entity entity, ref ThrownEvent args) - { - // Idk, but throw don't call reparent - Update(entity, args.User); - } - - private void Update(EntityUid entity, EntityUid? parent = null) - { - parent ??= Transform(entity).ParentUid; - - var inWorld = HasComp(parent) || HasComp(parent); - - _appearance.SetData(entity, WorldSpriteVisualLayers.Layer, inWorld); - } -} diff --git a/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs b/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs index b37f7cfa46..fdc0e1a4d4 100644 --- a/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs +++ b/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTest.cs @@ -1,12 +1,10 @@ using System.Numerics; -using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Shared.DeviceNetwork; using Robust.Shared.GameObjects; -using Robust.Shared.IoC; using Robust.Shared.Map; -using Robust.Shared.Map.Components; +using Content.Shared.DeviceNetwork.Components; namespace Content.IntegrationTests.Tests.DeviceNetwork { diff --git a/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTestSystem.cs b/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTestSystem.cs index 400d85f2cc..c314f41234 100644 --- a/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTestSystem.cs +++ b/Content.IntegrationTests/Tests/DeviceNetwork/DeviceNetworkTestSystem.cs @@ -1,31 +1,30 @@ -using Content.Server.DeviceNetwork.Components; -using Content.Server.DeviceNetwork.Systems; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Robust.Shared.GameObjects; using Robust.Shared.Reflection; +using Content.Shared.DeviceNetwork.Components; -namespace Content.IntegrationTests.Tests.DeviceNetwork +namespace Content.IntegrationTests.Tests.DeviceNetwork; + +[Reflect(false)] +public sealed class DeviceNetworkTestSystem : EntitySystem { - [Reflect(false)] - public sealed class DeviceNetworkTestSystem : EntitySystem + public NetworkPayload LastPayload = default; + + public override void Initialize() { - public NetworkPayload LastPayload = default; + base.Initialize(); - public override void Initialize() - { - base.Initialize(); + SubscribeLocalEvent(OnPacketReceived); + } - SubscribeLocalEvent(OnPacketReceived); - } + public void SendBaselineTestEvent(EntityUid uid) + { + RaiseLocalEvent(uid, new DeviceNetworkPacketEvent(0, "", 0, "", uid, new NetworkPayload())); + } - public void SendBaselineTestEvent(EntityUid uid) - { - RaiseLocalEvent(uid, new DeviceNetworkPacketEvent(0, "", 0, "", uid, new NetworkPayload())); - } - - private void OnPacketReceived(EntityUid uid, DeviceNetworkComponent component, DeviceNetworkPacketEvent args) - { - LastPayload = args.Data; - } + private void OnPacketReceived(EntityUid uid, DeviceNetworkComponent component, DeviceNetworkPacketEvent args) + { + LastPayload = args.Data; } } diff --git a/Content.IntegrationTests/Tests/Disposal/DisposalUnitTest.cs b/Content.IntegrationTests/Tests/Disposal/DisposalUnitTest.cs index a07bbe2957..dd541763ec 100644 --- a/Content.IntegrationTests/Tests/Disposal/DisposalUnitTest.cs +++ b/Content.IntegrationTests/Tests/Disposal/DisposalUnitTest.cs @@ -1,13 +1,12 @@ #nullable enable annotations using System.Linq; using System.Numerics; -using Content.Server.Disposal.Tube.Components; -using Content.Server.Disposal.Unit.Components; -using Content.Server.Disposal.Unit.EntitySystems; +using Content.Server.Disposal.Unit; using Content.Server.Power.Components; -using Content.Shared.Disposal; +using Content.Server.Power.EntitySystems; using Content.Shared.Disposal.Components; -using NUnit.Framework; +using Content.Shared.Disposal.Tube; +using Content.Shared.Disposal.Unit; using Robust.Shared.GameObjects; using Robust.Shared.Reflection; @@ -30,7 +29,6 @@ namespace Content.IntegrationTests.Tests.Disposal { var (_, toInsert, unit) = ev; var insertTransform = EntityManager.GetComponent(toInsert); - var unitTransform = EntityManager.GetComponent(unit); // Not in a tube yet Assert.That(insertTransform.ParentUid, Is.EqualTo(unit)); }, after: new[] { typeof(SharedDisposalUnitSystem) }); @@ -163,6 +161,8 @@ namespace Content.IntegrationTests.Tests.Disposal var entityManager = server.ResolveDependency(); var xformSystem = entityManager.System(); var disposalSystem = entityManager.System(); + var power = entityManager.System(); + await server.WaitAssertion(() => { // Spawn the entities @@ -191,7 +191,7 @@ namespace Content.IntegrationTests.Tests.Disposal xformSystem.AnchorEntity(unitUid, entityManager.GetComponent(unitUid)); // No power - Assert.That(unitComponent.Powered, Is.False); + Assert.That(power.IsPowered(unitUid), Is.False); // Can't insert the trunk or the unit into itself UnitInsertContains(unitUid, unitComponent, false, disposalSystem, disposalUnit, disposalTrunk); @@ -227,9 +227,9 @@ namespace Content.IntegrationTests.Tests.Disposal await server.WaitAssertion(() => { // Remove power need - Assert.That(entityManager.TryGetComponent(disposalUnit, out ApcPowerReceiverComponent power)); - power!.NeedsPower = false; - unitComponent.Powered = true; //Power state changed event doesn't get fired smh + Assert.That(entityManager.TryGetComponent(disposalUnit, out ApcPowerReceiverComponent powerComp)); + power.SetNeedsPower(disposalUnit, false); + powerComp.Powered = true; // Flush with a mob and an item Flush(disposalUnit, unitComponent, true, disposalSystem, human, wrench); diff --git a/Content.IntegrationTests/Tests/EntityTest.cs b/Content.IntegrationTests/Tests/EntityTest.cs index ebe2dcf5f5..d951fcaf9a 100644 --- a/Content.IntegrationTests/Tests/EntityTest.cs +++ b/Content.IntegrationTests/Tests/EntityTest.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using System.Numerics; +using System.Text; using Robust.Shared; using Robust.Shared.Audio.Components; using Robust.Shared.Configuration; @@ -9,6 +10,7 @@ using Robust.Shared.Log; using Robust.Shared.Map; using Robust.Shared.Maths; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.Manager.Attributes; namespace Content.IntegrationTests.Tests { @@ -273,70 +275,103 @@ namespace Content.IntegrationTests.Tests // We consider only non-audio entities, as some entities will just play sounds when they spawn. int Count(IEntityManager ent) => ent.EntityCount - ent.Count(); + IEnumerable Entities(IEntityManager entMan) => entMan.GetEntities().Where(entMan.HasComponent); - foreach (var protoId in protoIds) + await Assert.MultipleAsync(async () => { - // TODO fix ninja - // Currently ninja fails to equip their own loadout. - if (protoId == "MobHumanSpaceNinja") - continue; - - var count = Count(server.EntMan); - var clientCount = Count(client.EntMan); - 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)) + foreach (var protoId in protoIds) { - if (Count(server.EntMan) != count) + var count = Count(server.EntMan); + var clientCount = Count(client.EntMan); + var serverEntities = new HashSet(Entities(server.EntMan)); + var clientEntities = new HashSet(Entities(client.EntMan)); + 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)) { - Assert.Fail($"Server prototype {protoId} failed on deleting itself"); + Assert.That(Count(server.EntMan), Is.EqualTo(count), $"Server prototype {protoId} failed on deleting itself\n" + + BuildDiffString(serverEntities, Entities(server.EntMan), server.EntMan)); + Assert.That(Count(client.EntMan), Is.EqualTo(clientCount), $"Client prototype {protoId} failed on deleting itself\n" + + $"Expected {clientCount} and found {client.EntMan.EntityCount}.\n" + + $"Server count was {count}.\n" + + BuildDiffString(clientEntities, Entities(client.EntMan), client.EntMan)); + continue; } - if (Count(client.EntMan) != clientCount) - { - Assert.Fail($"Client prototype {protoId} failed on deleting itself\n" + - $"Expected {clientCount} and found {Count(client.EntMan)}.\n" + - $"Server was {count}."); - } - continue; - } + // Check that the number of entities has increased. + Assert.That(Count(server.EntMan), Is.GreaterThan(count), $"Server prototype {protoId} failed on spawning as entity count didn't increase\n" + + BuildDiffString(serverEntities, Entities(server.EntMan), server.EntMan)); + Assert.That(Count(client.EntMan), Is.GreaterThan(clientCount), $"Client prototype {protoId} failed on spawning as entity count didn't increase\n" + + $"Expected at least {clientCount} and found {client.EntMan.EntityCount}. " + + $"Server count was {count}.\n" + + BuildDiffString(clientEntities, Entities(client.EntMan), client.EntMan)); - // Check that the number of entities has increased. - if (Count(server.EntMan) <= count) - { - Assert.Fail($"Server prototype {protoId} failed on spawning as entity count didn't increase"); - } + await server.WaitPost(() => server.EntMan.DeleteEntity(uid)); + await pair.RunTicksSync(3); - if (Count(client.EntMan) <= clientCount) - { - Assert.Fail($"Client prototype {protoId} failed on spawning as entity count didn't increase" + - $"Expected at least {clientCount} and found {Count(client.EntMan)}. " + - $"Server was {count}"); + // Check that the number of entities has gone back to the original value. + Assert.That(Count(server.EntMan), Is.EqualTo(count), $"Server prototype {protoId} failed on deletion: count didn't reset properly\n" + + BuildDiffString(serverEntities, Entities(server.EntMan), server.EntMan)); + Assert.That(client.EntMan.EntityCount, Is.EqualTo(clientCount), $"Client prototype {protoId} failed on deletion: count didn't reset properly:\n" + + $"Expected {clientCount} and found {client.EntMan.EntityCount}.\n" + + $"Server count was {count}.\n" + + BuildDiffString(clientEntities, Entities(client.EntMan), client.EntMan)); } - - 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 (Count(server.EntMan) != count) - { - Assert.Fail($"Server prototype {protoId} failed on deletion count didn't reset properly"); - } - - if (Count(client.EntMan) != clientCount) - { - Assert.Fail($"Client prototype {protoId} failed on deletion count didn't reset properly:\n" + - $"Expected {clientCount} and found {Count(client.EntMan)}.\n" + - $"Server was {count}."); - } - } + }); await pair.CleanReturnAsync(); } + private static string BuildDiffString(IEnumerable oldEnts, IEnumerable newEnts, IEntityManager entMan) + { + var sb = new StringBuilder(); + var addedEnts = newEnts.Except(oldEnts); + var removedEnts = oldEnts.Except(newEnts); + if (addedEnts.Any()) + sb.AppendLine("Listing new entities:"); + foreach (var addedEnt in addedEnts) + { + sb.AppendLine(entMan.ToPrettyString(addedEnt)); + } + if (removedEnts.Any()) + sb.AppendLine("Listing removed entities:"); + foreach (var removedEnt in removedEnts) + { + sb.AppendLine("\t" + entMan.ToPrettyString(removedEnt)); + } + return sb.ToString(); + } + + private static bool HasRequiredDataField(Component component) + { + foreach (var field in component.GetType().GetFields()) + { + foreach (var attribute in field.GetCustomAttributes(true)) + { + if (attribute is not DataFieldAttribute dataField) + continue; + + if (dataField.Required) + return true; + } + } + foreach (var property in component.GetType().GetProperties()) + { + foreach (var attribute in property.GetCustomAttributes(true)) + { + if (attribute is not DataFieldAttribute dataField) + continue; + + if (dataField.Required) + return true; + } + } + return false; + } + [Test] public async Task AllComponentsOneToOneDeleteTest() { @@ -363,9 +398,6 @@ namespace Content.IntegrationTests.Tests "ActivatableUI", // Requires enum key }; - // TODO TESTS - // auto ignore any components that have a "required" data field. - await using var pair = await PoolManager.GetServerClient(); var server = pair.Server; var entityManager = server.ResolveDependency(); @@ -383,9 +415,12 @@ namespace Content.IntegrationTests.Tests foreach (var type in componentFactory.AllRegisteredTypes) { - var component = (Component) componentFactory.GetComponent(type); + var component = (Component)componentFactory.GetComponent(type); var name = componentFactory.GetComponentName(type); + if (HasRequiredDataField(component)) + continue; + // If this component is ignored if (skipComponents.Contains(name)) { diff --git a/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs b/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs index 3109df890a..b9a02339fb 100644 --- a/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs +++ b/Content.IntegrationTests/Tests/GameRules/FailAndStartPresetTest.cs @@ -85,7 +85,7 @@ public sealed class FailAndStartPresetTest Assert.That(ticker.PlayerGameStatuses[client.User!.Value], Is.EqualTo(PlayerGameStatus.NotReadyToPlay)); // Try to start nukeops without readying up - await pair.WaitCommand("setgamepreset TestPresetTenPlayers"); + await pair.WaitCommand("setgamepreset TestPresetTenPlayers 9999"); await pair.WaitCommand("startround"); await pair.RunTicksSync(10); @@ -99,7 +99,7 @@ public sealed class FailAndStartPresetTest // Ready up and start nukeops await pair.WaitClientCommand("toggleready True"); Assert.That(ticker.PlayerGameStatuses[client.User!.Value], Is.EqualTo(PlayerGameStatus.ReadyToPlay)); - await pair.WaitCommand("setgamepreset TestPreset"); + await pair.WaitCommand("setgamepreset TestPreset 9999"); await pair.WaitCommand("startround"); await pair.RunTicksSync(10); diff --git a/Content.IntegrationTests/Tests/Localization/LocalizedDatasetPrototypeTest.cs b/Content.IntegrationTests/Tests/Localization/LocalizedDatasetPrototypeTest.cs index 8d272545ce..05f98c3d19 100644 --- a/Content.IntegrationTests/Tests/Localization/LocalizedDatasetPrototypeTest.cs +++ b/Content.IntegrationTests/Tests/Localization/LocalizedDatasetPrototypeTest.cs @@ -30,6 +30,10 @@ public sealed class LocalizedDatasetPrototypeTest // Make sure the localization manager has a string for the LocId Assert.That(localizationMan.HasString(locId), $"LocalizedDataset {proto.ID} with prefix \"{proto.Values.Prefix}\" specifies {proto.Values.Count} entries, but no localized string was found matching {locId}!"); } + + // Check that count isn't set too low + var nextId = proto.Values.Prefix + (proto.Values.Count + 1); + Assert.That(localizationMan.HasString(nextId), Is.False, $"LocalizedDataset {proto.ID} with prefix \"{proto.Values.Prefix}\" specifies {proto.Values.Count} entries, but a localized string exists with ID {nextId}! Does count need to be raised?"); } }); diff --git a/Content.IntegrationTests/Tests/MaterialArbitrageTest.cs b/Content.IntegrationTests/Tests/MaterialArbitrageTest.cs index e6422f0ec4..2bf6c2bb32 100644 --- a/Content.IntegrationTests/Tests/MaterialArbitrageTest.cs +++ b/Content.IntegrationTests/Tests/MaterialArbitrageTest.cs @@ -1,12 +1,13 @@ +#nullable enable using System.Collections.Generic; using Content.Server.Cargo.Systems; using Content.Server.Construction.Completions; using Content.Server.Construction.Components; using Content.Server.Destructible; using Content.Server.Destructible.Thresholds.Behaviors; +using Content.Server.Lathe; using Content.Server.Stack; using Content.Shared.Chemistry.Reagent; -using Content.Shared.Construction.Components; using Content.Shared.Construction.Prototypes; using Content.Shared.Construction.Steps; using Content.Shared.FixedPoint; @@ -14,10 +15,9 @@ using Content.Shared.Lathe; using Content.Shared.Materials; using Content.Shared.Research.Prototypes; using Content.Shared.Stacks; +using Content.Shared.Tools.Components; using Robust.Shared.GameObjects; -using Robust.Shared.Map; using Robust.Shared.Prototypes; -using Robust.Shared.Utility; namespace Content.IntegrationTests.Tests; @@ -28,6 +28,21 @@ namespace Content.IntegrationTests.Tests; [TestFixture] public sealed class MaterialArbitrageTest { + // These recipes are currently broken and need fixing. You should not be adding to these sets. + private readonly HashSet _destructionArbitrageIgnore = + [ + "BaseChemistryEmptyVial", "DrinkShotGlass", "SodiumLightTube", "DrinkGlassCoupeShaped", + "LedLightBulb", "ExteriorLightTube", "LightTube", "DrinkGlass", "DimLightBulb", "LightBulb", "LedLightTube", + "SheetRGlass1", "ChemistryEmptyBottle01", "WarmLightBulb", + ]; + + private readonly HashSet _compositionArbitrageIgnore = + [ + "FoodPlateSmall", "AirTank", "FoodPlateTin", "FoodPlateMuffinTin", "WeaponCapacitorRechargerCircuitboard", + "WeaponCapacitorRechargerCircuitboard", "BorgChargerCircuitboard", "BorgChargerCircuitboard", "FoodPlate", + "CellRechargerCircuitboard", "CellRechargerCircuitboard", + ]; + [Test] public async Task NoMaterialArbitrage() { @@ -38,13 +53,12 @@ public sealed class MaterialArbitrageTest await server.WaitIdleAsync(); var entManager = server.ResolveDependency(); - var mapManager = server.ResolveDependency(); var protoManager = server.ResolveDependency(); var pricing = entManager.System(); var stackSys = entManager.System(); var mapSystem = server.System(); - var latheSys = server.System(); + var latheSys = server.System(); var compFact = server.ResolveDependency(); Assert.That(mapSystem.IsInitialized(testMap.MapId)); @@ -53,13 +67,24 @@ public sealed class MaterialArbitrageTest var compositionName = compFact.GetComponentName(typeof(PhysicalCompositionComponent)); var materialName = compFact.GetComponentName(typeof(MaterialComponent)); var destructibleName = compFact.GetComponentName(typeof(DestructibleComponent)); + var refinableName = compFact.GetComponentName(typeof(ToolRefinableComponent)); // get the inverted lathe recipe dictionary var latheRecipes = latheSys.InverseRecipes; - // Lets assume the possible lathe for resource multipliers: - // TODO: each recipe can technically have its own cost multiplier associated with it, so this test needs redone to factor that in. - var multiplier = MathF.Pow(0.85f, 3); + // Find the lowest multiplier / optimal lathe that can be used to construct a recipie. + var minMultiplier = new Dictionary, float>(); + + foreach (var (_, lathe) in pair.GetPrototypesWithComponent()) + { + foreach (var recipe in latheSys.GetAllPossibleRecipes(lathe)) + { + if (!minMultiplier.TryGetValue(recipe, out var min)) + min = 1; + + minMultiplier[recipe] = Math.Min(min, lathe.MaterialUseMultiplier); + } + } // create construction dictionary Dictionary constructionRecipes = new(); @@ -122,6 +147,65 @@ public sealed class MaterialArbitrageTest Dictionary Ents, Dictionary Mats)> spawnedOnDestroy = new(); + // cache the compositions of entities + // If the entity is refineable (i.e. glass shared can be turned into glass, we take the greater of the two compositions. + Dictionary> compositions = new(); + foreach (var proto in protoManager.EnumeratePrototypes()) + { + Dictionary? baseComposition = null; + + if (proto.Components.ContainsKey(materialName) + && proto.Components.TryGetValue(compositionName, out var compositionReg)) + { + var compositionComp = (PhysicalCompositionComponent)compositionReg.Component; + baseComposition = compositionComp.MaterialComposition; + + } + + if (!proto.Components.TryGetValue(refinableName, out var refinableReg)) + { + if (baseComposition != null) + compositions[proto.ID] = new(baseComposition); + continue; + } + + var composition = new Dictionary(); + compositions.Add(proto.ID, composition); + + var refinable = (ToolRefinableComponent)refinableReg.Component; + foreach (var refineResult in refinable.RefineResult) + { + if (refineResult.PrototypeId == null) + continue; + + var refineProto = protoManager.Index(refineResult.PrototypeId.Value); + if (!refineProto.Components.ContainsKey(materialName)) + continue; + + if (!refineProto.Components.TryGetValue(compositionName, out var refinedCompositionReg)) + continue; + + var refinedCompositionComp = (PhysicalCompositionComponent)refinedCompositionReg.Component; + + // This assumes refine results do not have complex spawn behaviours like exclusive groups. + var quantity = refineResult.MaxAmount; + + foreach (var (matId, amount) in refinedCompositionComp.MaterialComposition) + { + composition[matId] = quantity * amount + composition.GetValueOrDefault(matId); + } + } + + if (baseComposition == null) + continue; + + // If the un-refined material quantity is greater than the refined quantity, we use that instead. + foreach (var (matId, amount) in baseComposition) + { + composition[matId] = Math.Max(amount, composition.GetValueOrDefault(matId)); + } + } + // Here we get the set of entities/materials spawned when destroying an entity. foreach (var proto in protoManager.EnumeratePrototypes()) { @@ -151,16 +235,10 @@ public sealed class MaterialArbitrageTest { spawnedEnts[key] = spawnedEnts.GetValueOrDefault(key) + value.Max; - var spawnProto = protoManager.Index(key); - - // get the amount of each material included in the entity - - if (!spawnProto.Components.ContainsKey(materialName) || - !spawnProto.Components.TryGetValue(compositionName, out var compositionReg)) + if (!compositions.TryGetValue(key, out var composition)) continue; - var mat = (PhysicalCompositionComponent) compositionReg.Component; - foreach (var (matId, amount) in mat.MaterialComposition) + foreach (var (matId, amount) in composition) { spawnedMats[matId] = value.Max * amount + spawnedMats.GetValueOrDefault(matId); } @@ -173,10 +251,13 @@ public sealed class MaterialArbitrageTest } // This is the main loop where we actually check for destruction arbitrage - Assert.Multiple(async () => + await Assert.MultipleAsync(async () => { foreach (var (id, (spawnedEnts, spawnedMats)) in spawnedOnDestroy) { + if (_destructionArbitrageIgnore.Contains(id)) + continue; + // Check cargo sell price // several constructible entities have no sell price // also this test only really matters if the entity is also purchaseable.... eh.. @@ -190,6 +271,11 @@ public sealed class MaterialArbitrageTest { foreach (var recipe in recipes) { + if (!minMultiplier.TryGetValue(recipe, out var multiplier)) + { + server.Log.Info($"Unused lathe recipe? {recipe.ID}?"); + continue; + } foreach (var (matId, amount) in recipe.Materials) { var actualAmount = SharedLatheSystem.AdjustMaterial(amount, recipe.ApplyMaterialDiscount, multiplier); @@ -231,6 +317,9 @@ public sealed class MaterialArbitrageTest var edge = cur.GetEdge(node.Name); cur = node; + if (edge == null) + continue; + foreach (var completion in edge.Completed) { if (completion is not SpawnPrototype spawnCompletion) @@ -253,9 +342,9 @@ public sealed class MaterialArbitrageTest } // This is functionally the same loop as before, but now testing deconstruction rather than destruction. - // This is pretty braindead. In principle construction graphs can have loops and whatnot. + // This is pretty brain-dead. In principle construction graphs can have loops and whatnot. - Assert.Multiple(async () => + await Assert.MultipleAsync(async () => { foreach (var (id, deconstructedMats) in deconstructionMaterials) { @@ -270,6 +359,11 @@ public sealed class MaterialArbitrageTest { foreach (var recipe in recipes) { + if (!minMultiplier.TryGetValue(recipe, out var multiplier)) + { + server.Log.Info($"Unused lathe recipe? {recipe.ID}?"); + continue; + } foreach (var (matId, amount) in recipe.Materials) { var actualAmount = SharedLatheSystem.AdjustMaterial(amount, recipe.ApplyMaterialDiscount, multiplier); @@ -291,7 +385,7 @@ public sealed class MaterialArbitrageTest } }); - // create phyiscal composition dictionary + // create physical composition dictionary // this doesn't account for the chemicals in the composition Dictionary physicalCompositions = new(); foreach (var proto in protoManager.EnumeratePrototypes()) @@ -308,10 +402,13 @@ public sealed class MaterialArbitrageTest // This is functionally the same loop as before, but now testing composition rather than destruction or deconstruction. // This doesn't take into account chemicals generated when deconstructing. Maybe it should. - Assert.Multiple(async () => + await Assert.MultipleAsync(async () => { foreach (var (id, compositionComponent) in physicalCompositions) { + if (_compositionArbitrageIgnore.Contains(id)) + continue; + // Check cargo sell price var materialPrice = await GetDeconstructedPrice(compositionComponent.MaterialComposition); var chemicalPrice = await GetChemicalCompositionPrice(compositionComponent.ChemicalComposition); @@ -325,6 +422,11 @@ public sealed class MaterialArbitrageTest { foreach (var recipe in recipes) { + if (!minMultiplier.TryGetValue(recipe, out var multiplier)) + { + server.Log.Info($"Unused lathe recipe? {recipe.ID}?"); + continue; + } foreach (var (matId, amount) in recipe.Materials) { var actualAmount = SharedLatheSystem.AdjustMaterial(amount, recipe.ApplyMaterialDiscount, multiplier); diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs b/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs index b12c90e16e..cebbed8ee8 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.Helpers.cs @@ -130,14 +130,14 @@ public sealed partial class MindTests ActorComponent actor = default!; Assert.Multiple(() => { - Assert.That(player, Is.EqualTo(mind.Session), "Player session does not match mind session"); + Assert.That(player.UserId, Is.EqualTo(mind.UserId), "Player UserId does not match mind UserId"); Assert.That(entMan.System().GetMind(player.UserId), Is.EqualTo(mindId)); Assert.That(player.AttachedEntity, Is.EqualTo(mind.CurrentEntity), "Player is not attached to the mind's current entity."); Assert.That(entMan.EntityExists(mind.OwnedEntity), "The mind's current entity does not exist"); Assert.That(mind.VisitingEntity == null || entMan.EntityExists(mind.VisitingEntity), "The minds visited entity does not exist."); Assert.That(entMan.TryGetComponent(mind.CurrentEntity, out actor)); }); - Assert.That(actor.PlayerSession, Is.EqualTo(mind.Session)); + Assert.That(actor.PlayerSession.UserId, Is.EqualTo(mind.UserId)); return (mindId, mind); } @@ -161,7 +161,6 @@ public sealed partial class MindTests { Assert.That(player.Status, Is.EqualTo(SessionStatus.Disconnected)); Assert.That(mind.UserId, Is.Not.Null); - Assert.That(mind.Session, Is.Null); }); } diff --git a/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs b/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs index a1fccfb68d..db87797553 100644 --- a/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs +++ b/Content.IntegrationTests/Tests/Minds/MindTests.ReconnectTests.cs @@ -67,7 +67,7 @@ public sealed partial class MindTests Assert.Multiple(() => { Assert.That(entMan.Deleted(entity)); - Assert.That(mind.Comp.OwnedEntity, Is.Null); + Assert.That(mind.Comp.OwnedEntity, Is.Not.EqualTo(entity)); }); // Reconnect diff --git a/Content.IntegrationTests/Tests/PostMapInitTest.cs b/Content.IntegrationTests/Tests/PostMapInitTest.cs index be8e1d9a97..1065e5fd41 100644 --- a/Content.IntegrationTests/Tests/PostMapInitTest.cs +++ b/Content.IntegrationTests/Tests/PostMapInitTest.cs @@ -49,10 +49,10 @@ namespace Content.IntegrationTests.Tests private static readonly string[] DoNotMapWhitelist = { - //CrystallEdge Map replacement + //CrystallEdge Maps "/Maps/_CP14/dev_map.yml", "/Maps/_CP14/Dungeon/artifact_room.yml", - //CrystallEdge Map replacement end + //CrystallEdge Maps end "/Maps/centcomm.yml", "/Maps/bagel.yml", // Contains mime's rubber stamp --> Either fix this, remove the category, or remove this comment if intentional. "/Maps/gate.yml", // Contains positronic brain and LSE-1200c "Perforator" diff --git a/Content.IntegrationTests/Tests/Storage/StorageInteractionTest.cs b/Content.IntegrationTests/Tests/Storage/StorageInteractionTest.cs index 8d0de707f3..60d9ddd7fc 100644 --- a/Content.IntegrationTests/Tests/Storage/StorageInteractionTest.cs +++ b/Content.IntegrationTests/Tests/Storage/StorageInteractionTest.cs @@ -81,7 +81,7 @@ public sealed class StorageInteractionTest : InteractionTest { var uid = ToClient(target); var hotbar = GetWidget(); - var storageContainer = GetControlFromField(nameof(HotbarGui.StorageContainer), hotbar); + var storageContainer = GetControlFromField(nameof(HotbarGui.SingleStorageContainer), hotbar); return GetControlFromChildren(c => c.Entity == uid, storageContainer); } } diff --git a/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs b/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs index 6ea8b6882a..eef420df20 100644 --- a/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs +++ b/Content.IntegrationTests/Tests/Tiles/TileConstructionTests.cs @@ -82,7 +82,7 @@ public sealed class TileConstructionTests : InteractionTest AssertGridCount(1); // Lattice -> Plating - await InteractUsing(Steel); + await InteractUsing(FloorItem); Assert.That(Hands.ActiveHandEntity, Is.Null); await AssertTile(Plating); AssertGridCount(1); diff --git a/Content.IntegrationTests/Tests/XenoArtifactTest.cs b/Content.IntegrationTests/Tests/XenoArtifactTest.cs new file mode 100644 index 0000000000..ac4c58c52c --- /dev/null +++ b/Content.IntegrationTests/Tests/XenoArtifactTest.cs @@ -0,0 +1,419 @@ +using System.Linq; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Robust.Shared.GameObjects; + +namespace Content.IntegrationTests.Tests; + +[TestFixture] +public sealed class XenoArtifactTest +{ + [TestPrototypes] + private const string Prototypes = @" +- type: entity + id: TestArtifact + parent: BaseXenoArtifact + name: artifact + components: + - type: XenoArtifact + isGenerationRequired: false + effectsTable: !type:NestedSelector + tableId: XenoArtifactEffectsDefaultTable + +- type: entity + id: TestGenArtifactFlat + parent: BaseXenoArtifact + name: artifact + components: + - type: XenoArtifact + isGenerationRequired: true + nodeCount: + min: 2 + max: 2 + segmentSize: + min: 1 + max: 1 + nodesPerSegmentLayer: + min: 1 + max: 1 + effectsTable: !type:NestedSelector + tableId: XenoArtifactEffectsDefaultTable + +- type: entity + id: TestGenArtifactTall + parent: BaseXenoArtifact + name: artifact + components: + - type: XenoArtifact + isGenerationRequired: true + nodeCount: + min: 2 + max: 2 + segmentSize: + min: 2 + max: 2 + nodesPerSegmentLayer: + min: 1 + max: 1 + effectsTable: !type:NestedSelector + tableId: XenoArtifactEffectsDefaultTable + +- type: entity + id: TestGenArtifactFull + name: artifact + components: + - type: XenoArtifact + isGenerationRequired: true + nodeCount: + min: 6 + max: 6 + segmentSize: + min: 6 + max: 6 + nodesPerSegmentLayer: + min: 2 + max: 2 + effectsTable: !type:NestedSelector + tableId: XenoArtifactEffectsDefaultTable + +- type: entity + id: TestArtifactNode + name: artifact node + components: + - type: XenoArtifactNode + maxDurability: 3 +"; + + /// + /// Checks that adding nodes and edges properly adds them into the adjacency matrix + /// + [Test] + public async Task XenoArtifactAddNodeTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var entManager = server.ResolveDependency(); + var artifactSystem = entManager.System(); + + await server.WaitPost(() => + { + var artifactUid = entManager.Spawn("TestArtifact"); + var artifactEnt = (artifactUid, comp: entManager.GetComponent(artifactUid)); + + // Create 3 nodes + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node1, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node2, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node3, false)); + + Assert.That(artifactSystem.GetAllNodeIndices(artifactEnt).Count(), Is.EqualTo(3)); + + // Add connection from 1 -> 2 and 2-> 3 + artifactSystem.AddEdge(artifactEnt, node1!.Value, node2!.Value, false); + artifactSystem.AddEdge(artifactEnt, node2!.Value, node3!.Value, false); + + // Assert that successors and direct successors are counted correctly for node 1. + Assert.That(artifactSystem.GetDirectSuccessorNodes(artifactEnt, node1!.Value).Count, Is.EqualTo(1)); + Assert.That(artifactSystem.GetSuccessorNodes(artifactEnt, node1!.Value).Count, Is.EqualTo(2)); + // Assert that we didn't somehow get predecessors on node 1. + Assert.That(artifactSystem.GetDirectPredecessorNodes(artifactEnt, node1!.Value), Is.Empty); + Assert.That(artifactSystem.GetPredecessorNodes(artifactEnt, node1!.Value), Is.Empty); + + // Assert that successors and direct successors are counted correctly for node 2. + Assert.That(artifactSystem.GetDirectSuccessorNodes(artifactEnt, node2!.Value), Has.Count.EqualTo(1)); + Assert.That(artifactSystem.GetSuccessorNodes(artifactEnt, node2!.Value), Has.Count.EqualTo(1)); + // Assert that predecessors and direct predecessors are counted correctly for node 2. + Assert.That(artifactSystem.GetDirectPredecessorNodes(artifactEnt, node2!.Value), Has.Count.EqualTo(1)); + Assert.That(artifactSystem.GetPredecessorNodes(artifactEnt, node2!.Value), Has.Count.EqualTo(1)); + + // Assert that successors and direct successors are counted correctly for node 3. + Assert.That(artifactSystem.GetDirectSuccessorNodes(artifactEnt, node3!.Value), Is.Empty); + Assert.That(artifactSystem.GetSuccessorNodes(artifactEnt, node3!.Value), Is.Empty); + // Assert that predecessors and direct predecessors are counted correctly for node 3. + Assert.That(artifactSystem.GetDirectPredecessorNodes(artifactEnt, node3!.Value), Has.Count.EqualTo(1)); + Assert.That(artifactSystem.GetPredecessorNodes(artifactEnt, node3!.Value), Has.Count.EqualTo(2)); + }); + await server.WaitRunTicks(1); + + await pair.CleanReturnAsync(); + } + + /// + /// Checks to make sure that removing nodes properly cleans up all connections. + /// + [Test] + public async Task XenoArtifactRemoveNodeTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var entManager = server.ResolveDependency(); + var artifactSystem = entManager.System(); + + await server.WaitPost(() => + { + var artifactUid = entManager.Spawn("TestArtifact"); + var artifactEnt = (artifactUid, comp: entManager.GetComponent(artifactUid)); + + // Create 3 nodes + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node1, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node2, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node3, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node4, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node5, false)); + + Assert.That(artifactSystem.GetAllNodeIndices(artifactEnt).Count(), Is.EqualTo(5)); + + // Add connection: 1 -> 2 -> 3 -> 4 -> 5 + artifactSystem.AddEdge(artifactEnt, node1!.Value, node2!.Value, false); + artifactSystem.AddEdge(artifactEnt, node2!.Value, node3!.Value, false); + artifactSystem.AddEdge(artifactEnt, node3!.Value, node4!.Value, false); + artifactSystem.AddEdge(artifactEnt, node4!.Value, node5!.Value, false); + + // Make sure we have a continuous connection between the two ends of the graph. + Assert.That(artifactSystem.GetSuccessorNodes(artifactEnt, node1.Value), Has.Count.EqualTo(4)); + Assert.That(artifactSystem.GetPredecessorNodes(artifactEnt, node5.Value), Has.Count.EqualTo(4)); + + // Remove the node and make sure it's no longer in the artifact. + Assert.That(artifactSystem.RemoveNode(artifactEnt, node3!.Value, false)); + Assert.That(artifactSystem.TryGetIndex(artifactEnt, node3!.Value, out _), Is.False, "Node 3 still present in artifact."); + + // Check to make sure that we got rid of all the connections. + Assert.That(artifactSystem.GetSuccessorNodes(artifactEnt, node2!.Value), Is.Empty); + Assert.That(artifactSystem.GetPredecessorNodes(artifactEnt, node4!.Value), Is.Empty); + }); + await server.WaitRunTicks(1); + + await pair.CleanReturnAsync(); + } + + /// + /// Sets up series of linked nodes and ensures that resizing the adjacency matrix doesn't disturb the connections + /// + [Test] + public async Task XenoArtifactResizeTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var entManager = server.ResolveDependency(); + var artifactSystem = entManager.System(); + + await server.WaitPost(() => + { + var artifactUid = entManager.Spawn("TestArtifact"); + var artifactEnt = (artifactUid, comp: entManager.GetComponent(artifactUid)); + + // Create 3 nodes + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node1, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node2, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node3, false)); + + // Add connection: 1 -> 2 -> 3 + artifactSystem.AddEdge(artifactEnt, node1!.Value, node2!.Value, false); + artifactSystem.AddEdge(artifactEnt, node2!.Value, node3!.Value, false); + + // Make sure our connection is set up + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node1.Value, node2.Value)); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node2.Value, node3.Value)); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node2.Value, node1.Value), Is.False); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node3.Value, node2.Value), Is.False); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node1.Value, node3.Value), Is.False); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node3.Value, node1.Value), Is.False); + + Assert.That(artifactSystem.GetIndex(artifactEnt, node1!.Value), Is.EqualTo(0)); + Assert.That(artifactSystem.GetIndex(artifactEnt, node2!.Value), Is.EqualTo(1)); + Assert.That(artifactSystem.GetIndex(artifactEnt, node3!.Value), Is.EqualTo(2)); + + // Add a new node, resizing the original adjacency matrix and array. + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node4)); + + // Check that our connections haven't changed. + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node1.Value, node2.Value)); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node2.Value, node3.Value)); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node2.Value, node1.Value), Is.False); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node3.Value, node2.Value), Is.False); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node1.Value, node3.Value), Is.False); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node3.Value, node1.Value), Is.False); + + // Has our array shifted any when we resized? + Assert.That(artifactSystem.GetIndex(artifactEnt, node1!.Value), Is.EqualTo(0)); + Assert.That(artifactSystem.GetIndex(artifactEnt, node2!.Value), Is.EqualTo(1)); + Assert.That(artifactSystem.GetIndex(artifactEnt, node3!.Value), Is.EqualTo(2)); + + // Check that 4 didn't somehow end up with connections + Assert.That(artifactSystem.GetPredecessorNodes(artifactEnt, node4!.Value), Is.Empty); + Assert.That(artifactSystem.GetSuccessorNodes(artifactEnt, node4!.Value), Is.Empty); + }); + await server.WaitRunTicks(1); + + await pair.CleanReturnAsync(); + } + + /// + /// Checks if removing a node and adding a new node into its place in the adjacency matrix doesn't accidentally retain extra data. + /// + [Test] + public async Task XenoArtifactReplaceTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var entManager = server.ResolveDependency(); + var artifactSystem = entManager.System(); + + await server.WaitPost(() => + { + var artifactUid = entManager.Spawn("TestArtifact"); + var artifactEnt = (artifactUid, comp: entManager.GetComponent(artifactUid)); + + // Create 3 nodes + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node1, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node2, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node3, false)); + + // Add connection: 1 -> 2 -> 3 + artifactSystem.AddEdge(artifactEnt, node1!.Value, node2!.Value, false); + artifactSystem.AddEdge(artifactEnt, node2!.Value, node3!.Value, false); + + // Make sure our connection is set up + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node1.Value, node2.Value)); + Assert.That(artifactSystem.NodeHasEdge(artifactEnt, node2.Value, node3.Value)); + + // Remove middle node, severing connections + artifactSystem.RemoveNode(artifactEnt, node2!.Value, false); + + // Make sure our connection are properly severed. + Assert.That(artifactSystem.GetSuccessorNodes(artifactEnt, node1.Value), Is.Empty); + Assert.That(artifactSystem.GetPredecessorNodes(artifactEnt, node3.Value), Is.Empty); + + // Make sure our matrix is 3x3 + Assert.That(artifactEnt.Item2.NodeAdjacencyMatrixRows, Is.EqualTo(3)); + Assert.That(artifactEnt.Item2.NodeAdjacencyMatrixColumns, Is.EqualTo(3)); + + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node4, false)); + + // Make sure that adding in a new node didn't add a new slot but instead re-used the middle slot. + Assert.That(artifactEnt.Item2.NodeAdjacencyMatrixRows, Is.EqualTo(3)); + Assert.That(artifactEnt.Item2.NodeAdjacencyMatrixColumns, Is.EqualTo(3)); + + // Ensure that all connections are still severed + Assert.That(artifactSystem.GetSuccessorNodes(artifactEnt, node1.Value), Is.Empty); + Assert.That(artifactSystem.GetPredecessorNodes(artifactEnt, node3.Value), Is.Empty); + Assert.That(artifactSystem.GetSuccessorNodes(artifactEnt, node4!.Value), Is.Empty); + Assert.That(artifactSystem.GetPredecessorNodes(artifactEnt, node4!.Value), Is.Empty); + + }); + await server.WaitRunTicks(1); + + await pair.CleanReturnAsync(); + } + + /// + /// Checks if the active nodes are properly detected. + /// + [Test] + public async Task XenoArtifactBuildActiveNodesTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var entManager = server.ResolveDependency(); + var artifactSystem = entManager.System(); + + await server.WaitPost(() => + { + var artifactUid = entManager.Spawn("TestArtifact"); + Entity artifactEnt = (artifactUid, entManager.GetComponent(artifactUid)); + + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node1, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node2, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node3, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node4, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node5, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node6, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node7, false)); + Assert.That(artifactSystem.AddNode(artifactEnt, "TestArtifactNode", out var node8, false)); + + // /----( 6 ) + // /----[*3 ]-/----( 7 )----( 8 ) + // / + // / /----[*5 ] + // [ 1 ]--/----[ 2 ]--/----( 4 ) + // Diagram of the example generation. Nodes in [brackets] are unlocked, nodes in (braces) are locked + // and nodes with an *asterisk are supposed to be active. + artifactSystem.AddEdge(artifactEnt, node1!.Value, node2!.Value, false); + artifactSystem.AddEdge(artifactEnt, node1!.Value, node3!.Value, false); + + artifactSystem.AddEdge(artifactEnt, node2!.Value, node4!.Value, false); + artifactSystem.AddEdge(artifactEnt, node2!.Value, node5!.Value, false); + + artifactSystem.AddEdge(artifactEnt, node3!.Value, node6!.Value, false); + artifactSystem.AddEdge(artifactEnt, node3!.Value, node7!.Value, false); + + artifactSystem.AddEdge(artifactEnt, node7!.Value, node8!.Value, false); + + artifactSystem.SetNodeUnlocked(node1!.Value); + artifactSystem.SetNodeUnlocked(node2!.Value); + artifactSystem.SetNodeUnlocked(node3!.Value); + artifactSystem.SetNodeUnlocked(node5!.Value); + + NetEntity[] expectedActiveNodes = + [ + entManager.GetNetEntity(node3!.Value.Owner), + entManager.GetNetEntity(node5!.Value.Owner) + ]; + Assert.That(artifactEnt.Comp.CachedActiveNodes, Is.SupersetOf(expectedActiveNodes)); + Assert.That(artifactEnt.Comp.CachedActiveNodes, Has.Count.EqualTo(expectedActiveNodes.Length)); + + }); + await server.WaitRunTicks(1); + + await pair.CleanReturnAsync(); + } + + [Test] + public async Task XenoArtifactGenerateSegmentsTest() + { + await using var pair = await PoolManager.GetServerClient(); + var server = pair.Server; + + var entManager = server.ResolveDependency(); + var artifactSystem = entManager.System(); + + await server.WaitPost(() => + { + var artifact1Uid = entManager.Spawn("TestGenArtifactFlat"); + Entity artifact1Ent = (artifact1Uid, entManager.GetComponent(artifact1Uid)); + + var segments1 = artifactSystem.GetSegments(artifact1Ent); + Assert.That(segments1.Count, Is.EqualTo(2)); + Assert.That(segments1[0].Count, Is.EqualTo(1)); + Assert.That(segments1[1].Count, Is.EqualTo(1)); + + var artifact2Uid = entManager.Spawn("TestGenArtifactTall"); + Entity artifact2Ent = (artifact2Uid, entManager.GetComponent(artifact2Uid)); + + var segments2 = artifactSystem.GetSegments(artifact2Ent); + Assert.That(segments2.Count, Is.EqualTo(1)); + Assert.That(segments2[0].Count, Is.EqualTo(2)); + + var artifact3Uid = entManager.Spawn("TestGenArtifactFull"); + Entity artifact3Ent = (artifact3Uid, entManager.GetComponent(artifact3Uid)); + + var segments3 = artifactSystem.GetSegments(artifact3Ent); + Assert.That(segments3.Count, Is.EqualTo(1)); + Assert.That(segments3.Sum(x => x.Count), Is.EqualTo(6)); + var nodesDepths = segments3[0].Select(x => x.Comp.Depth).ToArray(); + Assert.That(nodesDepths.Distinct().Count(), Is.EqualTo(3)); + var grouped = nodesDepths.ToLookup(x => x); + Assert.That(grouped[0].Count(), Is.EqualTo(2)); + Assert.That(grouped[1].Count(), Is.GreaterThanOrEqualTo(2)); // tree is attempting sometimes to get wider (so it will look like a tree) + Assert.That(grouped[2].Count(), Is.LessThanOrEqualTo(2)); // maintain same width or, if we used 3 nodes on previous layer - we only have 1 left! + + }); + await server.WaitRunTicks(1); + + await pair.CleanReturnAsync(); + } +} diff --git a/Content.IntegrationTests/Tests/_CP14/CP14RitualTest.cs b/Content.IntegrationTests/Tests/_CP14/CP14RitualTest.cs deleted file mode 100644 index 3a61bbe320..0000000000 --- a/Content.IntegrationTests/Tests/_CP14/CP14RitualTest.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Shared.GameObjects; -using Robust.Shared.Prototypes; - -namespace Content.IntegrationTests.Tests._CP14; - -#nullable enable - -[TestFixture] -public sealed class CP14RitualTest -{ - - /// - /// States that all edges of the ritual phase have triggers. - /// - [Test] - public async Task RitualHasAllTriggersTest() - { - await using var pair = await PoolManager.GetServerClient(); - var server = pair.Server; - - var compFactory = server.ResolveDependency(); - var protoManager = server.ResolveDependency(); - - await server.WaitAssertion(() => - { - Assert.Multiple(() => - { - foreach (var proto in protoManager.EnumeratePrototypes()) - { - if (!proto.TryGetComponent(out CP14MagicRitualPhaseComponent? phase, compFactory)) - continue; - - if (phase.DeadEnd) - { - Assert.That(phase.Edges.Count == 0, $"{proto} is a ritual node, but has no paths to other nodes. Either add deadEnd = true, or add paths to other nodes."); - } - else - { - Assert.That(phase.Edges.Count > 0, $"{proto} is a deadEnd ritual node, but has {phase.Edges.Count} edges! Remove all edges, or make it a non dead-end node"); - } - - foreach (var edge in phase.Edges) - { - Assert.That(edge.Triggers.Count > 0, $"{proto} is ritual node, but edge to {edge.Target} has no triggers and cannot be activated."); - } - } - }); - }); - - await pair.CleanReturnAsync(); - } -} diff --git a/Content.MapRenderer/Painters/EntityPainter.cs b/Content.MapRenderer/Painters/EntityPainter.cs index 2c70481b8a..0eef467f9a 100644 --- a/Content.MapRenderer/Painters/EntityPainter.cs +++ b/Content.MapRenderer/Painters/EntityPainter.cs @@ -102,7 +102,7 @@ public sealed class EntityPainter var frames = stateCount / entity.Sprite.GetLayerDirectionCount(layer); var target = direction * frames; var targetY = target / statesX; - var targetX = target % statesY; + var targetX = target % statesX; return (targetX * rsi.Size.X, targetY * rsi.Size.Y, rsi.Size.X, rsi.Size.Y); } diff --git a/Content.MapRenderer/Program.cs b/Content.MapRenderer/Program.cs index 7314119108..5a4ccda0c8 100644 --- a/Content.MapRenderer/Program.cs +++ b/Content.MapRenderer/Program.cs @@ -38,6 +38,7 @@ namespace Content.MapRenderer var mapIds = pair.Server .ResolveDependency() .EnumeratePrototypes() + .Where(map => !pair.IsTestPrototype(map)) .Select(map => map.ID) .ToArray(); diff --git a/Content.Replay/Menu/ReplayMainMenuControl.xaml b/Content.Replay/Menu/ReplayMainMenuControl.xaml index f26db1121f..9eeafd95de 100644 --- a/Content.Replay/Menu/ReplayMainMenuControl.xaml +++ b/Content.Replay/Menu/ReplayMainMenuControl.xaml @@ -3,7 +3,7 @@ xmlns:controls="clr-namespace:Content.Client.UserInterface.Controls;assembly=Content.Client" xmlns:style="clr-namespace:Content.Client.Stylesheets;assembly=Content.Client" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> - + diff --git a/Content.Server/Access/Components/IdBindComponent.cs b/Content.Server/Access/Components/IdBindComponent.cs new file mode 100644 index 0000000000..9fcc7e2d56 --- /dev/null +++ b/Content.Server/Access/Components/IdBindComponent.cs @@ -0,0 +1,14 @@ +using Robust.Shared.GameStates; + +namespace Content.Server.Access.Components; + +[RegisterComponent] +public sealed partial class IdBindComponent : Component +{ + /// + /// If true, also tries to get the PDA and set the owner to the entity + /// + [DataField] + public bool BindPDAOwner = true; +} + diff --git a/Content.Server/Access/Systems/IdBindSystem.cs b/Content.Server/Access/Systems/IdBindSystem.cs new file mode 100644 index 0000000000..275a96f4f3 --- /dev/null +++ b/Content.Server/Access/Systems/IdBindSystem.cs @@ -0,0 +1,51 @@ +using Content.Server.Access.Components; +using Content.Server.PDA; +using Content.Shared.Inventory; +using Content.Shared.Mind.Components; +using Content.Shared.PDA; +using Content.Shared.Roles; + +namespace Content.Server.Access.Systems; + +public sealed class IdBindSystem : EntitySystem +{ + [Dependency] private readonly IdCardSystem _cardSystem = default!; + [Dependency] private readonly PdaSystem _pdaSystem = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + + public override void Initialize() + { + base.Initialize(); + //Activate on mind being added + SubscribeLocalEvent(TryBind); + } + + private void TryBind(Entity ent, ref MindAddedMessage args) + { + if (!_cardSystem.TryFindIdCard(ent, out var cardId)) + return; + + var data = MetaData(ent); + + _cardSystem.TryChangeFullName(cardId, data.EntityName, cardId); + + if (!ent.Comp.BindPDAOwner) + { + //Remove after running once + RemCompDeferred(ent); + return; + } + + //Get PDA from main slot and set us as owner + if (!_inventory.TryGetSlotEntity(ent, "id", out var uPda)) + return; + + if (!TryComp(uPda, out var pDA)) + return; + + _pdaSystem.SetOwner(uPda.Value, pDA, ent, data.EntityName); + //Remove after running once + RemCompDeferred(ent); + } +} + diff --git a/Content.Server/Access/Systems/IdCardConsoleSystem.cs b/Content.Server/Access/Systems/IdCardConsoleSystem.cs index a9e5d9a6d3..9fd30ffcb1 100644 --- a/Content.Server/Access/Systems/IdCardConsoleSystem.cs +++ b/Content.Server/Access/Systems/IdCardConsoleSystem.cs @@ -1,18 +1,24 @@ +using System.Linq; +using Content.Server.Chat.Systems; +using Content.Server.Containers; using Content.Server.StationRecords.Systems; using Content.Shared.Access.Components; +using static Content.Shared.Access.Components.IdCardConsoleComponent; using Content.Shared.Access.Systems; +using Content.Shared.Access; using Content.Shared.Administration.Logs; +using Content.Shared.Construction; +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.Roles; using Content.Shared.StationRecords; -using Content.Shared.StatusIcon; +using Content.Shared.Throwing; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Containers; using Robust.Shared.Prototypes; -using System.Linq; -using static Content.Shared.Access.Components.IdCardConsoleComponent; -using Content.Shared.Access; +using Robust.Shared.Random; namespace Content.Server.Access.Systems; @@ -26,6 +32,10 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem [Dependency] private readonly AccessSystem _access = default!; [Dependency] private readonly IdCardSystem _idCard = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly ThrowingSystem _throwing = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly ChatSystem _chat = default!; public override void Initialize() { @@ -37,6 +47,11 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem SubscribeLocalEvent(UpdateUserInterface); SubscribeLocalEvent(UpdateUserInterface); SubscribeLocalEvent(UpdateUserInterface); + SubscribeLocalEvent(OnDamageChanged); + + // Intercept the event before anyone can do anything with it! + SubscribeLocalEvent(OnMachineDeconstructed, + before: [typeof(EmptyOnMachineDeconstructSystem), typeof(ItemSlotsSystem)]); } private void OnWriteToTargetIdMessage(EntityUid uid, IdCardConsoleComponent component, WriteToTargetIdMessage args) @@ -83,9 +98,9 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem var targetIdComponent = EntityManager.GetComponent(targetId); var targetAccessComponent = EntityManager.GetComponent(targetId); - var jobProto = new ProtoId(string.Empty); + var jobProto = targetIdComponent.JobPrototype ?? new ProtoId(string.Empty); if (TryComp(targetId, out var keyStorage) - && keyStorage.Key is {} key + && keyStorage.Key is { } key && _record.TryGetRecord(key, out var record)) { jobProto = record.JobPrototype; @@ -136,6 +151,13 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem } UpdateStationRecord(uid, targetId, newFullName, newJobTitle, job); + if ((!TryComp(targetId, out var keyStorage) + || keyStorage.Key is not { } key + || !_record.TryGetRecord(key, out _)) + && newJobProto != string.Empty) + { + Comp(targetId).JobPrototype = newJobProto; + } if (!newAccessList.TrueForAll(x => component.AccessLevels.Contains(x))) { @@ -210,4 +232,46 @@ public sealed class IdCardConsoleSystem : SharedIdCardConsoleSystem _record.Synchronize(key); } + + private void OnMachineDeconstructed(Entity entity, ref MachineDeconstructedEvent args) + { + TryDropAndThrowIds(entity.AsNullable()); + } + + private void OnDamageChanged(Entity entity, ref DamageChangedEvent args) + { + if (TryDropAndThrowIds(entity.AsNullable())) + _chat.TrySendInGameICMessage(entity, Loc.GetString("id-card-console-damaged"), InGameICChatType.Speak, true); + } + + #region PublicAPI + + /// + /// Tries to drop any IDs stored in the console, and then tries to throw them away. + /// Returns true if anything was ejected and false otherwise. + /// + public bool TryDropAndThrowIds(Entity ent) + { + if (!Resolve(ent, ref ent.Comp1, ref ent.Comp2)) + return false; + + var didEject = false; + + foreach (var slot in ent.Comp2.Slots.Values) + { + if (slot.Item == null || slot.ContainerSlot == null) + continue; + + var item = slot.Item.Value; + if (_container.Remove(item, slot.ContainerSlot)) + { + _throwing.TryThrow(item, _random.NextVector2(), baseThrowSpeed: 5f); + didEject = true; + } + } + + return didEject; + } + + #endregion } diff --git a/Content.Server/Access/Systems/IdCardSystem.cs b/Content.Server/Access/Systems/IdCardSystem.cs index 9057fade72..05ee45b463 100644 --- a/Content.Server/Access/Systems/IdCardSystem.cs +++ b/Content.Server/Access/Systems/IdCardSystem.cs @@ -1,5 +1,6 @@ using System.Linq; using Content.Server.Administration.Logs; +using Content.Server.Chat.Systems; using Content.Server.Kitchen.Components; using Content.Server.Popups; using Content.Shared.Access; @@ -19,6 +20,7 @@ public sealed class IdCardSystem : SharedIdCardSystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; + [Dependency] private readonly ChatSystem _chat = default!; [Dependency] private readonly MicrowaveSystem _microwave = default!; public override void Initialize() @@ -93,4 +95,22 @@ public sealed class IdCardSystem : SharedIdCardSystem } } + + public override void ExpireId(Entity ent) + { + if (ent.Comp.Expired) + return; + + base.ExpireId(ent); + + if (ent.Comp.ExpireMessage != null) + { + _chat.TrySendInGameICMessage( + ent, + Loc.GetString(ent.Comp.ExpireMessage), + InGameICChatType.Speak, + ChatTransmitRange.Normal, + true); + } + } } diff --git a/Content.Server/Actions/ActionOnInteractComponent.cs b/Content.Server/Actions/ActionOnInteractComponent.cs index 3a7e15649b..4ae3d9e5f7 100644 --- a/Content.Server/Actions/ActionOnInteractComponent.cs +++ b/Content.Server/Actions/ActionOnInteractComponent.cs @@ -1,6 +1,5 @@ using Content.Shared.Interaction; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; namespace Content.Server.Actions; @@ -20,8 +19,10 @@ namespace Content.Server.Actions; [RegisterComponent] public sealed partial class ActionOnInteractComponent : Component { - [DataField(required:true)] + [DataField(required: true)] public List? Actions; [DataField] public List? ActionEntities; + + [DataField] public bool RequiresCharge; } diff --git a/Content.Server/Actions/ActionOnInteractSystem.cs b/Content.Server/Actions/ActionOnInteractSystem.cs index af9b0b1ddb..c658b3f90a 100644 --- a/Content.Server/Actions/ActionOnInteractSystem.cs +++ b/Content.Server/Actions/ActionOnInteractSystem.cs @@ -1,5 +1,7 @@ using System.Linq; using Content.Shared.Actions; +using Content.Shared.Charges.Components; +using Content.Shared.Charges.Systems; using Content.Shared.Interaction; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -15,6 +17,7 @@ public sealed class ActionOnInteractSystem : EntitySystem [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly ActionContainerSystem _actionContainer = default!; + [Dependency] private readonly SharedChargesSystem _charges = default!; public override void Initialize() { @@ -54,6 +57,9 @@ public sealed class ActionOnInteractSystem : EntitySystem if (options.Count == 0) return; + if (!TryUseCharge((uid, component))) + return; + var (actId, act) = _random.Pick(options); _actions.PerformAction(args.User, null, actId, act, act.Event, _timing.CurTime, false); args.Handled = true; @@ -85,6 +91,9 @@ public sealed class ActionOnInteractSystem : EntitySystem if (entOptions.Count > 0) { + if (!TryUseCharge((uid, component))) + return; + var (entActId, entAct) = _random.Pick(entOptions); if (entAct.Event != null) { @@ -108,6 +117,9 @@ public sealed class ActionOnInteractSystem : EntitySystem if (entWorldOptions.Count > 0) { + if (!TryUseCharge((uid, component))) + return; + var (entActId, entAct) = _random.Pick(entWorldOptions); if (entAct.Event != null) { @@ -132,6 +144,9 @@ public sealed class ActionOnInteractSystem : EntitySystem if (options.Count == 0) return; + if (!TryUseCharge((uid, component))) + return; + var (actId, act) = _random.Pick(options); if (act.Event != null) { @@ -163,4 +178,17 @@ public sealed class ActionOnInteractSystem : EntitySystem return valid; } + + private bool TryUseCharge(Entity ent) + { + if (!ent.Comp.RequiresCharge) + return true; + + Entity charges = ent.Owner; + if (_charges.IsEmpty(charges)) + return false; + + _charges.TryUseCharge(charges); + return true; + } } diff --git a/Content.Server/Administration/Commands/AGhostCommand.cs b/Content.Server/Administration/Commands/AGhostCommand.cs index b24dbbc018..1e3c00dffe 100644 --- a/Content.Server/Administration/Commands/AGhostCommand.cs +++ b/Content.Server/Administration/Commands/AGhostCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Server.GameTicking; using Content.Server.Ghost; using Content.Server.Mind; @@ -8,6 +8,7 @@ using Content.Shared.Mind; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Console; +using Robust.Shared.Player; namespace Content.Server.Administration.Commands; @@ -15,7 +16,7 @@ namespace Content.Server.Administration.Commands; public sealed class AGhostCommand : LocalizedCommands { [Dependency] private readonly IEntityManager _entities = default!; - [Dependency] private readonly IPlayerManager _playerManager = default!; + [Dependency] private readonly ISharedPlayerManager _playerManager = default!; public override string Command => "aghost"; public override string Help => "aghost"; @@ -104,8 +105,8 @@ public sealed class AGhostCommand : LocalizedCommands // TODO: Remove duplication between all this and "GamePreset.OnGhostAttempt()"... if (!string.IsNullOrWhiteSpace(mind.CharacterName)) metaDataSystem.SetEntityName(ghost, mind.CharacterName); - else if (!string.IsNullOrWhiteSpace(mind.Session?.Name)) - metaDataSystem.SetEntityName(ghost, mind.Session.Name); + else if (!string.IsNullOrWhiteSpace(player.Name)) + metaDataSystem.SetEntityName(ghost, player.Name); mindSystem.Visit(mindId, ghost, mind); } @@ -116,6 +117,6 @@ public sealed class AGhostCommand : LocalizedCommands } var comp = _entities.GetComponent(ghost); - ghostSystem.SetCanReturnToBody(comp, canReturn); + ghostSystem.SetCanReturnToBody((ghost, comp), canReturn); } } diff --git a/Content.Server/Administration/Commands/ForceGhostCommand.cs b/Content.Server/Administration/Commands/ForceGhostCommand.cs index 68a77b7454..aed3102882 100644 --- a/Content.Server/Administration/Commands/ForceGhostCommand.cs +++ b/Content.Server/Administration/Commands/ForceGhostCommand.cs @@ -11,7 +11,6 @@ namespace Content.Server.Administration.Commands; [AdminCommand(AdminFlags.Admin)] public sealed class ForceGhostCommand : LocalizedEntityCommands { - [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly GameTicker _gameTicker = default!; [Dependency] private readonly SharedMindSystem _mind = default!; diff --git a/Content.Server/Administration/Commands/WarpCommand.cs b/Content.Server/Administration/Commands/WarpCommand.cs index afc42c7e19..06d771ec2f 100644 --- a/Content.Server/Administration/Commands/WarpCommand.cs +++ b/Content.Server/Administration/Commands/WarpCommand.cs @@ -4,6 +4,7 @@ using Content.Server.Warps; using Content.Shared.Administration; using Content.Shared.Follower; using Content.Shared.Ghost; +using Content.Shared.Warps; using Robust.Shared.Console; using Robust.Shared.Enums; using Robust.Shared.Map; diff --git a/Content.Server/Administration/Components/SuperBonkComponent.cs b/Content.Server/Administration/Components/SuperBonkComponent.cs index 868d232e60..0ceeccd136 100644 --- a/Content.Server/Administration/Components/SuperBonkComponent.cs +++ b/Content.Server/Administration/Components/SuperBonkComponent.cs @@ -1,37 +1,31 @@ using Content.Server.Administration.Systems; -using Content.Shared.Climbing.Components; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Server.Administration.Components; /// /// Component to track the timer for the SuperBonk smite. /// -[RegisterComponent, Access(typeof(SuperBonkSystem))] -public sealed partial class SuperBonkComponent: Component +[RegisterComponent, AutoGenerateComponentPause, Access(typeof(SuperBonkSystem))] +public sealed partial class SuperBonkComponent : Component { - /// - /// Entity being Super Bonked. - /// - [DataField] - public EntityUid Target; - /// /// All of the tables the target will be bonked on. /// [DataField] - public Dictionary.Enumerator Tables; + public List.Enumerator Tables; /// - /// Value used to reset the timer once it expires. + /// How often should we bonk. /// [DataField] - public float InitialTime = 0.10f; + public TimeSpan BonkCooldown = TimeSpan.FromMilliseconds(100); /// - /// Timer till the next bonk. + /// Next time when we will bonk. /// - [DataField] - public float TimeRemaining = 0.10f; + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField] + public TimeSpan NextBonk = TimeSpan.Zero; /// /// Whether to remove the clumsy component from the target after SuperBonk is done. diff --git a/Content.Server/Administration/Logs/AdminLogManager.cs b/Content.Server/Administration/Logs/AdminLogManager.cs index 0df177347a..1d6ff13a5a 100644 --- a/Content.Server/Administration/Logs/AdminLogManager.cs +++ b/Content.Server/Administration/Logs/AdminLogManager.cs @@ -330,7 +330,12 @@ public sealed partial class AdminLogManager : SharedAdminLogManager, IAdminLogMa var cachedInfo = adminSys.GetCachedPlayerInfo(new NetUserId(id)); if (cachedInfo != null && cachedInfo.Antag) { - logMessage += " [ANTAG: " + cachedInfo.CharacterName + "]"; + var subtype = Loc.GetString(cachedInfo.Subtype ?? cachedInfo.RoleProto.Name); + logMessage = Loc.GetString( + "admin-alert-antag-label", + ("message", logMessage), + ("name", cachedInfo.CharacterName), + ("subtype", subtype)); } } diff --git a/Content.Server/Administration/Logs/Converters/EntityCoordinatesConverter.cs b/Content.Server/Administration/Logs/Converters/EntityCoordinatesConverter.cs index 3de5d98a81..fb5c6a6fe5 100644 --- a/Content.Server/Administration/Logs/Converters/EntityCoordinatesConverter.cs +++ b/Content.Server/Administration/Logs/Converters/EntityCoordinatesConverter.cs @@ -1,4 +1,4 @@ -using System.Text.Json; +using System.Text.Json; using Content.Shared.Station.Components; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -72,6 +72,6 @@ public readonly struct SerializableEntityCoordinates EntityUid = coordinates.EntityId; X = coordinates.X; Y = coordinates.Y; - MapUid = coordinates.GetMapUid(entityManager); + MapUid = entityManager.System().GetMap(coordinates); } } diff --git a/Content.Server/Administration/Managers/AdminManager.cs b/Content.Server/Administration/Managers/AdminManager.cs index 05dacdc577..59fc11f7bb 100644 --- a/Content.Server/Administration/Managers/AdminManager.cs +++ b/Content.Server/Administration/Managers/AdminManager.cs @@ -4,10 +4,8 @@ using System.Reflection; using System.Threading.Tasks; using Content.Server.Chat.Managers; using Content.Server.Database; -using Content.Server.Players; using Content.Shared.Administration; using Content.Shared.CCVar; -using Content.Shared.Info; using Content.Shared.Players; using Robust.Server.Console; using Robust.Server.Player; @@ -108,7 +106,7 @@ namespace Content.Server.Administration.Managers // The DB function handles this scenario fine, but it's worth noting. await _dbManager.UpdateAdminDeadminnedAsync(player.UserId, newState); } - catch (Exception e) + catch (Exception) { _sawmill.Error("Failed to save deadmin state to database for {Admin}", player.UserId); } diff --git a/Content.Server/Administration/PlayerPanelEui.cs b/Content.Server/Administration/PlayerPanelEui.cs index 6c30488886..31acd33bf1 100644 --- a/Content.Server/Administration/PlayerPanelEui.cs +++ b/Content.Server/Administration/PlayerPanelEui.cs @@ -8,6 +8,7 @@ using Content.Server.EUI; using Content.Shared.Administration; using Content.Shared.Database; using Content.Shared.Eui; +using Content.Shared.Follower; using Robust.Server.Player; using Robust.Shared.Player; @@ -33,11 +34,13 @@ public sealed class PlayerPanelEui : BaseEui private bool _frozen; private bool _canFreeze; private bool _canAhelp; + private FollowerSystem _follower; public PlayerPanelEui(LocatedPlayerData player) { IoCManager.InjectDependencies(this); _targetPlayer = player; + _follower = _entity.System(); } public override void Opened() @@ -141,6 +144,16 @@ public sealed class PlayerPanelEui : BaseEui _entity.DeleteEntity(session.AttachedEntity); } break; + case PlayerPanelFollowMessage: + if (!_admins.HasAdminFlag(Player, AdminFlags.Admin) || + !_player.TryGetSessionById(_targetPlayer.UserId, out session) || + session.AttachedEntity == null || + Player.AttachedEntity is null || + session.AttachedEntity == Player.AttachedEntity) + return; + + _follower.StartFollowingEntity(Player.AttachedEntity.Value, session.AttachedEntity.Value); + break; } } diff --git a/Content.Server/Administration/Systems/AdminSystem.cs b/Content.Server/Administration/Systems/AdminSystem.cs index 9e0664bd83..b9916bc5b2 100644 --- a/Content.Server/Administration/Systems/AdminSystem.cs +++ b/Content.Server/Administration/Systems/AdminSystem.cs @@ -153,9 +153,7 @@ public sealed class AdminSystem : EntitySystem private void OnRoleEvent(RoleEvent ev) { - var session = _minds.GetSession(ev.Mind); - - if (!ev.RoleTypeUpdate || session == null) + if (!ev.RoleTypeUpdate || !_playerManager.TryGetSessionById(ev.Mind.UserId, out var session)) return; UpdatePlayerList(session); @@ -235,12 +233,16 @@ public sealed class AdminSystem : EntitySystem // Starting role, antagonist status and role type RoleTypePrototype roleType = new(); var startingRole = string.Empty; + LocId? subtype = null; if (_minds.TryGetMind(session, out var mindId, out var mindComp) && mindComp is not null) { sortWeight = _role.GetRoleCompByTime(mindComp)?.Comp.SortWeight ?? 0; if (_proto.TryIndex(mindComp.RoleType, out var role)) + { roleType = role; + subtype = mindComp.Subtype; + } else Log.Error($"{ToPrettyString(mindId)} has invalid Role Type '{mindComp.RoleType}'. Displaying '{Loc.GetString(roleType.Name)}' instead"); @@ -269,6 +271,7 @@ public sealed class AdminSystem : EntitySystem startingRole, antag, roleType, + subtype, sortWeight, GetNetEntity(session?.AttachedEntity), data.UserId, diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs index 61afbe2d06..86760ce86c 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Smites.cs @@ -421,7 +421,7 @@ public sealed partial class AdminVerbSystem { var xform = Transform(args.Target); var fixtures = Comp(args.Target); - _transformSystem.Unanchor(args.Target); // Just in case. + _transformSystem.Unanchor(args.Target, xform); // Just in case. _physics.SetBodyType(args.Target, BodyType.Dynamic, manager: fixtures, body: physics); _physics.SetBodyStatus(args.Target, physics, BodyStatus.InAir); _physics.WakeBody(args.Target, manager: fixtures, body: physics); @@ -877,9 +877,9 @@ public sealed partial class AdminVerbSystem var hadSlipComponent = EnsureComp(args.Target, out SlipperyComponent slipComponent); if (!hadSlipComponent) { - slipComponent.SuperSlippery = true; - slipComponent.ParalyzeTime = 5; - slipComponent.LaunchForwardsMultiplier = 20; + slipComponent.SlipData.SuperSlippery = true; + slipComponent.SlipData.ParalyzeTime = TimeSpan.FromSeconds(5); + slipComponent.SlipData.LaunchForwardsMultiplier = 20; } _slipperySystem.TrySlip(args.Target, slipComponent, args.Target, requiresContact: false); diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs index f598c8cf0b..8b0a24d902 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.Tools.cs @@ -65,343 +65,340 @@ public sealed partial class AdminVerbSystem if (!_adminManager.HasAdminFlag(player, AdminFlags.Admin)) return; - if (_adminManager.HasAdminFlag(player, AdminFlags.Admin)) + if (TryComp(args.Target, out var bolts)) { - if (TryComp(args.Target, out var bolts)) + Verb bolt = new() { - Verb bolt = new() - { - Text = bolts.BoltsDown ? "Unbolt" : "Bolt", - Category = VerbCategory.Tricks, - Icon = bolts.BoltsDown - ? new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/unbolt.png")) - : new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/bolt.png")), - Act = () => - { - _door.SetBoltsDown((args.Target, bolts), !bolts.BoltsDown); - }, - Impact = LogImpact.Medium, - Message = Loc.GetString(bolts.BoltsDown - ? "admin-trick-unbolt-description" - : "admin-trick-bolt-description"), - Priority = (int) (bolts.BoltsDown ? TricksVerbPriorities.Unbolt : TricksVerbPriorities.Bolt), - }; - args.Verbs.Add(bolt); - } - - if (TryComp(args.Target, out var airlockComp)) - { - Verb emergencyAccess = new() - { - Text = airlockComp.EmergencyAccess ? "Emergency Access Off" : "Emergency Access On", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/emergency_access.png")), - Act = () => - { - _airlockSystem.SetEmergencyAccess((args.Target, airlockComp), !airlockComp.EmergencyAccess); - }, - Impact = LogImpact.Medium, - Message = Loc.GetString(airlockComp.EmergencyAccess - ? "admin-trick-emergency-access-off-description" - : "admin-trick-emergency-access-on-description"), - Priority = (int) (airlockComp.EmergencyAccess ? TricksVerbPriorities.EmergencyAccessOff : TricksVerbPriorities.EmergencyAccessOn), - }; - args.Verbs.Add(emergencyAccess); - } - - if (HasComp(args.Target)) - { - Verb rejuvenate = new() - { - Text = "Rejuvenate", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/rejuvenate.png")), - Act = () => - { - _rejuvenate.PerformRejuvenate(args.Target); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-rejuvenate-description"), - Priority = (int) TricksVerbPriorities.Rejuvenate, - }; - args.Verbs.Add(rejuvenate); - } - - if (!HasComp(args.Target)) - { - Verb makeIndestructible = new() - { - Text = "Make Indestructible", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/plus.svg.192dpi.png")), - Act = () => - { - _sharedGodmodeSystem.EnableGodmode(args.Target); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-make-indestructible-description"), - Priority = (int) TricksVerbPriorities.MakeIndestructible, - }; - args.Verbs.Add(makeIndestructible); - } - else - { - Verb makeVulnerable = new() - { - Text = "Make Vulnerable", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/plus.svg.192dpi.png")), - Act = () => - { - _sharedGodmodeSystem.DisableGodmode(args.Target); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-make-vulnerable-description"), - Priority = (int) TricksVerbPriorities.MakeVulnerable, - }; - args.Verbs.Add(makeVulnerable); - } - - if (TryComp(args.Target, out var battery)) - { - Verb refillBattery = new() - { - Text = "Refill Battery", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/fill_battery.png")), - Act = () => - { - _batterySystem.SetCharge(args.Target, battery.MaxCharge, battery); - }, - Impact = LogImpact.Medium, - Message = Loc.GetString("admin-trick-refill-battery-description"), - Priority = (int) TricksVerbPriorities.RefillBattery, - }; - args.Verbs.Add(refillBattery); - - Verb drainBattery = new() - { - Text = "Drain Battery", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/drain_battery.png")), - Act = () => - { - _batterySystem.SetCharge(args.Target, 0, battery); - }, - Impact = LogImpact.Medium, - Message = Loc.GetString("admin-trick-drain-battery-description"), - Priority = (int) TricksVerbPriorities.DrainBattery, - }; - args.Verbs.Add(drainBattery); - - Verb infiniteBattery = new() - { - Text = "Infinite Battery", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/infinite_battery.png")), - Act = () => - { - var recharger = EnsureComp(args.Target); - recharger.AutoRecharge = true; - recharger.AutoRechargeRate = battery.MaxCharge; // Instant refill. - recharger.AutoRechargePause = false; // No delay. - }, - Impact = LogImpact.Medium, - Message = Loc.GetString("admin-trick-infinite-battery-object-description"), - Priority = (int) TricksVerbPriorities.InfiniteBattery, - }; - args.Verbs.Add(infiniteBattery); - } - - if (TryComp(args.Target, out var anchor)) - { - Verb blockUnanchor = new() - { - Text = "Block Unanchoring", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/anchor.svg.192dpi.png")), - Act = () => - { - RemComp(args.Target, anchor); - }, - Impact = LogImpact.Medium, - Message = Loc.GetString("admin-trick-block-unanchoring-description"), - Priority = (int) TricksVerbPriorities.BlockUnanchoring, - }; - args.Verbs.Add(blockUnanchor); - } - - if (TryComp(args.Target, out var tank)) - { - Verb refillInternalsO2 = new() - { - Text = "Refill Internals Oxygen", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/oxygen.rsi"), "icon"), - Act = () => - { - RefillGasTank(args.Target, Gas.Oxygen, tank); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-internals-refill-oxygen-description"), - Priority = (int) TricksVerbPriorities.RefillOxygen, - }; - args.Verbs.Add(refillInternalsO2); - - Verb refillInternalsN2 = new() - { - Text = "Refill Internals Nitrogen", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/red.rsi"), "icon"), - Act = () => - { - RefillGasTank(args.Target, Gas.Nitrogen, tank); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-internals-refill-nitrogen-description"), - Priority = (int) TricksVerbPriorities.RefillNitrogen, - }; - args.Verbs.Add(refillInternalsN2); - - Verb refillInternalsPlasma = new() - { - Text = "Refill Internals Plasma", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/plasma.rsi"), "icon"), - Act = () => - { - RefillGasTank(args.Target, Gas.Plasma, tank); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-internals-refill-plasma-description"), - Priority = (int) TricksVerbPriorities.RefillPlasma, - }; - args.Verbs.Add(refillInternalsPlasma); - } - - if (HasComp(args.Target)) - { - Verb refillInternalsO2 = new() - { - Text = "Refill Internals Oxygen", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/oxygen.rsi"), "icon"), - Act = () => RefillEquippedTanks(args.User, Gas.Oxygen), - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-internals-refill-oxygen-description"), - Priority = (int) TricksVerbPriorities.RefillOxygen, - }; - args.Verbs.Add(refillInternalsO2); - - Verb refillInternalsN2 = new() - { - Text = "Refill Internals Nitrogen", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/red.rsi"), "icon"), - Act = () =>RefillEquippedTanks(args.User, Gas.Nitrogen), - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-internals-refill-nitrogen-description"), - Priority = (int) TricksVerbPriorities.RefillNitrogen, - }; - args.Verbs.Add(refillInternalsN2); - - Verb refillInternalsPlasma = new() - { - Text = "Refill Internals Plasma", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/plasma.rsi"), "icon"), - Act = () => RefillEquippedTanks(args.User, Gas.Plasma), - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-internals-refill-plasma-description"), - Priority = (int) TricksVerbPriorities.RefillPlasma, - }; - args.Verbs.Add(refillInternalsPlasma); - } - - Verb sendToTestArena = new() - { - Text = "Send to test arena", + Text = bolts.BoltsDown ? "Unbolt" : "Bolt", Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/eject.svg.192dpi.png")), - + Icon = bolts.BoltsDown + ? new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/unbolt.png")) + : new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/bolt.png")), Act = () => { - var (mapUid, gridUid) = _adminTestArenaSystem.AssertArenaLoaded(player); - _transformSystem.SetCoordinates(args.Target, new EntityCoordinates(gridUid ?? mapUid, Vector2.One)); + _door.SetBoltsDown((args.Target, bolts), !bolts.BoltsDown); }, Impact = LogImpact.Medium, - Message = Loc.GetString("admin-trick-send-to-test-arena-description"), - Priority = (int) TricksVerbPriorities.SendToTestArena, + Message = Loc.GetString(bolts.BoltsDown + ? "admin-trick-unbolt-description" + : "admin-trick-bolt-description"), + Priority = (int)(bolts.BoltsDown ? TricksVerbPriorities.Unbolt : TricksVerbPriorities.Bolt), }; - args.Verbs.Add(sendToTestArena); + args.Verbs.Add(bolt); + } - var activeId = FindActiveId(args.Target); - - if (activeId is not null) + if (TryComp(args.Target, out var airlockComp)) + { + Verb emergencyAccess = new() { - Verb grantAllAccess = new() + Text = airlockComp.EmergencyAccess ? "Emergency Access Off" : "Emergency Access On", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/emergency_access.png")), + Act = () => { - Text = "Grant All Access", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Misc/id_cards.rsi"), "centcom"), - Act = () => - { - GiveAllAccess(activeId.Value); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-grant-all-access-description"), - Priority = (int) TricksVerbPriorities.GrantAllAccess, - }; - args.Verbs.Add(grantAllAccess); + _airlockSystem.SetEmergencyAccess((args.Target, airlockComp), !airlockComp.EmergencyAccess); + }, + Impact = LogImpact.Medium, + Message = Loc.GetString(airlockComp.EmergencyAccess + ? "admin-trick-emergency-access-off-description" + : "admin-trick-emergency-access-on-description"), + Priority = (int)(airlockComp.EmergencyAccess ? TricksVerbPriorities.EmergencyAccessOff : TricksVerbPriorities.EmergencyAccessOn), + }; + args.Verbs.Add(emergencyAccess); + } - Verb revokeAllAccess = new() - { - Text = "Revoke All Access", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Misc/id_cards.rsi"), "default"), - Act = () => - { - RevokeAllAccess(activeId.Value); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-revoke-all-access-description"), - Priority = (int) TricksVerbPriorities.RevokeAllAccess, - }; - args.Verbs.Add(revokeAllAccess); - } - - if (HasComp(args.Target)) + if (HasComp(args.Target)) + { + Verb rejuvenate = new() { - Verb grantAllAccess = new() + Text = "Rejuvenate", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/rejuvenate.png")), + Act = () => { - Text = "Grant All Access", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Misc/id_cards.rsi"), "centcom"), - Act = () => - { - GiveAllAccess(args.Target); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-grant-all-access-description"), - Priority = (int) TricksVerbPriorities.GrantAllAccess, - }; - args.Verbs.Add(grantAllAccess); + _rejuvenate.PerformRejuvenate(args.Target); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-rejuvenate-description"), + Priority = (int)TricksVerbPriorities.Rejuvenate, + }; + args.Verbs.Add(rejuvenate); + } - Verb revokeAllAccess = new() + if (!HasComp(args.Target)) + { + Verb makeIndestructible = new() + { + Text = "Make Indestructible", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/plus.svg.192dpi.png")), + Act = () => { - Text = "Revoke All Access", - Category = VerbCategory.Tricks, - Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Misc/id_cards.rsi"), "default"), - Act = () => - { - RevokeAllAccess(args.Target); - }, - Impact = LogImpact.Extreme, - Message = Loc.GetString("admin-trick-revoke-all-access-description"), - Priority = (int) TricksVerbPriorities.RevokeAllAccess, - }; - args.Verbs.Add(revokeAllAccess); - } + _sharedGodmodeSystem.EnableGodmode(args.Target); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-make-indestructible-description"), + Priority = (int)TricksVerbPriorities.MakeIndestructible, + }; + args.Verbs.Add(makeIndestructible); + } + else + { + Verb makeVulnerable = new() + { + Text = "Make Vulnerable", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/plus.svg.192dpi.png")), + Act = () => + { + _sharedGodmodeSystem.DisableGodmode(args.Target); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-make-vulnerable-description"), + Priority = (int)TricksVerbPriorities.MakeVulnerable, + }; + args.Verbs.Add(makeVulnerable); + } + + if (TryComp(args.Target, out var battery)) + { + Verb refillBattery = new() + { + Text = "Refill Battery", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/fill_battery.png")), + Act = () => + { + _batterySystem.SetCharge(args.Target, battery.MaxCharge, battery); + }, + Impact = LogImpact.Medium, + Message = Loc.GetString("admin-trick-refill-battery-description"), + Priority = (int)TricksVerbPriorities.RefillBattery, + }; + args.Verbs.Add(refillBattery); + + Verb drainBattery = new() + { + Text = "Drain Battery", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/drain_battery.png")), + Act = () => + { + _batterySystem.SetCharge(args.Target, 0, battery); + }, + Impact = LogImpact.Medium, + Message = Loc.GetString("admin-trick-drain-battery-description"), + Priority = (int)TricksVerbPriorities.DrainBattery, + }; + args.Verbs.Add(drainBattery); + + Verb infiniteBattery = new() + { + Text = "Infinite Battery", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/AdminActions/infinite_battery.png")), + Act = () => + { + var recharger = EnsureComp(args.Target); + recharger.AutoRecharge = true; + recharger.AutoRechargeRate = battery.MaxCharge; // Instant refill. + recharger.AutoRechargePause = false; // No delay. + }, + Impact = LogImpact.Medium, + Message = Loc.GetString("admin-trick-infinite-battery-object-description"), + Priority = (int)TricksVerbPriorities.InfiniteBattery, + }; + args.Verbs.Add(infiniteBattery); + } + + if (TryComp(args.Target, out var anchor)) + { + Verb blockUnanchor = new() + { + Text = "Block Unanchoring", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/anchor.svg.192dpi.png")), + Act = () => + { + RemComp(args.Target, anchor); + }, + Impact = LogImpact.Medium, + Message = Loc.GetString("admin-trick-block-unanchoring-description"), + Priority = (int)TricksVerbPriorities.BlockUnanchoring, + }; + args.Verbs.Add(blockUnanchor); + } + + if (TryComp(args.Target, out var tank)) + { + Verb refillInternalsO2 = new() + { + Text = "Refill Internals Oxygen", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/oxygen.rsi"), "icon"), + Act = () => + { + RefillGasTank(args.Target, Gas.Oxygen, tank); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-internals-refill-oxygen-description"), + Priority = (int)TricksVerbPriorities.RefillOxygen, + }; + args.Verbs.Add(refillInternalsO2); + + Verb refillInternalsN2 = new() + { + Text = "Refill Internals Nitrogen", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/red.rsi"), "icon"), + Act = () => + { + RefillGasTank(args.Target, Gas.Nitrogen, tank); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-internals-refill-nitrogen-description"), + Priority = (int)TricksVerbPriorities.RefillNitrogen, + }; + args.Verbs.Add(refillInternalsN2); + + Verb refillInternalsPlasma = new() + { + Text = "Refill Internals Plasma", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/plasma.rsi"), "icon"), + Act = () => + { + RefillGasTank(args.Target, Gas.Plasma, tank); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-internals-refill-plasma-description"), + Priority = (int)TricksVerbPriorities.RefillPlasma, + }; + args.Verbs.Add(refillInternalsPlasma); + } + + if (HasComp(args.Target)) + { + Verb refillInternalsO2 = new() + { + Text = "Refill Internals Oxygen", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/oxygen.rsi"), "icon"), + Act = () => RefillEquippedTanks(args.User, Gas.Oxygen), + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-internals-refill-oxygen-description"), + Priority = (int)TricksVerbPriorities.RefillOxygen, + }; + args.Verbs.Add(refillInternalsO2); + + Verb refillInternalsN2 = new() + { + Text = "Refill Internals Nitrogen", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/red.rsi"), "icon"), + Act = () => RefillEquippedTanks(args.User, Gas.Nitrogen), + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-internals-refill-nitrogen-description"), + Priority = (int)TricksVerbPriorities.RefillNitrogen, + }; + args.Verbs.Add(refillInternalsN2); + + Verb refillInternalsPlasma = new() + { + Text = "Refill Internals Plasma", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Tanks/plasma.rsi"), "icon"), + Act = () => RefillEquippedTanks(args.User, Gas.Plasma), + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-internals-refill-plasma-description"), + Priority = (int)TricksVerbPriorities.RefillPlasma, + }; + args.Verbs.Add(refillInternalsPlasma); + } + + Verb sendToTestArena = new() + { + Text = "Send to test arena", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/eject.svg.192dpi.png")), + + Act = () => + { + var (mapUid, gridUid) = _adminTestArenaSystem.AssertArenaLoaded(player); + _transformSystem.SetCoordinates(args.Target, new EntityCoordinates(gridUid ?? mapUid, Vector2.One)); + }, + Impact = LogImpact.Medium, + Message = Loc.GetString("admin-trick-send-to-test-arena-description"), + Priority = (int)TricksVerbPriorities.SendToTestArena, + }; + args.Verbs.Add(sendToTestArena); + + var activeId = FindActiveId(args.Target); + + if (activeId is not null) + { + Verb grantAllAccess = new() + { + Text = "Grant All Access", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Misc/id_cards.rsi"), "centcom"), + Act = () => + { + GiveAllAccess(activeId.Value); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-grant-all-access-description"), + Priority = (int)TricksVerbPriorities.GrantAllAccess, + }; + args.Verbs.Add(grantAllAccess); + + Verb revokeAllAccess = new() + { + Text = "Revoke All Access", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Misc/id_cards.rsi"), "default"), + Act = () => + { + RevokeAllAccess(activeId.Value); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-revoke-all-access-description"), + Priority = (int)TricksVerbPriorities.RevokeAllAccess, + }; + args.Verbs.Add(revokeAllAccess); + } + + if (HasComp(args.Target)) + { + Verb grantAllAccess = new() + { + Text = "Grant All Access", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Misc/id_cards.rsi"), "centcom"), + Act = () => + { + GiveAllAccess(args.Target); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-grant-all-access-description"), + Priority = (int)TricksVerbPriorities.GrantAllAccess, + }; + args.Verbs.Add(grantAllAccess); + + Verb revokeAllAccess = new() + { + Text = "Revoke All Access", + Category = VerbCategory.Tricks, + Icon = new SpriteSpecifier.Rsi(new("/Textures/Objects/Misc/id_cards.rsi"), "default"), + Act = () => + { + RevokeAllAccess(args.Target); + }, + Impact = LogImpact.Extreme, + Message = Loc.GetString("admin-trick-revoke-all-access-description"), + Priority = (int)TricksVerbPriorities.RevokeAllAccess, + }; + args.Verbs.Add(revokeAllAccess); } if (TryComp(args.Target, out var stack)) diff --git a/Content.Server/Administration/Systems/AdminVerbSystem.cs b/Content.Server/Administration/Systems/AdminVerbSystem.cs index d10ffe2942..b445b499f9 100644 --- a/Content.Server/Administration/Systems/AdminVerbSystem.cs +++ b/Content.Server/Administration/Systems/AdminVerbSystem.cs @@ -2,16 +2,12 @@ using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Server.Administration.UI; using Content.Server.Disposal.Tube; -using Content.Server.Disposal.Tube.Components; using Content.Server.EUI; -using Content.Server.GameTicking; using Content.Server.Ghost.Roles; using Content.Server.Mind; using Content.Server.Mind.Commands; using Content.Server.Prayer; using Content.Server.Station.Systems; -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; @@ -26,7 +22,6 @@ using Content.Shared.Verbs; using Robust.Server.Console; using Robust.Server.GameObjects; using Robust.Shared.Console; -using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Player; using Robust.Shared.Prototypes; @@ -58,9 +53,7 @@ namespace Content.Server.Administration.Systems [Dependency] private readonly AdminSystem _adminSystem = default!; [Dependency] private readonly DisposalTubeSystem _disposalTubes = default!; [Dependency] private readonly EuiManager _euiManager = default!; - [Dependency] private readonly GameTicker _ticker = default!; [Dependency] private readonly GhostRoleSystem _ghostRoleSystem = default!; - [Dependency] private readonly ArtifactSystem _artifactSystem = default!; [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; [Dependency] private readonly PrayerSystem _prayerSystem = default!; [Dependency] private readonly MindSystem _mindSystem = default!; @@ -151,7 +144,7 @@ namespace Content.Server.Administration.Systems var stationUid = _stations.GetOwningStation(args.Target); - var profile = _ticker.GetPlayerProfile(targetActor.PlayerSession); + var profile = _gameTicker.GetPlayerProfile(targetActor.PlayerSession); var mobUid = _spawning.SpawnPlayerMob(coords.Value, null, profile, stationUid); if (_mindSystem.TryGetMind(args.Target, out var mindId, out var mindComp)) @@ -177,7 +170,7 @@ namespace Content.Server.Administration.Systems var stationUid = _stations.GetOwningStation(args.Target); - var profile = _ticker.GetPlayerProfile(targetActor.PlayerSession); + var profile = _gameTicker.GetPlayerProfile(targetActor.PlayerSession); _spawning.SpawnPlayerMob(coords.Value, null, profile, stationUid); }, ConfirmationPopup = true, @@ -194,7 +187,7 @@ namespace Content.Server.Administration.Systems }); } - if (_mindSystem.TryGetMind(args.Target, out _, out var mind) && mind.UserId != null) + if (_mindSystem.TryGetMind(args.Target, out var mindId, out var mindComp) && mindComp.UserId != null) { // Erase args.Verbs.Add(new Verb @@ -206,7 +199,7 @@ namespace Content.Server.Administration.Systems new("/Textures/Interface/VerbIcons/delete_transparent.svg.192dpi.png")), Act = () => { - _adminSystem.Erase(mind.UserId.Value); + _adminSystem.Erase(mindComp.UserId.Value); }, Impact = LogImpact.Extreme, ConfirmationPopup = true @@ -219,11 +212,20 @@ namespace Content.Server.Administration.Systems Category = VerbCategory.Admin, Act = () => { - _console.ExecuteCommand(player, $"respawn \"{mind.UserId}\""); + _console.ExecuteCommand(player, $"respawn \"{mindComp.UserId}\""); }, ConfirmationPopup = true, // No logimpact as the command does it internally. }); + + // Inspect mind + args.Verbs.Add(new Verb + { + Text = Loc.GetString("inspect-mind-verb-get-data-text"), + Icon = new SpriteSpecifier.Texture(new("/Textures/Interface/VerbIcons/sentient.svg.192dpi.png")), + Category = VerbCategory.Debug, + Act = () => _console.RemoteExecuteCommand(player, $"vv {GetNetEntity(mindId)}"), + }); } // Freeze @@ -445,29 +447,6 @@ namespace Content.Server.Administration.Systems args.Verbs.Add(verb); } - // XenoArcheology - if (_adminManager.IsAdmin(player) && TryComp(args.Target, out var artifact)) - { - // make artifact always active (by adding timer trigger) - args.Verbs.Add(new Verb() - { - Text = Loc.GetString("artifact-verb-make-always-active"), - Category = VerbCategory.Debug, - Act = () => EntityManager.AddComponent(args.Target), - Disabled = EntityManager.HasComponent(args.Target), - Impact = LogImpact.High - }); - - // force to activate artifact ignoring timeout - args.Verbs.Add(new Verb() - { - Text = Loc.GetString("artifact-verb-activate"), - Category = VerbCategory.Debug, - Act = () => _artifactSystem.ForceActivateArtifact(args.Target, component: artifact), - Impact = LogImpact.High - }); - } - // Make Sentient verb if (_groupController.CanCommand(player, "makesentient") && args.User != args.Target && diff --git a/Content.Server/Administration/Systems/SuperBonkSystem.cs b/Content.Server/Administration/Systems/SuperBonkSystem.cs index 5cd62d8357..c4de0d0a41 100644 --- a/Content.Server/Administration/Systems/SuperBonkSystem.cs +++ b/Content.Server/Administration/Systems/SuperBonkSystem.cs @@ -4,6 +4,7 @@ using Content.Shared.Clumsy; using Content.Shared.Mobs; using Content.Shared.Mobs.Components; using Robust.Shared.Audio.Systems; +using Robust.Shared.Timing; namespace Content.Server.Administration.Systems; @@ -12,44 +13,38 @@ public sealed class SuperBonkSystem : EntitySystem [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly ClumsySystem _clumsySystem = default!; [Dependency] private readonly SharedAudioSystem _audioSystem = default!; + [Dependency] private readonly IGameTiming _timing = default!; public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnMobStateChanged); - SubscribeLocalEvent(OnBonkShutdown); + SubscribeLocalEvent(OnShutdown); } - public void StartSuperBonk(EntityUid target, float delay = 0.1f, bool stopWhenDead = false) + private void OnInit(Entity ent, ref ComponentInit args) { + var (_, component) = ent; - //The other check in the code to stop when the target dies does not work if the target is already dead. - if (stopWhenDead && TryComp(target, out var mState)) - { - if (mState.CurrentState == MobState.Dead) - return; - } + component.NextBonk = _timing.CurTime + component.BonkCooldown; + } - var hadClumsy = EnsureComp(target, out _); + private void OnMobStateChanged(Entity ent, ref MobStateChangedEvent args) + { + var (uid, component) = ent; - var tables = EntityQueryEnumerator(); - var bonks = new Dictionary(); - // This is done so we don't crash if something like a new table is spawned. - while (tables.MoveNext(out var uid, out var comp)) - { - bonks.Add(uid, comp); - } + if (component.StopWhenDead && args.NewMobState == MobState.Dead) + RemCompDeferred(uid); + } - var sComp = new SuperBonkComponent - { - Target = target, - Tables = bonks.GetEnumerator(), - RemoveClumsy = !hadClumsy, - StopWhenDead = stopWhenDead, - }; + private void OnShutdown(Entity ent, ref ComponentShutdown args) + { + var (uid, component) = ent; - AddComp(target, sComp); + if (component.RemoveClumsy) + RemComp(uid); } public override void Update(float frameTime) @@ -59,49 +54,58 @@ public sealed class SuperBonkSystem : EntitySystem while (comps.MoveNext(out var uid, out var comp)) { - comp.TimeRemaining -= frameTime; - if (!(comp.TimeRemaining <= 0)) + if (comp.NextBonk > _timing.CurTime) continue; - Bonk(comp); - - if (!(comp.Tables.MoveNext())) + if (!TryBonk(uid, comp.Tables.Current) || !comp.Tables.MoveNext()) { - RemComp(comp.Target); + RemComp(uid); continue; } - comp.TimeRemaining = comp.InitialTime; + comp.NextBonk += comp.BonkCooldown; } } - private void Bonk(SuperBonkComponent comp) + public void StartSuperBonk(EntityUid target, bool stopWhenDead = false) { - var uid = comp.Tables.Current.Key; + //The other check in the code to stop when the target dies does not work if the target is already dead. + if (stopWhenDead && TryComp(target, out var mobState) && mobState.CurrentState == MobState.Dead) + return; + + + if (EnsureComp(target, out var component)) + return; + + var tables = EntityQueryEnumerator(); + var bonks = new List(); + // This is done so we don't crash if something like a new table is spawned. + while (tables.MoveNext(out var uid, out var comp)) + { + bonks.Add(uid); + } + + component.Tables = bonks.GetEnumerator(); + component.RemoveClumsy = !EnsureComp(target, out _); + component.StopWhenDead = stopWhenDead; + } + + private bool TryBonk(EntityUid uid, EntityUid tableUid) + { + if (!TryComp(uid, out var clumsyComp)) + return false; // It would be very weird for something without a transform component to have a bonk component // but just in case because I don't want to crash the server. - if (!HasComp(uid) || !TryComp(comp.Target, out var clumsyComp)) - return; - - _transformSystem.SetCoordinates(comp.Target, Transform(uid).Coordinates); - - _clumsySystem.HitHeadClumsy((comp.Target, clumsyComp), uid); - - _audioSystem.PlayPvs(clumsyComp.TableBonkSound, comp.Target); - } - - private void OnMobStateChanged(EntityUid uid, SuperBonkComponent comp, MobStateChangedEvent args) - { - if (comp.StopWhenDead && args.NewMobState == MobState.Dead) + if (HasComp(tableUid)) { - RemComp(uid); - } - } + _transformSystem.SetCoordinates(uid, Transform(tableUid).Coordinates); - private void OnBonkShutdown(EntityUid uid, SuperBonkComponent comp, ComponentShutdown ev) - { - if (comp.RemoveClumsy) - RemComp(comp.Target); + _clumsySystem.HitHeadClumsy((uid, clumsyComp), tableUid); + + _audioSystem.PlayPvs(clumsyComp.TableBonkSound, tableUid); + } + + return true; } } diff --git a/Content.Server/Administration/Toolshed/TagCommand.cs b/Content.Server/Administration/Toolshed/TagCommand.cs index a751b85914..119578f100 100644 --- a/Content.Server/Administration/Toolshed/TagCommand.cs +++ b/Content.Server/Administration/Toolshed/TagCommand.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Administration; using Content.Shared.Tag; using Robust.Shared.Prototypes; @@ -29,10 +29,10 @@ public sealed class TagCommand : ToolshedCommand public IEnumerable With( [CommandInvocationContext] IInvocationContext ctx, [PipedArgument] IEnumerable entities, - [CommandArgument] ValueRef> tag) + [CommandArgument] ProtoId tag) { _tag ??= GetSys(); - return entities.Where(e => _tag.HasTag(e, tag.Evaluate(ctx)!)); + return entities.Where(e => _tag.HasTag(e, tag!)); } [CommandImplementation("add")] diff --git a/Content.Server/AlertLevel/AlertLevelChangeOnTriggerComponent.cs b/Content.Server/AlertLevel/AlertLevelChangeOnTriggerComponent.cs new file mode 100644 index 0000000000..aa6c5ba2bd --- /dev/null +++ b/Content.Server/AlertLevel/AlertLevelChangeOnTriggerComponent.cs @@ -0,0 +1,33 @@ +using Content.Server.AlertLevel.Systems; + +namespace Content.Server.AlertLevel; +/// +/// This component is for changing the alert level of the station when triggered. +/// +[RegisterComponent, Access(typeof(AlertLevelChangeOnTriggerSystem))] +public sealed partial class AlertLevelChangeOnTriggerComponent : Component +{ + /// + ///The alert level to change to when triggered. + /// + [DataField] + public string Level = "blue"; + + /// + ///Whether to play the sound when the alert level changes. + /// + [DataField] + public bool PlaySound = true; + + /// + ///Whether to say the announcement when the alert level changes. + /// + [DataField] + public bool Announce = true; + + /// + ///Force the alert change. This applies if the alert level is not selectable or not. + /// + [DataField] + public bool Force = false; +} diff --git a/Content.Server/AlertLevel/AlertLevelSystem.cs b/Content.Server/AlertLevel/AlertLevelSystem.cs index 0b49d7e4bf..606f1242ec 100644 --- a/Content.Server/AlertLevel/AlertLevelSystem.cs +++ b/Content.Server/AlertLevel/AlertLevelSystem.cs @@ -18,7 +18,8 @@ public sealed class AlertLevelSystem : EntitySystem [Dependency] private readonly StationSystem _stationSystem = default!; // Until stations are a prototype, this is how it's going to have to be. - public const string DefaultAlertLevelSet = "stationAlerts"; + // public const string DefaultAlertLevelSet = "stationAlerts"; // OLD VANILA. Changed by CP14. + public const string DefaultAlertLevelSet = "CP14TownAlerts"; public override void Initialize() { @@ -116,6 +117,20 @@ public sealed class AlertLevelSystem : EntitySystem return alert.CurrentDelay; } + /// + /// Get the default alert level for a station entity. + /// Returns an empty string if the station has no alert levels defined. + /// + /// The station entity. + public string GetDefaultLevel(Entity station) + { + if (!Resolve(station.Owner, ref station.Comp) || station.Comp.AlertLevels == null) + { + return string.Empty; + } + return station.Comp.AlertLevels.DefaultLevel; + } + /// /// Set the alert level based on the station's entity ID. /// @@ -170,7 +185,8 @@ public sealed class AlertLevelSystem : EntitySystem } // The full announcement to be spat out into chat. - var announcementFull = Loc.GetString("alert-level-announcement", ("name", name), ("announcement", announcement)); + // var announcementFull = Loc.GetString("alert-level-announcement", ("name", name), ("announcement", announcement)); // OLD VANILA. Changed by CP14. + var announcementFull = Loc.GetString("cp14-alert-level-announcement", ("name", name), ("announcement", announcement)); var playDefault = false; if (playSound) diff --git a/Content.Server/AlertLevel/Systems/AlertLevelChangeOnTriggerSystem.cs b/Content.Server/AlertLevel/Systems/AlertLevelChangeOnTriggerSystem.cs new file mode 100644 index 0000000000..0c9734b943 --- /dev/null +++ b/Content.Server/AlertLevel/Systems/AlertLevelChangeOnTriggerSystem.cs @@ -0,0 +1,27 @@ +using Content.Server.AlertLevel; +using Content.Server.Explosion.EntitySystems; +using Content.Server.Station.Systems; + +namespace Content.Server.AlertLevel.Systems; + +public sealed class AlertLevelChangeOnTriggerSystem : EntitySystem +{ + [Dependency] private readonly AlertLevelSystem _alertLevelSystem = default!; + [Dependency] private readonly StationSystem _station = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnTrigger); + } + + private void OnTrigger(Entity ent, ref TriggerEvent args) + { + var stationUid = _station.GetOwningStation(ent.Owner); + if (!stationUid.HasValue) + return; + + _alertLevelSystem.SetLevel(stationUid.Value, ent.Comp.Level, ent.Comp.PlaySound, ent.Comp.Announce, ent.Comp.Force); + } +} diff --git a/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs b/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs index b647e026e3..ff644ad3e0 100644 --- a/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs +++ b/Content.Server/Anomaly/Effects/InnerBodyAnomalySystem.cs @@ -15,6 +15,7 @@ using Content.Shared.Popups; using Content.Shared.Whitelist; using Robust.Shared.Audio.Systems; using Robust.Shared.Physics.Events; +using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Server.Anomaly.Effects; @@ -26,6 +27,7 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly BodySystem _body = default!; [Dependency] private readonly IChatManager _chat = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; [Dependency] private readonly JitteringSystem _jitter = default!; [Dependency] private readonly MindSystem _mind = default!; @@ -102,7 +104,7 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem if (ent.Comp.StartMessage is not null && _mind.TryGetMind(ent, out _, out var mindComponent) && - mindComponent.Session != null) + _player.TryGetSessionById(mindComponent.UserId, out var session)) { var message = Loc.GetString(ent.Comp.StartMessage); var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", message)); @@ -111,7 +113,7 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem wrappedMessage, default, false, - mindComponent.Session.Channel, + session.Channel, _messageColor); _popup.PopupEntity(message, ent, ent, PopupType.MediumCaution); @@ -137,7 +139,8 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem private void OnSeverityChanged(Entity ent, ref AnomalySeverityChangedEvent args) { - if (!_mind.TryGetMind(ent, out _, out var mindComponent) || mindComponent.Session == null) + if (!_mind.TryGetMind(ent, out _, out var mindComponent) || + !_player.TryGetSessionById(mindComponent.UserId, out var session)) return; var message = string.Empty; @@ -172,7 +175,7 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem wrappedMessage, default, false, - mindComponent.Session.Channel, + session.Channel, _messageColor); _popup.PopupEntity(message, ent, ent, PopupType.MediumCaution); @@ -214,7 +217,7 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem if (ent.Comp.EndMessage is not null && _mind.TryGetMind(ent, out _, out var mindComponent) && - mindComponent.Session != null) + _player.TryGetSessionById(mindComponent.UserId, out var session)) { var message = Loc.GetString(ent.Comp.EndMessage); var wrappedMessage = Loc.GetString("chat-manager-server-wrap-message", ("message", message)); @@ -223,7 +226,7 @@ public sealed class InnerBodyAnomalySystem : SharedInnerBodyAnomalySystem wrappedMessage, default, false, - mindComponent.Session.Channel, + session.Channel, _messageColor); diff --git a/Content.Server/Antag/AntagSelectionSystem.API.cs b/Content.Server/Antag/AntagSelectionSystem.API.cs index 93b5fa6136..975c802eed 100644 --- a/Content.Server/Antag/AntagSelectionSystem.API.cs +++ b/Content.Server/Antag/AntagSelectionSystem.API.cs @@ -264,10 +264,10 @@ public sealed partial class AntagSelectionSystem if (!_mind.TryGetMind(entity, out _, out var mindComponent)) return; - if (mindComponent.Session == null) + if (!_playerManager.TryGetSessionById(mindComponent.UserId, out var session)) return; - SendBriefing(mindComponent.Session, briefing, briefingColor, briefingSound); + SendBriefing(session, briefing, briefingColor, briefingSound); } /// diff --git a/Content.Server/Atmos/Consoles/AtmosAlertsComputerSystem.cs b/Content.Server/Atmos/Consoles/AtmosAlertsComputerSystem.cs index 6e3a11b5f9..f4613b1d05 100644 --- a/Content.Server/Atmos/Consoles/AtmosAlertsComputerSystem.cs +++ b/Content.Server/Atmos/Consoles/AtmosAlertsComputerSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Atmos.Monitor.Components; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.Pinpointer; using Content.Server.Power.Components; diff --git a/Content.Server/Atmos/Consoles/AtmosMonitoringConsoleSystem.cs b/Content.Server/Atmos/Consoles/AtmosMonitoringConsoleSystem.cs index 5ecadc7154..8c786e5b21 100644 --- a/Content.Server/Atmos/Consoles/AtmosMonitoringConsoleSystem.cs +++ b/Content.Server/Atmos/Consoles/AtmosMonitoringConsoleSystem.cs @@ -17,6 +17,7 @@ using Robust.Shared.Map.Components; using Robust.Shared.Timing; using System.Diagnostics.CodeAnalysis; using System.Linq; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Atmos.Consoles; @@ -360,7 +361,7 @@ public sealed class AtmosMonitoringConsoleSystem : SharedAtmosMonitoringConsoleS chunk.AtmosPipeData[index] = atmosPipeData & ~mask; } - // Rebuild the tile's pipe data + // Rebuild the tile's pipe data foreach (var ent in _sharedMapSystem.GetAnchoredEntities(gridUid, grid, coords)) { if (!TryComp(ent, out var entAtmosPipeColor)) diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs index 6a5b07bb17..cdf7018e23 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.HighPressureDelta.cs @@ -56,11 +56,15 @@ namespace Content.Server.Atmos.EntitySystems _physics.SetBodyStatus(uid, body, BodyStatus.OnGround); } - if (TryComp(uid, out var fixtures)) + if (TryComp(uid, out var fixtures) + && TryComp(uid, out var component)) { foreach (var (id, fixture) in fixtures.Fixtures) { - _physics.AddCollisionMask(uid, id, fixture, (int) CollisionGroup.TableLayer, manager: fixtures); + if (component.TableLayerRemoved.Contains(id)) + { + _physics.AddCollisionMask(uid, id, fixture, (int)CollisionGroup.TableLayer, manager: fixtures); + } } } } @@ -80,9 +84,13 @@ namespace Content.Server.Atmos.EntitySystems foreach (var (id, fixture) in fixtures.Fixtures) { - _physics.RemoveCollisionMask(uid, id, fixture, (int) CollisionGroup.TableLayer, manager: fixtures); + // Mark fixtures that have TableLayer removed + if ((fixture.CollisionMask & (int)CollisionGroup.TableLayer) != 0) + { + component.TableLayerRemoved.Add(id); + _physics.RemoveCollisionMask(uid, id, fixture, (int)CollisionGroup.TableLayer, manager: fixtures); + } } - // TODO: Make them dynamic type? Ehh but they still want movement so uhh make it non-predicted like weightless? // idk it's hard. diff --git a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs index 8c5a73f4d0..70bdfa0b41 100644 --- a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs +++ b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs @@ -24,6 +24,7 @@ using Content.Shared.Timing; using Content.Shared.Toggleable; using Content.Shared.Weapons.Melee.Events; using Content.Shared.FixedPoint; +using Content.Shared.Hands; using Robust.Server.Audio; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; @@ -74,6 +75,7 @@ namespace Content.Server.Atmos.EntitySystems SubscribeLocalEvent(OnTileFire); SubscribeLocalEvent(OnRejuvenate); SubscribeLocalEvent(OnResistFireAlert); + Subs.SubscribeWithRelay(OnExtinguishEvent); SubscribeLocalEvent(IgniteOnCollide); SubscribeLocalEvent(OnIgniteLand); @@ -85,6 +87,14 @@ namespace Content.Server.Atmos.EntitySystems SubscribeLocalEvent(OnDamageChanged); } + private void OnExtinguishEvent(Entity ent, ref ExtinguishEvent args) + { + // You know I'm really not sure if having AdjustFireStacks *after* Extinguish, + // but I'm just moving this code, not questioning it. + Extinguish(ent, ent.Comp); + AdjustFireStacks(ent, args.FireStacksAdjustment, ent.Comp); + } + private void OnMeleeHit(EntityUid uid, IgniteOnMeleeHitComponent component, MeleeHitEvent args) { foreach (var entity in args.HitEntities) @@ -330,6 +340,9 @@ namespace Content.Server.Atmos.EntitySystems _ignitionSourceSystem.SetIgnited(uid, false); + var extinguished = new ExtinguishedEvent(); + RaiseLocalEvent(uid, ref extinguished); + UpdateAppearance(uid, flammable); } @@ -351,6 +364,9 @@ namespace Content.Server.Atmos.EntitySystems else _adminLogger.Add(LogType.Flammable, $"{ToPrettyString(uid):target} set on fire by {ToPrettyString(ignitionSource):actor}"); flammable.OnFire = true; + + var extinguished = new IgnitedEvent(); + RaiseLocalEvent(uid, ref extinguished); } UpdateAppearance(uid, flammable); diff --git a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs index c714acb2f3..4882e93d23 100644 --- a/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs +++ b/Content.Server/Atmos/EntitySystems/GasTileOverlaySystem.cs @@ -16,6 +16,7 @@ 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.Threading; using Robust.Shared.Timing; @@ -60,12 +61,16 @@ namespace Content.Server.Atmos.EntitySystems private float _updateInterval; private int _thresholds; + private EntityQuery _gridQuery; private EntityQuery _query; public override void Initialize() { base.Initialize(); + _query = GetEntityQuery(); + _gridQuery = GetEntityQuery(); + _updateJob = new UpdatePlayerJob() { EntManager = EntityManager, @@ -76,6 +81,7 @@ namespace Content.Server.Atmos.EntitySystems MapManager = _mapManager, ChunkViewerPool = _chunkViewerPool, LastSentChunks = _lastSentChunks, + GridQuery = _gridQuery, }; _playerManager.PlayerStatusChanged += OnPlayerStatusChanged; @@ -85,7 +91,6 @@ namespace Content.Server.Atmos.EntitySystems SubscribeLocalEvent(Reset); SubscribeLocalEvent(OnStartup); - _query = GetEntityQuery(); } private void OnStartup(EntityUid uid, GasTileOverlayComponent component, ComponentStartup args) @@ -375,6 +380,8 @@ namespace Content.Server.Atmos.EntitySystems public Dictionary>> LastSentChunks; public List Sessions; + public EntityQuery GridQuery; + public void Execute(int index) { var playerSession = Sessions[index]; @@ -391,7 +398,7 @@ namespace Content.Server.Atmos.EntitySystems previouslySent.Remove(netGrid); // If grid was deleted then don't worry about sending it to the client. - if (!EntManager.TryGetEntity(netGrid, out var gridId) || !MapManager.IsGrid(gridId.Value)) + if (!EntManager.TryGetEntity(netGrid, out var gridId) || GridQuery.HasComp(gridId.Value)) ev.RemovedChunks[netGrid] = oldIndices; else { diff --git a/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs b/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs index 0ed91a9bc8..0ed33eaa46 100644 --- a/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/AirAlarmSystem.cs @@ -1,11 +1,8 @@ using Content.Server.Atmos.Monitor.Components; using Content.Server.Atmos.Piping.Components; using Content.Server.DeviceLinking.Systems; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.Popups; -using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; @@ -22,8 +19,9 @@ using Content.Shared.Interaction; using Content.Shared.Power; using Content.Shared.Wires; using Robust.Server.GameObjects; -using Robust.Shared.Player; using System.Linq; +using Content.Shared.DeviceNetwork.Events; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Atmos.Monitor.Systems; diff --git a/Content.Server/Atmos/Monitor/Systems/AtmosAlarmableSystem.cs b/Content.Server/Atmos/Monitor/Systems/AtmosAlarmableSystem.cs index 81a3968e6f..918b0f33ff 100644 --- a/Content.Server/Atmos/Monitor/Systems/AtmosAlarmableSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/AtmosAlarmableSystem.cs @@ -1,19 +1,17 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Atmos.Monitor.Components; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; -using Content.Server.Power.Components; using Content.Shared.Atmos.Monitor; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; using Content.Shared.Tag; using Robust.Server.Audio; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Prototypes; -using Robust.Shared.Utility; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Atmos.Monitor.Systems; diff --git a/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs b/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs index 99cf0109bb..520afe0c58 100644 --- a/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/AtmosMonitoringSystem.cs @@ -15,6 +15,7 @@ using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Piping.Components; using Content.Shared.Database; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; using Content.Shared.Tag; using Robust.Shared.Prototypes; diff --git a/Content.Server/Atmos/Monitor/Systems/FireAlarmSystem.cs b/Content.Server/Atmos/Monitor/Systems/FireAlarmSystem.cs index 6d768c1292..d7a9a188f9 100644 --- a/Content.Server/Atmos/Monitor/Systems/FireAlarmSystem.cs +++ b/Content.Server/Atmos/Monitor/Systems/FireAlarmSystem.cs @@ -1,18 +1,12 @@ -using Content.Server.AlertLevel; using Content.Server.Atmos.Monitor.Components; -using Content.Server.DeviceNetwork.Components; -using Content.Server.DeviceNetwork.Systems; -using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Access.Systems; -using Content.Shared.AlertLevel; using Content.Shared.Atmos.Monitor; using Content.Shared.CCVar; -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.DeviceNetwork.Systems; using Content.Shared.Interaction; using Content.Shared.Emag.Systems; -using Robust.Server.GameObjects; using Robust.Shared.Configuration; namespace Content.Server.Atmos.Monitor.Systems; diff --git a/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs b/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs index 1171b36fb9..c7c615455b 100644 --- a/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs +++ b/Content.Server/Atmos/Monitor/WireActions/AirAlarmPanicWire.cs @@ -1,9 +1,9 @@ using Content.Server.Atmos.Monitor.Components; using Content.Server.Atmos.Monitor.Systems; -using Content.Server.DeviceNetwork.Components; using Content.Server.Wires; using Content.Shared.Atmos.Monitor.Components; using Content.Shared.Wires; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Atmos.Monitor; diff --git a/Content.Server/Atmos/Piping/Binary/Components/GasVolumePumpComponent.cs b/Content.Server/Atmos/Piping/Binary/Components/GasVolumePumpComponent.cs deleted file mode 100644 index 48cdaebb97..0000000000 --- a/Content.Server/Atmos/Piping/Binary/Components/GasVolumePumpComponent.cs +++ /dev/null @@ -1,52 +0,0 @@ -using Content.Shared.Atmos; -using Content.Shared.Guidebook; - -namespace Content.Server.Atmos.Piping.Binary.Components -{ - [RegisterComponent] - public sealed partial class GasVolumePumpComponent : Component - { - [ViewVariables(VVAccess.ReadWrite)] - [DataField("enabled")] - public bool Enabled { get; set; } = true; - - [DataField("blocked")] - public bool Blocked { get; set; } = false; - - [ViewVariables(VVAccess.ReadWrite)] - public bool Overclocked { get; set; } = false; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("inlet")] - public string InletName { get; set; } = "inlet"; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("outlet")] - public string OutletName { get; set; } = "outlet"; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("transferRate")] - public float TransferRate { get; set; } = Atmospherics.MaxTransferRate; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("maxTransferRate")] - public float MaxTransferRate { get; set; } = Atmospherics.MaxTransferRate; - - [DataField("leakRatio")] - public float LeakRatio { get; set; } = 0.1f; - - [DataField("lowerThreshold")] - public float LowerThreshold { get; set; } = 0.01f; - - [DataField("higherThreshold")] - [GuidebookData] - public float HigherThreshold { get; set; } = DefaultHigherThreshold; - public static readonly float DefaultHigherThreshold = 2 * Atmospherics.MaxOutputPressure; - - [DataField("overclockThreshold")] - public float OverclockThreshold { get; set; } = 1000; - - [DataField("lastMolesTransferred")] - public float LastMolesTransferred; - } -} diff --git a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs index d593324b19..c6c660614a 100644 --- a/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs +++ b/Content.Server/Atmos/Piping/Binary/EntitySystems/GasVolumePumpSystem.cs @@ -1,82 +1,41 @@ -using Content.Server.Administration.Logs; using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Monitor.Systems; -using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Components; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Shared.Atmos.Piping.Binary.Components; +using Content.Shared.Atmos.Piping.Binary.Systems; using Content.Shared.Atmos.Piping.Components; -using Content.Shared.Atmos.Visuals; using Content.Shared.Audio; -using Content.Shared.Database; using Content.Shared.DeviceNetwork; -using Content.Shared.Examine; -using Content.Shared.Interaction; -using Content.Shared.Popups; -using Content.Shared.Power; +using Content.Shared.DeviceNetwork.Events; using JetBrains.Annotations; using Robust.Server.GameObjects; -using Robust.Shared.Player; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Atmos.Piping.Binary.EntitySystems { [UsedImplicitly] - public sealed class GasVolumePumpSystem : EntitySystem + public sealed class GasVolumePumpSystem : SharedGasVolumePumpSystem { - [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; [Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!; [Dependency] private readonly SharedAmbientSoundSystem _ambientSoundSystem = default!; - [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() { base.Initialize(); - SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnVolumePumpUpdated); SubscribeLocalEvent(OnVolumePumpLeaveAtmosphere); - SubscribeLocalEvent(OnExamined); - SubscribeLocalEvent(OnPumpActivate); - SubscribeLocalEvent(OnPowerChanged); - // Bound UI subscriptions - SubscribeLocalEvent(OnTransferRateChangeMessage); - SubscribeLocalEvent(OnToggleStatusMessage); SubscribeLocalEvent(OnPacketRecv); } - private void OnInit(EntityUid uid, GasVolumePumpComponent pump, ComponentInit args) - { - UpdateAppearance(uid, pump); - } - - private void OnExamined(EntityUid uid, GasVolumePumpComponent pump, ExaminedEvent args) - { - 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, - ("statusColor", "lightblue"), // TODO: change with volume? - ("rate", pump.TransferRate) - )) - args.PushMarkup(str); - } - - private void OnPowerChanged(EntityUid uid, GasVolumePumpComponent component, ref PowerChangedEvent args) - { - UpdateAppearance(uid, component); - } - private void OnVolumePumpUpdated(EntityUid uid, GasVolumePumpComponent pump, ref AtmosDeviceUpdateEvent args) { if (!pump.Enabled || @@ -134,78 +93,18 @@ namespace Content.Server.Atmos.Piping.Binary.EntitySystems private void OnVolumePumpLeaveAtmosphere(EntityUid uid, GasVolumePumpComponent pump, ref AtmosDeviceDisabledEvent args) { pump.Enabled = false; + Dirty(uid, pump); UpdateAppearance(uid, pump); - - DirtyUI(uid, pump); _userInterfaceSystem.CloseUi(uid, GasVolumePumpUiKey.Key); } - private void OnPumpActivate(EntityUid uid, GasVolumePumpComponent pump, ActivateInWorldEvent args) - { - if (args.Handled || !args.Complex) - return; - - if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) - return; - - if (Transform(uid).Anchored) - { - _userInterfaceSystem.OpenUi(uid, GasVolumePumpUiKey.Key, actor.PlayerSession); - DirtyUI(uid, pump); - } - else - { - _popup.PopupCursor(Loc.GetString("comp-gas-pump-ui-needs-anchor"), args.User); - } - - args.Handled = true; - } - - private void OnToggleStatusMessage(EntityUid uid, GasVolumePumpComponent pump, GasVolumePumpToggleStatusMessage args) - { - pump.Enabled = args.Enabled; - _adminLogger.Add(LogType.AtmosPowerChanged, LogImpact.Medium, - $"{ToPrettyString(args.Actor):player} set the power on {ToPrettyString(uid):device} to {args.Enabled}"); - DirtyUI(uid, pump); - UpdateAppearance(uid, pump); - } - - private void OnTransferRateChangeMessage(EntityUid uid, GasVolumePumpComponent pump, GasVolumePumpChangeTransferRateMessage args) - { - pump.TransferRate = Math.Clamp(args.TransferRate, 0f, pump.MaxTransferRate); - _adminLogger.Add(LogType.AtmosVolumeChanged, LogImpact.Medium, - $"{ToPrettyString(args.Actor):player} set the transfer rate on {ToPrettyString(uid):device} to {args.TransferRate}"); - DirtyUI(uid, pump); - } - - private void DirtyUI(EntityUid uid, GasVolumePumpComponent? pump) - { - if (!Resolve(uid, ref pump)) - return; - - _userInterfaceSystem.SetUiState(uid, GasVolumePumpUiKey.Key, - new GasVolumePumpBoundUserInterfaceState(Name(uid), pump.TransferRate, pump.Enabled)); - } - - private void UpdateAppearance(EntityUid uid, GasVolumePumpComponent? pump = null, AppearanceComponent? appearance = null) - { - if (!Resolve(uid, ref pump, ref appearance, false)) - return; - - bool pumpOn = pump.Enabled && (TryComp(uid, out var power) && power.Powered); - if (!pumpOn) - _appearance.SetData(uid, GasVolumePumpVisuals.State, GasVolumePumpState.Off, appearance); - else if (pump.Blocked) - _appearance.SetData(uid, GasVolumePumpVisuals.State, GasVolumePumpState.Blocked, appearance); - else - _appearance.SetData(uid, GasVolumePumpVisuals.State, GasVolumePumpState.On, appearance); - } - private void OnPacketRecv(EntityUid uid, GasVolumePumpComponent component, DeviceNetworkPacketEvent args) { if (!TryComp(uid, out DeviceNetworkComponent? netConn) || !args.Data.TryGetValue(DeviceNetworkConstants.Command, out var cmd)) + { return; + } var payload = new NetworkPayload(); diff --git a/Content.Server/Atmos/Piping/Unary/Components/GasOutletInjectorComponent.cs b/Content.Server/Atmos/Piping/Unary/Components/GasOutletInjectorComponent.cs index 65755d62c5..3020b94d49 100644 --- a/Content.Server/Atmos/Piping/Unary/Components/GasOutletInjectorComponent.cs +++ b/Content.Server/Atmos/Piping/Unary/Components/GasOutletInjectorComponent.cs @@ -1,6 +1,6 @@ -using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Unary.EntitySystems; using Content.Shared.Atmos; +using Content.Shared.Atmos.Piping.Binary.Components; using Content.Shared.Guidebook; namespace Content.Server.Atmos.Piping.Unary.Components diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs index 827ba0bda5..e4f5f99ed7 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasThermoMachineSystem.cs @@ -2,10 +2,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Atmos.Monitor.Systems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; @@ -18,7 +15,9 @@ using Content.Shared.UserInterface; using Content.Shared.Administration.Logs; using Content.Shared.Database; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Examine; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Atmos.Piping.Unary.EntitySystems { diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs index e9f27a1958..89dfb6aa9d 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentPumpSystem.cs @@ -3,8 +3,6 @@ using Content.Server.Atmos.Monitor.Systems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; using Content.Server.DeviceLinking.Systems; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; @@ -20,7 +18,9 @@ using Content.Shared.Audio; using Content.Shared.Database; using Content.Shared.DeviceLinking.Events; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.DoAfter; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Power; diff --git a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs index 38d75701d7..b5c8a9c1a9 100644 --- a/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs +++ b/Content.Server/Atmos/Piping/Unary/EntitySystems/GasVentScrubberSystem.cs @@ -1,25 +1,22 @@ using Content.Server.Atmos.EntitySystems; -using Content.Server.Atmos.Monitor.Components; using Content.Server.Atmos.Monitor.Systems; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; -using Content.Server.NodeContainer; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NodeContainer.Nodes; -using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Shared.Administration.Logs; using Content.Shared.Atmos; -using Content.Shared.Atmos.Piping.Unary.Visuals; using Content.Shared.Atmos.Monitor; using Content.Shared.Atmos.Piping.Components; using Content.Shared.Atmos.Piping.Unary.Components; +using Content.Shared.Atmos.Piping.Unary.Visuals; using Content.Shared.Audio; using Content.Shared.Database; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; using Content.Shared.Tools.Systems; using JetBrains.Annotations; diff --git a/Content.Server/Atmos/Serialization/TileAtmosCollectionSerializer.cs b/Content.Server/Atmos/Serialization/TileAtmosCollectionSerializer.cs index 5b30d65e48..900c3cb60c 100644 --- a/Content.Server/Atmos/Serialization/TileAtmosCollectionSerializer.cs +++ b/Content.Server/Atmos/Serialization/TileAtmosCollectionSerializer.cs @@ -25,7 +25,7 @@ public sealed partial class TileAtmosCollectionSerializer : ITypeSerializer>? instanceProvider = null) { - node.TryGetValue(new ValueDataNode("version"), out var versionNode); + node.TryGetValue("version", out var versionNode); var version = ((ValueDataNode?) versionNode)?.AsInt() ?? 1; Dictionary tiles = new(); @@ -59,7 +59,7 @@ public sealed partial class TileAtmosCollectionSerializer : ITypeSerializer(dataNode["chunkSize"], hookCtx, context); - dataNode.TryGetValue(new ValueDataNode("uniqueMixes"), out var mixNode); + dataNode.TryGet("uniqueMixes", out var mixNode); var unique = mixNode == null ? null : serializationManager.Read?>(mixNode, hookCtx, context); if (unique != null) @@ -67,7 +67,7 @@ public sealed partial class TileAtmosCollectionSerializer : ITypeSerializer(chunkNode, hookCtx, context); + var chunkOrigin = serializationManager.Read(tileNode.GetKeyNode(chunkNode), hookCtx, context); var chunk = serializationManager.Read(valueNode, hookCtx, context); foreach (var (mix, data) in chunk.Data) diff --git a/Content.Server/Body/Commands/AttachBodyPartCommand.cs b/Content.Server/Body/Commands/AttachBodyPartCommand.cs index 82f7161937..9172e9e87e 100644 --- a/Content.Server/Body/Commands/AttachBodyPartCommand.cs +++ b/Content.Server/Body/Commands/AttachBodyPartCommand.cs @@ -100,21 +100,23 @@ namespace Content.Server.Body.Commands var slotId = $"AttachBodyPartVerb-{partUid}"; - // ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract - if (body.RootContainer.ContainedEntity != null) + if (body.RootContainer.ContainedEntity is null && !bodySystem.AttachPartToRoot(bodyId, partUid.Value, body, part)) { - bodySystem.AttachPartToRoot(bodyId, partUid.Value, body, part); - } - else - { - var (rootPartId, rootPart) = bodySystem.GetRootPartOrNull(bodyId, body)!.Value; - if (!bodySystem.TryCreatePartSlotAndAttach(rootPartId, slotId, partUid.Value, part.PartType, rootPart, part)) - { - shell.WriteError($"Could not create slot {slotId} on entity {_entManager.ToPrettyString(bodyId)}"); - return; - } + shell.WriteError("Body container does not have a root entity to attach to the body part!"); + return; } + var (rootPartId, rootPart) = bodySystem.GetRootPartOrNull(bodyId, body)!.Value; + if (!bodySystem.TryCreatePartSlotAndAttach(rootPartId, + slotId, + partUid.Value, + part.PartType, + rootPart, + part)) + { + shell.WriteError($"Could not create slot {slotId} on entity {_entManager.ToPrettyString(bodyId)}"); + return; + } shell.WriteLine($"Attached part {_entManager.ToPrettyString(partUid.Value)} to {_entManager.ToPrettyString(bodyId)}"); } } diff --git a/Content.Server/Botany/Systems/PlantHolderSystem.cs b/Content.Server/Botany/Systems/PlantHolderSystem.cs index 5dbafae5af..2661ed479c 100644 --- a/Content.Server/Botany/Systems/PlantHolderSystem.cs +++ b/Content.Server/Botany/Systems/PlantHolderSystem.cs @@ -22,10 +22,10 @@ using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; -using Content.Server.Labels.Components; using Content.Shared.Administration.Logs; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; +using Content.Shared.Labels.Components; namespace Content.Server.Botany.Systems; @@ -45,8 +45,7 @@ public sealed class PlantHolderSystem : EntitySystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly ItemSlotsSystem _itemSlots = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - - + public const float HydroponicsSpeedMultiplier = 1f; public const float HydroponicsConsumptionMultiplier = 2f; diff --git a/Content.Server/Cargo/Components/CargoPalletComponent.cs b/Content.Server/Cargo/Components/CargoPalletComponent.cs index cdfd0a3874..d9827ee3bf 100644 --- a/Content.Server/Cargo/Components/CargoPalletComponent.cs +++ b/Content.Server/Cargo/Components/CargoPalletComponent.cs @@ -1,6 +1,4 @@ namespace Content.Server.Cargo.Components; -using Content.Shared.Actions; -using Robust.Shared.Serialization.TypeSerializers.Implementations; /// /// Any entities intersecting when a shuttle is recalled will be sold. diff --git a/Content.Server/Cargo/Components/CargoPalletConsoleComponent.cs b/Content.Server/Cargo/Components/CargoPalletConsoleComponent.cs index 6092ea0c3e..da82c7e546 100644 --- a/Content.Server/Cargo/Components/CargoPalletConsoleComponent.cs +++ b/Content.Server/Cargo/Components/CargoPalletConsoleComponent.cs @@ -6,8 +6,4 @@ namespace Content.Server.Cargo.Components; [RegisterComponent] [Access(typeof(CargoSystem))] -public sealed partial class CargoPalletConsoleComponent : Component -{ - [ViewVariables(VVAccess.ReadWrite), DataField("cashType", customTypeSerializer:typeof(PrototypeIdSerializer))] - public string CashType = "Credit"; -} +public sealed partial class CargoPalletConsoleComponent : Component; diff --git a/Content.Server/Cargo/Components/StationBankAccountComponent.cs b/Content.Server/Cargo/Components/StationBankAccountComponent.cs deleted file mode 100644 index fe9be19b19..0000000000 --- a/Content.Server/Cargo/Components/StationBankAccountComponent.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Content.Shared.Cargo; - -namespace Content.Server.Cargo.Components; - -/// -/// Added to the abstract representation of a station to track its money. -/// -[RegisterComponent, Access(typeof(SharedCargoSystem))] -public sealed partial class StationBankAccountComponent : Component -{ - [ViewVariables(VVAccess.ReadWrite), DataField("balance")] - public int Balance = 2000; - - /// - /// How much the bank balance goes up per second, every Delay period. Rounded down when multiplied. - /// - [ViewVariables(VVAccess.ReadWrite), DataField("increasePerSecond")] - public int IncreasePerSecond = 1; -} diff --git a/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs b/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs index 2e3b2c2115..36db3b83f2 100644 --- a/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs +++ b/Content.Server/Cargo/Components/StationCargoOrderDatabaseComponent.cs @@ -1,9 +1,9 @@ +using System.Linq; using Content.Server.Station.Components; using Content.Shared.Cargo; using Content.Shared.Cargo.Components; using Content.Shared.Cargo.Prototypes; using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Server.Cargo.Components; @@ -16,15 +16,19 @@ public sealed partial class StationCargoOrderDatabaseComponent : Component /// /// Maximum amount of orders a station is allowed, approved or not. /// - [ViewVariables(VVAccess.ReadWrite), DataField("capacity")] + [DataField] public int Capacity = 20; - [ViewVariables(VVAccess.ReadWrite), DataField("orders")] - public List Orders = new(); + [ViewVariables] + public IEnumerable AllOrders => Orders.SelectMany(p => p.Value); + + [DataField] + public Dictionary, List> Orders = new(); /// /// Used to determine unique order IDs /// + [ViewVariables] public int NumOrdersCreated; // TODO: Can probably dump this diff --git a/Content.Server/Cargo/Systems/CargoSystem.Bounty.cs b/Content.Server/Cargo/Systems/CargoSystem.Bounty.cs index 7f74fe269d..10e8b40e53 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Bounty.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Bounty.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Cargo.Components; -using Content.Server.Labels; using Content.Server.NameIdentifier; using Content.Shared.Access.Components; using Content.Shared.Cargo; @@ -9,6 +8,7 @@ using Content.Shared.Cargo.Components; using Content.Shared.Cargo.Prototypes; using Content.Shared.Database; using Content.Shared.IdentityManagement; +using Content.Shared.Labels.EntitySystems; using Content.Shared.NameIdentifier; using Content.Shared.Paper; using Content.Shared.Stacks; @@ -27,7 +27,6 @@ public sealed partial class CargoSystem [Dependency] private readonly ContainerSystem _container = default!; [Dependency] private readonly NameIdentifierSystem _nameIdentifier = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSys = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; [ValidatePrototypeId] private const string BountyNameIdentifierGroup = "Bounty"; @@ -56,13 +55,13 @@ public sealed partial class CargoSystem !TryComp(station, out var bountyDb)) return; - var untilNextSkip = bountyDb.NextSkipTime - _timing.CurTime; + var untilNextSkip = bountyDb.NextSkipTime - Timing.CurTime; _uiSystem.SetUiState(uid, CargoConsoleUiKey.Bounty, new CargoBountyConsoleState(bountyDb.Bounties, bountyDb.History, untilNextSkip)); } private void OnPrintLabelMessage(EntityUid uid, CargoBountyConsoleComponent component, BountyPrintLabelMessage args) { - if (_timing.CurTime < component.NextPrintTime) + if (Timing.CurTime < component.NextPrintTime) return; if (_station.GetOwningStation(uid) is not { } station) @@ -72,7 +71,7 @@ public sealed partial class CargoSystem return; var label = Spawn(component.BountyLabelId, Transform(uid).Coordinates); - component.NextPrintTime = _timing.CurTime + component.PrintDelay; + component.NextPrintTime = Timing.CurTime + component.PrintDelay; SetupBountyLabel(label, station, bounty.Value); _audio.PlayPvs(component.PrintSound, uid); } @@ -82,7 +81,7 @@ public sealed partial class CargoSystem if (_station.GetOwningStation(uid) is not { } station || !TryComp(station, out var db)) return; - if (_timing.CurTime < db.NextSkipTime) + if (Timing.CurTime < db.NextSkipTime) return; if (!TryGetBountyFromId(station, args.BountyId, out var bounty)) @@ -102,8 +101,8 @@ public sealed partial class CargoSystem return; FillBountyDatabase(station); - db.NextSkipTime = _timing.CurTime + db.SkipDelay; - var untilNextSkip = db.NextSkipTime - _timing.CurTime; + db.NextSkipTime = Timing.CurTime + db.SkipDelay; + var untilNextSkip = db.NextSkipTime - Timing.CurTime; _uiSystem.SetUiState(uid, CargoConsoleUiKey.Bounty, new CargoBountyConsoleState(db.Bounties, db.History, untilNextSkip)); _audio.PlayPvs(component.SkipSound, uid); } @@ -472,7 +471,7 @@ public sealed partial class CargoSystem skipped ? CargoBountyHistoryData.BountyResult.Skipped : CargoBountyHistoryData.BountyResult.Completed, - _gameTiming.CurTime, + Timing.CurTime, actorName)); ent.Comp.Bounties.RemoveAt(i); return true; @@ -514,7 +513,7 @@ public sealed partial class CargoSystem continue; } - var untilNextSkip = db.NextSkipTime - _timing.CurTime; + var untilNextSkip = db.NextSkipTime - Timing.CurTime; _uiSystem.SetUiState((uid, ui), CargoConsoleUiKey.Bounty, new CargoBountyConsoleState(db.Bounties, db.History, untilNextSkip)); } } diff --git a/Content.Server/Cargo/Systems/CargoSystem.Funds.cs b/Content.Server/Cargo/Systems/CargoSystem.Funds.cs new file mode 100644 index 0000000000..4a3fa5330e --- /dev/null +++ b/Content.Server/Cargo/Systems/CargoSystem.Funds.cs @@ -0,0 +1,167 @@ +using System.Linq; +using Content.Shared.Cargo.Components; +using Content.Shared.CCVar; +using Content.Shared.Database; +using Content.Shared.Emag.Systems; +using Content.Shared.IdentityManagement; +using Content.Shared.UserInterface; + +namespace Content.Server.Cargo.Systems; + +public sealed partial class CargoSystem +{ + private bool _allowPrimaryAccountAllocation; + private bool _allowPrimaryCutAdjustment; + + public void InitializeFunds() + { + SubscribeLocalEvent(OnWithdrawFunds); + SubscribeLocalEvent(OnToggleLimit); + SubscribeLocalEvent(OnSetFundingAllocation); + SubscribeLocalEvent(OnFundAllocationBuiOpen); + + _cfg.OnValueChanged(CCVars.AllowPrimaryAccountAllocation, enabled => { _allowPrimaryAccountAllocation = enabled; }, true); + _cfg.OnValueChanged(CCVars.AllowPrimaryCutAdjustment, enabled => { _allowPrimaryCutAdjustment = enabled; }, true); + } + + private void OnWithdrawFunds(Entity ent, ref CargoConsoleWithdrawFundsMessage args) + { + if (_station.GetOwningStation(ent) is not { } station || + !TryComp(station, out var bank)) + return; + + if (args.Account == ent.Comp.Account || + args.Amount <= 0 || + args.Amount > GetBalanceFromAccount((station, bank), ent.Comp.Account) * ent.Comp.TransferLimit) + return; + + if (Timing.CurTime < ent.Comp.NextAccountActionTime) + return; + + if (!_accessReaderSystem.IsAllowed(args.Actor, ent)) + { + ConsolePopup(args.Actor, Loc.GetString("cargo-console-order-not-allowed")); + PlayDenySound(ent, ent.Comp); + return; + } + + ent.Comp.NextAccountActionTime = Timing.CurTime + ent.Comp.AccountActionDelay; + UpdateBankAccount((station, bank), -args.Amount, ent.Comp.Account, dirty: false); + _audio.PlayPvs(ApproveSound, ent); + + var tryGetIdentityShortInfoEvent = new TryGetIdentityShortInfoEvent(ent, args.Actor); + RaiseLocalEvent(tryGetIdentityShortInfoEvent); + + var ourAccount = _protoMan.Index(ent.Comp.Account); + if (args.Account == null) + { + var stackPrototype = _protoMan.Index(ent.Comp.CashType); + _stack.Spawn(args.Amount, stackPrototype, Transform(ent).Coordinates); + + if (!_emag.CheckFlag(ent, EmagType.Interaction)) + { + var msg = Loc.GetString("cargo-console-fund-withdraw-broadcast", + ("name", tryGetIdentityShortInfoEvent.Title ?? Loc.GetString("cargo-console-fund-transfer-user-unknown")), + ("amount", args.Amount), + ("name1", Loc.GetString(ourAccount.Name)), + ("code1", Loc.GetString(ourAccount.Code))); + _radio.SendRadioMessage(ent, msg, ourAccount.RadioChannel, ent, escapeMarkup: false); + } + } + else + { + var otherAccount = _protoMan.Index(args.Account.Value); + UpdateBankAccount((station, bank), args.Amount, args.Account.Value); + + if (!_emag.CheckFlag(ent, EmagType.Interaction)) + { + var msg = Loc.GetString("cargo-console-fund-transfer-broadcast", + ("name", tryGetIdentityShortInfoEvent.Title ?? Loc.GetString("cargo-console-fund-transfer-user-unknown")), + ("amount", args.Amount), + ("name1", Loc.GetString(ourAccount.Name)), + ("code1", Loc.GetString(ourAccount.Code)), + ("name2", Loc.GetString(otherAccount.Name)), + ("code2", Loc.GetString(otherAccount.Code))); + _radio.SendRadioMessage(ent, msg, ourAccount.RadioChannel, ent, escapeMarkup: false); + _radio.SendRadioMessage(ent, msg, otherAccount.RadioChannel, ent, escapeMarkup: false); + } + } + } + + private void OnToggleLimit(Entity ent, ref CargoConsoleToggleLimitMessage args) + { + if (!_accessReaderSystem.FindAccessTags(args.Actor).Intersect(ent.Comp.RemoveLimitAccess).Any()) + { + ConsolePopup(args.Actor, Loc.GetString("cargo-console-order-not-allowed")); + PlayDenySound(ent, ent.Comp); + return; + } + + _audio.PlayPvs(ent.Comp.ToggleLimitSound, ent); + ent.Comp.TransferUnbounded = !ent.Comp.TransferUnbounded; + Dirty(ent); + } + + + private void OnSetFundingAllocation(Entity ent, ref SetFundingAllocationBuiMessage args) + { + if (_station.GetOwningStation(ent) is not { } station || + !TryComp(station, out var bank)) + return; + + var expectedCount = _allowPrimaryAccountAllocation ? bank.RevenueDistribution.Count : bank.RevenueDistribution.Count - 1; + if (args.Percents.Count != expectedCount) + return; + + var differs = false; + foreach (var (account, percent) in args.Percents) + { + if (percent != (int) Math.Round(bank.RevenueDistribution[account] * 100)) + { + differs = true; + break; + } + } + differs = differs || args.PrimaryCut != bank.PrimaryCut || args.LockboxCut != bank.LockboxCut; + + if (!differs) + return; + + if (args.Percents.Values.Sum() != 100) + return; + + var primaryCut = bank.RevenueDistribution[bank.PrimaryAccount]; + bank.RevenueDistribution.Clear(); + foreach (var (account, percent )in args.Percents) + { + bank.RevenueDistribution.Add(account, percent / 100.0); + } + if (!_allowPrimaryAccountAllocation) + { + bank.RevenueDistribution.Add(bank.PrimaryAccount, 0); + } + + if (_allowPrimaryCutAdjustment && args.PrimaryCut is >= 0.0 and <= 1.0) + { + bank.PrimaryCut = args.PrimaryCut; + } + if (_lockboxCutEnabled && args.LockboxCut is >= 0.0 and <= 1.0) + { + bank.LockboxCut = args.LockboxCut; + } + + Dirty(station, bank); + + _audio.PlayPvs(ent.Comp.SetDistributionSound, ent); + _adminLogger.Add( + LogType.Action, + LogImpact.Medium, + $"{ToPrettyString(args.Actor):player} set station {ToPrettyString(station)} fund distribution: {string.Join(',', bank.RevenueDistribution.Select(p => $"{p.Key}: {p.Value}").ToList())}, primary cut: {bank.PrimaryCut}, lockbox cut: {bank.LockboxCut}"); + } + + private void OnFundAllocationBuiOpen(Entity ent, ref BeforeActivatableUIOpenEvent args) + { + if (_station.GetOwningStation(ent) is { } station) + _uiSystem.SetUiState(ent.Owner, FundingAllocationConsoleUiKey.Key, new FundingAllocationConsoleBuiState(GetNetEntity(station))); + } +} diff --git a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs index 9b6407c689..f89f1b0e8f 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Orders.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Orders.cs @@ -1,6 +1,5 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.Cargo.Components; -using Content.Server.Labels.Components; using Content.Server.Station.Components; using Content.Shared.Cargo; using Content.Shared.Cargo.BUI; @@ -11,7 +10,9 @@ using Content.Shared.Database; using Content.Shared.Emag.Systems; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; +using Content.Shared.Labels.Components; using Content.Shared.Paper; +using JetBrains.Annotations; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Utility; @@ -23,16 +24,6 @@ namespace Content.Server.Cargo.Systems [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly EmagSystem _emag = default!; - /// - /// How much time to wait (in seconds) before increasing bank accounts balance. - /// - private const int Delay = 10; - - /// - /// Keeps track of how much time has elapsed since last balance increase. - /// - private float _timer; - private void InitializeConsole() { SubscribeLocalEvent(OnAddOrderMessage); @@ -41,9 +32,7 @@ namespace Content.Server.Cargo.Systems SubscribeLocalEvent(OnOrderUIOpened); SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnInteractUsing); - SubscribeLocalEvent(OnOrderBalanceUpdated); SubscribeLocalEvent(OnEmagged); - Reset(); } private void OnInteractUsing(EntityUid uid, CargoOrderConsoleComponent component, ref InteractUsingEvent args) @@ -61,8 +50,8 @@ namespace Content.Server.Cargo.Systems if (!TryComp(stationUid, out StationBankAccountComponent? bank)) return; - _audio.PlayPvs(component.ConfirmSound, uid); - UpdateBankAccount((stationUid.Value, bank), (int) price); + _audio.PlayPvs(ApproveSound, uid); + UpdateBankAccount((stationUid.Value, bank), (int) price, component.Account); QueueDel(args.Used); args.Handled = true; } @@ -73,11 +62,6 @@ namespace Content.Server.Cargo.Systems UpdateOrderState(uid, station); } - private void Reset() - { - _timer = 0; - } - private void OnEmagged(Entity ent, ref GotEmaggedEvent args) { if (!_emag.CompareFlag(args.Type, EmagType.Interaction)) @@ -89,31 +73,17 @@ namespace Content.Server.Cargo.Systems args.Handled = true; } - private void UpdateConsole(float frameTime) + private void UpdateConsole() { - _timer += frameTime; - - // TODO: Doesn't work with serialization and shouldn't just be updating every delay - // client can just interp this just fine on its own. - while (_timer > Delay) + var stationQuery = EntityQueryEnumerator(); + while (stationQuery.MoveNext(out var uid, out var bank)) { - _timer -= Delay; + if (Timing.CurTime < bank.NextIncomeTime) + continue; + bank.NextIncomeTime += bank.IncomeDelay; - var stationQuery = EntityQueryEnumerator(); - while (stationQuery.MoveNext(out var uid, out var bank)) - { - var balanceToAdd = bank.IncreasePerSecond * Delay; - UpdateBankAccount((uid, bank), balanceToAdd); - } - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var _)) - { - if (!_uiSystem.IsUiOpen(uid, CargoConsoleUiKey.Orders)) continue; - - var station = _station.GetOwningStation(uid); - UpdateOrderState(uid, station); - } + var balanceToAdd = (int) Math.Round(bank.IncreasePerSecond * bank.IncomeDelay.TotalSeconds); + UpdateBankAccount((uid, bank), balanceToAdd, bank.RevenueDistribution); } } @@ -144,7 +114,7 @@ namespace Content.Server.Cargo.Systems } // Find our order again. It might have been dispatched or approved already - var order = orderDatabase.Orders.Find(order => args.OrderId == order.OrderId && !order.Approved); + var order = orderDatabase.Orders[component.Account].Find(order => args.OrderId == order.OrderId && !order.Approved); if (order == null) { return; @@ -158,7 +128,7 @@ namespace Content.Server.Cargo.Systems return; } - var amount = GetOutstandingOrderCount(orderDatabase); + var amount = GetOutstandingOrderCount(orderDatabase, component.Account); var capacity = orderDatabase.Capacity; // Too many orders, avoid them getting spammed in the UI. @@ -180,9 +150,10 @@ namespace Content.Server.Cargo.Systems } var cost = order.Price * order.OrderQuantity; + var accountBalance = GetBalanceFromAccount((station.Value, bank), component.Account); // Not enough balance - if (cost > bank.Balance) + if (cost > accountBalance) { ConsolePopup(args.Actor, Loc.GetString("cargo-console-insufficient-funds", ("cost", cost))); PlayDenySound(uid, component); @@ -195,7 +166,7 @@ namespace Content.Server.Cargo.Systems if (!ev.Handled) { - ev.FulfillmentEntity = TryFulfillOrder((station.Value, stationData), order, orderDatabase); + ev.FulfillmentEntity = TryFulfillOrder((station.Value, stationData), component.Account, order, orderDatabase); if (ev.FulfillmentEntity == null) { @@ -206,7 +177,7 @@ namespace Content.Server.Cargo.Systems } order.Approved = true; - _audio.PlayPvs(component.ConfirmSound, uid); + _audio.PlayPvs(ApproveSound, uid); if (!_emag.CheckFlag(uid, EmagType.Interaction)) { @@ -220,20 +191,23 @@ namespace Content.Server.Cargo.Systems ("approver", order.Approver ?? string.Empty), ("cost", cost)); _radio.SendRadioMessage(uid, message, component.AnnouncementChannel, uid, escapeMarkup: false); + if (CargoOrderConsoleComponent.BaseAnnouncementChannel != component.AnnouncementChannel) + _radio.SendRadioMessage(uid, message, CargoOrderConsoleComponent.BaseAnnouncementChannel, uid, escapeMarkup: false); } ConsolePopup(args.Actor, Loc.GetString("cargo-console-trade-station", ("destination", MetaData(ev.FulfillmentEntity.Value).EntityName))); // Log order approval - _adminLogger.Add(LogType.Action, LogImpact.Low, - $"{ToPrettyString(player):user} approved order [orderId:{order.OrderId}, quantity:{order.OrderQuantity}, product:{order.ProductId}, requester:{order.Requester}, reason:{order.Reason}] with balance at {bank.Balance}"); + _adminLogger.Add(LogType.Action, + LogImpact.Low, + $"{ToPrettyString(player):user} approved order [orderId:{order.OrderId}, quantity:{order.OrderQuantity}, product:{order.ProductId}, requester:{order.Requester}, reason:{order.Reason}] on account {component.Account} with balance at {accountBalance}"); - orderDatabase.Orders.Remove(order); - UpdateBankAccount((station.Value, bank), -cost); + orderDatabase.Orders[component.Account].Remove(order); + UpdateBankAccount((station.Value, bank), -cost, component.Account); UpdateOrders(station.Value); } - private EntityUid? TryFulfillOrder(Entity stationData, CargoOrderData order, StationCargoOrderDatabaseComponent orderDatabase) + private EntityUid? TryFulfillOrder(Entity stationData, ProtoId account, CargoOrderData order, StationCargoOrderDatabaseComponent orderDatabase) { // No slots at the trade station _listEnts.Clear(); @@ -253,7 +227,7 @@ namespace Content.Server.Cargo.Systems { var coordinates = new EntityCoordinates(trade, pad.Transform.LocalPosition); - if (FulfillOrder(order, coordinates, orderDatabase.PrinterOutput)) + if (FulfillOrder(order, account, coordinates, orderDatabase.PrinterOutput)) { tradeDestination = trade; order.NumDispatched++; @@ -288,7 +262,7 @@ namespace Content.Server.Cargo.Systems if (!TryGetOrderDatabase(station, out var orderDatabase)) return; - RemoveOrder(station.Value, args.OrderId, orderDatabase); + RemoveOrder(station.Value, component.Account, args.OrderId, orderDatabase); } private void OnAddOrderMessage(EntityUid uid, CargoOrderConsoleComponent component, CargoConsoleAddOrderMessage args) @@ -315,14 +289,15 @@ namespace Content.Server.Cargo.Systems var data = GetOrderData(args, product, GenerateOrderId(orderDatabase)); - if (!TryAddOrder(stationUid.Value, data, orderDatabase)) + if (!TryAddOrder(stationUid.Value, component.Account, data, orderDatabase)) { PlayDenySound(uid, component); return; } // Log order addition - _adminLogger.Add(LogType.Action, LogImpact.Low, + _adminLogger.Add(LogType.Action, + LogImpact.Low, $"{ToPrettyString(player):user} added order [orderId:{data.OrderId}, quantity:{data.OrderQuantity}, product:{data.ProductId}, requester:{data.Requester}, reason:{data.Reason}]"); } @@ -335,29 +310,24 @@ namespace Content.Server.Cargo.Systems #endregion - - private void OnOrderBalanceUpdated(Entity ent, ref BankBalanceUpdatedEvent args) - { - if (!_uiSystem.IsUiOpen(ent.Owner, CargoConsoleUiKey.Orders)) - return; - - UpdateOrderState(ent, args.Station); - } - private void UpdateOrderState(EntityUid consoleUid, EntityUid? station) { - if (station == null || - !TryComp(station, out var orderDatabase) || - !TryComp(station, out var bankAccount)) return; + if (!TryComp(consoleUid, out var console)) + return; + + if (!TryComp(station, out var orderDatabase)) + return; if (_uiSystem.HasUi(consoleUid, CargoConsoleUiKey.Orders)) { - _uiSystem.SetUiState(consoleUid, CargoConsoleUiKey.Orders, new CargoConsoleInterfaceState( + _uiSystem.SetUiState(consoleUid, + CargoConsoleUiKey.Orders, + new CargoConsoleInterfaceState( MetaData(station.Value).EntityName, - GetOutstandingOrderCount(orderDatabase), + GetOutstandingOrderCount(orderDatabase, console.Account), orderDatabase.Capacity, - bankAccount.Balance, - orderDatabase.Orders + GetNetEntity(station.Value), + orderDatabase.Orders[console.Account] )); } } @@ -377,11 +347,11 @@ namespace Content.Server.Cargo.Systems return new CargoOrderData(id, cargoProduct.Product, cargoProduct.Name, cargoProduct.Cost, args.Amount, args.Requester, args.Reason); } - public static int GetOutstandingOrderCount(StationCargoOrderDatabaseComponent component) + public static int GetOutstandingOrderCount(StationCargoOrderDatabaseComponent component, ProtoId account) { var amount = 0; - foreach (var order in component.Orders) + foreach (var order in component.Orders[account]) { if (!order.Approved) continue; @@ -430,6 +400,7 @@ namespace Content.Server.Cargo.Systems string description, string dest, StationCargoOrderDatabaseComponent component, + ProtoId account, Entity stationData ) { @@ -443,16 +414,17 @@ namespace Content.Server.Cargo.Systems order.Approved = true; // Log order addition - _adminLogger.Add(LogType.Action, LogImpact.Low, + _adminLogger.Add(LogType.Action, + LogImpact.Low, $"AddAndApproveOrder {description} added order [orderId:{order.OrderId}, quantity:{order.OrderQuantity}, product:{order.ProductId}, requester:{order.Requester}, reason:{order.Reason}]"); // Add it to the list - return TryAddOrder(dbUid, order, component) && TryFulfillOrder(stationData, order, component).HasValue; + return TryAddOrder(dbUid, account, order, component) && TryFulfillOrder(stationData, account, order, component).HasValue; } - private bool TryAddOrder(EntityUid dbUid, CargoOrderData data, StationCargoOrderDatabaseComponent component) + private bool TryAddOrder(EntityUid dbUid, ProtoId account, CargoOrderData data, StationCargoOrderDatabaseComponent component) { - component.Orders.Add(data); + component.Orders[account].Add(data); UpdateOrders(dbUid); return true; } @@ -464,12 +436,12 @@ namespace Content.Server.Cargo.Systems return ++orderDB.NumOrdersCreated; } - public void RemoveOrder(EntityUid dbUid, int index, StationCargoOrderDatabaseComponent orderDB) + public void RemoveOrder(EntityUid dbUid, ProtoId account, int index, StationCargoOrderDatabaseComponent orderDB) { - var sequenceIdx = orderDB.Orders.FindIndex(order => order.OrderId == index); + var sequenceIdx = orderDB.Orders[account].FindIndex(order => order.OrderId == index); if (sequenceIdx != -1) { - orderDB.Orders.RemoveAt(sequenceIdx); + orderDB.Orders[account].RemoveAt(sequenceIdx); } UpdateOrders(dbUid); } @@ -482,22 +454,22 @@ namespace Content.Server.Cargo.Systems component.Orders.Clear(); } - private static bool PopFrontOrder(StationCargoOrderDatabaseComponent orderDB, [NotNullWhen(true)] out CargoOrderData? orderOut) + private static bool PopFrontOrder(StationCargoOrderDatabaseComponent orderDB, ProtoId account, [NotNullWhen(true)] out CargoOrderData? orderOut) { - var orderIdx = orderDB.Orders.FindIndex(order => order.Approved); + var orderIdx = orderDB.Orders[account].FindIndex(order => order.Approved); if (orderIdx == -1) { orderOut = null; return false; } - orderOut = orderDB.Orders[orderIdx]; + orderOut = orderDB.Orders[account][orderIdx]; orderOut.NumDispatched++; if (orderOut.NumDispatched >= orderOut.OrderQuantity) { // Order is complete. Remove from the queue. - orderDB.Orders.RemoveAt(orderIdx); + orderDB.Orders[account].RemoveAt(orderIdx); } return true; } @@ -505,18 +477,19 @@ namespace Content.Server.Cargo.Systems /// /// Tries to fulfill the next outstanding order. /// - private bool FulfillNextOrder(StationCargoOrderDatabaseComponent orderDB, EntityCoordinates spawn, string? paperProto) + [PublicAPI] + private bool FulfillNextOrder(StationCargoOrderDatabaseComponent orderDB, ProtoId account, EntityCoordinates spawn, string? paperProto) { - if (!PopFrontOrder(orderDB, out var order)) + if (!PopFrontOrder(orderDB, account, out var order)) return false; - return FulfillOrder(order, spawn, paperProto); + return FulfillOrder(order, account, spawn, paperProto); } /// /// Fulfills the specified cargo order and spawns paper attached to it. /// - private bool FulfillOrder(CargoOrderData order, EntityCoordinates spawn, string? paperProto) + private bool FulfillOrder(CargoOrderData order, ProtoId account, EntityCoordinates spawn, string? paperProto) { // Create the item itself var item = Spawn(order.ProductId, spawn); @@ -532,14 +505,18 @@ namespace Content.Server.Cargo.Systems var val = Loc.GetString("cargo-console-paper-print-name", ("orderNumber", order.OrderId)); _metaSystem.SetEntityName(printed, val); - _paperSystem.SetContent((printed, paper), Loc.GetString( + var accountProto = _protoMan.Index(account); + _paperSystem.SetContent((printed, paper), + Loc.GetString( "cargo-console-paper-print-text", ("orderNumber", order.OrderId), ("itemName", MetaData(item).EntityName), ("orderQuantity", order.OrderQuantity), ("requester", order.Requester), - ("reason", order.Reason), - ("approver", order.Approver ?? string.Empty))); + ("reason", string.IsNullOrWhiteSpace(order.Reason) ? Loc.GetString("cargo-console-paper-reason-default") : order.Reason), + ("account", Loc.GetString(accountProto.Name)), + ("accountcode", Loc.GetString(accountProto.Code)), + ("approver", string.IsNullOrWhiteSpace(order.Approver) ? Loc.GetString("cargo-console-paper-approver-default") : order.Approver))); // attempt to attach the label to the item if (TryComp(item, out var label)) diff --git a/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs b/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs index 9365b22ad9..2516965b6d 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Shuttle.cs @@ -1,13 +1,14 @@ +using System.Linq; using Content.Server.Cargo.Components; -using Content.Shared.Stacks; using Content.Shared.Cargo; using Content.Shared.Cargo.BUI; using Content.Shared.Cargo.Components; using Content.Shared.Cargo.Events; -using Content.Shared.GameTicking; -using Robust.Shared.Map; -using Robust.Shared.Random; +using Content.Shared.Cargo.Prototypes; +using Content.Shared.CCVar; +using JetBrains.Annotations; using Robust.Shared.Audio; +using Robust.Shared.Prototypes; namespace Content.Server.Cargo.Systems; @@ -18,6 +19,7 @@ public sealed partial class CargoSystem */ private static readonly SoundPathSpecifier ApproveSound = new("/Audio/Effects/Cargo/ping.ogg"); + private bool _lockboxCutEnabled; private void InitializeShuttle() { @@ -29,11 +31,12 @@ public sealed partial class CargoSystem SubscribeLocalEvent(OnPalletAppraise); SubscribeLocalEvent(OnPalletUIOpen); - SubscribeLocalEvent(OnRoundRestart); + _cfg.OnValueChanged(CCVars.LockboxCutEnabled, (enabled) => { _lockboxCutEnabled = enabled; }, true); } #region Console + [PublicAPI] private void UpdateCargoShuttleConsoles(EntityUid shuttleUid, CargoShuttleComponent _) { // Update pilot consoles that are already open. @@ -54,15 +57,18 @@ public sealed partial class CargoSystem private void UpdatePalletConsoleInterface(EntityUid uid) { - if (Transform(uid).GridUid is not EntityUid gridUid) + if (Transform(uid).GridUid is not { } gridUid) { - _uiSystem.SetUiState(uid, CargoPalletConsoleUiKey.Sale, - new CargoPalletConsoleInterfaceState(0, 0, false)); + _uiSystem.SetUiState(uid, + CargoPalletConsoleUiKey.Sale, + new CargoPalletConsoleInterfaceState(0, 0, false)); return; } - GetPalletGoods(gridUid, out var toSell, out var amount); - _uiSystem.SetUiState(uid, CargoPalletConsoleUiKey.Sale, - new CargoPalletConsoleInterfaceState((int) amount, toSell.Count, true)); + GetPalletGoods(gridUid, out var toSell, out var goods); + var totalAmount = goods.Sum(t => t.Item3); + _uiSystem.SetUiState(uid, + CargoPalletConsoleUiKey.Sale, + new CargoPalletConsoleInterfaceState((int) totalAmount, toSell.Count, true)); } private void OnPalletUIOpen(EntityUid uid, CargoPalletConsoleComponent component, BoundUIOpenedEvent args) @@ -98,11 +104,15 @@ public sealed partial class CargoSystem var shuttleName = orderDatabase?.Shuttle != null ? MetaData(orderDatabase.Shuttle.Value).EntityName : string.Empty; if (_uiSystem.HasUi(uid, CargoConsoleUiKey.Shuttle)) - _uiSystem.SetUiState(uid, CargoConsoleUiKey.Shuttle, new CargoShuttleConsoleBoundUserInterfaceState( + { + _uiSystem.SetUiState(uid, + CargoConsoleUiKey.Shuttle, + new CargoShuttleConsoleBoundUserInterfaceState( station != null ? MetaData(station.Value).EntityName : Loc.GetString("cargo-shuttle-console-station-unknown"), string.IsNullOrEmpty(shuttleName) ? Loc.GetString("cargo-shuttle-console-shuttle-not-found") : shuttleName, orders )); + } } #endregion @@ -132,9 +142,10 @@ public sealed partial class CargoSystem return orders; var spaceRemaining = GetCargoSpace(shuttleUid); - for (var i = 0; i < component.Orders.Count && spaceRemaining > 0; i++) + var allOrders = component.AllOrders.ToList(); + for (var i = 0; i < allOrders.Count && spaceRemaining > 0; i++) { - var order = component.Orders[i]; + var order = allOrders[i]; if (order.Approved) { var numToShip = order.OrderQuantity - order.NumDispatched; @@ -142,8 +153,14 @@ public sealed partial class CargoSystem { // We won't be able to fit the whole order on, so make one // which represents the space we do have left: - var reducedOrder = new CargoOrderData(order.OrderId, - order.ProductId, order.ProductName, order.Price, spaceRemaining, order.Requester, order.Reason); + var reducedOrder = new CargoOrderData( + order.OrderId, + order.ProductId, + order.ProductName, + order.Price, + spaceRemaining, + order.Requester, + order.Reason); orders.Add(reducedOrder); } else @@ -219,16 +236,13 @@ public sealed partial class CargoSystem #region Station - private bool SellPallets(EntityUid gridUid, out double amount) + private bool SellPallets(EntityUid gridUid, out HashSet<(EntityUid, OverrideSellComponent?, double)> goods) { - GetPalletGoods(gridUid, out var toSell, out amount); - - Log.Debug($"Cargo sold {toSell.Count} entities for {amount}"); + GetPalletGoods(gridUid, out var toSell, out goods); if (toSell.Count == 0) return false; - var ev = new EntitySoldEvent(toSell); RaiseLocalEvent(ref ev); @@ -240,9 +254,9 @@ public sealed partial class CargoSystem return true; } - private void GetPalletGoods(EntityUid gridUid, out HashSet toSell, out double amount) + private void GetPalletGoods(EntityUid gridUid, out HashSet toSell, out HashSet<(EntityUid, OverrideSellComponent?, double)> goods) { - amount = 0; + goods = new HashSet<(EntityUid, OverrideSellComponent?, double)>(); toSell = new HashSet(); foreach (var (palletUid, _, _) in GetCargoPallets(gridUid, BuySellType.Sell)) @@ -250,7 +264,9 @@ public sealed partial class CargoSystem // Containers should already get the sell price of their children so can skip those. _setEnts.Clear(); - _lookup.GetEntitiesIntersecting(palletUid, _setEnts, + _lookup.GetEntitiesIntersecting( + palletUid, + _setEnts, LookupFlags.Dynamic | LookupFlags.Sundries); foreach (var ent in _setEnts) @@ -273,7 +289,7 @@ public sealed partial class CargoSystem if (price == 0) continue; toSell.Add(ent); - amount += price; + goods.Add((ent, CompOrNull(ent), price)); } } } @@ -305,28 +321,50 @@ public sealed partial class CargoSystem { var xform = Transform(uid); - if (xform.GridUid is not EntityUid gridUid) + if (_station.GetOwningStation(uid) is not { } station || + !TryComp(station, out var bankAccount)) { - _uiSystem.SetUiState(uid, CargoPalletConsoleUiKey.Sale, - new CargoPalletConsoleInterfaceState(0, 0, false)); return; } - if (!SellPallets(gridUid, out var price)) + if (xform.GridUid is not { } gridUid) + { + _uiSystem.SetUiState(uid, + CargoPalletConsoleUiKey.Sale, + new CargoPalletConsoleInterfaceState(0, 0, false)); + return; + } + + if (!SellPallets(gridUid, out var goods)) return; - var stackPrototype = _protoMan.Index(component.CashType); - _stack.Spawn((int) price, stackPrototype, xform.Coordinates); + var baseDistribution = CreateAccountDistribution((station, bankAccount)); + foreach (var (_, sellComponent, value) in goods) + { + Dictionary, double> distribution; + if (sellComponent != null) + { + var cut = _lockboxCutEnabled ? bankAccount.LockboxCut : bankAccount.PrimaryCut; + distribution = new Dictionary, double> + { + { sellComponent.OverrideAccount, cut }, + { bankAccount.PrimaryAccount, 1.0 - cut }, + }; + } + else + { + distribution = baseDistribution; + } + + UpdateBankAccount((station, bankAccount), (int) Math.Round(value), distribution, false); + } + + Dirty(station, bankAccount); _audio.PlayPvs(ApproveSound, uid); UpdatePalletConsoleInterface(uid); } #endregion - - private void OnRoundRestart(RoundRestartCleanupEvent ev) - { - Reset(); - } } /// diff --git a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs index 41fbf12a0c..25fb514db6 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.Telepad.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Linq; using Content.Server.Cargo.Components; using Content.Server.Power.Components; @@ -40,9 +41,8 @@ public sealed partial class CargoSystem continue; // todo cannot be fucking asked to figure out device linking rn but this shouldn't just default to the first port. - if (!TryComp(uid, out var sinkComponent) || - sinkComponent.LinkedSources.FirstOrNull() is not { } console || - console != args.OrderConsole.Owner) + if (!TryGetLinkedConsole((uid, tele), out var console) || + console.Value.Owner != args.OrderConsole.Owner) continue; for (var i = 0; i < args.Order.OrderQuantity; i++) @@ -56,10 +56,26 @@ public sealed partial class CargoSystem } } + private bool TryGetLinkedConsole(Entity ent, + [NotNullWhen(true)] out Entity? console) + { + console = null; + if (!TryComp(ent, out var sinkComponent) || + sinkComponent.LinkedSources.FirstOrNull() is not { } linked) + return false; + + if (!TryComp(linked, out var consoleComp)) + return false; + + console = (linked, consoleComp); + return true; + } + + private void UpdateTelepad(float frameTime) { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var comp)) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var xform)) { // Don't EntityQuery for it as it's not required. TryComp(uid, out var appearance); @@ -82,15 +98,14 @@ public sealed partial class CargoSystem continue; } - if (comp.CurrentOrders.Count == 0) + if (comp.CurrentOrders.Count == 0 || !TryGetLinkedConsole((uid, comp), out var console)) { comp.Accumulator += comp.Delay; continue; } - var xform = Transform(uid); var currentOrder = comp.CurrentOrders.First(); - if (FulfillOrder(currentOrder, xform.Coordinates, comp.PrinterOutput)) + if (FulfillOrder(currentOrder, console.Value.Comp.Account, xform.Coordinates, comp.PrinterOutput)) { _audio.PlayPvs(_audio.ResolveSound(comp.TeleportSound), uid, AudioParams.Default.WithVolume(-8f)); @@ -128,9 +143,12 @@ public sealed partial class CargoSystem !TryComp(station, out var data)) return; + if (!TryGetLinkedConsole(ent, out var console)) + return; + foreach (var order in ent.Comp.CurrentOrders) { - TryFulfillOrder((station, data), order, db); + TryFulfillOrder((station, data), console.Value.Comp.Account, order, db); } } diff --git a/Content.Server/Cargo/Systems/CargoSystem.cs b/Content.Server/Cargo/Systems/CargoSystem.cs index 1b776b8bd0..1b6f1973ea 100644 --- a/Content.Server/Cargo/Systems/CargoSystem.cs +++ b/Content.Server/Cargo/Systems/CargoSystem.cs @@ -9,21 +9,23 @@ using Content.Shared.Administration.Logs; using Content.Server.Radio.EntitySystems; using Content.Shared.Cargo; using Content.Shared.Cargo.Components; +using Content.Shared.Cargo.Prototypes; +using Content.Shared.CCVar; using Content.Shared.Containers.ItemSlots; using Content.Shared.Mobs.Components; using Content.Shared.Paper; using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Shared.Audio.Systems; +using Robust.Shared.Configuration; using Robust.Shared.Prototypes; -using Robust.Shared.Timing; using Robust.Shared.Random; namespace Content.Server.Cargo.Systems; public sealed partial class CargoSystem : SharedCargoSystem { - [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IPrototypeManager _protoMan = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; @@ -65,36 +67,59 @@ public sealed partial class CargoSystem : SharedCargoSystem InitializeShuttle(); InitializeTelepad(); InitializeBounty(); + InitializeFunds(); } public override void Update(float frameTime) { base.Update(frameTime); - UpdateConsole(frameTime); + UpdateConsole(); UpdateTelepad(frameTime); UpdateBounty(); } + public void UpdateBankAccount( + Entity ent, + int balanceAdded, + ProtoId account, + bool dirty = true) + { + UpdateBankAccount( + ent, + balanceAdded, + new Dictionary, double> { {account, 1} }, + dirty: dirty); + } + + /// + /// Adds or removes funds from the . + /// + /// The station. + /// The amount of funds to add or remove. + /// The distribution between individual . + /// Whether to mark the bank account component as dirty. [PublicAPI] - public void UpdateBankAccount(Entity ent, int balanceAdded) + public void UpdateBankAccount( + Entity ent, + int balanceAdded, + Dictionary, double> accountDistribution, + bool dirty = true) { if (!Resolve(ent, ref ent.Comp)) return; - ent.Comp.Balance += balanceAdded; - - var ev = new BankBalanceUpdatedEvent(ent, ent.Comp.Balance); - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var client, out var comp, out var xform)) + foreach (var (account, percent) in accountDistribution) { - var station = _station.GetOwningStation(client, xform); - if (station != ent) - continue; - - comp.Balance = ent.Comp.Balance; - Dirty(client, comp); - RaiseLocalEvent(client, ref ev); + var accountBalancedAdded = (int) Math.Round(percent * balanceAdded); + ent.Comp.Accounts[account] += accountBalancedAdded; } + + var ev = new BankBalanceUpdatedEvent(ent, ent.Comp.Accounts); + RaiseLocalEvent(ent, ref ev, true); + + if (!dirty) + return; + + Dirty(ent); } } diff --git a/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs b/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs index 8637e44e62..405d1cee9f 100644 --- a/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs +++ b/Content.Server/CartridgeLoader/CartridgeLoaderSystem.cs @@ -3,6 +3,7 @@ using System.Linq; using Content.Server.DeviceNetwork.Systems; using Content.Server.PDA; using Content.Shared.CartridgeLoader; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Interaction; using Robust.Server.Containers; using Robust.Server.GameObjects; diff --git a/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeComponent.cs b/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeComponent.cs index 659433de36..d3f1d250e1 100644 --- a/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeComponent.cs +++ b/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.CartridgeLoader.Cartridges; +using Content.Shared.CartridgeLoader.Cartridges; using Content.Shared.Paper; using Robust.Shared.Audio; using Robust.Shared.Prototypes; @@ -26,7 +26,7 @@ public sealed partial class LogProbeCartridgeComponent : Component /// The sound to make when we scan something with access /// [DataField, ViewVariables(VVAccess.ReadWrite)] - public SoundSpecifier SoundScan = new SoundPathSpecifier("/Audio/Machines/scan_finish.ogg"); + public SoundSpecifier SoundScan = new SoundPathSpecifier("/Audio/Machines/scan_finish.ogg", AudioParams.Default.WithVariation(0.25f)); /// /// Paper to spawn when printing logs. diff --git a/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs b/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs index ac5c0baa54..6391dd533b 100644 --- a/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs +++ b/Content.Server/CartridgeLoader/Cartridges/LogProbeCartridgeSystem.cs @@ -1,6 +1,5 @@ using Content.Shared.Access.Components; using Content.Shared.Administration.Logs; -using Content.Shared.Audio; using Content.Shared.CartridgeLoader; using Content.Shared.CartridgeLoader.Cartridges; using Content.Shared.Database; @@ -9,7 +8,6 @@ using Content.Shared.Labels.EntitySystems; using Content.Shared.Paper; using Content.Shared.Popups; using Robust.Shared.Audio.Systems; -using Robust.Shared.Random; using Robust.Shared.Timing; using System.Text; @@ -19,11 +17,10 @@ public sealed class LogProbeCartridgeSystem : EntitySystem { [Dependency] private readonly CartridgeLoaderSystem _cartridge = default!; [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; - [Dependency] private readonly SharedLabelSystem _label = default!; + [Dependency] private readonly LabelSystem _label = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly PaperSystem _paper = default!; @@ -52,7 +49,7 @@ public sealed class LogProbeCartridgeSystem : EntitySystem return; //Play scanning sound with slightly randomized pitch - _audio.PlayEntity(ent.Comp.SoundScan, args.InteractEvent.User, target, AudioHelpers.WithVariation(0.25f, _random)); + _audio.PlayEntity(ent.Comp.SoundScan, args.InteractEvent.User, target); _popup.PopupCursor(Loc.GetString("log-probe-scan", ("device", target)), args.InteractEvent.User); ent.Comp.EntityName = Name(target); diff --git a/Content.Server/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs b/Content.Server/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs index f01be1fc71..aaeaf0325e 100644 --- a/Content.Server/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs +++ b/Content.Server/CartridgeLoader/Cartridges/NetProbeCartridgeSystem.cs @@ -1,11 +1,10 @@ -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Shared.CartridgeLoader; using Content.Shared.CartridgeLoader.Cartridges; +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.Popups; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; -using Robust.Shared.Player; using Robust.Shared.Random; namespace Content.Server.CartridgeLoader.Cartridges; diff --git a/Content.Server/Charges/ChargesSystem.cs b/Content.Server/Charges/ChargesSystem.cs new file mode 100644 index 0000000000..6883dcb03d --- /dev/null +++ b/Content.Server/Charges/ChargesSystem.cs @@ -0,0 +1,8 @@ +using Content.Shared.Charges.Systems; + +namespace Content.Server.Charges; + +public sealed class ChargesSystem : SharedChargesSystem +{ + +} diff --git a/Content.Server/Charges/Components/AutoRechargeComponent.cs b/Content.Server/Charges/Components/AutoRechargeComponent.cs deleted file mode 100644 index 165b181dcb..0000000000 --- a/Content.Server/Charges/Components/AutoRechargeComponent.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Content.Server.Charges.Systems; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; - -namespace Content.Server.Charges.Components; - -/// -/// Something with limited charges that can be recharged automatically. -/// Requires LimitedChargesComponent to function. -/// -// TODO: no reason this cant be predicted and server system deleted -[RegisterComponent, AutoGenerateComponentPause] -[Access(typeof(ChargesSystem))] -public sealed partial class AutoRechargeComponent : Component -{ - /// - /// The time it takes to regain a single charge - /// - [DataField("rechargeDuration"), ViewVariables(VVAccess.ReadWrite)] - public TimeSpan RechargeDuration = TimeSpan.FromSeconds(90); - - /// - /// The time when the next charge will be added - /// - [DataField("nextChargeTime", customTypeSerializer: typeof(TimeOffsetSerializer))] - [AutoPausedField] - public TimeSpan NextChargeTime; -} diff --git a/Content.Server/Charges/Systems/ChargesSystem.cs b/Content.Server/Charges/Systems/ChargesSystem.cs deleted file mode 100644 index 974928ee4b..0000000000 --- a/Content.Server/Charges/Systems/ChargesSystem.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Content.Server.Charges.Components; -using Content.Shared.Charges.Components; -using Content.Shared.Charges.Systems; -using Content.Shared.Examine; -using Robust.Shared.Timing; - -namespace Content.Server.Charges.Systems; - -public sealed class ChargesSystem : SharedChargesSystem -{ - [Dependency] private readonly IGameTiming _timing = default!; - - public override void Update(float frameTime) - { - base.Update(frameTime); - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var charges, out var recharge)) - { - if (charges.Charges == charges.MaxCharges || _timing.CurTime < recharge.NextChargeTime) - continue; - - AddCharges(uid, 1, charges); - recharge.NextChargeTime = _timing.CurTime + recharge.RechargeDuration; - } - } - - protected override void OnExamine(EntityUid uid, LimitedChargesComponent comp, ExaminedEvent args) - { - base.OnExamine(uid, comp, args); - - // only show the recharging info if it's not full - if (!args.IsInDetailsRange || comp.Charges == comp.MaxCharges || !TryComp(uid, out var recharge)) - return; - - var timeRemaining = Math.Round((recharge.NextChargeTime - _timing.CurTime).TotalSeconds); - args.PushMarkup(Loc.GetString("limited-charges-recharging", ("seconds", timeRemaining))); - } - - public override void AddCharges(EntityUid uid, int change, LimitedChargesComponent? comp = null) - { - if (!Query.Resolve(uid, ref comp, false)) - return; - - var startRecharge = comp.Charges == comp.MaxCharges; - base.AddCharges(uid, change, comp); - - // if a charge was just used from full, start the recharge timer - // TODO: probably make this an event instead of having le server system that just does this - if (change < 0 && startRecharge && TryComp(uid, out var recharge)) - recharge.NextChargeTime = _timing.CurTime + recharge.RechargeDuration; - } -} diff --git a/Content.Server/Chat/Managers/ChatManager.cs b/Content.Server/Chat/Managers/ChatManager.cs index 931fda0741..79c7a5f8ea 100644 --- a/Content.Server/Chat/Managers/ChatManager.cs +++ b/Content.Server/Chat/Managers/ChatManager.cs @@ -46,6 +46,7 @@ internal sealed partial class ChatManager : IChatManager [Dependency] private readonly IEntityManager _entityManager = default!; [Dependency] private readonly PlayerRateLimitManager _rateLimitManager = default!; [Dependency] private readonly ICP14SponsorManager _sponsor = default!; //CP14 OCC color + [Dependency] private readonly ISharedPlayerManager _player = default!; /// /// The maximum length a player-sent message can be sent @@ -182,7 +183,12 @@ internal sealed partial class ChatManager : IChatManager var adminSystem = _entityManager.System(); var antag = mind.UserId != null && (adminSystem.GetCachedPlayerInfo(mind.UserId.Value)?.Antag ?? false); - SendAdminAlert($"{mind.Session?.Name}{(antag ? " (ANTAG)" : "")} {message}"); + // We shouldn't be repeating this but I don't want to touch any more chat code than necessary + var playerName = mind.UserId is { } userId && _player.TryGetSessionById(userId, out var session) + ? session.Name + : "Unknown"; + + SendAdminAlert($"{playerName}{(antag ? " (ANTAG)" : "")} {message}"); } public void SendHookOOC(string sender, string message) diff --git a/Content.Server/Chat/Systems/ChatSystem.cs b/Content.Server/Chat/Systems/ChatSystem.cs index c5f389c8d9..fd8c1b9d5c 100644 --- a/Content.Server/Chat/Systems/ChatSystem.cs +++ b/Content.Server/Chat/Systems/ChatSystem.cs @@ -64,7 +64,7 @@ public sealed partial class ChatSystem : SharedChatSystem public const int 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 public const int WhisperMuffledRange = 5; // how far whisper goes at all, in world units - public const string DefaultAnnouncementSound = "/Audio/Announcements/announce.ogg"; + public const string DefaultAnnouncementSound = "/Audio/_CP14/Announce/event_boom.ogg"; //CP14 replaced default sound private bool _loocEnabled = true; private bool _deadLoocEnabled; diff --git a/Content.Server/Chemistry/Components/VaporComponent.cs b/Content.Server/Chemistry/Components/VaporComponent.cs index a2f4a01a2a..1bc3881b1d 100644 --- a/Content.Server/Chemistry/Components/VaporComponent.cs +++ b/Content.Server/Chemistry/Components/VaporComponent.cs @@ -1,4 +1,4 @@ -using Content.Shared.FixedPoint; +using Robust.Shared.Map; namespace Content.Server.Chemistry.Components { @@ -7,11 +7,31 @@ namespace Content.Server.Chemistry.Components { public const string SolutionName = "vapor"; - [DataField("transferAmount")] - public FixedPoint2 TransferAmount = FixedPoint2.New(0.5); + /// + /// Stores data on the previously reacted tile. We only want to do reaction checks once per tile. + /// + [DataField] + public TileRef? PreviousTileRef; - public float ReactTimer; - [DataField("active")] + /// + /// Percentage of the reagent that is reacted with the TileReaction. + /// + /// 0.5 = 50% of the reagent is reacted. + /// + /// + [DataField] + public float TransferAmountPercentage; + + /// + /// The minimum amount of the reagent that will be reacted with the TileReaction. + /// We do this to prevent floating point issues. A reagent with a low percentage transfer amount will + /// transfer 0.01~ forever and never get deleted. + /// Defaults to 0.05 if not defined, a good general value. + /// + [DataField] + public float MinimumTransferAmount = 0.05f; + + [DataField] public bool Active; } } diff --git a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs index dd97bfa8f6..6e2e2a91bc 100644 --- a/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/ChemMasterSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Chemistry.Components; -using Content.Server.Labels; using Content.Server.Popups; using Content.Server.Storage.EntitySystems; using Content.Shared.Administration.Logs; @@ -10,6 +9,7 @@ using Content.Shared.Chemistry.Reagent; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; using Content.Shared.FixedPoint; +using Content.Shared.Labels.EntitySystems; using Content.Shared.Storage; using JetBrains.Annotations; using Robust.Server.Audio; diff --git a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs index c9b64e649e..55489e0b31 100644 --- a/Content.Server/Chemistry/EntitySystems/VaporSystem.cs +++ b/Content.Server/Chemistry/EntitySystems/VaporSystem.cs @@ -30,8 +30,6 @@ namespace Content.Server.Chemistry.EntitySystems [Dependency] private readonly ReactiveSystem _reactive = default!; [Dependency] private readonly SharedTransformSystem _transformSystem = default!; - private const float ReactTime = 0.125f; - public override void Initialize() { base.Initialize(); @@ -50,13 +48,19 @@ namespace Content.Server.Chemistry.EntitySystems } // Check for collision with a impassable object (e.g. wall) and stop - if ((args.OtherFixture.CollisionLayer & (int) CollisionGroup.Impassable) != 0 && args.OtherFixture.Hard) + if ((args.OtherFixture.CollisionLayer & (int)CollisionGroup.Impassable) != 0 && args.OtherFixture.Hard) { EntityManager.QueueDeleteEntity(entity); } } - public void Start(Entity 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.Comp.Active = true; var despawn = EnsureComp(vapor); @@ -83,7 +87,9 @@ namespace Content.Server.Chemistry.EntitySystems return false; } - if (!_solutionContainerSystem.TryGetSolution(vapor.Owner, VaporComponent.SolutionName, out var vaporSolution)) + if (!_solutionContainerSystem.TryGetSolution(vapor.Owner, + VaporComponent.SolutionName, + out var vaporSolution)) { return false; } @@ -93,53 +99,71 @@ namespace Content.Server.Chemistry.EntitySystems public override void Update(float frameTime) { + base.Update(frameTime); + + // Enumerate over all VaporComponents var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var vaporComp, out var container, out var xform)) { - foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions((uid, container))) + // Return early if we're not active + if (!vaporComp.Active) + continue; + + // Get the current location of the vapor entity first + if (TryComp(xform.GridUid, out MapGridComponent? gridComp)) { - Update(frameTime, (uid, vaporComp), soln, xform); - } - } - } + var tile = _map.GetTileRef(xform.GridUid.Value, gridComp, xform.Coordinates); - private void Update(float frameTime, Entity ent, Entity soln, TransformComponent xform) - { - var (entity, vapor) = ent; - if (!vapor.Active) - return; + // Check if the tile is a tile we've reacted with previously. If so, skip it. + // If we have no previous tile reference, we don't return so we can save one. + if (vaporComp.PreviousTileRef != null && tile == vaporComp.PreviousTileRef) + continue; - vapor.ReactTimer += frameTime; - - var contents = soln.Comp.Solution; - if (vapor.ReactTimer >= ReactTime && TryComp(xform.GridUid, out MapGridComponent? gridComp)) - { - vapor.ReactTimer = 0; - - var tile = _map.GetTileRef(xform.GridUid.Value, gridComp, xform.Coordinates); - foreach (var reagentQuantity in contents.Contents.ToArray()) - { - if (reagentQuantity.Quantity == FixedPoint2.Zero) continue; - var reagent = _protoManager.Index(reagentQuantity.Reagent.Prototype); - - var reaction = - reagent.ReactionTile(tile, (reagentQuantity.Quantity / vapor.TransferAmount) * 0.25f, EntityManager, reagentQuantity.Reagent.Data); - - if (reaction > reagentQuantity.Quantity) + // Enumerate over all the reagents in the vapor entity solution + foreach (var (_, soln) in _solutionContainerSystem.EnumerateSolutions((uid, container))) { - Log.Error($"Tried to tile react more than we have for reagent {reagentQuantity}. Found {reaction} and we only have {reagentQuantity.Quantity}"); - reaction = reagentQuantity.Quantity; + // Iterate over the reagents in the solution + // Reason: Each reagent in our solution may have a unique TileReaction + // In this instance, we check individually for each reagent's TileReaction + // This is not doing chemical reactions! + var contents = soln.Comp.Solution; + foreach (var reagentQuantity in contents.Contents.ToArray()) + { + // Check if the reagent is empty + if (reagentQuantity.Quantity == FixedPoint2.Zero) + continue; + + var reagent = _protoManager.Index(reagentQuantity.Reagent.Prototype); + + // Limit the reaction amount to a minimum value to ensure no floating point funnies. + // Ex: A solution with a low percentage transfer amount will slowly approach 0.01... and never get deleted + var clampedAmount = Math.Max( + (float)reagentQuantity.Quantity * vaporComp.TransferAmountPercentage, + vaporComp.MinimumTransferAmount); + + // Preform the reagent's TileReaction + var reaction = + reagent.ReactionTile(tile, + clampedAmount, + EntityManager, + reagentQuantity.Reagent.Data); + + if (reaction > reagentQuantity.Quantity) + reaction = reagentQuantity.Quantity; + + _solutionContainerSystem.RemoveReagent(soln, reagentQuantity.Reagent, reaction); + } + + // Delete the vapor entity if it has no contents + if (contents.Volume == 0) + EntityManager.QueueDeleteEntity(uid); + } - _solutionContainerSystem.RemoveReagent(soln, reagentQuantity.Reagent, reaction); + // Set the previous tile reference to the current tile + vaporComp.PreviousTileRef = tile; } } - - if (contents.Volume == 0) - { - // Delete this - EntityManager.QueueDeleteEntity(entity); - } } } } diff --git a/Content.Server/Chemistry/TileReactions/SpillIfPuddlePresentTileReaction.cs b/Content.Server/Chemistry/TileReactions/SpillIfPuddlePresentTileReaction.cs index 8c8b371da3..5acef8d1a8 100644 --- a/Content.Server/Chemistry/TileReactions/SpillIfPuddlePresentTileReaction.cs +++ b/Content.Server/Chemistry/TileReactions/SpillIfPuddlePresentTileReaction.cs @@ -19,7 +19,7 @@ namespace Content.Server.Chemistry.TileReactions List? data) { var spillSystem = entityManager.System(); - if (reactVolume < 5 || !spillSystem.TryGetPuddle(tile, out _)) + if (!spillSystem.TryGetPuddle(tile, out _)) return FixedPoint2.Zero; return spillSystem.TrySpillAt(tile, new Solution(reagent.ID, reactVolume, data), out _, sound: false, tileReact: false) diff --git a/Content.Server/Chemistry/TileReactions/SpillTileReaction.cs b/Content.Server/Chemistry/TileReactions/SpillTileReaction.cs index 68c1966de8..c371410909 100644 --- a/Content.Server/Chemistry/TileReactions/SpillTileReaction.cs +++ b/Content.Server/Chemistry/TileReactions/SpillTileReaction.cs @@ -3,11 +3,6 @@ using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reaction; using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; -using Content.Shared.Movement.Components; -using Content.Shared.Movement.Systems; -using Content.Shared.Slippery; -using Content.Shared.StepTrigger.Components; -using Content.Shared.StepTrigger.Systems; using JetBrains.Annotations; using Robust.Shared.Map; @@ -17,44 +12,17 @@ namespace Content.Server.Chemistry.TileReactions [DataDefinition] public sealed partial class SpillTileReaction : ITileReaction { - [DataField("launchForwardsMultiplier")] public float LaunchForwardsMultiplier = 1; - [DataField("requiredSlipSpeed")] public float RequiredSlipSpeed = 6; - [DataField("paralyzeTime")] public float ParalyzeTime = 1; - - /// - /// - /// - [DataField("superSlippery")] public bool SuperSlippery; - public FixedPoint2 TileReact(TileRef tile, ReagentPrototype reagent, FixedPoint2 reactVolume, IEntityManager entityManager, List? data) { - if (reactVolume < 5) - return FixedPoint2.Zero; + var spillSystem = entityManager.System(); - if (entityManager.EntitySysManager.GetEntitySystem() - .TrySpillAt(tile, new Solution(reagent.ID, reactVolume, data), out var puddleUid, false, false)) - { - var slippery = entityManager.EnsureComponent(puddleUid); - slippery.LaunchForwardsMultiplier = LaunchForwardsMultiplier; - slippery.ParalyzeTime = ParalyzeTime; - slippery.SuperSlippery = SuperSlippery; - entityManager.Dirty(puddleUid, slippery); - - var step = entityManager.EnsureComponent(puddleUid); - entityManager.EntitySysManager.GetEntitySystem().SetRequiredTriggerSpeed(puddleUid, RequiredSlipSpeed, step); - - var slow = entityManager.EnsureComponent(puddleUid); - var speedModifier = 1 - reagent.Viscosity; - entityManager.EntitySysManager.GetEntitySystem().ChangeModifiers(puddleUid, speedModifier, slow); - - return reactVolume; - } - - return FixedPoint2.Zero; + return spillSystem.TrySpillAt(tile, new Solution(reagent.ID, reactVolume, data), out _, sound: false, tileReact: false) + ? reactVolume + : FixedPoint2.Zero; } } } diff --git a/Content.Server/Cloning/CloningConsoleSystem.cs b/Content.Server/Cloning/CloningConsoleSystem.cs index 39eac842f0..b5cf2dbb8a 100644 --- a/Content.Server/Cloning/CloningConsoleSystem.cs +++ b/Content.Server/Cloning/CloningConsoleSystem.cs @@ -165,7 +165,7 @@ namespace Content.Server.Cloning if (!_mindSystem.TryGetMind(body.Value, out var mindId, out var mind)) return; - if (mind.UserId.HasValue == false || mind.Session == null) + if (mind.UserId.HasValue == false || !_playerManager.ValidSessionId(mind.UserId.Value)) return; if (_cloningPodSystem.TryCloning(cloningPodUid, body.Value, (mindId, mind), cloningPod, scannerComp.CloningFailChanceMultiplier)) diff --git a/Content.Server/Cloning/CloningSystem.Subscriptions.cs b/Content.Server/Cloning/CloningSystem.Subscriptions.cs index 659d9a1ea1..eba806ceb8 100644 --- a/Content.Server/Cloning/CloningSystem.Subscriptions.cs +++ b/Content.Server/Cloning/CloningSystem.Subscriptions.cs @@ -25,7 +25,7 @@ namespace Content.Server.Cloning; public sealed partial class CloningSystem : EntitySystem { [Dependency] private readonly SharedStackSystem _stack = default!; - [Dependency] private readonly SharedLabelSystem _label = default!; + [Dependency] private readonly LabelSystem _label = default!; [Dependency] private readonly ForensicsSystem _forensics = default!; [Dependency] private readonly PaperSystem _paper = default!; diff --git a/Content.Server/CombatMode/Disarm/DisarmMalusComponent.cs b/Content.Server/CombatMode/Disarm/DisarmMalusComponent.cs deleted file mode 100644 index 49f677f286..0000000000 --- a/Content.Server/CombatMode/Disarm/DisarmMalusComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Content.Server.CombatMode.Disarm -{ - /// - /// Applies a malus to disarm attempts against this item. - /// - [RegisterComponent] - public sealed partial class DisarmMalusComponent : Component - { - /// - /// So, disarm chances are a % chance represented as a value between 0 and 1. - /// This default would be a 30% penalty to that. - /// - [DataField("malus")] - public float Malus = 0.3f; - } -} diff --git a/Content.Server/Communications/CommunicationsConsoleSystem.cs b/Content.Server/Communications/CommunicationsConsoleSystem.cs index b4303ee50a..fc489c1823 100644 --- a/Content.Server/Communications/CommunicationsConsoleSystem.cs +++ b/Content.Server/Communications/CommunicationsConsoleSystem.cs @@ -1,9 +1,7 @@ using Content.Server.Administration.Logs; using Content.Server.AlertLevel; using Content.Server.Chat.Systems; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; -using Content.Server.Interaction; using Content.Server.Popups; using Content.Server.RoundEnd; using Content.Server.Screens.Components; @@ -16,6 +14,7 @@ using Content.Shared.Chat; using Content.Shared.Communications; using Content.Shared.Database; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.IdentityManagement; using Content.Shared.Popups; using Robust.Server.GameObjects; diff --git a/Content.Server/Configurable/ConfigurationSystem.cs b/Content.Server/Configurable/ConfigurationSystem.cs index bf89c3f7ed..965571f883 100644 --- a/Content.Server/Configurable/ConfigurationSystem.cs +++ b/Content.Server/Configurable/ConfigurationSystem.cs @@ -1,91 +1,8 @@ using Content.Shared.Configurable; -using Content.Shared.Interaction; -using Content.Shared.Tools.Components; -using Content.Shared.Tools.Systems; -using Robust.Server.GameObjects; -using Robust.Shared.Containers; -using Robust.Shared.Player; -using static Content.Shared.Configurable.ConfigurationComponent; namespace Content.Server.Configurable; -public sealed class ConfigurationSystem : EntitySystem +public sealed class ConfigurationSystem : SharedConfigurationSystem { - [Dependency] private readonly UserInterfaceSystem _uiSystem = default!; - [Dependency] private readonly SharedToolSystem _toolSystem = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnUpdate); - SubscribeLocalEvent(OnStartup); - SubscribeLocalEvent(OnInteractUsing); - SubscribeLocalEvent(OnInsert); - } - - private void OnInteractUsing(EntityUid uid, ConfigurationComponent component, InteractUsingEvent args) - { - // TODO use activatable ui system - if (args.Handled) - return; - - if (!_toolSystem.HasQuality(args.Used, component.QualityNeeded)) - return; - - args.Handled = _uiSystem.TryOpenUi(uid, ConfigurationUiKey.Key, args.User); - } - - private void OnStartup(EntityUid uid, ConfigurationComponent component, ComponentStartup args) - { - UpdateUi(uid, component); - } - - private void UpdateUi(EntityUid uid, ConfigurationComponent component) - { - if (_uiSystem.HasUi(uid, ConfigurationUiKey.Key)) - _uiSystem.SetUiState(uid, ConfigurationUiKey.Key, new ConfigurationBoundUserInterfaceState(component.Config)); - } - - private void OnUpdate(EntityUid uid, ConfigurationComponent component, ConfigurationUpdatedMessage args) - { - foreach (var key in component.Config.Keys) - { - var value = args.Config.GetValueOrDefault(key); - - if (string.IsNullOrWhiteSpace(value) || component.Validation != null && !component.Validation.IsMatch(value)) - continue; - - component.Config[key] = value; - } - - UpdateUi(uid, component); - - var updatedEvent = new ConfigurationUpdatedEvent(component); - RaiseLocalEvent(uid, updatedEvent, false); - - // TODO support float (spinbox) and enum (drop-down) configurations - // TODO support verbs. - } - - private void OnInsert(EntityUid uid, ConfigurationComponent component, ContainerIsInsertingAttemptEvent args) - { - if (!_toolSystem.HasQuality(args.EntityUid, component.QualityNeeded)) - return; - - args.Cancel(); - } - - /// - /// Sent when configuration values got changes - /// - public sealed class ConfigurationUpdatedEvent : EntityEventArgs - { - public ConfigurationComponent Configuration; - - public ConfigurationUpdatedEvent(ConfigurationComponent configuration) - { - Configuration = configuration; - } - } } diff --git a/Content.Server/Construction/Completions/EmptyAllContainers.cs b/Content.Server/Construction/Completions/EmptyAllContainers.cs index 79de939387..3ed5cf373d 100644 --- a/Content.Server/Construction/Completions/EmptyAllContainers.cs +++ b/Content.Server/Construction/Completions/EmptyAllContainers.cs @@ -2,11 +2,8 @@ using Content.Server.Hands.Systems; using Content.Shared.Construction; using Content.Shared.Hands.Components; using JetBrains.Annotations; -using Robust.Server.Containers; using Robust.Server.GameObjects; using Robust.Shared.Containers; -using Robust.Shared.GameObjects; -using Robust.Shared.Map; namespace Content.Server.Construction.Completions { @@ -31,14 +28,14 @@ namespace Content.Server.Construction.Completions if (!entityManager.TryGetComponent(uid, out ContainerManagerComponent? containerManager)) return; - var containerSys = entityManager.EntitySysManager.GetEntitySystem(); + var containerSys = entityManager.EntitySysManager.GetEntitySystem(); var handSys = entityManager.EntitySysManager.GetEntitySystem(); var transformSys = entityManager.EntitySysManager.GetEntitySystem(); HandsComponent? hands = null; var pickup = Pickup && entityManager.TryGetComponent(userUid, out hands); - foreach (var container in containerManager.GetAllContainers()) + foreach (var container in containerSys.GetAllContainers(uid)) { foreach (var ent in containerSys.EmptyContainer(container, true, reparent: !pickup)) { diff --git a/Content.Server/Construction/Completions/EmptyContainer.cs b/Content.Server/Construction/Completions/EmptyContainer.cs index 21e36e7e14..6d26bb5da1 100644 --- a/Content.Server/Construction/Completions/EmptyContainer.cs +++ b/Content.Server/Construction/Completions/EmptyContainer.cs @@ -21,10 +21,11 @@ namespace Content.Server.Construction.Completions public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager) { - if (!entityManager.TryGetComponent(uid, out ContainerManagerComponent? containerManager) || - !containerManager.TryGetContainer(Container, out var container)) return; + var containerSys = entityManager.EntitySysManager.GetEntitySystem(); + + if (!entityManager.TryGetComponent(uid, out ContainerManagerComponent? containerManager) || + !containerSys.TryGetContainer(uid, Container, out var container, containerManager)) return; - var containerSys = entityManager.EntitySysManager.GetEntitySystem(); var handSys = entityManager.EntitySysManager.GetEntitySystem(); HandsComponent? hands = null; diff --git a/Content.Server/Construction/Completions/SetAnchor.cs b/Content.Server/Construction/Completions/SetAnchor.cs index 989ecc99bd..cdecfa7c90 100644 --- a/Content.Server/Construction/Completions/SetAnchor.cs +++ b/Content.Server/Construction/Completions/SetAnchor.cs @@ -1,4 +1,4 @@ -using Content.Shared.Construction; +using Content.Shared.Construction; using JetBrains.Annotations; namespace Content.Server.Construction.Completions @@ -12,7 +12,17 @@ namespace Content.Server.Construction.Completions public void PerformAction(EntityUid uid, EntityUid? userUid, IEntityManager entityManager) { var transform = entityManager.GetComponent(uid); - transform.Anchored = Value; + + if (transform.Anchored == Value) + return; + + var sys = entityManager.System(); + + if (Value) + sys.AnchorEntity(uid, transform); + else + sys.Unanchor(uid, transform); + } } } diff --git a/Content.Server/Construction/Completions/SnapToGrid.cs b/Content.Server/Construction/Completions/SnapToGrid.cs index 47941108f5..f1c2f8d584 100644 --- a/Content.Server/Construction/Completions/SnapToGrid.cs +++ b/Content.Server/Construction/Completions/SnapToGrid.cs @@ -15,7 +15,7 @@ namespace Content.Server.Construction.Completions var transform = entityManager.GetComponent(uid); if (!transform.Anchored) - transform.Coordinates = transform.Coordinates.SnapToGrid(entityManager); + entityManager.System().SetCoordinates(uid, transform.Coordinates.SnapToGrid(entityManager)); if (SouthRotation) { diff --git a/Content.Server/Construction/Conditions/ContainerEmpty.cs b/Content.Server/Construction/Conditions/ContainerEmpty.cs index cc2b25d1ad..7f940f5b3e 100644 --- a/Content.Server/Construction/Conditions/ContainerEmpty.cs +++ b/Content.Server/Construction/Conditions/ContainerEmpty.cs @@ -1,4 +1,4 @@ -using Content.Shared.Construction; +using Content.Shared.Construction; using Content.Shared.Examine; using JetBrains.Annotations; using Robust.Server.Containers; @@ -39,8 +39,9 @@ namespace Content.Server.Construction.Conditions var entity = args.Examined; - if (!IoCManager.Resolve().TryGetComponent(entity, out ContainerManagerComponent? containerManager) || - !containerManager.TryGetContainer(Container, out var container)) return false; + var entityManager = IoCManager.Resolve(); + if (!entityManager.TryGetComponent(entity, out ContainerManagerComponent? containerManager) || + !entityManager.System().TryGetContainer(entity, Container, out var container, containerManager)) return false; if (container.ContainedEntities.Count == 0) return false; diff --git a/Content.Server/Construction/Conditions/ContainerNotEmpty.cs b/Content.Server/Construction/Conditions/ContainerNotEmpty.cs index c6e79434f4..cb7d2c98ee 100644 --- a/Content.Server/Construction/Conditions/ContainerNotEmpty.cs +++ b/Content.Server/Construction/Conditions/ContainerNotEmpty.cs @@ -32,8 +32,9 @@ namespace Content.Server.Construction.Conditions var entity = args.Examined; - if (!IoCManager.Resolve().TryGetComponent(entity, out ContainerManagerComponent? containerManager) || - !containerManager.TryGetContainer(Container, out var container)) return false; + var entityManager = IoCManager.Resolve(); + if (!entityManager.TryGetComponent(entity, out ContainerManagerComponent? containerManager) || + !entityManager.System().TryGetContainer(entity, Container, out var container, containerManager)) return false; if (container.ContainedEntities.Count != 0) return false; diff --git a/Content.Server/Construction/ConstructionSystem.Graph.cs b/Content.Server/Construction/ConstructionSystem.Graph.cs index 4c73cef703..0027b941f8 100644 --- a/Content.Server/Construction/ConstructionSystem.Graph.cs +++ b/Content.Server/Construction/ConstructionSystem.Graph.cs @@ -66,10 +66,10 @@ namespace Content.Server.Construction if (!Resolve(uid, ref construction, false)) return null; - if (construction.Node is not {} nodeIdentifier) + if (construction.Node is not { } nodeIdentifier) return null; - return GetCurrentGraph(uid, construction) is not {} graph ? null : GetNodeFromGraph(graph, nodeIdentifier); + return GetCurrentGraph(uid, construction) is not { } graph ? null : GetNodeFromGraph(graph, nodeIdentifier); } /// @@ -85,10 +85,10 @@ namespace Content.Server.Construction if (!Resolve(uid, ref construction, false)) return null; - if (construction.EdgeIndex is not {} edgeIndex) + if (construction.EdgeIndex is not { } edgeIndex) return null; - return GetCurrentNode(uid, construction) is not {} node ? null : GetEdgeFromNode(node, edgeIndex); + return GetCurrentNode(uid, construction) is not { } node ? null : GetEdgeFromNode(node, edgeIndex); } /// @@ -102,7 +102,7 @@ namespace Content.Server.Construction if (GetCurrentNode(uid, construction) is not { } node) return (null, null); - if (construction.EdgeIndex is not {} edgeIndex) + if (construction.EdgeIndex is not { } edgeIndex) return (node, null); return (node, GetEdgeFromNode(node, edgeIndex)); @@ -121,7 +121,7 @@ namespace Content.Server.Construction if (!Resolve(uid, ref construction, false)) return null; - if (GetCurrentEdge(uid, construction) is not {} edge) + if (GetCurrentEdge(uid, construction) is not { } edge) return null; return GetStepFromEdge(edge, construction.StepIndex); @@ -141,10 +141,10 @@ namespace Content.Server.Construction if (!Resolve(uid, ref construction)) return null; - if (construction.TargetNode is not {} targetNodeId) + if (construction.TargetNode is not { } targetNodeId) return null; - if (GetCurrentGraph(uid, construction) is not {} graph) + if (GetCurrentGraph(uid, construction) is not { } graph) return null; return GetNodeFromGraph(graph, targetNodeId); @@ -165,10 +165,10 @@ namespace Content.Server.Construction if (!Resolve(uid, ref construction)) return null; - if (construction.TargetEdgeIndex is not {} targetEdgeIndex) + if (construction.TargetEdgeIndex is not { } targetEdgeIndex) return null; - if (GetCurrentNode(uid, construction) is not {} node) + if (GetCurrentNode(uid, construction) is not { } node) return null; return GetEdgeFromNode(node, targetEdgeIndex); @@ -245,8 +245,8 @@ namespace Content.Server.Construction if (!Resolve(uid, ref construction)) return false; - if (GetCurrentGraph(uid, construction) is not {} graph - || GetNodeFromGraph(graph, id) is not {} node) + if (GetCurrentGraph(uid, construction) is not { } graph + || GetNodeFromGraph(graph, id) is not { } node) return false; var oldNode = construction.Node; @@ -257,11 +257,11 @@ namespace Content.Server.Construction $"{ToPrettyString(userUid.Value):player} changed {ToPrettyString(uid):entity}'s node from \"{oldNode}\" to \"{id}\""); // ChangeEntity will handle the pathfinding update. - if (node.Entity.GetId(uid, userUid, new(EntityManager)) is {} newEntity + if (node.Entity.GetId(uid, userUid, new(EntityManager)) is { } newEntity && ChangeEntity(uid, userUid, newEntity, construction) != null) return true; - if(performActions) + if (performActions) PerformActions(uid, userUid, node.Actions); // An action might have deleted the entity... Account for this. @@ -347,7 +347,7 @@ namespace Content.Server.Construction // Retain the target node if an entity change happens in response to deconstruction; // in that case, we must continue to move towards the start node. - if (construction.TargetNode is {} targetNode) + if (construction.TargetNode is { } targetNode) SetPathfindingTarget(newUid, targetNode, newConstruction); } @@ -358,7 +358,7 @@ namespace Content.Server.Construction } if (newConstruction.InteractionQueue.Count > 0 && _queuedUpdates.Add(newUid)) - _constructionUpdateQueue.Enqueue(newUid); + _constructionUpdateQueue.Enqueue(newUid); // Transform transferring. var newTransform = Transform(newUid); @@ -430,7 +430,7 @@ namespace Content.Server.Construction if (!PrototypeManager.TryIndex(graphId, out var graph)) return false; - if(GetNodeFromGraph(graph, nodeId) is not {}) + if (GetNodeFromGraph(graph, nodeId) is not { }) return false; construction.Graph = graphId; diff --git a/Content.Server/Construction/ConstructionSystem.Initial.cs b/Content.Server/Construction/ConstructionSystem.Initial.cs index b88248b82f..0f916b75e1 100644 --- a/Content.Server/Construction/ConstructionSystem.Initial.cs +++ b/Content.Server/Construction/ConstructionSystem.Initial.cs @@ -509,7 +509,7 @@ namespace Content.Server.Construction return; } - var mapPos = location.ToMap(EntityManager, _transformSystem); + var mapPos = _transformSystem.ToMapCoordinates(location); var predicate = GetPredicate(constructionPrototype.CanBuildInImpassable, mapPos); if (!_interactionSystem.InRangeUnobstructed(user, mapPos, predicate: predicate)) diff --git a/Content.Server/Containers/EmptyOnMachineDeconstructSystem.cs b/Content.Server/Containers/EmptyOnMachineDeconstructSystem.cs index ae3ca47dd7..ed0350af57 100644 --- a/Content.Server/Containers/EmptyOnMachineDeconstructSystem.cs +++ b/Content.Server/Containers/EmptyOnMachineDeconstructSystem.cs @@ -33,12 +33,14 @@ namespace Content.Server.Containers private void OnDeconstruct(EntityUid uid, EmptyOnMachineDeconstructComponent component, MachineDeconstructedEvent ev) { - if (!EntityManager.TryGetComponent(uid, out var mComp)) + if (!TryComp(uid, out var mComp)) return; - var baseCoords = EntityManager.GetComponent(uid).Coordinates; + + var baseCoords = Transform(uid).Coordinates; + foreach (var v in component.Containers) { - if (mComp.TryGetContainer(v, out var container)) + if (_container.TryGetContainer(uid, v, out var container, mComp)) { _container.EmptyContainer(container, true, baseCoords); } diff --git a/Content.Server/Containers/ThrowInsertContainerSystem.cs b/Content.Server/Containers/ThrowInsertContainerSystem.cs index 09176c423c..1b87cb83ef 100644 --- a/Content.Server/Containers/ThrowInsertContainerSystem.cs +++ b/Content.Server/Containers/ThrowInsertContainerSystem.cs @@ -1,4 +1,5 @@ using Content.Server.Administration.Logs; +using Content.Shared.Containers; using Content.Shared.Database; using Content.Shared.Popups; using Content.Shared.Throwing; @@ -52,10 +53,3 @@ public sealed class ThrowInsertContainerSystem : EntitySystem _adminLogger.Add(LogType.Landed, LogImpact.Low, $"{ToPrettyString(args.Thrown)} thrown by {ToPrettyString(args.Component.Thrower.Value):player} landed in {ToPrettyString(ent)}"); } } - -/// -/// Sent before the insertion is made. -/// Allows preventing the insertion if any system on the entity should need to. -/// -[ByRefEvent] -public record struct BeforeThrowInsertEvent(EntityUid ThrownEntity, bool Cancelled = false); diff --git a/Content.Server/Damage/Components/DamagePopupComponent.cs b/Content.Server/Damage/Components/DamagePopupComponent.cs deleted file mode 100644 index 37c5d57cf4..0000000000 --- a/Content.Server/Damage/Components/DamagePopupComponent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Content.Server.Damage.Systems; - -namespace Content.Server.Damage.Components; - -[RegisterComponent, Access(typeof(DamagePopupSystem))] -public sealed partial class DamagePopupComponent : Component -{ - /// - /// Bool that will be used to determine if the popup type can be changed with a left click. - /// - [DataField("allowTypeChange")] [ViewVariables(VVAccess.ReadWrite)] - public bool AllowTypeChange = false; - /// - /// Enum that will be used to determine the type of damage popup displayed. - /// - [DataField("damagePopupType")] [ViewVariables(VVAccess.ReadWrite)] - public DamagePopupType Type = DamagePopupType.Combined; -} -public enum DamagePopupType -{ - Combined, - Total, - Delta, - Hit, -}; diff --git a/Content.Server/Damage/Systems/DamagePopupSystem.cs b/Content.Server/Damage/Systems/DamagePopupSystem.cs deleted file mode 100644 index 3386c92129..0000000000 --- a/Content.Server/Damage/Systems/DamagePopupSystem.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System.Linq; -using Content.Server.Damage.Components; -using Content.Server.Popups; -using Content.Shared.Damage; -using Content.Shared.Interaction; - -namespace Content.Server.Damage.Systems; - -public sealed class DamagePopupSystem : EntitySystem -{ - [Dependency] private readonly PopupSystem _popupSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnDamageChange); - SubscribeLocalEvent(OnInteractHand); - } - - private void OnDamageChange(EntityUid uid, DamagePopupComponent component, DamageChangedEvent args) - { - if (args.DamageDelta != null) - { - var damageTotal = args.Damageable.TotalDamage; - var damageDelta = args.DamageDelta.GetTotal(); - - var msg = component.Type switch - { - DamagePopupType.Delta => damageDelta.ToString(), - DamagePopupType.Total => damageTotal.ToString(), - DamagePopupType.Combined => damageDelta + " | " + damageTotal, - DamagePopupType.Hit => "!", - _ => "Invalid type", - }; - _popupSystem.PopupEntity(msg, uid); - } - } - - private void OnInteractHand(EntityUid uid, DamagePopupComponent component, InteractHandEvent args) - { - if (component.AllowTypeChange) - { - if (component.Type == Enum.GetValues(typeof(DamagePopupType)).Cast().Last()) - { - component.Type = Enum.GetValues(typeof(DamagePopupType)).Cast().First(); - } - else - { - component.Type = (DamagePopupType) (int) component.Type + 1; - } - _popupSystem.PopupEntity("Target set to type: " + component.Type.ToString(), uid); - } - } -} diff --git a/Content.Server/Database/ServerDbManager.cs b/Content.Server/Database/ServerDbManager.cs index e3cfb66c7f..0498571895 100644 --- a/Content.Server/Database/ServerDbManager.cs +++ b/Content.Server/Database/ServerDbManager.cs @@ -408,6 +408,7 @@ namespace Content.Server.Database private ServerDbBase _db = default!; private LoggingProvider _msLogProvider = default!; private ILoggerFactory _msLoggerFactory = default!; + private ISawmill _sawmill = default!; private bool _synchronous; // When running in integration tests, we'll use a single in-memory SQLite database connection. @@ -423,6 +424,7 @@ namespace Content.Server.Database { builder.AddProvider(_msLogProvider); }); + _sawmill = _logMgr.GetSawmill("db.manager"); _synchronous = _cfg.GetCVar(CCVars.DatabaseSynchronous); @@ -1144,7 +1146,7 @@ namespace Content.Server.Database Password = pass }.ConnectionString; - Logger.DebugS("db.manager", $"Using Postgres \"{host}:{port}/{db}\""); + _sawmill.Debug($"Using Postgres \"{host}:{port}/{db}\""); builder.UseNpgsql(connectionString); SetupLogging(builder); @@ -1167,12 +1169,12 @@ namespace Content.Server.Database if (!inMemory) { var finalPreferencesDbPath = Path.Combine(_res.UserData.RootDir!, configPreferencesDbPath); - Logger.DebugS("db.manager", $"Using SQLite DB \"{finalPreferencesDbPath}\""); + _sawmill.Debug($"Using SQLite DB \"{finalPreferencesDbPath}\""); getConnection = () => new SqliteConnection($"Data Source={finalPreferencesDbPath}"); } else { - Logger.DebugS("db.manager", "Using in-memory SQLite DB"); + _sawmill.Debug("Using in-memory SQLite DB"); _sqliteInMemoryConnection = new SqliteConnection("Data Source=:memory:"); // When using an in-memory DB we have to open it manually // so EFCore doesn't open, close and wipe it every operation. diff --git a/Content.Server/Decals/DecalSystem.cs b/Content.Server/Decals/DecalSystem.cs index 02d3ebd0a1..2e1ed2c68d 100644 --- a/Content.Server/Decals/DecalSystem.cs +++ b/Content.Server/Decals/DecalSystem.cs @@ -36,6 +36,7 @@ namespace Content.Server.Decals [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly SharedMapSystem _mapSystem = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; private readonly Dictionary> _dirtyChunks = new(); private readonly Dictionary>> _previousSentChunks = new(); @@ -249,7 +250,7 @@ namespace Content.Server.Decals if (!coordinates.IsValid(EntityManager)) return; - var gridId = coordinates.GetGridUid(EntityManager); + var gridId = _transform.GetGrid(coordinates); if (gridId == null) return; @@ -296,7 +297,7 @@ namespace Content.Server.Decals if (!PrototypeManager.HasIndex(decal.Id)) return false; - var gridId = coordinates.GetGridUid(EntityManager); + var gridId = _transform.GetGrid(coordinates); if (!TryComp(gridId, out MapGridComponent? grid)) return false; diff --git a/Content.Server/Delivery/CargoDeliveryDataComponent.cs b/Content.Server/Delivery/CargoDeliveryDataComponent.cs index 3bee0413fc..3e741e3a22 100644 --- a/Content.Server/Delivery/CargoDeliveryDataComponent.cs +++ b/Content.Server/Delivery/CargoDeliveryDataComponent.cs @@ -32,7 +32,7 @@ public sealed partial class CargoDeliveryDataComponent : Component /// 1 delivery per X players. /// [DataField] - public float PlayerToDeliveryRatio = 7f; + public float PlayerToDeliveryRatio = 8f; /// /// The minimum amount of deliveries that will spawn. diff --git a/Content.Server/Delivery/DeliverySystem.Spawning.cs b/Content.Server/Delivery/DeliverySystem.Spawning.cs index 19087e7448..a7496a343b 100644 --- a/Content.Server/Delivery/DeliverySystem.Spawning.cs +++ b/Content.Server/Delivery/DeliverySystem.Spawning.cs @@ -1,6 +1,6 @@ -using Content.Server.Power.EntitySystems; -using Content.Server.StationRecords; using Content.Shared.Delivery; +using Content.Shared.Power.EntitySystems; +using Content.Server.StationRecords; using Content.Shared.EntityTable; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -16,7 +16,7 @@ public sealed partial class DeliverySystem [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly EntityTableSystem _entityTable = default!; - [Dependency] private readonly PowerReceiverSystem _power = default!; + [Dependency] private readonly SharedPowerReceiverSystem _power = default!; private void InitializeSpawning() { @@ -28,16 +28,14 @@ public sealed partial class DeliverySystem ent.Comp.NextDelivery = _timing.CurTime + ent.Comp.MinDeliveryCooldown; // We want an early wave of mail so cargo doesn't have to wait } - private void SpawnDelivery(Entity ent, int amount) + protected override void SpawnDeliveries(Entity ent) { if (!Resolve(ent.Owner, ref ent.Comp)) return; var coords = Transform(ent).Coordinates; - _audio.PlayPvs(ent.Comp.SpawnSound, ent.Owner); - - for (int i = 0; i < amount; i++) + for (int i = 0; i < ent.Comp.ContainedDeliveryAmount; i++) { var spawns = _entityTable.GetSpawns(ent.Comp.Table); @@ -46,9 +44,12 @@ public sealed partial class DeliverySystem Spawn(id, coords); } } + + ent.Comp.ContainedDeliveryAmount = 0; + Dirty(ent); } - private void SpawnStationDeliveries(Entity ent) + private void AdjustStationDeliveries(Entity ent) { if (!TryComp(ent, out var records)) return; @@ -72,7 +73,7 @@ public sealed partial class DeliverySystem { foreach (var spawner in spawners) { - SpawnDelivery(spawner, deliveryCount); + AddDeliveriesToSpawner(spawner, deliveryCount); } } else @@ -87,18 +88,18 @@ public sealed partial class DeliverySystem } for (int j = 0; j < spawners.Count; j++) { - SpawnDelivery(spawners[j], amounts[j]); + AddDeliveriesToSpawner(spawners[j], amounts[j]); } } } - private List GetValidSpawners(Entity ent) + private List> GetValidSpawners(Entity ent) { - var validSpawners = new List(); + var validSpawners = new List>(); var spawners = EntityQueryEnumerator(); - while (spawners.MoveNext(out var spawnerUid, out _)) + while (spawners.MoveNext(out var spawnerUid, out var spawnerComp)) { var spawnerStation = _station.GetOwningStation(spawnerUid); @@ -108,12 +109,23 @@ public sealed partial class DeliverySystem if (!_power.IsPowered(spawnerUid)) continue; - validSpawners.Add(spawnerUid); + if (spawnerComp.ContainedDeliveryAmount >= spawnerComp.MaxContainedDeliveryAmount) + continue; + + validSpawners.Add((spawnerUid, spawnerComp)); } return validSpawners; } + private void AddDeliveriesToSpawner(Entity ent, int amount) + { + ent.Comp.ContainedDeliveryAmount += Math.Clamp(amount, 0, ent.Comp.MaxContainedDeliveryAmount - ent.Comp.ContainedDeliveryAmount); + _audio.PlayPvs(ent.Comp.SpawnSound, ent.Owner); + UpdateDeliverySpawnerVisuals(ent, ent.Comp.ContainedDeliveryAmount); + Dirty(ent); + } + private void UpdateSpawner(float frameTime) { var dataQuery = EntityQueryEnumerator(); @@ -125,7 +137,7 @@ public sealed partial class DeliverySystem continue; deliveryData.NextDelivery += _random.Next(deliveryData.MinDeliveryCooldown, deliveryData.MaxDeliveryCooldown); // Random cooldown between min and max - SpawnStationDeliveries((uid, deliveryData)); + AdjustStationDeliveries((uid, deliveryData)); } } } diff --git a/Content.Server/Delivery/DeliverySystem.cs b/Content.Server/Delivery/DeliverySystem.cs index 8ac8722821..0ddfde49ae 100644 --- a/Content.Server/Delivery/DeliverySystem.cs +++ b/Content.Server/Delivery/DeliverySystem.cs @@ -1,13 +1,16 @@ -using Content.Server.Cargo.Components; using Content.Server.Cargo.Systems; +using Content.Server.Chat.Systems; using Content.Server.Station.Systems; using Content.Server.StationRecords.Systems; +using Content.Shared.Cargo.Components; +using Content.Shared.Cargo.Prototypes; using Content.Shared.Delivery; using Content.Shared.FingerprintReader; using Content.Shared.Labels.EntitySystems; using Content.Shared.StationRecords; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; +using Robust.Shared.Prototypes; namespace Content.Server.Delivery; @@ -23,8 +26,15 @@ public sealed partial class DeliverySystem : SharedDeliverySystem [Dependency] private readonly StationRecordsSystem _records = default!; [Dependency] private readonly StationSystem _station = default!; [Dependency] private readonly FingerprintReaderSystem _fingerprintReader = default!; - [Dependency] private readonly SharedLabelSystem _label = default!; + [Dependency] private readonly LabelSystem _label = default!; [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly ChatSystem _chat = default!; + [Dependency] private readonly IPrototypeManager _protoMan = default!; + + /// + /// Default reason to use if the penalization is triggered + /// + private static readonly LocId DefaultMessage = "delivery-penalty-default-reason"; public override void Initialize() { @@ -39,19 +49,15 @@ public sealed partial class DeliverySystem : SharedDeliverySystem { _container.EnsureContainer(ent, ent.Comp.Container); - var stationId = _station.GetStationInMap(Transform(ent).MapID); - - if (stationId == null) + if (_station.GetStationInMap(Transform(ent).MapID) is not { } stationId) return; - _records.TryGetRandomRecord(stationId.Value, out var entry); - - if (entry == null) + if (!_records.TryGetRandomRecord(stationId, out var entry)) return; ent.Comp.RecipientName = entry.Name; ent.Comp.RecipientJobTitle = entry.JobTitle; - ent.Comp.RecipientStation = stationId.Value; + ent.Comp.RecipientStation = stationId; _appearance.SetData(ent, DeliveryVisuals.JobIcon, entry.JobIcon); @@ -73,7 +79,74 @@ public sealed partial class DeliverySystem : SharedDeliverySystem if (!TryComp(ent.Comp.RecipientStation, out var account)) return; - _cargo.UpdateBankAccount((ent.Comp.RecipientStation.Value, account), ent.Comp.SpesoReward); + var stationAccountEnt = (ent.Comp.RecipientStation.Value, account); + + var multiplier = GetDeliveryMultiplier(ent!); // Resolve so we know it's got the component + + _cargo.UpdateBankAccount( + stationAccountEnt, + (int)(ent.Comp.BaseSpesoReward * multiplier), + _cargo.CreateAccountDistribution((ent.Comp.RecipientStation.Value, account))); + } + + /// + /// Runs the penalty logic: Announcing the penalty and calculating how much to charge the designated account + /// + /// The delivery for which to run the penalty. + /// The penalty reason, displayed in front of the message. + protected override void HandlePenalty(Entity ent, string? reason = null) + { + if (!TryComp(ent.Comp.RecipientStation, out var stationAccount)) + return; + + if (ent.Comp.WasPenalized) + return; + + if (!_protoMan.TryIndex(ent.Comp.PenaltyBankAccount, out var accountInfo)) + return; + + var multiplier = GetDeliveryMultiplier(ent); + + var localizedAccountName = Loc.GetString(accountInfo.Name); + + reason ??= Loc.GetString(DefaultMessage); + + var dist = new Dictionary, double>() + { + { ent.Comp.PenaltyBankAccount, 1.0 } + }; + + var penaltyAccountBalance = stationAccount.Accounts[ent.Comp.PenaltyBankAccount]; + var calculatedPenalty = (int)(ent.Comp.BaseSpesoPenalty * multiplier); + + // Prevents cargo from going into negatives + if (calculatedPenalty > penaltyAccountBalance ) + calculatedPenalty = Math.Max(0, penaltyAccountBalance); + + _cargo.UpdateBankAccount( + (ent.Comp.RecipientStation.Value, stationAccount), + -calculatedPenalty, + dist); + + var message = Loc.GetString("delivery-penalty-message", ("reason", reason), ("spesos", calculatedPenalty), ("account", localizedAccountName.ToUpper())); + _chat.TrySendInGameICMessage(ent, message, InGameICChatType.Speak, hideChat: true); + + ent.Comp.WasPenalized = true; + DirtyField(ent.Owner, ent.Comp, nameof(DeliveryComponent.WasPenalized)); + } + + /// + /// Gathers the total multiplier for a delivery. + /// This is done by components having subscribed to GetDeliveryMultiplierEvent and having added onto it. + /// + /// The delivery for which to get the multiplier. + /// Total multiplier. + private float GetDeliveryMultiplier(Entity ent) + { + var ev = new GetDeliveryMultiplierEvent(); + RaiseLocalEvent(ent, ref ev); + + return ev.Multiplier; } public override void Update(float frameTime) diff --git a/Content.Server/Destructible/Thresholds/Behaviors/EmptyAllContainersBehaviour.cs b/Content.Server/Destructible/Thresholds/Behaviors/EmptyAllContainersBehaviour.cs index e696ad9258..60e7423247 100644 --- a/Content.Server/Destructible/Thresholds/Behaviors/EmptyAllContainersBehaviour.cs +++ b/Content.Server/Destructible/Thresholds/Behaviors/EmptyAllContainersBehaviour.cs @@ -13,7 +13,7 @@ namespace Content.Server.Destructible.Thresholds.Behaviors if (!system.EntityManager.TryGetComponent(owner, out var containerManager)) return; - foreach (var container in containerManager.GetAllContainers()) + foreach (var container in system.EntityManager.System().GetAllContainers(owner, containerManager)) { system.ContainerSystem.EmptyContainer(container, true, system.EntityManager.GetComponent(owner).Coordinates); } diff --git a/Content.Server/DeviceLinking/Systems/DeviceLinkSystem.cs b/Content.Server/DeviceLinking/Systems/DeviceLinkSystem.cs index b895ec190e..cec92db44c 100644 --- a/Content.Server/DeviceLinking/Systems/DeviceLinkSystem.cs +++ b/Content.Server/DeviceLinking/Systems/DeviceLinkSystem.cs @@ -1,10 +1,10 @@ using Content.Server.DeviceLinking.Components; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking.Events; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.DeviceLinking.Systems; diff --git a/Content.Server/DeviceLinking/Systems/DoorSignalControlSystem.cs b/Content.Server/DeviceLinking/Systems/DoorSignalControlSystem.cs index 145e2a7dfc..107559826c 100644 --- a/Content.Server/DeviceLinking/Systems/DoorSignalControlSystem.cs +++ b/Content.Server/DeviceLinking/Systems/DoorSignalControlSystem.cs @@ -2,6 +2,7 @@ using Content.Server.DeviceLinking.Components; using Content.Server.DeviceNetwork; using Content.Server.Doors.Systems; using Content.Shared.DeviceLinking.Events; +using Content.Shared.DeviceNetwork; using Content.Shared.Doors.Components; using Content.Shared.Doors; using JetBrains.Annotations; diff --git a/Content.Server/DeviceLinking/Systems/EdgeDetectorSystem.cs b/Content.Server/DeviceLinking/Systems/EdgeDetectorSystem.cs index 2bf71e4e94..a425122df4 100644 --- a/Content.Server/DeviceLinking/Systems/EdgeDetectorSystem.cs +++ b/Content.Server/DeviceLinking/Systems/EdgeDetectorSystem.cs @@ -1,6 +1,6 @@ using Content.Server.DeviceLinking.Components; -using Content.Server.DeviceNetwork; using Content.Shared.DeviceLinking.Events; +using Content.Shared.DeviceNetwork; namespace Content.Server.DeviceLinking.Systems; diff --git a/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs b/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs index eaab3c986f..038851f4ff 100644 --- a/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs +++ b/Content.Server/DeviceLinking/Systems/LogicGateSystem.cs @@ -2,6 +2,7 @@ using Content.Server.DeviceLinking.Components; using Content.Server.DeviceNetwork; using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking.Events; +using Content.Shared.DeviceNetwork; using Content.Shared.Examine; using Content.Shared.Interaction; using Content.Shared.Popups; diff --git a/Content.Server/DeviceLinking/Systems/MemoryCellSystem.cs b/Content.Server/DeviceLinking/Systems/MemoryCellSystem.cs index dbae7790f9..45e4d21750 100644 --- a/Content.Server/DeviceLinking/Systems/MemoryCellSystem.cs +++ b/Content.Server/DeviceLinking/Systems/MemoryCellSystem.cs @@ -2,6 +2,7 @@ using Content.Server.DeviceLinking.Components; using Content.Server.DeviceNetwork; using Content.Shared.DeviceLinking; using Content.Shared.DeviceLinking.Events; +using Content.Shared.DeviceNetwork; namespace Content.Server.DeviceLinking.Systems; diff --git a/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs index aa4623e415..798a9b540e 100644 --- a/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/ApcNetworkSystem.cs @@ -4,6 +4,7 @@ using Content.Server.NodeContainer.EntitySystems; using JetBrains.Annotations; using Content.Server.Power.EntitySystems; using Content.Server.Power.Nodes; +using Content.Shared.DeviceNetwork.Events; namespace Content.Server.DeviceNetwork.Systems { diff --git a/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs index 1988a07cea..20f0dfacb1 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceListSystem.cs @@ -1,9 +1,7 @@ using System.Linq; -using Content.Server.DeviceNetwork.Components; -using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Systems; -using Content.Shared.Interaction; using JetBrains.Annotations; using Robust.Shared.Map.Events; diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs index 0702a72042..1905b752b8 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkJammerSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Systems; using Robust.Server.GameObjects; diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkRequiresPowerSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkRequiresPowerSystem.cs index 6e7bd255c5..615ed37f9e 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceNetworkRequiresPowerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkRequiresPowerSystem.cs @@ -1,6 +1,7 @@ using Content.Server.DeviceNetwork.Components; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; +using Content.Shared.DeviceNetwork.Events; namespace Content.Server.DeviceNetwork.Systems; diff --git a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs index 20ee7a5dd1..4b28fd9bf9 100644 --- a/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/DeviceNetworkSystem.cs @@ -1,12 +1,12 @@ -using Content.Server.DeviceNetwork.Components; using Content.Shared.DeviceNetwork; using JetBrains.Annotations; using Robust.Shared.Prototypes; using Robust.Shared.Random; using System.Buffers; using System.Diagnostics.CodeAnalysis; -using System.Numerics; using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; +using Content.Shared.DeviceNetwork.Systems; using Content.Shared.Examine; namespace Content.Server.DeviceNetwork.Systems @@ -16,7 +16,7 @@ namespace Content.Server.DeviceNetwork.Systems /// Device networking allows machines and devices to communicate with each other while adhering to restrictions like range or being connected to the same powernet. /// [UsedImplicitly] - public sealed class DeviceNetworkSystem : EntitySystem + public sealed class DeviceNetworkSystem : SharedDeviceNetworkSystem { [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly IPrototypeManager _protoMan = default!; @@ -60,16 +60,7 @@ namespace Content.Server.DeviceNetwork.Systems SwapQueues(); } - /// - /// Sends the given payload as a device network packet to the entity with the given address and frequency. - /// Addresses are given to the DeviceNetworkComponent of an entity when connecting. - /// - /// The EntityUid of the sending entity - /// The address of the entity that the packet gets sent to. If null, the message is broadcast to all devices on that frequency (except the sender) - /// The frequency to send on - /// The data to be sent - /// Returns true when the packet was successfully enqueued. - public bool QueuePacket(EntityUid uid, string? address, NetworkPayload data, uint? frequency = null, int? network = null, DeviceNetworkComponent? device = null) + public override bool QueuePacket(EntityUid uid, string? address, NetworkPayload data, uint? frequency = null, int? network = null, DeviceNetworkComponent? device = null) { if (!Resolve(uid, ref device, false)) return false; @@ -368,96 +359,4 @@ namespace Content.Server.DeviceNetwork.Systems } } } - - /// - /// Event raised before a device network packet is send. - /// Subscribed to by other systems to prevent the packet from being sent. - /// - public sealed class BeforePacketSentEvent : CancellableEntityEventArgs - { - /// - /// The EntityUid of the entity the packet was sent from. - /// - public readonly EntityUid Sender; - - public readonly TransformComponent SenderTransform; - - /// - /// The senders current position in world coordinates. - /// - public readonly Vector2 SenderPosition; - - /// - /// The network the packet will be sent to. - /// - public readonly string NetworkId; - - public BeforePacketSentEvent(EntityUid sender, TransformComponent xform, Vector2 senderPosition, string networkId) - { - Sender = sender; - SenderTransform = xform; - SenderPosition = senderPosition; - NetworkId = networkId; - } - } - - /// - /// Sent to the sending entity before broadcasting network packets to recipients - /// - public sealed class BeforeBroadcastAttemptEvent : CancellableEntityEventArgs - { - public readonly IReadOnlySet Recipients; - public HashSet? ModifiedRecipients; - - public BeforeBroadcastAttemptEvent(IReadOnlySet recipients) - { - Recipients = recipients; - } - } - - /// - /// Event raised when a device network packet gets sent. - /// - public sealed class DeviceNetworkPacketEvent : EntityEventArgs - { - /// - /// The id of the network that this packet is being sent on. - /// - public int NetId; - - /// - /// The frequency the packet is sent on. - /// - public readonly uint Frequency; - - /// - /// Address of the intended recipient. Null if the message was broadcast. - /// - public string? Address; - - /// - /// The device network address of the sending entity. - /// - public readonly string SenderAddress; - - /// - /// The entity that sent the packet. - /// - public EntityUid Sender; - - /// - /// The data that is being sent. - /// - public readonly NetworkPayload Data; - - public DeviceNetworkPacketEvent(int netId, string? address, uint frequency, string senderAddress, EntityUid sender, NetworkPayload data) - { - NetId = netId; - Address = address; - Frequency = frequency; - SenderAddress = senderAddress; - Sender = sender; - Data = data; - } - } } diff --git a/Content.Server/DeviceNetwork/Systems/Devices/ApcNetSwitchSystem.cs b/Content.Server/DeviceNetwork/Systems/Devices/ApcNetSwitchSystem.cs index 9a4a81a4c0..588020a963 100644 --- a/Content.Server/DeviceNetwork/Systems/Devices/ApcNetSwitchSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/Devices/ApcNetSwitchSystem.cs @@ -1,7 +1,8 @@ -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Components.Devices; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Interaction; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.DeviceNetwork.Systems.Devices { diff --git a/Content.Server/DeviceNetwork/Systems/NetworkConfiguratorSystem.cs b/Content.Server/DeviceNetwork/Systems/NetworkConfiguratorSystem.cs index 645d28f6d2..6bcbe30456 100644 --- a/Content.Server/DeviceNetwork/Systems/NetworkConfiguratorSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/NetworkConfiguratorSystem.cs @@ -1,7 +1,6 @@ using System.Linq; using Content.Server.Administration.Logs; using Content.Server.DeviceLinking.Systems; -using Content.Server.DeviceNetwork.Components; using Content.Shared.Access.Components; using Content.Shared.Access.Systems; using Content.Shared.Database; diff --git a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs index 6c997828fa..8c1f48e93f 100644 --- a/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/SingletonDeviceNetServerSystem.cs @@ -1,9 +1,9 @@ using System.Diagnostics.CodeAnalysis; using Content.Server.DeviceNetwork.Components; using Content.Server.Medical.CrewMonitoring; -using Content.Server.Power.Components; using Content.Server.Station.Systems; using Content.Shared.Power; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.DeviceNetwork.Systems; diff --git a/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs index 675cacc4d7..cebe1a3b9d 100644 --- a/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/StationLimitedNetworkSystem.cs @@ -1,5 +1,6 @@ using Content.Server.DeviceNetwork.Components; using Content.Server.Station.Systems; +using Content.Shared.DeviceNetwork.Events; using JetBrains.Annotations; using Robust.Shared.Map; diff --git a/Content.Server/DeviceNetwork/Systems/WiredNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/WiredNetworkSystem.cs index 758a333c7a..54bd5256c7 100644 --- a/Content.Server/DeviceNetwork/Systems/WiredNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/WiredNetworkSystem.cs @@ -1,4 +1,5 @@ using Content.Server.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; using JetBrains.Annotations; namespace Content.Server.DeviceNetwork.Systems diff --git a/Content.Server/DeviceNetwork/Systems/WirelessNetworkSystem.cs b/Content.Server/DeviceNetwork/Systems/WirelessNetworkSystem.cs index 1741afd4ce..8bca47e041 100644 --- a/Content.Server/DeviceNetwork/Systems/WirelessNetworkSystem.cs +++ b/Content.Server/DeviceNetwork/Systems/WirelessNetworkSystem.cs @@ -1,4 +1,5 @@ using Content.Server.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; using JetBrains.Annotations; namespace Content.Server.DeviceNetwork.Systems diff --git a/Content.Server/Disposal/Mailing/MailingUnitSystem.cs b/Content.Server/Disposal/Mailing/MailingUnitSystem.cs index 6249b9497d..6ee282a310 100644 --- a/Content.Server/Disposal/Mailing/MailingUnitSystem.cs +++ b/Content.Server/Disposal/Mailing/MailingUnitSystem.cs @@ -1,204 +1,8 @@ -using Content.Server.Configurable; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; -using Content.Server.DeviceNetwork.Systems; -using Content.Server.Disposal.Unit.EntitySystems; -using Content.Server.Power.Components; -using Content.Shared.DeviceNetwork; -using Content.Shared.Disposal; -using Content.Shared.Interaction; -using Robust.Server.GameObjects; -using Robust.Shared.Player; -using Robust.Shared.Utility; +using Content.Shared.Disposal.Mailing; namespace Content.Server.Disposal.Mailing; -public sealed class MailingUnitSystem : EntitySystem +public sealed class MailingUnitSystem : SharedMailingUnitSystem { - [Dependency] private readonly DeviceNetworkSystem _deviceNetworkSystem = default!; - [Dependency] private readonly UserInterfaceSystem _userInterfaceSystem = default!; - private const string MailTag = "mail"; - - private const string TagConfigurationKey = "tag"; - - private const string NetTag = "tag"; - private const string NetSrc = "src"; - private const string NetTarget = "target"; - private const string NetCmdSent = "mail_sent"; - private const string NetCmdRequest = "get_mailer_tag"; - private const string NetCmdResponse = "mailer_tag"; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnComponentInit); - SubscribeLocalEvent(OnPacketReceived); - SubscribeLocalEvent(OnBeforeFlush); - SubscribeLocalEvent(OnConfigurationUpdated); - SubscribeLocalEvent(HandleActivate, before: new[] { typeof(DisposalUnitSystem) }); - SubscribeLocalEvent(OnDisposalUnitUIStateChange); - SubscribeLocalEvent(OnTargetSelected); - } - - - private void OnComponentInit(EntityUid uid, MailingUnitComponent component, ComponentInit args) - { - UpdateTargetList(uid, component); - } - - private void OnPacketReceived(EntityUid uid, MailingUnitComponent component, DeviceNetworkPacketEvent args) - { - if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command) || !IsPowered(uid)) - return; - - switch (command) - { - case NetCmdRequest: - SendTagRequestResponse(uid, args, component.Tag); - break; - case NetCmdResponse when args.Data.TryGetValue(NetTag, out string? tag): - //Add the received tag request response to the list of targets - component.TargetList.Add(tag); - UpdateUserInterface(uid, component); - break; - } - } - - /// - /// Sends the given tag as a response to a if it's not null - /// - private void SendTagRequestResponse(EntityUid uid, DeviceNetworkPacketEvent args, string? tag) - { - if (tag == null) - return; - - var payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = NetCmdResponse, - [NetTag] = tag - }; - - _deviceNetworkSystem.QueuePacket(uid, args.Address, payload, args.Frequency); - } - - /// - /// Prevents the unit from flushing if no target is selected - /// - private void OnBeforeFlush(EntityUid uid, MailingUnitComponent component, BeforeDisposalFlushEvent args) - { - if (string.IsNullOrEmpty(component.Target)) - { - args.Cancel(); - return; - } - - args.Tags.Add(MailTag); - args.Tags.Add(component.Target); - - BroadcastSentMessage(uid, component); - } - - /// - /// Broadcast that a mail was sent including the src and target tags - /// - private void BroadcastSentMessage(EntityUid uid, MailingUnitComponent component, DeviceNetworkComponent? device = null) - { - if (string.IsNullOrEmpty(component.Tag) || string.IsNullOrEmpty(component.Target) || !Resolve(uid, ref device)) - return; - - var payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = NetCmdSent, - [NetSrc] = component.Tag, - [NetTarget] = component.Target - }; - - _deviceNetworkSystem.QueuePacket(uid, null, payload, null, null, device); - } - - /// - /// Clears the units target list and broadcasts a . - /// The target list will then get populated with responses from all active mailing units on the same grid - /// - private void UpdateTargetList(EntityUid uid, MailingUnitComponent component, DeviceNetworkComponent? device = null) - { - if (!Resolve(uid, ref device, false)) - return; - - var payload = new NetworkPayload - { - [DeviceNetworkConstants.Command] = NetCmdRequest - }; - - component.TargetList.Clear(); - _deviceNetworkSystem.QueuePacket(uid, null, payload, null, null, device); - } - - /// - /// Gets called when the units tag got updated - /// - private void OnConfigurationUpdated(EntityUid uid, MailingUnitComponent component, ConfigurationSystem.ConfigurationUpdatedEvent args) - { - var configuration = args.Configuration.Config; - if (!configuration.ContainsKey(TagConfigurationKey) || configuration[TagConfigurationKey] == string.Empty) - { - component.Tag = null; - return; - } - - component.Tag = configuration[TagConfigurationKey]; - UpdateUserInterface(uid, component); - } - - private void HandleActivate(EntityUid uid, MailingUnitComponent component, ActivateInWorldEvent args) - { - if (args.Handled || !args.Complex) - return; - - if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) - { - return; - } - - args.Handled = true; - UpdateTargetList(uid, component); - _userInterfaceSystem.OpenUi(uid, MailingUnitUiKey.Key, actor.PlayerSession); - } - - /// - /// Gets called when the disposal unit components ui state changes. This is required because the mailing unit requires a disposal unit component and overrides its ui - /// - private void OnDisposalUnitUIStateChange(EntityUid uid, MailingUnitComponent component, DisposalUnitUIStateUpdatedEvent args) - { - component.DisposalUnitInterfaceState = args.State; - UpdateUserInterface(uid, component); - } - - private void UpdateUserInterface(EntityUid uid, MailingUnitComponent component) - { - if (component.DisposalUnitInterfaceState == null) - return; - - var state = new MailingUnitBoundUserInterfaceState(component.DisposalUnitInterfaceState, component.Target, component.TargetList.ShallowClone(), component.Tag); - _userInterfaceSystem.SetUiState(uid, MailingUnitUiKey.Key, state); - } - - private void OnTargetSelected(EntityUid uid, MailingUnitComponent component, TargetSelectedMessage args) - { - component.Target = args.Target; - UpdateUserInterface(uid, component); - } - - /// - /// Checks if the unit is powered if an is present - /// - /// True if the power receiver component is powered or not present - private bool IsPowered(EntityUid uid, ApcPowerReceiverComponent? powerReceiver = null) - { - if (Resolve(uid, ref powerReceiver) && !powerReceiver.Powered) - return false; - - return true; - } } diff --git a/Content.Server/Disposal/Tube/Components/DisposalEntryComponent.cs b/Content.Server/Disposal/Tube/Components/DisposalEntryComponent.cs deleted file mode 100644 index e4b8955c9c..0000000000 --- a/Content.Server/Disposal/Tube/Components/DisposalEntryComponent.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Content.Server.Disposal.Unit.EntitySystems; - -namespace Content.Server.Disposal.Tube.Components -{ - [RegisterComponent] - [Access(typeof(DisposalTubeSystem), typeof(DisposalUnitSystem))] - public sealed partial class DisposalEntryComponent : Component - { - public const string HolderPrototypeId = "DisposalHolder"; - } -} diff --git a/Content.Server/Disposal/Tube/Components/DisposalBendComponent.cs b/Content.Server/Disposal/Tube/DisposalBendComponent.cs similarity index 70% rename from Content.Server/Disposal/Tube/Components/DisposalBendComponent.cs rename to Content.Server/Disposal/Tube/DisposalBendComponent.cs index ace8a68462..7aa48f4bd3 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalBendComponent.cs +++ b/Content.Server/Disposal/Tube/DisposalBendComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Disposal.Tube.Components; +namespace Content.Server.Disposal.Tube; [RegisterComponent] [Access(typeof(DisposalTubeSystem))] diff --git a/Content.Server/Disposal/Tube/Components/DisposalJunctionComponent.cs b/Content.Server/Disposal/Tube/DisposalJunctionComponent.cs similarity index 84% rename from Content.Server/Disposal/Tube/Components/DisposalJunctionComponent.cs rename to Content.Server/Disposal/Tube/DisposalJunctionComponent.cs index d929dd16bf..af0d7eda68 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalJunctionComponent.cs +++ b/Content.Server/Disposal/Tube/DisposalJunctionComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Disposal.Tube.Components; +namespace Content.Server.Disposal.Tube; [RegisterComponent] [Access(typeof(DisposalTubeSystem))] diff --git a/Content.Server/Disposal/Tube/Components/DisposalRouterComponent.cs b/Content.Server/Disposal/Tube/DisposalRouterComponent.cs similarity index 57% rename from Content.Server/Disposal/Tube/Components/DisposalRouterComponent.cs rename to Content.Server/Disposal/Tube/DisposalRouterComponent.cs index 18c0945cef..2446cf27f7 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalRouterComponent.cs +++ b/Content.Server/Disposal/Tube/DisposalRouterComponent.cs @@ -1,12 +1,6 @@ -using Content.Server.UserInterface; -using Robust.Server.GameObjects; using Robust.Shared.Audio; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; -using Robust.Shared.Player; -using static Content.Shared.Disposal.Components.SharedDisposalRouterComponent; -namespace Content.Server.Disposal.Tube.Components +namespace Content.Server.Disposal.Tube { [RegisterComponent] [Access(typeof(DisposalTubeSystem))] diff --git a/Content.Server/Disposal/Tube/Components/DisposalSignalRouterComponent.cs b/Content.Server/Disposal/Tube/DisposalSignalRouterComponent.cs similarity index 91% rename from Content.Server/Disposal/Tube/Components/DisposalSignalRouterComponent.cs rename to Content.Server/Disposal/Tube/DisposalSignalRouterComponent.cs index b4ef81d898..bee8293f58 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalSignalRouterComponent.cs +++ b/Content.Server/Disposal/Tube/DisposalSignalRouterComponent.cs @@ -1,8 +1,7 @@ -using Content.Server.Disposal.Tube.Systems; using Content.Shared.DeviceLinking; using Robust.Shared.Prototypes; -namespace Content.Server.Disposal.Tube.Components; +namespace Content.Server.Disposal.Tube; /// /// Requires to function. diff --git a/Content.Server/Disposal/Tube/Systems/DisposalSignalRouterSystem.cs b/Content.Server/Disposal/Tube/DisposalSignalRouterSystem.cs similarity index 94% rename from Content.Server/Disposal/Tube/Systems/DisposalSignalRouterSystem.cs rename to Content.Server/Disposal/Tube/DisposalSignalRouterSystem.cs index f1fdedb522..0d6c03b8c5 100644 --- a/Content.Server/Disposal/Tube/Systems/DisposalSignalRouterSystem.cs +++ b/Content.Server/Disposal/Tube/DisposalSignalRouterSystem.cs @@ -1,8 +1,7 @@ using Content.Server.DeviceLinking.Systems; -using Content.Server.Disposal.Tube.Components; using Content.Shared.DeviceLinking.Events; -namespace Content.Server.Disposal.Tube.Systems; +namespace Content.Server.Disposal.Tube; /// /// Handles signals and the routing get next direction event. diff --git a/Content.Server/Disposal/Tube/Components/DisposalTaggerComponent.cs b/Content.Server/Disposal/Tube/DisposalTaggerComponent.cs similarity index 53% rename from Content.Server/Disposal/Tube/Components/DisposalTaggerComponent.cs rename to Content.Server/Disposal/Tube/DisposalTaggerComponent.cs index a291f4a941..3f072a80c7 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalTaggerComponent.cs +++ b/Content.Server/Disposal/Tube/DisposalTaggerComponent.cs @@ -1,13 +1,6 @@ -using Content.Server.Disposal.Unit.Components; -using Content.Server.UserInterface; -using Robust.Server.GameObjects; using Robust.Shared.Audio; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; -using Robust.Shared.Player; -using static Content.Shared.Disposal.Components.SharedDisposalTaggerComponent; -namespace Content.Server.Disposal.Tube.Components +namespace Content.Server.Disposal.Tube { [RegisterComponent] public sealed partial class DisposalTaggerComponent : DisposalTransitComponent diff --git a/Content.Server/Disposal/Tube/Components/DisposalTransitComponent.cs b/Content.Server/Disposal/Tube/DisposalTransitComponent.cs similarity index 82% rename from Content.Server/Disposal/Tube/Components/DisposalTransitComponent.cs rename to Content.Server/Disposal/Tube/DisposalTransitComponent.cs index e916327516..10bc7d5df7 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalTransitComponent.cs +++ b/Content.Server/Disposal/Tube/DisposalTransitComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Disposal.Tube.Components +namespace Content.Server.Disposal.Tube { // TODO: Different types of tubes eject in random direction with no exit point [RegisterComponent] diff --git a/Content.Server/Disposal/Tube/Components/DisposalTubeComponent.cs b/Content.Server/Disposal/Tube/DisposalTubeComponent.cs similarity index 90% rename from Content.Server/Disposal/Tube/Components/DisposalTubeComponent.cs rename to Content.Server/Disposal/Tube/DisposalTubeComponent.cs index c16f1fcc22..15d02ad1ef 100644 --- a/Content.Server/Disposal/Tube/Components/DisposalTubeComponent.cs +++ b/Content.Server/Disposal/Tube/DisposalTubeComponent.cs @@ -1,9 +1,9 @@ -using Content.Server.Disposal.Unit.EntitySystems; +using Content.Server.Disposal.Unit; using Content.Shared.Damage; using Robust.Shared.Audio; using Robust.Shared.Containers; -namespace Content.Server.Disposal.Tube.Components; +namespace Content.Server.Disposal.Tube; [RegisterComponent] [Access(typeof(DisposalTubeSystem), typeof(DisposableSystem))] diff --git a/Content.Server/Disposal/Tube/DisposalTubeSystem.cs b/Content.Server/Disposal/Tube/DisposalTubeSystem.cs index 20626a5eee..f1e094db20 100644 --- a/Content.Server/Disposal/Tube/DisposalTubeSystem.cs +++ b/Content.Server/Disposal/Tube/DisposalTubeSystem.cs @@ -2,12 +2,12 @@ using System.Linq; using System.Text; using Content.Server.Atmos.EntitySystems; using Content.Server.Construction.Completions; -using Content.Server.Disposal.Tube.Components; -using Content.Server.Disposal.Unit.Components; -using Content.Server.Disposal.Unit.EntitySystems; +using Content.Server.Disposal.Unit; using Content.Server.Popups; using Content.Shared.Destructible; using Content.Shared.Disposal.Components; +using Content.Shared.Disposal.Tube; +using Content.Shared.Disposal.Unit; using Robust.Server.GameObjects; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; @@ -16,12 +16,10 @@ using Robust.Shared.Map.Components; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Random; -using static Content.Shared.Disposal.Components.SharedDisposalRouterComponent; -using static Content.Shared.Disposal.Components.SharedDisposalTaggerComponent; namespace Content.Server.Disposal.Tube { - public sealed class DisposalTubeSystem : EntitySystem + public sealed class DisposalTubeSystem : SharedDisposalTubeSystem { [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; @@ -49,8 +47,8 @@ namespace Content.Server.Disposal.Tube SubscribeLocalEvent(OnGetBendConnectableDirections); SubscribeLocalEvent(OnGetBendNextDirection); - SubscribeLocalEvent(OnGetEntryConnectableDirections); - SubscribeLocalEvent(OnGetEntryNextDirection); + SubscribeLocalEvent(OnGetEntryConnectableDirections); + SubscribeLocalEvent(OnGetEntryNextDirection); SubscribeLocalEvent(OnGetJunctionConnectableDirections); SubscribeLocalEvent(OnGetJunctionNextDirection); @@ -64,13 +62,13 @@ namespace Content.Server.Disposal.Tube SubscribeLocalEvent(OnGetTaggerConnectableDirections); SubscribeLocalEvent(OnGetTaggerNextDirection); - Subs.BuiEvents(DisposalRouterUiKey.Key, subs => + Subs.BuiEvents(SharedDisposalRouterComponent.DisposalRouterUiKey.Key, subs => { subs.Event(OnOpenRouterUI); subs.Event(OnUiAction); }); - Subs.BuiEvents(DisposalTaggerUiKey.Key, subs => + Subs.BuiEvents(SharedDisposalTaggerComponent.DisposalTaggerUiKey.Key, subs => { subs.Event(OnOpenTaggerUI); subs.Event(OnUiAction); @@ -161,12 +159,12 @@ namespace Content.Server.Disposal.Tube args.Next = previousDF == ev.Connectable[0] ? ev.Connectable[1] : ev.Connectable[0]; } - private void OnGetEntryConnectableDirections(EntityUid uid, DisposalEntryComponent component, ref GetDisposalsConnectableDirectionsEvent args) + private void OnGetEntryConnectableDirections(EntityUid uid, Shared.Disposal.Tube.DisposalEntryComponent component, ref GetDisposalsConnectableDirectionsEvent args) { args.Connectable = new[] { Transform(uid).LocalRotation.GetDir() }; } - private void OnGetEntryNextDirection(EntityUid uid, DisposalEntryComponent component, ref GetDisposalsNextDirectionEvent args) + private void OnGetEntryNextDirection(EntityUid uid, Shared.Disposal.Tube.DisposalEntryComponent component, ref GetDisposalsNextDirectionEvent args) { // Ejects contents when they come from the same direction the entry is facing. if (args.Holder.PreviousDirectionFrom != Direction.Invalid) @@ -283,10 +281,10 @@ namespace Content.Server.Disposal.Tube private void OnOpenTaggerUI(EntityUid uid, DisposalTaggerComponent tagger, BoundUIOpenedEvent args) { - if (_uiSystem.HasUi(uid, DisposalTaggerUiKey.Key)) + if (_uiSystem.HasUi(uid, SharedDisposalTaggerComponent.DisposalTaggerUiKey.Key)) { - _uiSystem.SetUiState(uid, DisposalTaggerUiKey.Key, - new DisposalTaggerUserInterfaceState(tagger.Tag)); + _uiSystem.SetUiState(uid, SharedDisposalTaggerComponent.DisposalTaggerUiKey.Key, + new SharedDisposalTaggerComponent.DisposalTaggerUserInterfaceState(tagger.Tag)); } } @@ -298,7 +296,7 @@ namespace Content.Server.Disposal.Tube { if (router.Tags.Count <= 0) { - _uiSystem.SetUiState(uid, DisposalRouterUiKey.Key, new DisposalRouterUserInterfaceState("")); + _uiSystem.SetUiState(uid, SharedDisposalRouterComponent.DisposalRouterUiKey.Key, new SharedDisposalRouterComponent.DisposalRouterUserInterfaceState("")); return; } @@ -312,7 +310,7 @@ namespace Content.Server.Disposal.Tube taglist.Remove(taglist.Length - 2, 2); - _uiSystem.SetUiState(uid, DisposalRouterUiKey.Key, new DisposalRouterUserInterfaceState(taglist.ToString())); + _uiSystem.SetUiState(uid, SharedDisposalRouterComponent.DisposalRouterUiKey.Key, new SharedDisposalRouterComponent.DisposalRouterUserInterfaceState(taglist.ToString())); } private void OnAnchorChange(EntityUid uid, DisposalTubeComponent component, ref AnchorStateChangedEvent args) @@ -419,13 +417,13 @@ namespace Content.Server.Disposal.Tube _popups.PopupEntity(Loc.GetString("disposal-tube-component-popup-directions-text", ("directions", directions)), tubeId, recipient); } - public bool TryInsert(EntityUid uid, DisposalUnitComponent from, IEnumerable? tags = default, DisposalEntryComponent? entry = null) + public override bool TryInsert(EntityUid uid, DisposalUnitComponent from, IEnumerable? tags = default, DisposalEntryComponent? entry = null) { if (!Resolve(uid, ref entry)) return false; var xform = Transform(uid); - var holder = Spawn(DisposalEntryComponent.HolderPrototypeId, _transform.GetMapCoordinates(uid, xform: xform)); + var holder = Spawn(entry.HolderPrototypeId, _transform.GetMapCoordinates(uid, xform: xform)); var holderComponent = Comp(holder); foreach (var entity in from.Container.ContainedEntities.ToArray()) @@ -436,7 +434,7 @@ namespace Content.Server.Disposal.Tube _atmosSystem.Merge(holderComponent.Air, from.Air); from.Air.Clear(); - if (tags != default) + if (tags != null) holderComponent.Tags.UnionWith(tags); return _disposableSystem.EnterTube(holder, uid, holderComponent); diff --git a/Content.Server/Disposal/Tube/GetDisposalsNextDirectionEvent.cs b/Content.Server/Disposal/Tube/GetDisposalsNextDirectionEvent.cs index 2872a0e6d0..30dd1c3769 100644 --- a/Content.Server/Disposal/Tube/GetDisposalsNextDirectionEvent.cs +++ b/Content.Server/Disposal/Tube/GetDisposalsNextDirectionEvent.cs @@ -1,4 +1,4 @@ -using Content.Server.Disposal.Unit.Components; +using Content.Server.Disposal.Unit; namespace Content.Server.Disposal.Tube; diff --git a/Content.Server/Disposal/TubeConnectionsCommand.cs b/Content.Server/Disposal/TubeConnectionsCommand.cs index 564c46be7a..6719a9a2ab 100644 --- a/Content.Server/Disposal/TubeConnectionsCommand.cs +++ b/Content.Server/Disposal/TubeConnectionsCommand.cs @@ -1,6 +1,5 @@ using Content.Server.Administration; using Content.Server.Disposal.Tube; -using Content.Server.Disposal.Tube.Components; using Content.Shared.Administration; using Robust.Shared.Console; diff --git a/Content.Server/Disposal/Unit/Components/BeingDisposedComponent.cs b/Content.Server/Disposal/Unit/BeingDisposedComponent.cs similarity index 81% rename from Content.Server/Disposal/Unit/Components/BeingDisposedComponent.cs rename to Content.Server/Disposal/Unit/BeingDisposedComponent.cs index 060c7c98bd..3cff669855 100644 --- a/Content.Server/Disposal/Unit/Components/BeingDisposedComponent.cs +++ b/Content.Server/Disposal/Unit/BeingDisposedComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Disposal.Unit.Components; +namespace Content.Server.Disposal.Unit; /// /// A component added to entities that are currently in disposals. diff --git a/Content.Server/Disposal/Unit/EntitySystems/BeingDisposedSystem.cs b/Content.Server/Disposal/Unit/BeingDisposedSystem.cs similarity index 92% rename from Content.Server/Disposal/Unit/EntitySystems/BeingDisposedSystem.cs rename to Content.Server/Disposal/Unit/BeingDisposedSystem.cs index 6fbfb1523a..fcff4ba3b5 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/BeingDisposedSystem.cs +++ b/Content.Server/Disposal/Unit/BeingDisposedSystem.cs @@ -1,8 +1,7 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Body.Systems; -using Content.Server.Disposal.Unit.Components; -namespace Content.Server.Disposal.Unit.EntitySystems; +namespace Content.Server.Disposal.Unit; public sealed class BeingDisposedSystem : EntitySystem { diff --git a/Content.Server/Disposal/Unit/Components/DisposalUnitComponent.cs b/Content.Server/Disposal/Unit/Components/DisposalUnitComponent.cs deleted file mode 100644 index 548af039da..0000000000 --- a/Content.Server/Disposal/Unit/Components/DisposalUnitComponent.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Content.Server.Atmos; -using Content.Shared.Atmos; -using Content.Shared.Disposal.Components; - -namespace Content.Server.Disposal.Unit.Components; - -// GasMixture life. -[RegisterComponent] -public sealed partial class DisposalUnitComponent : SharedDisposalUnitComponent -{ - [DataField("air")] - public GasMixture Air = new(Atmospherics.CellVolume); -} diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs b/Content.Server/Disposal/Unit/DisposableSystem.cs similarity index 97% rename from Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs rename to Content.Server/Disposal/Unit/DisposableSystem.cs index 064f9300b3..a94176246c 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposableSystem.cs +++ b/Content.Server/Disposal/Unit/DisposableSystem.cs @@ -1,9 +1,8 @@ using Content.Server.Atmos.EntitySystems; using Content.Server.Disposal.Tube; -using Content.Server.Disposal.Tube.Components; -using Content.Server.Disposal.Unit.Components; using Content.Shared.Body.Components; using Content.Shared.Damage; +using Content.Shared.Disposal.Components; using Content.Shared.Item; using Content.Shared.Throwing; using Robust.Shared.Audio.Systems; @@ -12,7 +11,7 @@ using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; -namespace Content.Server.Disposal.Unit.EntitySystems +namespace Content.Server.Disposal.Unit { public sealed class DisposableSystem : EntitySystem { @@ -259,7 +258,7 @@ namespace Content.Server.Disposal.Unit.EntitySystems var newPosition = destination * progress; // This is some supreme shit code. - _xformSystem.SetCoordinates(uid, origin.Offset(newPosition).WithEntityId(currentTube)); + _xformSystem.SetCoordinates(uid, _xformSystem.WithEntityId(origin.Offset(newPosition), currentTube)); continue; } diff --git a/Content.Server/Disposal/Unit/Components/DisposalHolderComponent.cs b/Content.Server/Disposal/Unit/DisposalHolderComponent.cs similarity index 94% rename from Content.Server/Disposal/Unit/Components/DisposalHolderComponent.cs rename to Content.Server/Disposal/Unit/DisposalHolderComponent.cs index 690b33968b..be90ae9f9c 100644 --- a/Content.Server/Disposal/Unit/Components/DisposalHolderComponent.cs +++ b/Content.Server/Disposal/Unit/DisposalHolderComponent.cs @@ -1,9 +1,8 @@ using Content.Server.Atmos; -using Content.Server.Disposal.Tube.Components; using Content.Shared.Atmos; using Robust.Shared.Containers; -namespace Content.Server.Disposal.Unit.Components +namespace Content.Server.Disposal.Unit { [RegisterComponent] public sealed partial class DisposalHolderComponent : Component, IGasMixtureHolder diff --git a/Content.Server/Disposal/Unit/DisposalUnitSystem.cs b/Content.Server/Disposal/Unit/DisposalUnitSystem.cs new file mode 100644 index 0000000000..4c6436c6c9 --- /dev/null +++ b/Content.Server/Disposal/Unit/DisposalUnitSystem.cs @@ -0,0 +1,44 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; +using Content.Shared.Destructible; +using Content.Shared.Disposal.Components; +using Content.Shared.Disposal.Unit; +using Content.Shared.Explosion; + +namespace Content.Server.Disposal.Unit; + +public sealed class DisposalUnitSystem : SharedDisposalUnitSystem +{ + [Dependency] private readonly AtmosphereSystem _atmosSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnDestruction); + SubscribeLocalEvent(OnExploded); + } + + protected override void HandleAir(EntityUid uid, DisposalUnitComponent component, TransformComponent xform) + { + var air = component.Air; + var indices = TransformSystem.GetGridTilePositionOrDefault((uid, xform)); + + if (_atmosSystem.GetTileMixture(xform.GridUid, xform.MapUid, indices, true) is { Temperature: > 0f } environment) + { + var transferMoles = 0.1f * (0.25f * Atmospherics.OneAtmosphere * 1.01f - air.Pressure) * air.Volume / (environment.Temperature * Atmospherics.R); + + component.Air = environment.Remove(transferMoles); + } + } + + private void OnDestruction(EntityUid uid, DisposalUnitComponent component, DestructionEventArgs args) + { + TryEjectContents(uid, component); + } + + private void OnExploded(Entity ent, ref BeforeExplodeEvent args) + { + args.Contents.AddRange(ent.Comp.Container.ContainedEntities); + } +} diff --git a/Content.Server/Disposal/Unit/EntitySystems/DoInsertDisposalUnitEvent.cs b/Content.Server/Disposal/Unit/DoInsertDisposalUnitEvent.cs similarity index 65% rename from Content.Server/Disposal/Unit/EntitySystems/DoInsertDisposalUnitEvent.cs rename to Content.Server/Disposal/Unit/DoInsertDisposalUnitEvent.cs index 6fdfce61da..3f3fee9785 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DoInsertDisposalUnitEvent.cs +++ b/Content.Server/Disposal/Unit/DoInsertDisposalUnitEvent.cs @@ -1,4 +1,4 @@ -namespace Content.Server.Disposal.Unit.EntitySystems +namespace Content.Server.Disposal.Unit { public record DoInsertDisposalUnitEvent(EntityUid? User, EntityUid ToInsert, EntityUid Unit); } diff --git a/Content.Server/Doors/Systems/FirelockSystem.cs b/Content.Server/Doors/Systems/FirelockSystem.cs index 375e5c745e..5fd0bf7e97 100644 --- a/Content.Server/Doors/Systems/FirelockSystem.cs +++ b/Content.Server/Doors/Systems/FirelockSystem.cs @@ -73,6 +73,8 @@ namespace Content.Server.Doors.Systems _appearance.SetData(uid, DoorVisuals.ClosedLights, fire || pressure, appearance); firelock.Temperature = fire; firelock.Pressure = pressure; + _appearance.SetData(uid, FirelockVisuals.PressureWarning, pressure, appearance); + _appearance.SetData(uid, FirelockVisuals.TemperatureWarning, fire, appearance); Dirty(uid, firelock); if (pointLightQuery.TryComp(uid, out var pointLight)) diff --git a/Content.Server/Doors/Systems/TurnstileSystem.cs b/Content.Server/Doors/Systems/TurnstileSystem.cs new file mode 100644 index 0000000000..687a97095f --- /dev/null +++ b/Content.Server/Doors/Systems/TurnstileSystem.cs @@ -0,0 +1,6 @@ +using Content.Shared.Doors.Systems; + +namespace Content.Server.Doors.Systems; + +/// +public sealed class TurnstileSystem : SharedTurnstileSystem; diff --git a/Content.Server/Electrocution/ElectrocutionSystem.cs b/Content.Server/Electrocution/ElectrocutionSystem.cs index c7adb311d3..0059a8b427 100644 --- a/Content.Server/Electrocution/ElectrocutionSystem.cs +++ b/Content.Server/Electrocution/ElectrocutionSystem.cs @@ -188,7 +188,7 @@ public sealed class ElectrocutionSystem : SharedElectrocutionSystem if (_meleeWeapon.GetDamage(args.Used, args.User).Empty) return; - DoCommonElectrocution(args.User, uid, component.UnarmedHitShock, component.UnarmedHitStun, false); + TryDoElectrocution(args.User, uid, component.UnarmedHitShock, component.UnarmedHitStun, false); } private void OnElectrifiedInteractUsing(EntityUid uid, ElectrifiedComponent electrified, InteractUsingEvent args) diff --git a/Content.Server/Emp/EmpSystem.cs b/Content.Server/Emp/EmpSystem.cs index d8eab0c5d1..4b5143aa40 100644 --- a/Content.Server/Emp/EmpSystem.cs +++ b/Content.Server/Emp/EmpSystem.cs @@ -44,6 +44,22 @@ public sealed class EmpSystem : SharedEmpSystem Spawn(EmpPulseEffectPrototype, coordinates); } + /// + /// Triggers an EMP pulse at the given location, by first raising an , then a raising on all entities in range. + /// + /// The location to trigger the EMP pulse at. + /// The range of the EMP pulse. + /// The amount of energy consumed by the EMP pulse. + /// The duration of the EMP effects. + public void EmpPulse(EntityCoordinates coordinates, float range, float energyConsumption, float duration) + { + foreach (var uid in _lookup.GetEntitiesInRange(coordinates, range)) + { + TryEmpEffects(uid, energyConsumption, duration); + } + Spawn(EmpPulseEffectPrototype, coordinates); + } + /// /// Attempts to apply the effects of an EMP pulse onto an entity by first raising an , followed by raising a on it. /// diff --git a/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs b/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs index 407f877515..2e4cbee10c 100644 --- a/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs +++ b/Content.Server/Engineering/EntitySystems/SpawnAfterInteractSystem.cs @@ -17,6 +17,7 @@ namespace Content.Server.Engineering.EntitySystems [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; [Dependency] private readonly StackSystem _stackSystem = default!; [Dependency] private readonly TurfSystem _turfSystem = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; public override void Initialize() { @@ -31,7 +32,7 @@ namespace Content.Server.Engineering.EntitySystems return; if (string.IsNullOrEmpty(component.Prototype)) return; - if (!TryComp(args.ClickLocation.GetGridUid(EntityManager), out var grid)) + if (!TryComp(_transform.GetGrid(args.ClickLocation), out var grid)) return; if (!grid.TryGetTileRef(args.ClickLocation, out var tileRef)) return; diff --git a/Content.Server/EntityEffects/Effects/ActivateArtifact.cs b/Content.Server/EntityEffects/Effects/ActivateArtifact.cs deleted file mode 100644 index 8540478362..0000000000 --- a/Content.Server/EntityEffects/Effects/ActivateArtifact.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts; -using Content.Shared.Chemistry.Reagent; -using Robust.Shared.Prototypes; -using Content.Shared.EntityEffects; - -namespace Content.Server.EntityEffects.Effects; - -public sealed partial class ActivateArtifact : EntityEffect -{ - public override void Effect(EntityEffectBaseArgs args) - { - var artifact = args.EntityManager.EntitySysManager.GetEntitySystem(); - artifact.TryActivateArtifact(args.TargetEntity, logMissing: false); - } - - protected override string? ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) => - Loc.GetString("reagent-effect-guidebook-activate-artifact", ("chance", Probability)); -} diff --git a/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs b/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs index 858da2b360..ce06705b2b 100644 --- a/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs +++ b/Content.Server/EntityEffects/Effects/AreaReactionEffect.cs @@ -85,7 +85,7 @@ public sealed partial class AreaReactionEffect : EntityEffect smoke.StartSmoke(ent, splitSolution, _duration, spreadAmount); var audio = reagentArgs.EntityManager.System(); - audio.PlayPvs(_sound, reagentArgs.TargetEntity, AudioHelpers.WithVariation(0.125f)); + audio.PlayPvs(_sound, reagentArgs.TargetEntity, AudioParams.Default.WithVariation(0.25f)); return; } diff --git a/Content.Server/EntityEffects/Effects/ArtifactUnlock.cs b/Content.Server/EntityEffects/Effects/ArtifactUnlock.cs new file mode 100644 index 0000000000..21454ff7a7 --- /dev/null +++ b/Content.Server/EntityEffects/Effects/ArtifactUnlock.cs @@ -0,0 +1,47 @@ +using Content.Server.Popups; +using Content.Server.Xenoarchaeology.Artifact; +using Content.Shared.EntityEffects; +using Content.Shared.Popups; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using JetBrains.Annotations; +using Robust.Shared.Prototypes; + +namespace Content.Server.EntityEffects.Effects; + +/// +/// Sets an artifact into the unlocking state and marks the artifexium effect as true. +/// This is a very specific behavior intended for a specific chem. +/// +[UsedImplicitly] +public sealed partial class ArtifactUnlock : EntityEffect +{ + public override void Effect(EntityEffectBaseArgs args) + { + var entMan = args.EntityManager; + var xenoArtifactSys = entMan.System(); + var popupSys = entMan.System(); + + if (!entMan.TryGetComponent(args.TargetEntity, out var xenoArtifact)) + return; + + if (!entMan.TryGetComponent(args.TargetEntity, out var unlocking)) + { + xenoArtifactSys.TriggerXenoArtifact((args.TargetEntity, xenoArtifact), null, force: true); + unlocking = entMan.EnsureComponent(args.TargetEntity); + } + else if (!unlocking.ArtifexiumApplied) + { + popupSys.PopupEntity(Loc.GetString("artifact-activation-artifexium"), args.TargetEntity, PopupType.Medium); + } + + if (unlocking.ArtifexiumApplied) + return; + + xenoArtifactSys.SetArtifexiumApplied((args.TargetEntity, unlocking), true); + } + + protected override string ReagentEffectGuidebookText(IPrototypeManager prototype, IEntitySystemManager entSys) + { + return Loc.GetString("reagent-effect-guidebook-artifact-unlock", ("chance", Probability)); + } +} diff --git a/Content.Server/EntityEffects/Effects/ExtinguishReaction.cs b/Content.Server/EntityEffects/Effects/ExtinguishReaction.cs index 6d7e7c2fcd..d36ac9a576 100644 --- a/Content.Server/EntityEffects/Effects/ExtinguishReaction.cs +++ b/Content.Server/EntityEffects/Effects/ExtinguishReaction.cs @@ -1,5 +1,4 @@ -using Content.Server.Atmos.Components; -using Content.Server.Atmos.EntitySystems; +using Content.Shared.Atmos; using Content.Shared.EntityEffects; using JetBrains.Annotations; using Robust.Shared.Prototypes; @@ -20,17 +19,17 @@ namespace Content.Server.EntityEffects.Effects public override void Effect(EntityEffectBaseArgs args) { - if (!args.EntityManager.TryGetComponent(args.TargetEntity, out FlammableComponent? flammable)) return; + var ev = new ExtinguishEvent + { + FireStacksAdjustment = FireStacksAdjustment, + }; - var flammableSystem = args.EntityManager.System(); - flammableSystem.Extinguish(args.TargetEntity, flammable); if (args is EntityEffectReagentArgs reagentArgs) { - flammableSystem.AdjustFireStacks(reagentArgs.TargetEntity, FireStacksAdjustment * (float) reagentArgs.Quantity, flammable); - } else - { - flammableSystem.AdjustFireStacks(args.TargetEntity, FireStacksAdjustment, flammable); + ev.FireStacksAdjustment *= (float)reagentArgs.Quantity; } + + args.EntityManager.EventBus.RaiseLocalEvent(args.TargetEntity, ref ev); } } } diff --git a/Content.Server/EntityEffects/Effects/MovespeedModifier.cs b/Content.Server/EntityEffects/Effects/MovespeedModifier.cs index ac1f143e9f..74f4489c75 100644 --- a/Content.Server/EntityEffects/Effects/MovespeedModifier.cs +++ b/Content.Server/EntityEffects/Effects/MovespeedModifier.cs @@ -61,18 +61,19 @@ public sealed partial class MovespeedModifier : EntityEffect statusLifetime *= reagentArgs.Scale.Float(); } - IncreaseTimer(status, statusLifetime); + IncreaseTimer(status, statusLifetime, args.EntityManager, args.TargetEntity); if (modified) args.EntityManager.System().RefreshMovementSpeedModifiers(args.TargetEntity); } - public void IncreaseTimer(MovespeedModifierMetabolismComponent status, float time) + private void IncreaseTimer(MovespeedModifierMetabolismComponent status, float time, IEntityManager entityManager, EntityUid uid) { var gameTiming = IoCManager.Resolve(); var offsetTime = Math.Max(status.ModifierTimer.TotalSeconds, gameTiming.CurTime.TotalSeconds); status.ModifierTimer = TimeSpan.FromSeconds(offsetTime + time); - status.Dirty(); + + entityManager.Dirty(uid, status); } } diff --git a/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantCryoxadone.cs b/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantCryoxadone.cs index 7fe4b7a170..8a143ea5d5 100644 --- a/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantCryoxadone.cs +++ b/Content.Server/EntityEffects/Effects/PlantMetabolism/PlantCryoxadone.cs @@ -24,6 +24,7 @@ public sealed partial class PlantCryoxadone : EntityEffect else deviation = (int) (seed.Maturation / seed.GrowthStages); plantHolderComp.Age -= deviation; + plantHolderComp.LastProduce = plantHolderComp.Age; plantHolderComp.SkipAging++; plantHolderComp.ForceUpdate = true; } diff --git a/Content.Server/Entry/IgnoredComponents.cs b/Content.Server/Entry/IgnoredComponents.cs index 5f18c5472a..c3cde76370 100644 --- a/Content.Server/Entry/IgnoredComponents.cs +++ b/Content.Server/Entry/IgnoredComponents.cs @@ -5,7 +5,6 @@ namespace Content.Server.Entry { public static string[] List => new[] { "CP14WaveShader", // CP14 Wave shader - "CP14WorldSprite", // CP14 World Sprite "ConstructionGhost", "IconSmooth", "InteractionOutline", diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs index 6fa553bc8b..adc2e14f69 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Airtight.cs @@ -69,7 +69,7 @@ public sealed partial class ExplosionSystem query ??= EntityManager.GetEntityQuery(); var damageQuery = EntityManager.GetEntityQuery(); var destructibleQuery = EntityManager.GetEntityQuery(); - var anchoredEnumerator = grid.GetAnchoredEntitiesEnumerator(tile); + var anchoredEnumerator = _mapSystem.GetAnchoredEntitiesEnumerator(gridId, grid, tile); while (anchoredEnumerator.MoveNext(out var uid)) { @@ -105,7 +105,7 @@ public sealed partial class ExplosionSystem if (!TryComp(transform.GridUid, out var grid)) return; - UpdateAirtightMap(transform.GridUid.Value, grid, grid.CoordinatesToTile(transform.Coordinates)); + UpdateAirtightMap(transform.GridUid.Value, grid, _mapSystem.CoordinatesToTile(transform.GridUid.Value, grid, transform.Coordinates)); } /// diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs index 3be64e1776..3b63750ff6 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.GridMap.cs @@ -258,7 +258,7 @@ public sealed partial class ExplosionSystem { var neighbourIndex = tileRef.GridIndices + NeighbourVectors[i]; - if (grid.TryGetTileRef(neighbourIndex, out var neighbourTile) && !neighbourTile.Tile.IsEmpty) + if (_mapSystem.TryGetTileRef(ev.Entity, grid, neighbourIndex, out var neighbourTile) && !neighbourTile.Tile.IsEmpty) { var oppositeDirection = (NeighborFlag) (1 << ((i + 4) % 8)); edges[neighbourIndex] = edges.GetValueOrDefault(neighbourIndex) | oppositeDirection; diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs index 8ea2d5dfd9..3f2a0ea2da 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs @@ -67,13 +67,10 @@ public sealed partial class ExplosionSystem private List _anchored = new(); - private void OnMapChanged(MapChangedEvent ev) + private void OnMapRemoved(MapRemovedEvent ev) { // If a map was deleted, check the explosion currently being processed belongs to that map. - if (ev.Created) - return; - - if (_activeExplosion?.Epicenter.MapId != ev.Map) + if (_activeExplosion?.Epicenter.MapId != ev.MapId) return; QueueDel(_activeExplosion.VisualEnt); @@ -718,7 +715,7 @@ sealed class Explosion if (spaceData != null) { - var mapUid = mapMan.GetMapEntityId(epicenter.MapId); + var mapUid = mapSystem.GetMap(epicenter.MapId); _explosionData.Add(new() { diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.TileFill.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.TileFill.cs index 43cc45beac..05608cda40 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.TileFill.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.TileFill.cs @@ -1,7 +1,6 @@ using System.Linq; using System.Numerics; using Content.Shared.Administration; -using Content.Shared.Explosion; using Content.Shared.Explosion.Components; using Robust.Shared.Map; using Robust.Shared.Map.Components; @@ -15,6 +14,11 @@ namespace Content.Server.Explosion.EntitySystems; public sealed partial class ExplosionSystem { + /// + /// A list of grids to be reused by to avoid allocating twice for each call. + /// + private List> _grids = []; + /// /// This is the main explosion generating function. /// @@ -48,7 +52,7 @@ public sealed partial class ExplosionSystem // get the epicenter tile indices if (_mapManager.TryFindGridAt(epicenter, out var gridUid, out var candidateGrid) && - candidateGrid.TryGetTileRef(candidateGrid.WorldToTile(epicenter.Position), out var tileRef) && + _mapSystem.TryGetTileRef(gridUid, candidateGrid, _mapSystem.WorldToTile(gridUid, candidateGrid, epicenter.Position), out var tileRef) && !tileRef.Tile.IsEmpty) { epicentreGrid = gridUid; @@ -57,14 +61,15 @@ public sealed partial class ExplosionSystem else if (referenceGrid != null) { // reference grid defines coordinate system that the explosion in space will use - initialTile = Comp(referenceGrid.Value).WorldToTile(epicenter.Position); + var gridComp = Comp(referenceGrid.Value); + initialTile = _mapSystem.WorldToTile(referenceGrid.Value, gridComp, epicenter.Position); } else { // this is a space-based explosion that (should) not touch any grids. initialTile = new Vector2i( - (int) Math.Floor(epicenter.Position.X / DefaultTileSize), - (int) Math.Floor(epicenter.Position.Y / DefaultTileSize)); + (int)Math.Floor(epicenter.Position.X / DefaultTileSize), + (int)Math.Floor(epicenter.Position.Y / DefaultTileSize)); } // Main data for the exploding tiles in space and on various grids @@ -88,7 +93,7 @@ public sealed partial class ExplosionSystem var spaceAngle = Angle.Zero; if (referenceGrid != null) { - var xform = Transform(Comp(referenceGrid.Value).Owner); + var xform = Transform(referenceGrid.Value); (_, spaceAngle, spaceMatrix) = _transformSystem.GetWorldPositionRotationMatrix(xform); } @@ -130,7 +135,7 @@ public sealed partial class ExplosionSystem // These variables keep track of the total intensity we have distributed List tilesInIteration = new() { 1 }; - List iterationIntensity = new() {stepSize}; + List iterationIntensity = new() { stepSize }; var totalTiles = 1; var remainingIntensity = totalIntensity - stepSize; @@ -276,7 +281,9 @@ public sealed partial class ExplosionSystem // diameter x diameter sized box, use a smaller box with radius sized sides: var box = Box2.CenteredAround(epicenter.Position, new Vector2(radius, radius)); - foreach (var grid in _mapManager.FindGridsIntersecting(epicenter.MapId, box)) + _grids.Clear(); + _mapManager.FindGridsIntersecting(epicenter.MapId, box, ref _grids); + foreach (var grid in _grids) { if (TryComp(grid.Owner, out PhysicsComponent? physics) && physics.Mass > mass) { @@ -296,14 +303,15 @@ public sealed partial class ExplosionSystem radius *= 4; box = Box2.CenteredAround(epicenter.Position, new Vector2(radius, radius)); - var mapGrids = _mapManager.FindGridsIntersecting(epicenter.MapId, box).ToList(); - var grids = mapGrids.Select(x => x.Owner).ToList(); + _grids.Clear(); + _mapManager.FindGridsIntersecting(epicenter.MapId, box, ref _grids); + var grids = _grids.Select(x => x.Owner).ToList(); if (referenceGrid != null) return (grids, referenceGrid, radius); // We still don't have are reference grid. So lets also look in the enlarged region - foreach (var grid in mapGrids) + foreach (var grid in _grids) { if (TryComp(grid.Owner, out PhysicsComponent? physics) && physics.Mass > mass) { diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Visuals.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Visuals.cs index 57323e4de7..eb789eb0c6 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Visuals.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Visuals.cs @@ -57,7 +57,7 @@ public sealed partial class ExplosionSystem // Light, sound & visuals may extend well beyond normal PVS range. In principle, this should probably still be // restricted to something like the same map, but whatever. - _pvsSys.AddGlobalOverride(GetNetEntity(explosionEntity)); + _pvsSys.AddGlobalOverride(explosionEntity); var appearance = AddComp(explosionEntity); _appearance.SetData(explosionEntity, ExplosionAppearanceData.Progress, 1, appearance); diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs index 6bf237f46f..8f25b43747 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.cs @@ -2,7 +2,6 @@ using System.Linq; using System.Numerics; using Content.Server.Administration.Logs; using Content.Server.Atmos.Components; -using Content.Server.Chat.Managers; using Content.Server.NodeContainer.EntitySystems; using Content.Server.NPC.Pathfinding; using Content.Shared.Camera; @@ -46,7 +45,6 @@ public sealed partial class ExplosionSystem : SharedExplosionSystem [Dependency] private readonly PathfindingSystem _pathfindingSystem = default!; [Dependency] private readonly SharedCameraRecoilSystem _recoilSystem = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; - [Dependency] private readonly IChatManager _chat = default!; [Dependency] private readonly ThrowingSystem _throwingSystem = default!; [Dependency] private readonly PvsOverrideSystem _pvsSys = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; @@ -94,7 +92,7 @@ public sealed partial class ExplosionSystem : SharedExplosionSystem SubscribeLocalEvent(OnReset); // Handled by ExplosionSystem.Processing.cs - SubscribeLocalEvent(OnMapChanged); + SubscribeLocalEvent(OnMapRemoved); // handled in ExplosionSystemAirtight.cs SubscribeLocalEvent(OnAirtightDamaged); @@ -155,12 +153,12 @@ public sealed partial class ExplosionSystem : SharedExplosionSystem // Override the explosion intensity if optional arguments were provided. if (radius != null) - totalIntensity ??= RadiusToIntensity((float) radius, explosive.IntensitySlope, explosive.MaxIntensity); + totalIntensity ??= RadiusToIntensity((float)radius, explosive.IntensitySlope, explosive.MaxIntensity); totalIntensity ??= explosive.TotalIntensity; QueueExplosion(uid, explosive.ExplosionType, - (float) totalIntensity, + (float)totalIntensity, explosive.IntensitySlope, explosive.MaxIntensity, explosive.TileBreakScale, @@ -332,7 +330,7 @@ public sealed partial class ExplosionSystem : SharedExplosionSystem private Explosion? SpawnExplosion(QueuedExplosion queued) { var pos = queued.Epicenter; - if (!_mapManager.MapExists(pos.MapId)) + if (!_mapSystem.MapExists(pos.MapId)) return null; var results = GetExplosionTiles(pos, queued.Proto.ID, queued.TotalIntensity, queued.Slope, queued.MaxTileIntensity); diff --git a/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs b/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs index 9d11a9dad7..a96508e37c 100644 --- a/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs +++ b/Content.Server/Explosion/EntitySystems/TriggerSystem.Voice.cs @@ -48,13 +48,15 @@ namespace Content.Server.Explosion.EntitySystems return; } - if (!string.IsNullOrWhiteSpace(component.KeyPhrase) && message.Contains(component.KeyPhrase, StringComparison.InvariantCultureIgnoreCase)) + if (!string.IsNullOrWhiteSpace(component.KeyPhrase) && message.IndexOf(component.KeyPhrase, StringComparison.InvariantCultureIgnoreCase) is var index and >= 0 ) { _adminLogger.Add(LogType.Trigger, LogImpact.Medium, $"A voice-trigger on {ToPrettyString(ent):entity} was triggered by {ToPrettyString(args.Source):speaker} speaking the key-phrase {component.KeyPhrase}."); Trigger(ent, args.Source); - var voice = new VoiceTriggeredEvent(args.Source, message); + var messageWithoutPhrase = message.Remove(index, component.KeyPhrase.Length).Trim(); + + var voice = new VoiceTriggeredEvent(args.Source, message, messageWithoutPhrase); RaiseLocalEvent(ent, ref voice); } } @@ -147,5 +149,6 @@ namespace Content.Server.Explosion.EntitySystems /// /// The EntityUid of the entity sending the message /// The contents of the message +/// The message without the phrase that triggered it. [ByRefEvent] -public readonly record struct VoiceTriggeredEvent(EntityUid Source, string? Message); +public readonly record struct VoiceTriggeredEvent(EntityUid Source, string Message, string MessageWithoutPhrase); diff --git a/Content.Server/Fax/AdminUI/AdminFaxEui.cs b/Content.Server/Fax/AdminUI/AdminFaxEui.cs index fe6b03fab7..2921bd5ef6 100644 --- a/Content.Server/Fax/AdminUI/AdminFaxEui.cs +++ b/Content.Server/Fax/AdminUI/AdminFaxEui.cs @@ -7,6 +7,7 @@ using Content.Shared.Fax; using Content.Shared.Follower; using Content.Shared.Ghost; using Content.Shared.Paper; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Fax.AdminUI; diff --git a/Content.Server/Fax/FaxSystem.cs b/Content.Server/Fax/FaxSystem.cs index 180689f892..79710e3f97 100644 --- a/Content.Server/Fax/FaxSystem.cs +++ b/Content.Server/Fax/FaxSystem.cs @@ -1,10 +1,7 @@ using Content.Server.Administration; using Content.Server.Administration.Managers; using Content.Server.Chat.Managers; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; -using Content.Server.Labels; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Tools; @@ -13,13 +10,14 @@ using Content.Shared.Administration.Logs; using Content.Shared.Containers.ItemSlots; using Content.Shared.Database; using Content.Shared.DeviceNetwork; -using Content.Shared.Emag.Components; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Emag.Systems; using Content.Shared.Fax; using Content.Shared.Fax.Systems; using Content.Shared.Fax.Components; using Content.Shared.Interaction; using Content.Shared.Labels.Components; +using Content.Shared.Labels.EntitySystems; using Content.Shared.Mobs.Components; using Content.Shared.Paper; using Robust.Server.GameObjects; @@ -27,9 +25,9 @@ using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Player; -using Robust.Shared.Prototypes; using Content.Shared.NameModifier.Components; using Content.Shared.Power; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Fax; diff --git a/Content.Server/Flash/FlashSystem.cs b/Content.Server/Flash/FlashSystem.cs index 60c09efaea..f904678821 100644 --- a/Content.Server/Flash/FlashSystem.cs +++ b/Content.Server/Flash/FlashSystem.cs @@ -29,7 +29,7 @@ namespace Content.Server.Flash { [Dependency] private readonly AppearanceSystem _appearance = default!; [Dependency] private readonly AudioSystem _audio = default!; - [Dependency] private readonly SharedChargesSystem _charges = default!; + [Dependency] private readonly SharedChargesSystem _sharedCharges = default!; [Dependency] private readonly EntityLookupSystem _entityLookup = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly ExamineSystemShared _examine = default!; @@ -86,15 +86,15 @@ namespace Content.Server.Flash return false; TryComp(uid, out var charges); - if (_charges.IsEmpty(uid, charges)) + if (_sharedCharges.IsEmpty((uid, charges))) return false; - _charges.UseCharge(uid, charges); + _sharedCharges.TryUseCharge((uid, charges)); _audio.PlayPvs(comp.Sound, uid); comp.Flashing = true; _appearance.SetData(uid, FlashVisuals.Flashing, true); - if (_charges.IsEmpty(uid, charges)) + if (_sharedCharges.IsEmpty((uid, charges))) { _appearance.SetData(uid, FlashVisuals.Burnt, true); _tag.AddTag(uid, TrashTag); diff --git a/Content.Server/Fluids/Components/SprayComponent.cs b/Content.Server/Fluids/Components/SprayComponent.cs index e5362eb4e9..128fdecfa7 100644 --- a/Content.Server/Fluids/Components/SprayComponent.cs +++ b/Content.Server/Fluids/Components/SprayComponent.cs @@ -32,10 +32,10 @@ public sealed partial class SprayComponent : Component /// /// How much the player is pushed back for each spray. /// - [ViewVariables(VVAccess.ReadWrite), DataField] - public float PushbackAmount = 2f; + [DataField] + public float PushbackAmount = 5f; - [ViewVariables(VVAccess.ReadWrite), DataField(required: true)] + [DataField(required: true)] [Access(typeof(SpraySystem), Other = AccessPermissions.ReadExecute)] // FIXME Friends public SoundSpecifier SpraySound { get; private set; } = default!; } diff --git a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs b/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs index 56e039a700..cb3cae10af 100644 --- a/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs +++ b/Content.Server/Fluids/EntitySystems/AbsorbentSystem.cs @@ -57,14 +57,14 @@ public sealed class AbsorbentSystem : SharedAbsorbentSystem var oldProgress = component.Progress.ShallowClone(); component.Progress.Clear(); - var water = solution.GetTotalPrototypeQuantity(PuddleSystem.EvaporationReagents); - if (water > FixedPoint2.Zero) + var mopReagent = solution.GetTotalPrototypeQuantity(_puddleSystem.GetAbsorbentReagents(solution)); + if (mopReagent > FixedPoint2.Zero) { - component.Progress[solution.GetColorWithOnly(_prototype, PuddleSystem.EvaporationReagents)] = water.Float(); + component.Progress[solution.GetColorWithOnly(_prototype, _puddleSystem.GetAbsorbentReagents(solution))] = mopReagent.Float(); } - var otherColor = solution.GetColorWithout(_prototype, PuddleSystem.EvaporationReagents); - var other = (solution.Volume - water).Float(); + var otherColor = solution.GetColorWithout(_prototype, _puddleSystem.GetAbsorbentReagents(solution)); + var other = (solution.Volume - mopReagent).Float(); if (other > 0f) { @@ -180,7 +180,7 @@ public sealed class AbsorbentSystem : SharedAbsorbentSystem } // Prioritize transferring non-evaporatives if absorbent has any - var contaminants = _solutionContainerSystem.SplitSolutionWithout(absorbentSoln, transferAmount, PuddleSystem.EvaporationReagents); + var contaminants = _solutionContainerSystem.SplitSolutionWithout(absorbentSoln, transferAmount, _puddleSystem.GetAbsorbentReagents(absorbentSoln.Comp.Solution)); if (contaminants.Volume > 0) { _solutionContainerSystem.TryAddSolution(refillableSoln, contaminants); @@ -205,7 +205,7 @@ public sealed class AbsorbentSystem : SharedAbsorbentSystem Entity absorbentSoln, Entity refillableSoln) { - var contaminantsFromAbsorbent = _solutionContainerSystem.SplitSolutionWithout(absorbentSoln, component.PickupAmount, PuddleSystem.EvaporationReagents); + var contaminantsFromAbsorbent = _solutionContainerSystem.SplitSolutionWithout(absorbentSoln, component.PickupAmount, _puddleSystem.GetAbsorbentReagents(absorbentSoln.Comp.Solution)); var absorbentSolution = absorbentSoln.Comp.Solution; if (contaminantsFromAbsorbent.Volume == FixedPoint2.Zero && absorbentSolution.AvailableVolume == FixedPoint2.Zero) @@ -222,7 +222,7 @@ public sealed class AbsorbentSystem : SharedAbsorbentSystem absorbentSolution.AvailableVolume; var refillableSolution = refillableSoln.Comp.Solution; - var waterFromRefillable = refillableSolution.SplitSolutionWithOnly(waterPulled, PuddleSystem.EvaporationReagents); + var waterFromRefillable = refillableSolution.SplitSolutionWithOnly(waterPulled, _puddleSystem.GetAbsorbentReagents(refillableSoln.Comp.Solution)); _solutionContainerSystem.UpdateChemicals(refillableSoln); if (waterFromRefillable.Volume == FixedPoint2.Zero && contaminantsFromAbsorbent.Volume == FixedPoint2.Zero) @@ -284,7 +284,7 @@ public sealed class AbsorbentSystem : SharedAbsorbentSystem // Check if we have any evaporative reagents on our absorber to transfer var absorberSolution = absorberSoln.Comp.Solution; - var available = absorberSolution.GetTotalPrototypeQuantity(PuddleSystem.EvaporationReagents); + var available = absorberSolution.GetTotalPrototypeQuantity(_puddleSystem.GetAbsorbentReagents(absorberSolution)); // No material if (available == FixedPoint2.Zero) @@ -296,8 +296,8 @@ public sealed class AbsorbentSystem : SharedAbsorbentSystem var transferMax = absorber.PickupAmount; var transferAmount = available > transferMax ? transferMax : available; - var puddleSplit = puddleSolution.SplitSolutionWithout(transferAmount, PuddleSystem.EvaporationReagents); - var absorberSplit = absorberSolution.SplitSolutionWithOnly(puddleSplit.Volume, PuddleSystem.EvaporationReagents); + var puddleSplit = puddleSolution.SplitSolutionWithout(transferAmount, _puddleSystem.GetAbsorbentReagents(puddleSolution)); + var absorberSplit = absorberSolution.SplitSolutionWithOnly(puddleSplit.Volume, _puddleSystem.GetAbsorbentReagents(absorberSolution)); // Do tile reactions first var transform = Transform(target); diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.Evaporation.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.Evaporation.cs index 629b9cefe5..7d4b749746 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.Evaporation.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.Evaporation.cs @@ -1,5 +1,6 @@ using Content.Server.Weather; using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Reagent; using Content.Shared.FixedPoint; using Content.Shared.Fluids.Components; using Content.Shared.Maps; @@ -36,7 +37,7 @@ public sealed partial class PuddleSystem return; } - if (solution.GetTotalPrototypeQuantity(EvaporationReagents) > FixedPoint2.Zero) + if (solution.GetTotalPrototypeQuantity(GetEvaporatingReagents(solution)) > FixedPoint2.Zero) { var evaporation = AddComp(uid); evaporation.NextTick = _timing.CurTime + EvaporationCooldown; @@ -61,14 +62,19 @@ public sealed partial class PuddleSystem if (!_solutionContainerSystem.ResolveSolution(uid, puddle.SolutionName, ref puddle.Solution, out var puddleSolution)) continue; - var reagentTick = evaporation.EvaporationAmount * EvaporationCooldown.TotalSeconds; + foreach ((string evaporatingReagent, FixedPoint2 evaporatingSpeed) in GetEvaporationSpeeds(puddleSolution)) + { + var reagentTick = evaporation.EvaporationAmount * EvaporationCooldown.TotalSeconds * evaporatingSpeed; + puddleSolution.SplitSolutionWithOnly(reagentTick, evaporatingReagent); + } - //CP14 Force evaporation - if (!evaporation.CP14ForceEvaporation) - puddleSolution.SplitSolutionWithOnly(reagentTick, EvaporationReagents); - else + //CP14 force evaporation under sky + if (evaporation.CP14ForceEvaporation) + { + var reagentTick = evaporation.EvaporationAmount * EvaporationCooldown.TotalSeconds; puddleSolution.SplitSolution(reagentTick); - //CP14 end force evaporation + } + //CP14 force evaporation under sky end // Despawn if we're done if (puddleSolution.Volume == FixedPoint2.Zero) diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.Transfers.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.Transfers.cs index 04bbf55c58..e850f058a8 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.Transfers.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.Transfers.cs @@ -2,11 +2,14 @@ using Content.Shared.Chemistry.Components; using Content.Shared.DragDrop; using Content.Shared.FixedPoint; using Content.Shared.Fluids; +using Content.Shared.Nutrition.EntitySystems; namespace Content.Server.Fluids.EntitySystems; public sealed partial class PuddleSystem { + [Dependency] private readonly OpenableSystem _openable = default!; + private void InitializeTransfers() { SubscribeLocalEvent(OnRefillableDragged); @@ -14,6 +17,12 @@ public sealed partial class PuddleSystem private void OnRefillableDragged(Entity entity, ref DragDropDraggedEvent args) { + if (!_actionBlocker.CanComplexInteract(args.User)) + { + _popups.PopupEntity(Loc.GetString("mopping-system-no-hands"), args.User, args.User); + return; + } + if (!_solutionContainerSystem.TryGetSolution(entity.Owner, entity.Comp.Solution, out var soln, out var solution) || solution.Volume == FixedPoint2.Zero) { _popups.PopupEntity(Loc.GetString("mopping-system-empty", ("used", entity.Owner)), entity, args.User); @@ -26,6 +35,12 @@ public sealed partial class PuddleSystem if (!_solutionContainerSystem.TryGetDumpableSolution((args.Target, dump, null), out var dumpableSoln, out var dumpableSolution)) return; + if (!_solutionContainerSystem.TryGetDrainableSolution(entity.Owner, out _, out _)) + return; + + if (_openable.IsClosed(entity)) + return; + bool success = true; if (dump.Unlimited) { diff --git a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs index ddee169baf..4ec0f329f4 100644 --- a/Content.Server/Fluids/EntitySystems/PuddleSystem.cs +++ b/Content.Server/Fluids/EntitySystems/PuddleSystem.cs @@ -4,6 +4,7 @@ using Content.Server.Chemistry.TileReactions; using Content.Server.DoAfter; using Content.Server.Fluids.Components; using Content.Server.Spreader; +using Content.Shared.ActionBlocker; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Components.SolutionManager; @@ -40,6 +41,7 @@ namespace Content.Server.Fluids.EntitySystems; /// public sealed partial class PuddleSystem : SharedPuddleSystem { + [Dependency] private readonly ActionBlockerSystem _actionBlocker = default!; [Dependency] private readonly IAdminLogManager _adminLogger = default!; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly SharedMapSystem _map = default!; @@ -56,6 +58,7 @@ public sealed partial class PuddleSystem : SharedPuddleSystem [Dependency] private readonly StepTriggerSystem _stepTrigger = default!; [Dependency] private readonly SpeedModifierContactsSystem _speedModContacts = default!; [Dependency] private readonly TileFrictionController _tile = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; [ValidatePrototypeId] private const string Blood = "Blood"; @@ -68,8 +71,6 @@ public sealed partial class PuddleSystem : SharedPuddleSystem private static string[] _standoutReagents = [Blood, Slime, CopperBlood]; - public static readonly float PuddleVolume = 1000; - // Using local deletion queue instead of the standard queue so that we can easily "undelete" if a puddle // loses & then gains reagents in a single tick. private HashSet _deletionQueue = []; @@ -91,7 +92,6 @@ public sealed partial class PuddleSystem : SharedPuddleSystem // Shouldn't need re-anchoring. SubscribeLocalEvent(OnAnchorChanged); SubscribeLocalEvent(OnSolutionUpdate); - SubscribeLocalEvent(OnPuddleInit); SubscribeLocalEvent(OnPuddleSpread); SubscribeLocalEvent(OnPuddleSlip); @@ -324,11 +324,6 @@ public sealed partial class PuddleSystem : SharedPuddleSystem TickEvaporation(); } - private void OnPuddleInit(Entity entity, ref ComponentInit args) - { - _solutionContainerSystem.EnsureSolution(entity.Owner, entity.Comp.SolutionName, out _, FixedPoint2.New(PuddleVolume)); - } - private void OnSolutionUpdate(Entity entity, ref SolutionContainerChangedEvent args) { if (args.SolutionId != entity.Comp.SolutionName) @@ -341,7 +336,7 @@ public sealed partial class PuddleSystem : SharedPuddleSystem } _deletionQueue.Remove(entity); - UpdateSlip(entity, entity.Comp, args.Solution); + UpdateSlip((entity, entity.Comp), args.Solution); UpdateSlow(entity, args.Solution); //UpdateEvaporation(entity, args.Solution); //CP14 Force evaporation under sky via YML UpdateAppearance(entity, entity.Comp); @@ -386,62 +381,89 @@ public sealed partial class PuddleSystem : SharedPuddleSystem _appearance.SetData(uid, PuddleVisuals.SolutionColor, color, appearance); } - private void UpdateSlip(EntityUid entityUid, PuddleComponent component, Solution solution) + private void UpdateSlip(Entity entity, Solution solution) { - var isSlippery = false; - var isSuperSlippery = false; - // The base sprite is currently at 0.3 so we require at least 2nd tier to be slippery or else it's too hard to see. - var amountRequired = FixedPoint2.New(component.OverflowVolume.Float() * LowThreshold); - var slipperyAmount = FixedPoint2.Zero; + if (!TryComp(entity, out var comp)) + return; - // Utilize the defaults from their relevant systems... this sucks, and is a bandaid - var launchForwardsMultiplier = SlipperyComponent.DefaultLaunchForwardsMultiplier; - var paralyzeTime = SlipperyComponent.DefaultParalyzeTime; - var requiredSlipSpeed = StepTriggerComponent.DefaultRequiredTriggeredSpeed; + // This is the base amount of reagent needed before a puddle can be considered slippery. Is defined based on + // the sprite threshold for a puddle larger than 5 pixels. + var smallPuddleThreshold = FixedPoint2.New(entity.Comp.OverflowVolume.Float() * LowThreshold); + + // Stores how many units of slippery reagents a puddle has + var slipperyUnits = FixedPoint2.Zero; + // Stores how many units of super slippery reagents a puddle has + var superSlipperyUnits = FixedPoint2.Zero; + + // These three values will be averaged later and all start at zero so the calculations work + // A cumulative weighted amount of minimum speed to slip values + var puddleFriction = FixedPoint2.Zero; + // A cumulative weighted amount of minimum speed to slip values + var slipStepTrigger = FixedPoint2.Zero; + // A cumulative weighted amount of launch multipliers from slippery reagents + var launchMult = FixedPoint2.Zero; + // A cumulative weighted amount of stun times from slippery reagents + var stunTimer = TimeSpan.Zero; + + // Check if the puddle is big enough to slip in to avoid doing unnecessary logic + if (solution.Volume <= smallPuddleThreshold) + { + _stepTrigger.SetActive(entity, false, comp); + _tile.SetModifier(entity, TileFrictionController.DefaultFriction); + return; + } + + if (!TryComp(entity, out var slipComp)) + return; foreach (var (reagent, quantity) in solution.Contents) { var reagentProto = _prototypeManager.Index(reagent.Prototype); - if (!reagentProto.Slippery) + // Calculate the minimum speed needed to slip in the puddle. Average the overall slip thresholds for all reagents + var deltaSlipTrigger = reagentProto.SlipData?.RequiredSlipSpeed ?? entity.Comp.DefaultSlippery; + slipStepTrigger += quantity * deltaSlipTrigger; + + // Aggregate Friction based on quantity + puddleFriction += reagentProto.Friction * quantity; + + if (reagentProto.SlipData == null) continue; - slipperyAmount += quantity; - if (slipperyAmount <= amountRequired) - continue; - isSlippery = true; + slipperyUnits += quantity; + // Aggregate launch speed based on quantity + launchMult += reagentProto.SlipData.LaunchForwardsMultiplier * quantity; + // Aggregate stun times based on quantity + stunTimer += reagentProto.SlipData.ParalyzeTime * (float)quantity; - foreach (var tileReaction in reagentProto.TileReactions) - { - if (tileReaction is not SpillTileReaction spillTileReaction) - continue; - isSuperSlippery = spillTileReaction.SuperSlippery; - launchForwardsMultiplier = launchForwardsMultiplier < spillTileReaction.LaunchForwardsMultiplier ? spillTileReaction.LaunchForwardsMultiplier : launchForwardsMultiplier; - requiredSlipSpeed = requiredSlipSpeed > spillTileReaction.RequiredSlipSpeed ? spillTileReaction.RequiredSlipSpeed : requiredSlipSpeed; - paralyzeTime = paralyzeTime < spillTileReaction.ParalyzeTime ? spillTileReaction.ParalyzeTime : paralyzeTime; - } + if (reagentProto.SlipData.SuperSlippery) + superSlipperyUnits += quantity; } - if (isSlippery) + // Turn on the step trigger if it's slippery + _stepTrigger.SetActive(entity, slipperyUnits > smallPuddleThreshold, comp); + + // This is based of the total volume and not just the slippery volume because there is a default + // slippery for all reagents even if they aren't technically slippery. + slipComp.SlipData.RequiredSlipSpeed = (float)(slipStepTrigger / solution.Volume); + _stepTrigger.SetRequiredTriggerSpeed(entity, slipComp.SlipData.RequiredSlipSpeed); + + // Divide these both by only total amount of slippery reagents. + // A puddle with 10 units of lube vs a puddle with 10 of lube and 20 catchup should stun and launch forward the same amount. + if (slipperyUnits > 0) { - var comp = EnsureComp(entityUid); - _stepTrigger.SetActive(entityUid, true, comp); - var friction = EnsureComp(entityUid); - _tile.SetModifier(entityUid, TileFrictionController.DefaultFriction * 0.5f, friction); - - if (!TryComp(entityUid, out var slipperyComponent)) - return; - slipperyComponent.SuperSlippery = isSuperSlippery; - _stepTrigger.SetRequiredTriggerSpeed(entityUid, requiredSlipSpeed); - slipperyComponent.LaunchForwardsMultiplier = launchForwardsMultiplier; - slipperyComponent.ParalyzeTime = paralyzeTime; - - } - else if (TryComp(entityUid, out var comp)) - { - _stepTrigger.SetActive(entityUid, false, comp); - RemCompDeferred(entityUid); + slipComp.SlipData.LaunchForwardsMultiplier = (float)(launchMult/slipperyUnits); + slipComp.SlipData.ParalyzeTime = (stunTimer/(float)slipperyUnits); } + + // Only make it super slippery if there is enough super slippery units for its own puddle + slipComp.SlipData.SuperSlippery = superSlipperyUnits >= smallPuddleThreshold; + + // Lower tile friction based on how slippery it is, lets items slide across a puddle of lube + slipComp.SlipData.SlipFriction = (float)(puddleFriction/solution.Volume); + _tile.SetModifier(entity, TileFrictionController.DefaultFriction * slipComp.SlipData.SlipFriction); + + Dirty(entity, slipComp); } private void UpdateSlow(EntityUid uid, Solution solution) @@ -626,7 +648,8 @@ public sealed partial class PuddleSystem : SharedPuddleSystem return false; } - var gridUid = coordinates.GetGridUid(EntityManager); + var gridUid = _transform.GetGrid(coordinates); + if (!TryComp(gridUid, out var mapGrid)) { puddleUid = EntityUid.Invalid; diff --git a/Content.Server/Fluids/EntitySystems/SpraySystem.cs b/Content.Server/Fluids/EntitySystems/SpraySystem.cs index a1f195bf43..d8da0cde3d 100644 --- a/Content.Server/Fluids/EntitySystems/SpraySystem.cs +++ b/Content.Server/Fluids/EntitySystems/SpraySystem.cs @@ -3,14 +3,16 @@ using Content.Server.Chemistry.EntitySystems; using Content.Server.Fluids.Components; using Content.Server.Gravity; using Content.Server.Popups; +using Content.Shared.CCVar; +using Content.Shared.Chemistry.EntitySystems; using Content.Shared.FixedPoint; using Content.Shared.Fluids; using Content.Shared.Interaction; using Content.Shared.Timing; using Content.Shared.Vapor; -using Content.Shared.Chemistry.EntitySystems; using Robust.Server.GameObjects; using Robust.Shared.Audio.Systems; +using Robust.Shared.Configuration; using Robust.Shared.Physics.Components; using Robust.Shared.Prototypes; using System.Numerics; @@ -30,6 +32,9 @@ public sealed class SpraySystem : EntitySystem [Dependency] private readonly VaporSystem _vapor = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; + + private float _gridImpulseMultiplier; public override void Initialize() { @@ -37,6 +42,7 @@ public sealed class SpraySystem : EntitySystem SubscribeLocalEvent(OnAfterInteract); SubscribeLocalEvent(OnActivateInWorld); + Subs.CVar(_cfg, CCVars.GridImpulseMultiplier, UpdateGridMassMultiplier, true); } private void OnActivateInWorld(Entity entity, ref UserActivateInWorldEvent args) @@ -51,6 +57,11 @@ public sealed class SpraySystem : EntitySystem Spray(entity, args.User, targetMapPos); } + private void UpdateGridMassMultiplier(float value) + { + _gridImpulseMultiplier = value; + } + private void OnAfterInteract(Entity entity, ref AfterInteractEvent args) { if (args.Handled) @@ -156,7 +167,21 @@ public sealed class SpraySystem : EntitySystem if (TryComp(user, out var body)) { if (_gravity.IsWeightless(user, body)) - _physics.ApplyLinearImpulse(user, -impulseDirection.Normalized() * entity.Comp.PushbackAmount, body: body); + { + // push back the player + _physics.ApplyLinearImpulse(user, -impulseDirection * entity.Comp.PushbackAmount, body: body); + } + else + { + // push back the grid the player is standing on + var userTransform = Transform(user); + if (userTransform.GridUid == userTransform.ParentUid) + { + // apply both linear and angular momentum depending on the player position + // multiply by a cvar because grid mass is currently extremely small compared to all other masses + _physics.ApplyLinearImpulse(userTransform.GridUid.Value, -impulseDirection * _gridImpulseMultiplier * entity.Comp.PushbackAmount, userTransform.LocalPosition); + } + } } } diff --git a/Content.Server/Forensics/Systems/FingerprintMaskSystem.cs b/Content.Server/Forensics/Systems/FingerprintMaskSystem.cs new file mode 100644 index 0000000000..05008d1662 --- /dev/null +++ b/Content.Server/Forensics/Systems/FingerprintMaskSystem.cs @@ -0,0 +1,24 @@ +using Content.Shared.Forensics; +using Content.Shared.Forensics.Components; +using Content.Shared.Inventory; + +namespace Content.Server.Forensics; + +public sealed class FingerprintMaskSystem : EntitySystem +{ + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent>(OnTryAccessFingerprint); + } + + private void OnTryAccessFingerprint(EntityUid uid, FingerprintMaskComponent comp, ref InventoryRelayedEvent args) + { + if (args.Args.Cancelled) + return; + + args.Args.Blocker = uid; + args.Args.Cancel(); + } +} diff --git a/Content.Server/Forensics/Systems/ForensicPadSystem.cs b/Content.Server/Forensics/Systems/ForensicPadSystem.cs index 846d72a9fa..d675950faa 100644 --- a/Content.Server/Forensics/Systems/ForensicPadSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicPadSystem.cs @@ -1,4 +1,3 @@ -using Content.Server.Labels; using Content.Server.Popups; using Content.Shared.DoAfter; using Content.Shared.Examine; @@ -7,6 +6,7 @@ using Content.Shared.Forensics.Components; using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Inventory; +using Content.Shared.Labels.EntitySystems; namespace Content.Server.Forensics { @@ -18,6 +18,8 @@ namespace Content.Server.Forensics [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; [Dependency] private readonly InventorySystem _inventory = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly ForensicsSystem _forensics = default!; [Dependency] private readonly LabelSystem _label = default!; public override void Initialize() @@ -58,9 +60,14 @@ namespace Content.Server.Forensics return; } - if (_inventory.TryGetSlotEntity(args.Target.Value, "gloves", out var gloves)) + if (!_forensics.CanAccessFingerprint(args.Target.Value, out var blocker)) { - _popupSystem.PopupEntity(Loc.GetString("forensic-pad-gloves", ("target", Identity.Entity(args.Target.Value, EntityManager))), args.Target.Value, args.User); + + if (blocker is { } item) + _popupSystem.PopupEntity(Loc.GetString("forensic-pad-no-access-due", ("entity", Identity.Entity(item, EntityManager))), args.Target.Value, args.User); + else + _popupSystem.PopupEntity(Loc.GetString("forensic-pad-no-access"), args.Target.Value, args.User); + return; } diff --git a/Content.Server/Forensics/Systems/ForensicsSystem.cs b/Content.Server/Forensics/Systems/ForensicsSystem.cs index 66818855e5..2c75cc3b19 100644 --- a/Content.Server/Forensics/Systems/ForensicsSystem.cs +++ b/Content.Server/Forensics/Systems/ForensicsSystem.cs @@ -299,11 +299,9 @@ namespace Content.Server.Forensics { if (TryComp(gloves, out var fiber) && !string.IsNullOrEmpty(fiber.FiberMaterial)) component.Fibers.Add(string.IsNullOrEmpty(fiber.FiberColor) ? Loc.GetString("forensic-fibers", ("material", fiber.FiberMaterial)) : Loc.GetString("forensic-fibers-colored", ("color", fiber.FiberColor), ("material", fiber.FiberMaterial))); - - if (HasComp(gloves)) - return; } - if (TryComp(user, out var fingerprint)) + + if (TryComp(user, out var fingerprint) && CanAccessFingerprint(user, out _)) component.Fingerprints.Add(fingerprint.Fingerprint ?? ""); } @@ -364,6 +362,23 @@ namespace Content.Server.Forensics } } + /// + /// Checks if there's a way to access the fingerprint of the target entity. + /// + /// The entity with the fingerprint + /// The entity that blocked accessing the fingerprint + public bool CanAccessFingerprint(EntityUid target, out EntityUid? blocker) + { + var ev = new TryAccessFingerprintEvent(); + + RaiseLocalEvent(target, ev); + if (!ev.Cancelled && TryComp(target, out var inv)) + _inventory.RelayEvent((target, inv), ev); + + blocker = ev.Blocker; + return !ev.Cancelled; + } + #endregion } } diff --git a/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs b/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs index 7b1fc7a8df..cecc673944 100644 --- a/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs +++ b/Content.Server/GameTicking/Commands/SetGamePresetCommand.cs @@ -2,6 +2,7 @@ using Content.Server.Administration; using Content.Server.GameTicking.Presets; using Content.Shared.Administration; +using Linguini.Shared.Util; using Robust.Shared.Console; using Robust.Shared.Prototypes; @@ -19,9 +20,9 @@ namespace Content.Server.GameTicking.Commands public void Execute(IConsoleShell shell, string argStr, string[] args) { - if (args.Length != 1) + if (!args.Length.InRange(1, 2)) { - shell.WriteError(Loc.GetString("shell-wrong-arguments-number-need-specific", ("properAmount", 1), ("currentAmount", args.Length))); + shell.WriteError(Loc.GetString("shell-need-between-arguments", ("lower", 1), ("upper", 2), ("currentAmount", args.Length))); return; } @@ -33,8 +34,16 @@ namespace Content.Server.GameTicking.Commands return; } - ticker.SetGamePreset(preset); - shell.WriteLine(Loc.GetString("set-game-preset-preset-set", ("preset", preset.ID))); + var rounds = 1; + + if (args.Length == 2 && !int.TryParse(args[1], out rounds)) + { + shell.WriteError(Loc.GetString("set-game-preset-optional-argument-not-integer")); + return; + } + + ticker.SetGamePreset(preset, false, rounds); + shell.WriteLine(Loc.GetString("set-game-preset-preset-set-finite", ("preset", preset.ID), ("rounds", rounds.ToString()))); } public CompletionResult GetCompletion(IConsoleShell shell, string[] args) diff --git a/Content.Server/GameTicking/GameTicker.GamePreset.cs b/Content.Server/GameTicking/GameTicker.GamePreset.cs index d1a8b062c4..84a93da955 100644 --- a/Content.Server/GameTicking/GameTicker.GamePreset.cs +++ b/Content.Server/GameTicking/GameTicker.GamePreset.cs @@ -1,208 +1,234 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Threading.Tasks; using Content.Server.GameTicking.Presets; using Content.Server.Maps; using Content.Shared.CCVar; using JetBrains.Annotations; using Robust.Shared.Player; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Threading.Tasks; -namespace Content.Server.GameTicking +namespace Content.Server.GameTicking; + +public sealed partial class GameTicker { - public sealed partial class GameTicker + public const float PresetFailedCooldownIncrease = 30f; + + /// + /// The selected preset that will be used at the start of the next round. + /// + public GamePresetPrototype? Preset { get; private set; } + + /// + /// The preset that's currently active. + /// + public GamePresetPrototype? CurrentPreset { get; private set; } + + /// + /// Countdown to the preset being reset to the server default. + /// + public int? ResetCountdown; + + private bool StartPreset(ICommonSession[] origReadyPlayers, bool force) { - public const float PresetFailedCooldownIncrease = 30f; + var startAttempt = new RoundStartAttemptEvent(origReadyPlayers, force); + RaiseLocalEvent(startAttempt); - /// - /// The selected preset that will be used at the start of the next round. - /// - public GamePresetPrototype? Preset { get; private set; } + if (!startAttempt.Cancelled) + return true; - /// - /// The preset that's currently active. - /// - public GamePresetPrototype? CurrentPreset { get; private set; } + var presetTitle = CurrentPreset != null ? Loc.GetString(CurrentPreset.ModeTitle) : string.Empty; - private bool StartPreset(ICommonSession[] origReadyPlayers, bool force) + void FailedPresetRestart() { - var startAttempt = new RoundStartAttemptEvent(origReadyPlayers, force); - RaiseLocalEvent(startAttempt); - - if (!startAttempt.Cancelled) - return true; - - var presetTitle = CurrentPreset != null ? Loc.GetString(CurrentPreset.ModeTitle) : string.Empty; - - void FailedPresetRestart() - { - SendServerMessage(Loc.GetString("game-ticker-start-round-cannot-start-game-mode-restart", - ("failedGameMode", presetTitle))); - RestartRound(); - DelayStart(TimeSpan.FromSeconds(PresetFailedCooldownIncrease)); - } + SendServerMessage(Loc.GetString("game-ticker-start-round-cannot-start-game-mode-restart", + ("failedGameMode", presetTitle))); + RestartRound(); + DelayStart(TimeSpan.FromSeconds(PresetFailedCooldownIncrease)); + } if (_cfg.GetCVar(CCVars.GameLobbyFallbackEnabled)) { var fallbackPresets = _cfg.GetCVar(CCVars.GameLobbyFallbackPreset).Split(","); var startFailed = true; - foreach (var preset in fallbackPresets) + foreach (var preset in fallbackPresets) + { + ClearGameRules(); + SetGamePreset(preset); + AddGamePresetRules(); + StartGamePresetRules(); + + startAttempt.Uncancel(); + RaiseLocalEvent(startAttempt); + + if (!startAttempt.Cancelled) { - ClearGameRules(); - SetGamePreset(preset); - AddGamePresetRules(); - StartGamePresetRules(); - - startAttempt.Uncancel(); - RaiseLocalEvent(startAttempt); - - if (!startAttempt.Cancelled) - { - _chatManager.SendAdminAnnouncement( - Loc.GetString("game-ticker-start-round-cannot-start-game-mode-fallback", - ("failedGameMode", presetTitle), - ("fallbackMode", Loc.GetString(preset)))); - RefreshLateJoinAllowed(); - startFailed = false; - break; - } - } - - if (startFailed) - { - FailedPresetRestart(); - return false; + _chatManager.SendAdminAnnouncement( + Loc.GetString("game-ticker-start-round-cannot-start-game-mode-fallback", + ("failedGameMode", presetTitle), + ("fallbackMode", Loc.GetString(preset)))); + RefreshLateJoinAllowed(); + startFailed = false; + break; } } - else + if (startFailed) { FailedPresetRestart(); return false; } - - return true; } + else + { + FailedPresetRestart(); + return false; + } + + return true; + } + private void InitializeGamePreset() { SetGamePreset(LobbyEnabled ? _cfg.GetCVar(CCVars.GameLobbyDefaultPreset) : "sandbox"); } - public void SetGamePreset(GamePresetPrototype? preset, bool force = false) + public void SetGamePreset(GamePresetPrototype? preset, bool force = false, int? resetDelay = null) + { + // Do nothing if this game ticker is a dummy! + if (DummyTicker) + return; + + if (resetDelay is not null) { - // Do nothing if this game ticker is a dummy! - if (DummyTicker) - return; + ResetCountdown = resetDelay.Value; + // Reset counter is checked and changed at the end of each round + // So if the game is in the lobby, the first requested round will happen before the check, and we need one less check + if (CurrentPreset is null) + ResetCountdown = resetDelay.Value - 1; + } + else + { + ResetCountdown = null; + } - Preset = preset; - ValidateMap(); - UpdateInfoText(); + Preset = preset; + ValidateMap(); + UpdateInfoText(); - if (force) + if (force) + { + StartRound(true); + } + } + + public void SetGamePreset(string preset, bool force = false) + { + var proto = FindGamePreset(preset); + if(proto != null) + SetGamePreset(proto, force); + } + + public GamePresetPrototype? FindGamePreset(string preset) + { + if (_prototypeManager.TryIndex(preset, out GamePresetPrototype? presetProto)) + return presetProto; + + foreach (var proto in _prototypeManager.EnumeratePrototypes()) + { + foreach (var alias in proto.Alias) { - StartRound(true); + if (preset.Equals(alias, StringComparison.InvariantCultureIgnoreCase)) + return proto; } } - public void SetGamePreset(string preset, bool force = false) - { - var proto = FindGamePreset(preset); - if(proto != null) - SetGamePreset(proto, force); - } + return null; + } - public GamePresetPrototype? FindGamePreset(string preset) - { - if (_prototypeManager.TryIndex(preset, out GamePresetPrototype? presetProto)) - return presetProto; + public bool TryFindGamePreset(string preset, [NotNullWhen(true)] out GamePresetPrototype? prototype) + { + prototype = FindGamePreset(preset); - foreach (var proto in _prototypeManager.EnumeratePrototypes()) - { - foreach (var alias in proto.Alias) - { - if (preset.Equals(alias, StringComparison.InvariantCultureIgnoreCase)) - return proto; - } - } - - return null; - } - - public bool TryFindGamePreset(string preset, [NotNullWhen(true)] out GamePresetPrototype? prototype) - { - prototype = FindGamePreset(preset); - - return prototype != null; - } - - public bool IsMapEligible(GameMapPrototype map) - { - if (Preset == null) - return true; - - if (Preset.MapPool == null || !_prototypeManager.TryIndex(Preset.MapPool, out var pool)) - return true; - - return pool.Maps.Contains(map.ID); - } - - private void ValidateMap() - { - if (Preset == null || _gameMapManager.GetSelectedMap() is not { } map) - return; - - if (Preset.MapPool == null || - !_prototypeManager.TryIndex(Preset.MapPool, out var pool)) - return; - - if (pool.Maps.Contains(map.ID)) - return; - - _gameMapManager.SelectMapRandom(); - } - - [PublicAPI] - private bool AddGamePresetRules() - { - if (DummyTicker || Preset == null) - return false; - - CurrentPreset = Preset; - foreach (var rule in Preset.Rules) - { - AddGameRule(rule); - } + return prototype != null; + } + public bool IsMapEligible(GameMapPrototype map) + { + if (Preset == null) return true; + + if (Preset.MapPool == null || !_prototypeManager.TryIndex(Preset.MapPool, out var pool)) + return true; + + return pool.Maps.Contains(map.ID); + } + + private void ValidateMap() + { + if (Preset == null || _gameMapManager.GetSelectedMap() is not { } map) + return; + + if (Preset.MapPool == null || + !_prototypeManager.TryIndex(Preset.MapPool, out var pool)) + return; + + if (pool.Maps.Contains(map.ID)) + return; + + _gameMapManager.SelectMapRandom(); + } + + [PublicAPI] + private bool AddGamePresetRules() + { + if (DummyTicker || Preset == null) + return false; + + CurrentPreset = Preset; + foreach (var rule in Preset.Rules) + { + AddGameRule(rule); } - public void StartGamePresetRules() + return true; + } + + private void TryResetPreset() + { + if (ResetCountdown is null || ResetCountdown-- > 0) + return; + + InitializeGamePreset(); + ResetCountdown = null; + } + + public void StartGamePresetRules() + { + // May be touched by the preset during init. + var rules = new List(GetAddedGameRules()); + foreach (var rule in rules) { - // May be touched by the preset during init. - var rules = new List(GetAddedGameRules()); - foreach (var rule in rules) - { - StartGameRule(rule); - } + StartGameRule(rule); } + } private void IncrementRoundNumber() { var playerIds = _playerGameStatuses.Keys.Select(player => player.UserId).ToArray(); var serverName = _cfg.GetCVar(CCVars.AdminLogsServerName); - // TODO FIXME AAAAAAAAAAAAAAAAAAAH THIS IS BROKEN - // Task.Run as a terrible dirty workaround to avoid synchronization context deadlock from .Result here. - // This whole setup logic should be made asynchronous so we can properly wait on the DB AAAAAAAAAAAAAH - var task = Task.Run(async () => - { - var server = await _dbEntryManager.ServerEntity; - return await _db.AddNewRound(server, playerIds); - }); + // TODO FIXME AAAAAAAAAAAAAAAAAAAH THIS IS BROKEN + // Task.Run as a terrible dirty workaround to avoid synchronization context deadlock from .Result here. + // This whole setup logic should be made asynchronous so we can properly wait on the DB AAAAAAAAAAAAAH + var task = Task.Run(async () => + { + var server = await _dbEntryManager.ServerEntity; + return await _db.AddNewRound(server, playerIds); + }); - _taskManager.BlockWaitOnTask(task); - RoundId = task.GetAwaiter().GetResult(); - } + _taskManager.BlockWaitOnTask(task); + RoundId = task.GetAwaiter().GetResult(); } } diff --git a/Content.Server/GameTicking/GameTicker.Player.cs b/Content.Server/GameTicking/GameTicker.Player.cs index 07dafda4b0..24fe835f7a 100644 --- a/Content.Server/GameTicking/GameTicker.Player.cs +++ b/Content.Server/GameTicking/GameTicker.Player.cs @@ -32,11 +32,8 @@ namespace Content.Server.GameTicking { if (args.NewStatus != SessionStatus.Disconnected) { - mind.Session = session; _pvsOverride.AddSessionOverride(mindId.Value, session); } - - DebugTools.Assert(mind.Session == session); } DebugTools.Assert(session.GetMind() == mindId); @@ -126,10 +123,9 @@ namespace Content.Server.GameTicking case SessionStatus.Disconnected: { _chatManager.SendAdminAnnouncement(Loc.GetString("player-leave-message", ("name", args.Session.Name))); - if (mind != null) + if (mindId != null) { - _pvsOverride.ClearOverride(GetNetEntity(mindId!.Value)); - mind.Session = null; + _pvsOverride.RemoveSessionOverride(mindId.Value, session); } _userDb.ClientDisconnected(session); diff --git a/Content.Server/GameTicking/GameTicker.RoundFlow.cs b/Content.Server/GameTicking/GameTicker.RoundFlow.cs index 0e8f8bda1e..5d5e68441d 100644 --- a/Content.Server/GameTicking/GameTicker.RoundFlow.cs +++ b/Content.Server/GameTicking/GameTicker.RoundFlow.cs @@ -647,6 +647,9 @@ namespace Content.Server.GameTicking if (_serverUpdates.RoundEnded()) return; + // Check if the GamePreset needs to be reset + TryResetPreset(); + _sawmill.Info("Restarting round!"); SendServerMessage(Loc.GetString("game-ticker-restart-round")); diff --git a/Content.Server/GameTicking/GameTicker.Spawning.cs b/Content.Server/GameTicking/GameTicker.Spawning.cs index 78af79df55..c34625edf5 100644 --- a/Content.Server/GameTicking/GameTicker.Spawning.cs +++ b/Content.Server/GameTicking/GameTicker.Spawning.cs @@ -4,6 +4,7 @@ using System.Numerics; using Content.Server.Administration.Managers; using Content.Server.Administration.Systems; using Content.Server.GameTicking.Events; +using Content.Server.Ghost; using Content.Server.Spawners.Components; using Content.Server.Speech.Components; using Content.Server.Station.Components; diff --git a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs index 9ec932b06f..311e78d009 100644 --- a/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/RevolutionaryRuleSystem.cs @@ -28,6 +28,7 @@ using Content.Shared.Zombies; using Robust.Shared.Prototypes; using Robust.Shared.Timing; using Content.Shared.Cuffs.Components; +using Robust.Shared.Player; namespace Content.Server.GameTicking.Rules; @@ -36,19 +37,20 @@ namespace Content.Server.GameTicking.Rules; /// public sealed class RevolutionaryRuleSystem : GameRuleSystem { - [Dependency] private readonly IAdminLogManager _adminLogManager = default!; [Dependency] private readonly AntagSelectionSystem _antag = default!; [Dependency] private readonly EmergencyShuttleSystem _emergencyShuttle = default!; [Dependency] private readonly EuiManager _euiMan = default!; + [Dependency] private readonly IAdminLogManager _adminLogManager = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; [Dependency] private readonly MindSystem _mind = default!; [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly NpcFactionSystem _npcFaction = default!; [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly RoleSystem _role = default!; - [Dependency] private readonly SharedStunSystem _stun = default!; [Dependency] private readonly RoundEndSystem _roundEnd = default!; + [Dependency] private readonly SharedStunSystem _stun = default!; [Dependency] private readonly StationSystem _stationSystem = default!; - [Dependency] private readonly IGameTiming _timing = default!; //Used in OnPostFlash, no reference to the rule component is available public readonly ProtoId RevolutionaryNpcFaction = "Revolutionary"; @@ -165,8 +167,8 @@ public sealed class RevolutionaryRuleSystem : GameRuleSystem { Log.Debug($"MakeTraitor {ToPrettyString(traitor)} - Uplink is PDA"); // Codes are only generated if the uplink is a PDA - code = EnsureComp(pda.Value).Code; + var ev = new GenerateUplinkCodeEvent(); + RaiseLocalEvent(pda.Value, ref ev); - // If giveUplink is false the uplink code part is omitted - briefing = string.Format("{0}\n{1}", - briefing, - Loc.GetString("traitor-role-uplink-code-short", ("code", string.Join("-", code).Replace("sharp", "#")))); - return (code, briefing); + if (ev.Code is { } generatedCode) + { + code = generatedCode; + + // If giveUplink is false the uplink code part is omitted + briefing = string.Format("{0}\n{1}", + briefing, + Loc.GetString("traitor-role-uplink-code-short", ("code", string.Join("-", code).Replace("sharp", "#")))); + return (code, briefing); + } } else if (pda is null && uplinked) { diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/SolarPanelReplacementMarkerComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/SolarPanelReplacementMarkerComponent.cs new file mode 100644 index 0000000000..8e6146765d --- /dev/null +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/ReplacementMarkers/SolarPanelReplacementMarkerComponent.cs @@ -0,0 +1,7 @@ +namespace Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers; + +/// +/// This component marks replaceable solar panels for use with fast queries in variation passes. +/// +[RegisterComponent] +public sealed partial class SolarPanelReplacementMarkerComponent : Component; diff --git a/Content.Server/GameTicking/Rules/VariationPass/Components/SolarPanelReplaceVariationPassComponent.cs b/Content.Server/GameTicking/Rules/VariationPass/Components/SolarPanelReplaceVariationPassComponent.cs new file mode 100644 index 0000000000..54e07037e3 --- /dev/null +++ b/Content.Server/GameTicking/Rules/VariationPass/Components/SolarPanelReplaceVariationPassComponent.cs @@ -0,0 +1,5 @@ +namespace Content.Server.GameTicking.Rules.VariationPass.Components; + + +[RegisterComponent] +public sealed partial class SolarPanelReplaceVariationPassComponent : Component; diff --git a/Content.Server/GameTicking/Rules/VariationPass/SolarPanelReplaceVariationPassSystem.cs b/Content.Server/GameTicking/Rules/VariationPass/SolarPanelReplaceVariationPassSystem.cs new file mode 100644 index 0000000000..041ce32726 --- /dev/null +++ b/Content.Server/GameTicking/Rules/VariationPass/SolarPanelReplaceVariationPassSystem.cs @@ -0,0 +1,11 @@ +using Content.Server.GameTicking.Rules.VariationPass.Components; +using Content.Server.GameTicking.Rules.VariationPass.Components.ReplacementMarkers; + +namespace Content.Server.GameTicking.Rules.VariationPass; + +/// +/// This handles the ability to replace entities marked with in a variation pass +/// +public sealed class SolarPanelReplaceVariationPassSystem : BaseEntityReplaceVariationPassSystem +{ +} diff --git a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs index bb76721340..a38940c667 100644 --- a/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs +++ b/Content.Server/GameTicking/Rules/ZombieRuleSystem.cs @@ -25,13 +25,14 @@ public sealed class ZombieRuleSystem : GameRuleSystem { [Dependency] private readonly AntagSelectionSystem _antag = default!; [Dependency] private readonly ChatSystem _chat = default!; - [Dependency] private readonly SharedMindSystem _mindSystem = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly PopupSystem _popup = default!; - [Dependency] private readonly SharedRoleSystem _roles = default!; [Dependency] private readonly RoundEndSystem _roundEnd = default!; + [Dependency] private readonly SharedMindSystem _mindSystem = default!; + [Dependency] private readonly SharedRoleSystem _roles = default!; [Dependency] private readonly StationSystem _station = default!; - [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly ZombieSystem _zombie = default!; public override void Initialize() @@ -95,9 +96,10 @@ public sealed class ZombieRuleSystem : GameRuleSystem { var meta = MetaData(survivor); var username = string.Empty; - if (_mindSystem.TryGetMind(survivor, out _, out var mind) && mind.Session != null) + if (_mindSystem.TryGetMind(survivor, out _, out var mind) && + _player.TryGetSessionById(mind.UserId, out var session)) { - username = mind.Session.Name; + username = session.Name; } args.AddLine(Loc.GetString("zombie-round-end-user-was-survivor", diff --git a/Content.Server/Ghost/GhostSystem.cs b/Content.Server/Ghost/GhostSystem.cs index 7d217bf9f2..764b2f736e 100644 --- a/Content.Server/Ghost/GhostSystem.cs +++ b/Content.Server/Ghost/GhostSystem.cs @@ -28,6 +28,7 @@ using Content.Shared.NameModifier.EntitySystems; using Content.Shared.Popups; using Content.Shared.Storage.Components; using Content.Shared.Tag; +using Content.Shared.Warps; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Configuration; @@ -53,7 +54,7 @@ namespace Content.Server.Ghost [Dependency] private readonly MindSystem _minds = default!; [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; - [Dependency] private readonly IPlayerManager _playerManager = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; [Dependency] private readonly TransformSystem _transformSystem = default!; [Dependency] private readonly VisibilitySystem _visibilitySystem = default!; [Dependency] private readonly MetaDataSystem _metaData = default!; @@ -369,7 +370,7 @@ namespace Content.Server.Ghost private IEnumerable GetPlayerWarps(EntityUid except) { - foreach (var player in _playerManager.Sessions) + foreach (var player in _player.Sessions) { if (player.AttachedEntity is not {Valid: true} attached) continue; @@ -447,7 +448,7 @@ namespace Content.Server.Ghost if (spawnPosition?.IsValid(EntityManager) != true) return false; - var mapUid = spawnPosition?.GetMapUid(EntityManager); + var mapUid = _transformSystem.GetMap(spawnPosition.Value); var gridUid = spawnPosition?.EntityId; // Test if the map is being deleted if (mapUid == null || TerminatingOrDeleted(mapUid.Value)) @@ -489,15 +490,15 @@ namespace Content.Server.Ghost // However, that should rarely happen. if (!string.IsNullOrWhiteSpace(mind.Comp.CharacterName)) _metaData.SetEntityName(ghost, mind.Comp.CharacterName); - else if (!string.IsNullOrWhiteSpace(mind.Comp.Session?.Name)) - _metaData.SetEntityName(ghost, mind.Comp.Session.Name); + else if (mind.Comp.UserId is { } userId && _player.TryGetSessionById(userId, out var session)) + _metaData.SetEntityName(ghost, session.Name); if (mind.Comp.TimeOfDeath.HasValue) { - SetTimeOfDeath(ghost, mind.Comp.TimeOfDeath!.Value, ghostComponent); + SetTimeOfDeath((ghost, ghostComponent), mind.Comp.TimeOfDeath!.Value); } - SetCanReturnToBody(ghostComponent, canReturn); + SetCanReturnToBody((ghost, ghostComponent), canReturn); if (canReturn) _minds.Visit(mind.Owner, ghost, mind.Comp); @@ -535,9 +536,9 @@ namespace Content.Server.Ghost if (mind.PreventGhosting && !forced) { - if (mind.Session != null) // Logging is suppressed to prevent spam from ghost attempts caused by movement attempts + if (_player.TryGetSessionById(mind.UserId, out var session)) // 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(session, Loc.GetString("comp-mind-ghosting-prevented"), true); } diff --git a/Content.Server/Ghost/ReturnToBodyEui.cs b/Content.Server/Ghost/ReturnToBodyEui.cs index 77b143f7df..50664b30d1 100644 --- a/Content.Server/Ghost/ReturnToBodyEui.cs +++ b/Content.Server/Ghost/ReturnToBodyEui.cs @@ -2,19 +2,22 @@ using Content.Server.EUI; using Content.Shared.Eui; using Content.Shared.Ghost; using Content.Shared.Mind; +using Robust.Shared.Network; +using Robust.Shared.Player; namespace Content.Server.Ghost; public sealed class ReturnToBodyEui : BaseEui { private readonly SharedMindSystem _mindSystem; + private readonly ISharedPlayerManager _player; + private readonly NetUserId? _userId; - private readonly MindComponent _mind; - - public ReturnToBodyEui(MindComponent mind, SharedMindSystem mindSystem) + public ReturnToBodyEui(MindComponent mind, SharedMindSystem mindSystem, ISharedPlayerManager player) { - _mind = mind; _mindSystem = mindSystem; + _player = player; + _userId = mind.UserId; } public override void HandleMessage(EuiMessageBase msg) @@ -28,7 +31,8 @@ public sealed class ReturnToBodyEui : BaseEui return; } - _mindSystem.UnVisit(_mind.Session); + if (_userId is { } userId && _player.TryGetSessionById(userId, out var session)) + _mindSystem.UnVisit(session); Close(); } diff --git a/Content.Server/Guardian/GuardianComponent.cs b/Content.Server/Guardian/GuardianComponent.cs index a54d033756..7a010c6a0b 100644 --- a/Content.Server/Guardian/GuardianComponent.cs +++ b/Content.Server/Guardian/GuardianComponent.cs @@ -1,3 +1,5 @@ +using Robust.Shared.Audio; + namespace Content.Server.Guardian { /// @@ -30,5 +32,23 @@ namespace Content.Server.Guardian [DataField] public bool GuardianLoose; + /// + /// Sound played when a mob starts hosting the guardian. + /// + [DataField] + public SoundSpecifier InjectSound = new SoundPathSpecifier("/Audio/Effects/guardian_inject.ogg"); + + /// + /// Sound played when the guardian enters critical state. + /// + [DataField] + public SoundSpecifier CriticalSound = new SoundPathSpecifier("/Audio/Effects/guardian_warn.ogg"); + + /// + /// Sound played when the guardian dies. + /// + [DataField] + public SoundSpecifier DeathSound = new SoundPathSpecifier("/Audio/Voice/Human/malescream_guardian.ogg", AudioParams.Default.WithVariation(0.2f)); + } } diff --git a/Content.Server/Guardian/GuardianSystem.cs b/Content.Server/Guardian/GuardianSystem.cs index e8c3fe7028..9c48258628 100644 --- a/Content.Server/Guardian/GuardianSystem.cs +++ b/Content.Server/Guardian/GuardianSystem.cs @@ -1,7 +1,6 @@ using Content.Server.Body.Systems; using Content.Server.Popups; using Content.Shared.Actions; -using Content.Shared.Audio; using Content.Shared.Damage; using Content.Shared.DoAfter; using Content.Shared.Examine; @@ -13,8 +12,6 @@ using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Mobs; using Content.Shared.Popups; -using Robust.Server.GameObjects; -using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Player; @@ -224,7 +221,7 @@ namespace Content.Server.Guardian if (TryComp(guardian, out var guardianComp)) { guardianComp.Host = args.Args.Target.Value; - _audio.PlayPvs("/Audio/Effects/guardian_inject.ogg", args.Args.Target.Value); + _audio.PlayPvs(guardianComp.InjectSound, args.Args.Target.Value); _popupSystem.PopupEntity(Loc.GetString("guardian-created"), args.Args.Target.Value, args.Args.Target.Value); // Exhaust the activator component.Used = true; @@ -246,15 +243,18 @@ namespace Content.Server.Guardian if (component.HostedGuardian == null) return; + TryComp(component.HostedGuardian, out var guardianComp); + if (args.NewMobState == MobState.Critical) { _popupSystem.PopupEntity(Loc.GetString("guardian-host-critical-warn"), component.HostedGuardian.Value, component.HostedGuardian.Value); - _audio.PlayPvs("/Audio/Effects/guardian_warn.ogg", component.HostedGuardian.Value); + if (guardianComp != null) + _audio.PlayPvs(guardianComp.CriticalSound, component.HostedGuardian.Value); } else if (args.NewMobState == MobState.Dead) { - //TODO: Replace WithVariation with datafield - _audio.PlayPvs("/Audio/Voice/Human/malescream_guardian.ogg", uid, AudioParams.Default.WithVariation(0.20f)); + if (guardianComp != null) + _audio.PlayPvs(guardianComp.DeathSound, uid); RemComp(uid); } } diff --git a/Content.Server/Hands/Systems/HandsSystem.cs b/Content.Server/Hands/Systems/HandsSystem.cs index 1e8e012c52..e45ee550e1 100644 --- a/Content.Server/Hands/Systems/HandsSystem.cs +++ b/Content.Server/Hands/Systems/HandsSystem.cs @@ -98,7 +98,7 @@ namespace Content.Server.Hands.Systems } } - private void OnDisarmed(EntityUid uid, HandsComponent component, DisarmedEvent args) + private void OnDisarmed(EntityUid uid, HandsComponent component, ref DisarmedEvent args) { if (args.Handled) return; diff --git a/Content.Server/Holopad/HolopadSystem.cs b/Content.Server/Holopad/HolopadSystem.cs index 51cb3876fe..af8c5a36a1 100644 --- a/Content.Server/Holopad/HolopadSystem.cs +++ b/Content.Server/Holopad/HolopadSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.Chat.TypingIndicator; using Content.Shared.Holopad; using Content.Shared.IdentityManagement; using Content.Shared.Labels.Components; +using Content.Shared.Power; using Content.Shared.Silicons.StationAi; using Content.Shared.Speech; using Content.Shared.Telephone; @@ -74,6 +75,8 @@ public sealed class HolopadSystem : SharedHolopadSystem SubscribeLocalEvent(OnJumpToCore); SubscribeLocalEvent>(AddToggleProjectorVerb); SubscribeLocalEvent(OnAiRemove); + SubscribeLocalEvent(OnParentChanged); + SubscribeLocalEvent(OnPowerChanged); } #region: Holopad UI bound user interface messages @@ -432,6 +435,17 @@ public sealed class HolopadSystem : SharedHolopadSystem _telephoneSystem.EndTelephoneCalls((entity, entityTelephone)); } + private void OnParentChanged(Entity entity, ref EntParentChangedMessage args) + { + UpdateHolopadControlLockoutStartTime(entity); + } + + private void OnPowerChanged(Entity entity, ref PowerChangedEvent args) + { + if (args.Powered) + UpdateHolopadControlLockoutStartTime(entity); + } + #endregion public override void Update(float frameTime) @@ -678,11 +692,10 @@ public sealed class HolopadSystem : SharedHolopadSystem _telephoneSystem.TerminateTelephoneCalls(sourceTelephoneEntity); // Find all holopads in range of the source - var sourceXform = Transform(source); var receivers = new HashSet>(); - var query = AllEntityQuery(); - while (query.MoveNext(out var receiver, out var receiverHolopad, out var receiverTelephone, out var receiverXform)) + var query = AllEntityQuery(); + while (query.MoveNext(out var receiver, out var receiverHolopad, out var receiverTelephone)) { var receiverTelephoneEntity = new Entity(receiver, receiverTelephone); @@ -745,6 +758,33 @@ public sealed class HolopadSystem : SharedHolopadSystem return linkedHolopads; } + private void UpdateHolopadControlLockoutStartTime(Entity source) + { + if (!TryComp(source, out var sourceTelephone)) + return; + + var sourceTelephoneEntity = new Entity(source, sourceTelephone); + var isDirty = false; + + var query = AllEntityQuery(); + while (query.MoveNext(out var receiver, out var receiverHolopad, out var receiverTelephone)) + { + var receiverTelephoneEntity = new Entity(receiver, receiverTelephone); + + if (!_telephoneSystem.IsSourceInRangeOfReceiver(sourceTelephoneEntity, receiverTelephoneEntity)) + continue; + + if (receiverHolopad.ControlLockoutStartTime > source.Comp.ControlLockoutStartTime) + { + source.Comp.ControlLockoutStartTime = receiverHolopad.ControlLockoutStartTime; + isDirty = true; + } + } + + if (isDirty) + Dirty(source); + } + private void SetHolopadAmbientState(Entity entity, bool isEnabled) { if (TryComp(entity, out var pointLight)) diff --git a/Content.Server/IdentityManagement/IdentitySystem.cs b/Content.Server/IdentityManagement/IdentitySystem.cs index d90bf6021d..f873273f80 100644 --- a/Content.Server/IdentityManagement/IdentitySystem.cs +++ b/Content.Server/IdentityManagement/IdentitySystem.cs @@ -27,6 +27,7 @@ public sealed class IdentitySystem : SharedIdentitySystem [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly HumanoidAppearanceSystem _humanoid = default!; [Dependency] private readonly CriminalRecordsConsoleSystem _criminalRecordsConsole = default!; + [Dependency] private readonly GrammarSystem _grammarSystem = default!; private HashSet _queuedIdentityUpdates = new(); @@ -102,7 +103,7 @@ public sealed class IdentitySystem : SharedIdentitySystem // If presumed name is null and we're using that, we set proper noun to be false ("the old woman") if (name != representation.TrueName && representation.PresumedName == null) - identityGrammar.ProperNoun = false; + _grammarSystem.SetProperNoun((ident, identityGrammar), false); Dirty(ident, identityGrammar); } diff --git a/Content.Server/Implants/SubdermalImplantSystem.cs b/Content.Server/Implants/SubdermalImplantSystem.cs index bd6ffe375c..e2482b7b60 100644 --- a/Content.Server/Implants/SubdermalImplantSystem.cs +++ b/Content.Server/Implants/SubdermalImplantSystem.cs @@ -130,7 +130,7 @@ public sealed class SubdermalImplantSystem : SharedSubdermalImplantSystem private EntityCoordinates? SelectRandomTileInRange(TransformComponent userXform, float radius) { - var userCoords = userXform.Coordinates.ToMap(EntityManager, _xform); + var userCoords = _xform.ToMapCoordinates(userXform.Coordinates); _targetGrids.Clear(); _lookupSystem.GetEntitiesInRange(userCoords, radius, _targetGrids); Entity? targetGrid = null; diff --git a/Content.Server/Instruments/InstrumentComponent.cs b/Content.Server/Instruments/InstrumentComponent.cs index db9dbb375b..ab1fd2ce04 100644 --- a/Content.Server/Instruments/InstrumentComponent.cs +++ b/Content.Server/Instruments/InstrumentComponent.cs @@ -1,4 +1,3 @@ -using Content.Server.UserInterface; using Content.Shared.Instruments; using Robust.Shared.Player; using ActivatableUIComponent = Content.Shared.UserInterface.ActivatableUIComponent; @@ -21,8 +20,3 @@ public sealed partial class InstrumentComponent : SharedInstrumentComponent _entMan.GetComponentOrNull(Owner)?.CurrentSingleUser ?? _entMan.GetComponentOrNull(Owner)?.PlayerSession.AttachedEntity; } - -[RegisterComponent] -public sealed partial class ActiveInstrumentComponent : Component -{ -} diff --git a/Content.Server/Instruments/InstrumentSystem.cs b/Content.Server/Instruments/InstrumentSystem.cs index f74dd7fb13..2539db7a6f 100644 --- a/Content.Server/Instruments/InstrumentSystem.cs +++ b/Content.Server/Instruments/InstrumentSystem.cs @@ -225,7 +225,7 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem { var metadataQuery = EntityManager.GetEntityQuery(); - if (Deleted(uid, metadataQuery)) + if (Deleted(uid)) return Array.Empty<(NetEntity, string)>(); var list = new ValueList<(NetEntity, string)>(); @@ -380,7 +380,6 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem } var activeQuery = EntityManager.GetEntityQuery(); - var metadataQuery = EntityManager.GetEntityQuery(); var transformQuery = EntityManager.GetEntityQuery(); var query = AllEntityQuery(); @@ -388,7 +387,7 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem { if (instrument.Master is {} master) { - if (Deleted(master, metadataQuery)) + if (Deleted(master)) { Clean(uid, instrument); } diff --git a/Content.Server/Inventory/ServerInventorySystem.cs b/Content.Server/Inventory/ServerInventorySystem.cs index e3783753bb..64cfc447b4 100644 --- a/Content.Server/Inventory/ServerInventorySystem.cs +++ b/Content.Server/Inventory/ServerInventorySystem.cs @@ -31,8 +31,8 @@ namespace Content.Server.Inventory var enumerator = new InventorySlotEnumerator(source.Comp); while (enumerator.NextItem(out var item, out var slot)) { - if (TryUnequip(source, slot.Name, true, true, inventory: source.Comp)) - TryEquip(target, item, slot.Name , true, true, inventory: target.Comp); + if (TryUnequip(source, slot.Name, true, true, inventory: source.Comp, triggerHandContact: true)) + TryEquip(target, item, slot.Name , true, true, inventory: target.Comp, triggerHandContact: true); } } } diff --git a/Content.Server/Item/MultiHandedItemSystem.cs b/Content.Server/Item/MultiHandedItemSystem.cs deleted file mode 100644 index 9146c7c982..0000000000 --- a/Content.Server/Item/MultiHandedItemSystem.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Content.Server.Hands.Systems; -using Content.Server.Inventory; -using Content.Shared.Hands; -using Content.Shared.Item; - -namespace Content.Server.Item; - -public sealed class MultiHandedItemSystem : SharedMultiHandedItemSystem -{ - [Dependency] private readonly VirtualItemSystem _virtualItem = default!; - - protected override void OnEquipped(EntityUid uid, MultiHandedItemComponent component, GotEquippedHandEvent args) - { - for (var i = 0; i < component.HandsNeeded - 1; i++) - { - _virtualItem.TrySpawnVirtualItemInHand(uid, args.User); - } - } - - protected override void OnUnequipped(EntityUid uid, MultiHandedItemComponent component, GotUnequippedHandEvent args) - { - _virtualItem.DeleteInHandsMatching(args.User, uid); - } -} diff --git a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs index 6f28331ade..4ed05a3f16 100644 --- a/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs +++ b/Content.Server/Kitchen/EntitySystems/KitchenSpikeSystem.cs @@ -74,10 +74,13 @@ namespace Content.Server.Kitchen.EntitySystems return; _suicide.ApplyLethalDamage((args.Victim, damageableComponent), "Piercing"); - var othersMessage = Loc.GetString("comp-kitchen-spike-suicide-other", ("victim", args.Victim)); + var othersMessage = Loc.GetString("comp-kitchen-spike-suicide-other", + ("victim", Identity.Entity(args.Victim, EntityManager)), + ("this", entity)); _popupSystem.PopupEntity(othersMessage, args.Victim, Filter.PvsExcept(args.Victim), true); - var selfMessage = Loc.GetString("comp-kitchen-spike-suicide-self"); + var selfMessage = Loc.GetString("comp-kitchen-spike-suicide-self", + ("this", entity)); _popupSystem.PopupEntity(selfMessage, args.Victim, args.Victim); args.Handled = true; } @@ -160,7 +163,11 @@ namespace Content.Server.Kitchen.EntitySystems UpdateAppearance(uid, null, component); - _popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-kill", ("user", Identity.Entity(userUid, EntityManager)), ("victim", victimUid)), uid, PopupType.LargeCaution); + _popupSystem.PopupEntity(Loc.GetString("comp-kitchen-spike-kill", + ("user", Identity.Entity(userUid, EntityManager)), + ("victim", Identity.Entity(victimUid, EntityManager)), + ("this", uid)), + uid, PopupType.LargeCaution); _transform.SetCoordinates(victimUid, Transform(uid).Coordinates); // THE WHAT? diff --git a/Content.Server/Labels/Label/Components/PaperLabelComponent.cs b/Content.Server/Labels/Label/Components/PaperLabelComponent.cs deleted file mode 100644 index 5dead98084..0000000000 --- a/Content.Server/Labels/Label/Components/PaperLabelComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Content.Shared.Containers.ItemSlots; - -namespace Content.Server.Labels.Components -{ - /// - /// This component allows you to attach and remove a piece of paper to an entity. - /// - [RegisterComponent] - public sealed partial class PaperLabelComponent : Component - { - [DataField("labelSlot")] - public ItemSlot LabelSlot = new(); - } -} diff --git a/Content.Server/Labels/Label/LabelSystem.cs b/Content.Server/Labels/Label/LabelSystem.cs deleted file mode 100644 index df1150e668..0000000000 --- a/Content.Server/Labels/Label/LabelSystem.cs +++ /dev/null @@ -1,125 +0,0 @@ -using Content.Server.Labels.Components; -using Content.Shared.Containers.ItemSlots; -using Content.Shared.Examine; -using Content.Shared.Labels; -using Content.Shared.Labels.Components; -using Content.Shared.Labels.EntitySystems; -using Content.Shared.Paper; -using JetBrains.Annotations; -using Robust.Shared.Containers; - -namespace Content.Server.Labels -{ - /// - /// A system that lets players see the contents of a label on an object. - /// - [UsedImplicitly] - public sealed class LabelSystem : SharedLabelSystem - { - [Dependency] private readonly ItemSlotsSystem _itemSlotsSystem = default!; - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - - public const string ContainerName = "paper_label"; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnComponentInit); - SubscribeLocalEvent(OnComponentRemove); - SubscribeLocalEvent(OnContainerModified); - SubscribeLocalEvent(OnContainerModified); - SubscribeLocalEvent(OnExamined); - } - - /// - /// Apply or remove a label on an entity. - /// - /// EntityUid to change label on - /// intended label text (null to remove) - /// label component for resolve - /// metadata component for resolve - public override void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null) - { - if (!Resolve(uid, ref label, false)) - label = EnsureComp(uid); - - label.CurrentLabel = text; - NameMod.RefreshNameModifiers(uid); - - - //CP14 Events - var ev = new CP14LabeledEvent() - { - LabeledEntity = uid, - Text = text, - }; - RaiseLocalEvent(uid, ev); - //CP14 Events end - - Dirty(uid, label); - } - - private void OnComponentInit(EntityUid uid, PaperLabelComponent component, ComponentInit args) - { - _itemSlotsSystem.AddItemSlot(uid, ContainerName, component.LabelSlot); - - UpdateAppearance((uid, component)); - } - - private void OnComponentRemove(EntityUid uid, PaperLabelComponent component, ComponentRemove args) - { - _itemSlotsSystem.RemoveItemSlot(uid, component.LabelSlot); - } - - private void OnExamined(EntityUid uid, PaperLabelComponent comp, ExaminedEvent args) - { - if (comp.LabelSlot.Item is not {Valid: true} item) - return; - - using (args.PushGroup(nameof(PaperLabelComponent))) - { - if (!args.IsInDetailsRange) - { - args.PushMarkup(Loc.GetString("comp-paper-label-has-label-cant-read")); - return; - } - - if (!EntityManager.TryGetComponent(item, out PaperComponent? paper)) - // Assuming yaml has the correct entity whitelist, this should not happen. - return; - - if (string.IsNullOrWhiteSpace(paper.Content)) - { - args.PushMarkup(Loc.GetString("comp-paper-label-has-label-blank")); - return; - } - - args.PushMarkup(Loc.GetString("comp-paper-label-has-label")); - var text = paper.Content; - args.PushMarkup(text.TrimEnd()); - } - } - - private void OnContainerModified(EntityUid uid, PaperLabelComponent label, ContainerModifiedMessage args) - { - if (!label.Initialized) return; - - if (args.Container.ID != label.LabelSlot.ID) - return; - - UpdateAppearance((uid, label)); - } - - private void UpdateAppearance(Entity ent) - { - if (!Resolve(ent, ref ent.Comp2, false)) - return; - - var slot = ent.Comp1.LabelSlot; - _appearance.SetData(ent, PaperLabelVisuals.HasLabel, slot.HasItem, ent.Comp2); - if (TryComp(slot.Item, out var type)) - _appearance.SetData(ent, PaperLabelVisuals.LabelType, type.PaperType, ent.Comp2); - } - } -} diff --git a/Content.Server/Lathe/Components/LatheAnnouncingComponent.cs b/Content.Server/Lathe/Components/LatheAnnouncingComponent.cs new file mode 100644 index 0000000000..16c30d98eb --- /dev/null +++ b/Content.Server/Lathe/Components/LatheAnnouncingComponent.cs @@ -0,0 +1,17 @@ +using Content.Shared.Radio; +using Robust.Shared.Prototypes; + +namespace Content.Server.Lathe.Components; + +/// +/// Causes this entity to announce onto the provided channels when it receives new recipes from its server +/// +[RegisterComponent] +public sealed partial class LatheAnnouncingComponent : Component +{ + /// + /// Radio channels to broadcast to when a new set of recipes is received + /// + [DataField(required: true)] + public List> Channels = new(); +} diff --git a/Content.Server/Lathe/LatheSystem.cs b/Content.Server/Lathe/LatheSystem.cs index 68a5228bdf..0212bb6eeb 100644 --- a/Content.Server/Lathe/LatheSystem.cs +++ b/Content.Server/Lathe/LatheSystem.cs @@ -8,6 +8,7 @@ using Content.Server.Materials; using Content.Server.Popups; using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; +using Content.Server.Radio.EntitySystems; using Content.Server.Stack; using Content.Shared.Atmos; using Content.Shared.Chemistry.Components; @@ -20,6 +21,7 @@ using Content.Shared.Emag.Systems; using Content.Shared.Examine; using Content.Shared.Lathe; using Content.Shared.Lathe.Prototypes; +using Content.Shared.Localizations; using Content.Shared.Materials; using Content.Shared.Power; using Content.Shared.ReagentSpeed; @@ -53,12 +55,12 @@ namespace Content.Server.Lathe [Dependency] private readonly SharedSolutionContainerSystem _solution = default!; [Dependency] private readonly StackSystem _stack = default!; [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly RadioSystem _radio = default!; /// /// Per-tick cache /// private readonly List _environments = new(); - private readonly HashSet> _availableRecipes = new(); public override void Initialize() { @@ -67,6 +69,7 @@ namespace Content.Server.Lathe SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnPowerChanged); SubscribeLocalEvent(OnDatabaseModified); + SubscribeLocalEvent(OnTechnologyDatabaseModified); SubscribeLocalEvent(OnResearchRegistrationChanged); SubscribeLocalEvent(OnLatheQueueRecipeMessage); @@ -158,12 +161,8 @@ namespace Content.Server.Lathe public List> GetAvailableRecipes(EntityUid uid, LatheComponent component, bool getUnavailable = false) { - _availableRecipes.Clear(); - AddRecipesFromPacks(_availableRecipes, component.StaticPacks); - var ev = new LatheGetRecipesEvent(uid, getUnavailable) - { - Recipes = _availableRecipes - }; + var ev = new LatheGetRecipesEvent((uid, component), getUnavailable); + AddRecipesFromPacks(ev.Recipes, component.StaticPacks); RaiseLocalEvent(uid, ev); return ev.Recipes.ToList(); } @@ -286,7 +285,7 @@ namespace Content.Server.Lathe var pack = _proto.Index(id); foreach (var recipe in pack.Recipes) { - if (args.getUnavailable || database.UnlockedRecipes.Contains(recipe)) + if (args.GetUnavailable || database.UnlockedRecipes.Contains(recipe)) args.Recipes.Add(recipe); } } @@ -294,10 +293,8 @@ namespace Content.Server.Lathe private void OnGetRecipes(EntityUid uid, TechnologyDatabaseComponent component, LatheGetRecipesEvent args) { - if (uid != args.Lathe || !TryComp(uid, out var latheComponent)) - return; - - AddRecipesFromDynamicPacks(ref args, component, latheComponent.DynamicPacks); + if (uid == args.Lathe) + AddRecipesFromDynamicPacks(ref args, component, args.Comp.DynamicPacks); } private void GetEmagLatheRecipes(EntityUid uid, EmagLatheRecipesComponent component, LatheGetRecipesEvent args) @@ -305,7 +302,7 @@ namespace Content.Server.Lathe if (uid != args.Lathe) return; - if (!args.getUnavailable && !_emag.CheckFlag(uid, EmagType.Interaction)) + if (!args.GetUnavailable && !_emag.CheckFlag(uid, EmagType.Interaction)) return; AddRecipesFromPacks(args.Recipes, component.EmagStaticPacks); @@ -364,6 +361,41 @@ namespace Content.Server.Lathe UpdateUserInterfaceState(uid, component); } + private void OnTechnologyDatabaseModified(Entity ent, ref TechnologyDatabaseModifiedEvent args) + { + if (args.NewlyUnlockedRecipes is null) + return; + + if (!TryGetAvailableRecipes(ent.Owner, out var potentialRecipes)) + return; + + var recipeNames = new List(); + foreach (var recipeId in args.NewlyUnlockedRecipes) + { + if (!potentialRecipes.Contains(new(recipeId))) + continue; + + if (!_proto.TryIndex(recipeId, out LatheRecipePrototype? recipe)) + continue; + + var itemName = GetRecipeName(recipe!); + recipeNames.Add(Loc.GetString("lathe-unlock-recipe-radio-broadcast-item", ("item", itemName))); + } + + if (recipeNames.Count == 0) + return; + + var message = Loc.GetString( + "lathe-unlock-recipe-radio-broadcast", + ("items", ContentLocalizationManager.FormatList(recipeNames)) + ); + + foreach (var channel in ent.Comp.Channels) + { + _radio.SendRadioMessage(ent.Owner, message, channel, ent.Owner, escapeMarkup: false); + } + } + private void OnResearchRegistrationChanged(EntityUid uid, LatheComponent component, ref ResearchRegistrationChangedEvent args) { UpdateUserInterfaceState(uid, component); diff --git a/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs b/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs index 7aacf3e7ad..393f564b2f 100644 --- a/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs +++ b/Content.Server/Light/EntitySystems/ExpendableLightSystem.cs @@ -1,10 +1,14 @@ using Content.Server.Light.Components; +using Content.Server.Stack; using Content.Shared.Clothing.Components; using Content.Shared.Clothing.EntitySystems; using Content.Shared.IgnitionSource; +using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Item; using Content.Shared.Light.Components; +using Content.Shared.NameModifier.EntitySystems; +using Content.Shared.Stacks; using Content.Shared.Tag; using Content.Shared.Verbs; using JetBrains.Annotations; @@ -23,7 +27,8 @@ namespace Content.Server.Light.EntitySystems [Dependency] private readonly TagSystem _tagSystem = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly StackSystem _stackSystem = default!; + [Dependency] private readonly NameModifierSystem _nameModifier = default!; private static readonly ProtoId TrashTag = "Trash"; @@ -34,6 +39,8 @@ namespace Content.Server.Light.EntitySystems SubscribeLocalEvent(OnExpLightInit); SubscribeLocalEvent(OnExpLightUse); SubscribeLocalEvent>(AddIgniteVerb); + SubscribeLocalEvent(OnInteractUsing); + SubscribeLocalEvent(OnRefreshNameModifiers); } public override void Update(float frameTime) @@ -59,7 +66,7 @@ namespace Content.Server.Light.EntitySystems { case ExpendableLightState.Lit: component.CurrentState = ExpendableLightState.Fading; - component.StateExpiryTime = component.FadeOutDuration; + component.StateExpiryTime = (float)component.FadeOutDuration.TotalSeconds; UpdateVisualizer(ent); @@ -68,9 +75,7 @@ namespace Content.Server.Light.EntitySystems default: case ExpendableLightState.Fading: component.CurrentState = ExpendableLightState.Dead; - var meta = MetaData(ent); - _metaData.SetEntityName(ent, Loc.GetString(component.SpentName), meta); - _metaData.SetEntityDescription(ent, Loc.GetString(component.SpentDesc), meta); + _nameModifier.RefreshNameModifiers(ent.Owner); _tagSystem.AddTag(ent, TrashTag); @@ -104,15 +109,47 @@ namespace Content.Server.Light.EntitySystems RaiseLocalEvent(ent, ref ignite); component.CurrentState = ExpendableLightState.Lit; - component.StateExpiryTime = component.GlowDuration; UpdateSounds(ent); UpdateVisualizer(ent); + } + return true; + } - return true; + private void OnInteractUsing(EntityUid uid, ExpendableLightComponent component, ref InteractUsingEvent args) + { + if (args.Handled) + return; + + if (!TryComp(args.Used, out StackComponent? stack)) + return; + + if (stack.StackTypeId != component.RefuelMaterialID) + return; + + if (component.StateExpiryTime + component.RefuelMaterialTime.TotalSeconds >= component.RefuelMaximumDuration.TotalSeconds) + return; + + if (component.CurrentState is ExpendableLightState.Dead) + { + component.CurrentState = ExpendableLightState.BrandNew; + component.StateExpiryTime = (float)component.RefuelMaterialTime.TotalSeconds; + + _nameModifier.RefreshNameModifiers(uid); + _stackSystem.SetCount(args.Used, stack.Count - 1, stack); + UpdateVisualizer((uid, component)); + return; } - return false; + component.StateExpiryTime += (float)component.RefuelMaterialTime.TotalSeconds; + _stackSystem.SetCount(args.Used, stack.Count - 1, stack); + args.Handled = true; + } + + private void OnRefreshNameModifiers(Entity entity, ref RefreshNameModifiersEvent args) + { + if (entity.Comp.CurrentState is ExpendableLightState.Dead) + args.AddModifier("expendable-light-spent-prefix"); } private void UpdateVisualizer(Entity ent, AppearanceComponent? appearance = null) @@ -171,6 +208,7 @@ namespace Content.Server.Light.EntitySystems } component.CurrentState = ExpendableLightState.BrandNew; + component.StateExpiryTime = (float)component.GlowDuration.TotalSeconds; EntityManager.EnsureComponent(uid); } diff --git a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs index 53c60296d5..b98ba15623 100644 --- a/Content.Server/Light/EntitySystems/PoweredLightSystem.cs +++ b/Content.Server/Light/EntitySystems/PoweredLightSystem.cs @@ -19,6 +19,8 @@ using Robust.Shared.Timing; using Robust.Shared.Audio.Systems; using Content.Shared.Damage.Systems; using Content.Shared.Damage.Components; +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; namespace Content.Server.Light.EntitySystems diff --git a/Content.Server/Mapping/MappingCommand.cs b/Content.Server/Mapping/MappingCommand.cs index b44a09869e..7482ef811f 100644 --- a/Content.Server/Mapping/MappingCommand.cs +++ b/Content.Server/Mapping/MappingCommand.cs @@ -16,7 +16,6 @@ namespace Content.Server.Mapping sealed class MappingCommand : IConsoleCommand { [Dependency] private readonly IEntityManager _entities = default!; - [Dependency] private readonly IMapManager _map = default!; public string Command => "mapping"; public string Description => Loc.GetString("cmd-mapping-desc"); diff --git a/Content.Server/Mapping/MappingSystem.cs b/Content.Server/Mapping/MappingSystem.cs index b79387b3e5..bc086a7aca 100644 --- a/Content.Server/Mapping/MappingSystem.cs +++ b/Content.Server/Mapping/MappingSystem.cs @@ -73,7 +73,7 @@ public sealed class MappingSystem : EntitySystem } _currentlyAutosaving[uid] = (CalculateNextTime(), name); - var saveDir = Path.Combine(_cfg.GetCVar(CCVars.AutosaveDirectory), name); + var saveDir = Path.Combine(_cfg.GetCVar(CCVars.AutosaveDirectory), name).Replace(Path.DirectorySeparatorChar, '/'); _resMan.UserData.CreateDir(new ResPath(saveDir).ToRootedPath()); var path = new ResPath(Path.Combine(saveDir, $"{DateTime.Now:yyyy-M-dd_HH.mm.ss}-AUTO.yml")); diff --git a/Content.Server/Maps/MapMigrationSystem.cs b/Content.Server/Maps/MapMigrationSystem.cs index 3341034a35..28b10e3c58 100644 --- a/Content.Server/Maps/MapMigrationSystem.cs +++ b/Content.Server/Maps/MapMigrationSystem.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using System.IO; using System.Linq; -using Robust.Server.GameObjects; using Robust.Shared.ContentPack; using Robust.Shared.EntitySerialization.Systems; using Robust.Shared.Map.Events; @@ -33,7 +32,7 @@ public sealed class MapMigrationSystem : EntitySystem return; // Verify that all of the entries map to valid entity prototypes. - foreach (var node in mappings.Values) + foreach (var node in mappings.Children.Values) { var newId = ((ValueDataNode) node).Value; if (!string.IsNullOrEmpty(newId) && newId != "null") @@ -66,13 +65,13 @@ public sealed class MapMigrationSystem : EntitySystem foreach (var (key, value) in mappings) { - if (key is not ValueDataNode keyNode || value is not ValueDataNode valueNode) + if (value is not ValueDataNode valueNode) continue; if (string.IsNullOrWhiteSpace(valueNode.Value) || valueNode.Value == "null") - ev.DeletedPrototypes.Add(keyNode.Value); + ev.DeletedPrototypes.Add(key); else - ev.RenamedPrototypes.Add(keyNode.Value, valueNode.Value); + ev.RenamedPrototypes.Add(key, valueNode.Value); } } } diff --git a/Content.Server/Materials/MaterialStorageSystem.cs b/Content.Server/Materials/MaterialStorageSystem.cs index 8c50d5fe9a..3a462dd4d5 100644 --- a/Content.Server/Materials/MaterialStorageSystem.cs +++ b/Content.Server/Materials/MaterialStorageSystem.cs @@ -102,14 +102,18 @@ public sealed class MaterialStorageSystem : SharedMaterialStorageSystem if (!base.TryInsertMaterialEntity(user, toInsert, receiver, storage, material, composition)) return false; _audio.PlayPvs(storage.InsertingSound, receiver); - _popup.PopupEntity(Loc.GetString("machine-insert-item", ("user", user), ("machine", receiver), - ("item", toInsert)), receiver); + _popup.PopupEntity(Loc.GetString("machine-insert-item", + ("user", user), + ("machine", receiver), + ("item", toInsert)), + receiver); QueueDel(toInsert); // Logging TryComp(toInsert, out var stack); var count = stack?.Count ?? 1; - _adminLogger.Add(LogType.Action, LogImpact.Low, + _adminLogger.Add(LogType.Action, + LogImpact.Low, $"{ToPrettyString(user):player} inserted {count} {ToPrettyString(toInsert):inserted} into {ToPrettyString(receiver):receiver}"); return true; } diff --git a/Content.Server/Materials/OreSiloSystem.cs b/Content.Server/Materials/OreSiloSystem.cs new file mode 100644 index 0000000000..a0aab4fcae --- /dev/null +++ b/Content.Server/Materials/OreSiloSystem.cs @@ -0,0 +1,123 @@ +using Content.Server.Pinpointer; +using Content.Shared.IdentityManagement; +using Content.Shared.Materials.OreSilo; +using Robust.Server.GameStates; +using Robust.Shared.Player; + +namespace Content.Server.Materials; + +/// +public sealed class OreSiloSystem : SharedOreSiloSystem +{ + [Dependency] private readonly EntityLookupSystem _entityLookup = default!; + [Dependency] private readonly NavMapSystem _navMap = default!; + [Dependency] private readonly PvsOverrideSystem _pvsOverride = default!; + [Dependency] private readonly SharedUserInterfaceSystem _userInterface = default!; + + private const float OreSiloPreloadRangeSquared = 225f; // ~1 screen + + private readonly HashSet> _clientLookup = new(); + private readonly HashSet<(NetEntity, string, string)> _clientInformation = new(); + private readonly HashSet _silosToAdd = new(); + private readonly HashSet _silosToRemove = new(); + + protected override void UpdateOreSiloUi(Entity ent) + { + if (!_userInterface.IsUiOpen(ent.Owner, OreSiloUiKey.Key)) + return; + _clientLookup.Clear(); + _clientInformation.Clear(); + + var xform = Transform(ent); + + // Sneakily uses override with TComponent parameter + _entityLookup.GetEntitiesInRange(xform.Coordinates, ent.Comp.Range, _clientLookup); + + foreach (var client in _clientLookup) + { + // don't show already-linked clients. + if (client.Comp.Silo is not null) + continue; + + // Don't show clients on the screen if we can't link them. + if (!CanTransmitMaterials((ent, ent, xform), client)) + continue; + + var netEnt = GetNetEntity(client); + var name = Identity.Name(client, EntityManager); + var beacon = _navMap.GetNearestBeaconString(client.Owner, onlyName: true); + + var txt = Loc.GetString("ore-silo-ui-itemlist-entry", + ("name", name), + ("beacon", beacon), + ("linked", ent.Comp.Clients.Contains(client)), + ("inRange", true)); + + _clientInformation.Add((netEnt, txt, beacon)); + } + + // Get all clients of this silo, including those out of range. + foreach (var client in ent.Comp.Clients) + { + var netEnt = GetNetEntity(client); + var name = Identity.Name(client, EntityManager); + var beacon = _navMap.GetNearestBeaconString(client, onlyName: true); + var inRange = CanTransmitMaterials((ent, ent, xform), client); + + var txt = Loc.GetString("ore-silo-ui-itemlist-entry", + ("name", name), + ("beacon", beacon), + ("linked", ent.Comp.Clients.Contains(client)), + ("inRange", inRange)); + + _clientInformation.Add((netEnt, txt, beacon)); + } + + _userInterface.SetUiState(ent.Owner, OreSiloUiKey.Key, new OreSiloBuiState(_clientInformation)); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + // Solving an annoying problem: we need to send the silo to people who are near the silo so that + // Things don't start wildly mispredicting. We do this as cheaply as possible via grid-based local-pos checks. + // Sloth okay-ed this in the interim until a better solution comes around. + + var actorQuery = EntityQueryEnumerator(); + while (actorQuery.MoveNext(out _, out var actorComp, out var actorXform)) + { + _silosToAdd.Clear(); + _silosToRemove.Clear(); + + var clientQuery = EntityQueryEnumerator(); + while (clientQuery.MoveNext(out _, out var clientComp, out var clientXform)) + { + if (clientComp.Silo == null) + continue; + + // We limit it to same-grid checks only for peak perf + if (actorXform.GridUid != clientXform.GridUid) + continue; + + if ((actorXform.LocalPosition - clientXform.LocalPosition).LengthSquared() <= OreSiloPreloadRangeSquared) + { + _silosToAdd.Add(clientComp.Silo.Value); + } + else + { + _silosToRemove.Add(clientComp.Silo.Value); + } + } + + foreach (var toRemove in _silosToRemove) + { + _pvsOverride.RemoveSessionOverride(toRemove, actorComp.PlayerSession); + } + foreach (var toAdd in _silosToAdd) + { + _pvsOverride.AddSessionOverride(toAdd, actorComp.PlayerSession); + } + } + } +} diff --git a/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleSystem.cs b/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleSystem.cs index a53df6dbae..0e1d27a3c5 100644 --- a/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleSystem.cs +++ b/Content.Server/Medical/CrewMonitoring/CrewMonitoringConsoleSystem.cs @@ -2,6 +2,8 @@ using System.Linq; using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; using Content.Server.PowerCell; +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Medical.CrewMonitoring; using Content.Shared.Medical.SuitSensor; using Content.Shared.Pinpointer; diff --git a/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerSystem.cs b/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerSystem.cs index d7b8cc67a5..ad50a8f957 100644 --- a/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerSystem.cs +++ b/Content.Server/Medical/CrewMonitoring/CrewMonitoringServerSystem.cs @@ -1,10 +1,10 @@ -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.Medical.SuitSensors; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Medical.SuitSensor; using Robust.Shared.Timing; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Medical.CrewMonitoring; diff --git a/Content.Server/Medical/DefibrillatorSystem.cs b/Content.Server/Medical/DefibrillatorSystem.cs index ba272c92f5..94d62641ce 100644 --- a/Content.Server/Medical/DefibrillatorSystem.cs +++ b/Content.Server/Medical/DefibrillatorSystem.cs @@ -36,12 +36,13 @@ public sealed class DefibrillatorSystem : EntitySystem [Dependency] private readonly DoAfterSystem _doAfter = default!; [Dependency] private readonly ElectrocutionSystem _electrocution = default!; [Dependency] private readonly EuiManager _euiManager = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; [Dependency] private readonly ItemToggleSystem _toggle = default!; - [Dependency] private readonly RottingSystem _rotting = default!; [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly MobThresholdSystem _mobThreshold = default!; [Dependency] private readonly PopupSystem _popup = default!; [Dependency] private readonly PowerCellSystem _powerCell = default!; + [Dependency] private readonly RottingSystem _rotting = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedMindSystem _mind = default!; [Dependency] private readonly UseDelaySystem _useDelay = default!; @@ -212,13 +213,13 @@ public sealed class DefibrillatorSystem : EntitySystem } if (_mind.TryGetMind(target, out _, out var mind) && - mind.Session is { } playerSession) + _player.TryGetSessionById(mind.UserId, out var playerSession)) { session = playerSession; // notify them they're being revived. if (mind.CurrentEntity != target) { - _euiManager.OpenEui(new ReturnToBodyEui(mind, _mind), session); + _euiManager.OpenEui(new ReturnToBodyEui(mind, _mind, _player), session); } } else diff --git a/Content.Server/Medical/HealingSystem.cs b/Content.Server/Medical/HealingSystem.cs index b3318b8c2a..acbbce9e50 100644 --- a/Content.Server/Medical/HealingSystem.cs +++ b/Content.Server/Medical/HealingSystem.cs @@ -5,7 +5,6 @@ using Content.Server.Medical.Components; using Content.Server.Popups; using Content.Server.Stack; using Content.Shared.Chemistry.EntitySystems; -using Content.Shared.Audio; using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.DoAfter; @@ -21,6 +20,7 @@ using Content.Shared.Popups; using Content.Shared.Stacks; using Robust.Shared.Audio.Systems; using Robust.Shared.Random; +using Robust.Shared.Audio; namespace Content.Server.Medical; @@ -31,7 +31,6 @@ public sealed class HealingSystem : EntitySystem [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly BloodstreamSystem _bloodstreamSystem = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; - [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly StackSystem _stacks = default!; [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; [Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!; @@ -115,7 +114,7 @@ public sealed class HealingSystem : EntitySystem $"{EntityManager.ToPrettyString(args.User):user} healed themselves for {total:damage} damage"); } - _audio.PlayPvs(healing.HealingEndSound, entity.Owner, AudioHelpers.WithVariation(0.125f, _random).WithVolume(1f)); + _audio.PlayPvs(healing.HealingEndSound, entity.Owner); // Logic to determine the whether or not to repeat the healing action args.Repeat = (HasDamage(entity, healing) && !dontRepeat); @@ -198,8 +197,7 @@ public sealed class HealingSystem : EntitySystem return false; } - _audio.PlayPvs(component.HealingBeginSound, uid, - AudioHelpers.WithVariation(0.125f, _random).WithVolume(1f)); + _audio.PlayPvs(component.HealingBeginSound, uid); var isNotSelf = user != target; diff --git a/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs b/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs index f6e46dd4f8..2ab09e746f 100644 --- a/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs +++ b/Content.Server/Medical/SuitSensors/SuitSensorSystem.cs @@ -1,7 +1,5 @@ using System.Numerics; using Content.Server.Access.Systems; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.Emp; using Content.Server.Medical.CrewMonitoring; @@ -26,6 +24,7 @@ using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Medical.SuitSensors; @@ -406,7 +405,7 @@ public sealed class SuitSensorSystem : EntitySystem totalDamageThreshold = critThreshold.Value.Int(); // finally, form suit sensor status - var status = new SuitSensorStatus(GetNetEntity(uid), userName, userJob, userJobIcon, userJobDepartments); + var status = new SuitSensorStatus(GetNetEntity(sensor.User.Value), GetNetEntity(uid), userName, userJob, userJobIcon, userJobDepartments); switch (sensor.Mode) { case SuitSensorMode.SensorBinary: @@ -461,6 +460,7 @@ public sealed class SuitSensorSystem : EntitySystem [SuitSensorConstants.NET_JOB_DEPARTMENTS] = status.JobDepartments, [SuitSensorConstants.NET_IS_ALIVE] = status.IsAlive, [SuitSensorConstants.NET_SUIT_SENSOR_UID] = status.SuitSensorUid, + [SuitSensorConstants.NET_OWNER_UID] = status.OwnerUid, }; if (status.TotalDamage != null) @@ -491,13 +491,14 @@ public sealed class SuitSensorSystem : EntitySystem if (!payload.TryGetValue(SuitSensorConstants.NET_JOB_DEPARTMENTS, out List? jobDepartments)) return null; if (!payload.TryGetValue(SuitSensorConstants.NET_IS_ALIVE, out bool? isAlive)) return null; if (!payload.TryGetValue(SuitSensorConstants.NET_SUIT_SENSOR_UID, out NetEntity suitSensorUid)) return null; + if (!payload.TryGetValue(SuitSensorConstants.NET_OWNER_UID, out NetEntity ownerUid)) return null; // try get total damage and cords (optionals) payload.TryGetValue(SuitSensorConstants.NET_TOTAL_DAMAGE, out int? totalDamage); payload.TryGetValue(SuitSensorConstants.NET_TOTAL_DAMAGE_THRESHOLD, out int? totalDamageThreshold); payload.TryGetValue(SuitSensorConstants.NET_COORDINATES, out NetCoordinates? coords); - var status = new SuitSensorStatus(suitSensorUid, name, job, jobIcon, jobDepartments) + var status = new SuitSensorStatus(ownerUid, suitSensorUid, name, job, jobIcon, jobDepartments) { IsAlive = isAlive.Value, TotalDamage = totalDamage, diff --git a/Content.Server/Mind/MindSystem.cs b/Content.Server/Mind/MindSystem.cs index 1b55a533e3..71d38c688b 100644 --- a/Content.Server/Mind/MindSystem.cs +++ b/Content.Server/Mind/MindSystem.cs @@ -62,14 +62,14 @@ public sealed class MindSystem : SharedMindSystem { TransferTo(mindId, visiting, mind: mind); if (TryComp(visiting, out GhostComponent? ghostComp)) - _ghosts.SetCanReturnToBody(ghostComp, false); + _ghosts.SetCanReturnToBody((visiting, ghostComp), false); return; } TransferTo(mindId, null, createGhost: false, mind: mind); DebugTools.AssertNull(mind.OwnedEntity); - if (!component.GhostOnShutdown || mind.Session == null || _gameTicker.RunLevel == GameRunLevel.PreRoundLobby) + if (!component.GhostOnShutdown || _gameTicker.RunLevel == GameRunLevel.PreRoundLobby) return; var ghost = _ghosts.SpawnGhost((mindId, mind), uid); @@ -93,16 +93,6 @@ public sealed class MindSystem : SharedMindSystem return false; } - public ICommonSession? GetSession(MindComponent mind) - { - return mind.Session; - } - - public bool TryGetSession(MindComponent mind, [NotNullWhen(true)] out ICommonSession? session) - { - return (session = GetSession(mind)) != null; - } - public override void WipeAllMinds() { base.WipeAllMinds(); @@ -144,10 +134,10 @@ public sealed class MindSystem : SharedMindSystem // Do this AFTER the entity changes above as this will fire off a player-detached event // which will run ghosting twice. - if (GetSession(mind) is { } session) + if (_players.TryGetSessionById(mind.UserId, out var session)) _players.SetAttachedEntity(session, entity); - Log.Info($"Session {mind.Session?.Name} visiting entity {entity}."); + Log.Info($"Session {session?.Name} visiting entity {entity}."); } public override void UnVisit(EntityUid mindId, MindComponent? mind = null) @@ -162,17 +152,19 @@ public sealed class MindSystem : SharedMindSystem RemoveVisitingEntity(mindId, mind); - if (mind.Session == null || mind.Session.AttachedEntity == mind.VisitingEntity) + if (mind.UserId == null || !_players.TryGetSessionById(mind.UserId.Value, out var session)) + return; + + if (session.AttachedEntity == mind.VisitingEntity) return; var owned = mind.OwnedEntity; - if (GetSession(mind) is { } session) - _players.SetAttachedEntity(session, owned); + _players.SetAttachedEntity(session, owned); if (owned.HasValue) { _adminLogger.Add(LogType.Mind, LogImpact.Low, - $"{mind.Session.Name} returned to {ToPrettyString(owned.Value)}"); + $"{session.Name} returned to {ToPrettyString(owned.Value)}"); } } @@ -199,7 +191,8 @@ public sealed class MindSystem : SharedMindSystem if (TryComp(entity.Value, out var actor)) { // Happens when transferring to your currently visited entity. - if (actor.PlayerSession != mind.Session) + if (!_players.TryGetSessionByEntity(entity.Value, out var session) || + mind.UserId == null || actor.PlayerSession != session ) { throw new ArgumentException("Visit target already has a session.", nameof(entity)); } @@ -215,13 +208,13 @@ public sealed class MindSystem : SharedMindSystem // not implicitly via optional arguments. var position = Deleted(mind.OwnedEntity) - ? _gameTicker.GetObserverSpawnPoint().ToMap(EntityManager, _transform) + ? _transform.ToMapCoordinates(_gameTicker.GetObserverSpawnPoint()) : _transform.GetMapCoordinates(mind.OwnedEntity.Value); entity = Spawn(GameTicker.ObserverPrototypeName, position); component = EnsureComp(entity.Value); var ghostComponent = Comp(entity.Value); - _ghosts.SetCanReturnToBody(ghostComponent, false); + _ghosts.SetCanReturnToBody((entity.Value, ghostComponent), false); } var oldEntity = mind.OwnedEntity; @@ -253,12 +246,12 @@ public sealed class MindSystem : SharedMindSystem } // Player is CURRENTLY connected. - var session = GetSession(mind); - if (session != null && !alreadyAttached && mind.VisitingEntity == null) + if (mind.UserId != null && _players.TryGetSessionById(mind.UserId.Value, out var userSession) + && !alreadyAttached && mind.VisitingEntity == null) { - _players.SetAttachedEntity(session, entity, true); - DebugTools.Assert(session.AttachedEntity == entity, $"Failed to attach entity."); - Log.Info($"Session {session.Name} transferred to entity {entity}."); + _players.SetAttachedEntity(userSession, entity, true); + DebugTools.Assert(userSession.AttachedEntity == entity, "Failed to attach entity."); + Log.Info($"Session {userSession.Name} transferred to entity {entity}."); } if (entity != null) @@ -288,18 +281,18 @@ public sealed class MindSystem : SharedMindSystem return; Dirty(mindId, mind); - var netMind = GetNetEntity(mindId); - _pvsOverride.ClearOverride(netMind); + if (userId != null && !_players.TryGetPlayerData(userId.Value, out _)) { Log.Error($"Attempted to set mind user to invalid value {userId}"); return; } - if (mind.Session != null) + // Clear any existing entity attachment + if (_players.TryGetSessionById(mind.UserId, out var oldSession)) { - _players.SetAttachedEntity(GetSession(mind), null); - mind.Session = null; + _players.SetAttachedEntity(oldSession, null); + _pvsOverride.RemoveSessionOverride(mindId, oldSession); } if (mind.UserId != null) @@ -311,10 +304,7 @@ public sealed class MindSystem : SharedMindSystem } if (userId == null) - { - DebugTools.AssertNull(mind.Session); return; - } if (UserMinds.TryGetValue(userId.Value, out var oldMindId) && TryComp(oldMindId, out MindComponent? oldMind)) @@ -333,11 +323,10 @@ public sealed class MindSystem : SharedMindSystem if (_players.GetPlayerData(userId.Value).ContentData() is { } data) data.Mind = mindId; - if (_players.TryGetSessionById(userId.Value, out var ret)) + if (_players.TryGetSessionById(userId.Value, out var session)) { - mind.Session = ret; - _pvsOverride.AddSessionOverride(netMind, ret); - _players.SetAttachedEntity(ret, mind.CurrentEntity); + _pvsOverride.AddSessionOverride(mindId, session); + _players.SetAttachedEntity(session, mind.CurrentEntity); } } diff --git a/Content.Server/Mindshield/MindShieldSystem.cs b/Content.Server/Mindshield/MindShieldSystem.cs index 63d6bf097e..89ae090acd 100644 --- a/Content.Server/Mindshield/MindShieldSystem.cs +++ b/Content.Server/Mindshield/MindShieldSystem.cs @@ -4,51 +4,44 @@ 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; using Robust.Shared.Containers; namespace Content.Server.Mindshield; /// -/// System used for checking if the implanted is a Rev or Head Rev. +/// System used for adding or removing components with a mindshield implant +/// as well as checking if the implanted is a Rev or Head Rev. /// public sealed class MindShieldSystem : EntitySystem { [Dependency] private readonly IAdminLogManager _adminLogManager = default!; [Dependency] private readonly RoleSystem _roleSystem = default!; [Dependency] private readonly MindSystem _mindSystem = default!; - [Dependency] private readonly TagSystem _tag = default!; [Dependency] private readonly PopupSystem _popupSystem = default!; - [ValidatePrototypeId] - public const string MindShieldTag = "MindShield"; - public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(ImplantCheck); + + SubscribeLocalEvent(OnImplantImplanted); SubscribeLocalEvent(OnImplantDraw); } - /// - /// Checks if the implant was a mindshield or not - /// - public void ImplantCheck(EntityUid uid, SubdermalImplantComponent comp, ref ImplantImplantedEvent ev) + private void OnImplantImplanted(Entity ent, ref ImplantImplantedEvent ev) { - if (_tag.HasTag(ev.Implant, MindShieldTag) && ev.Implanted != null) - { - EnsureComp(ev.Implanted.Value); - MindShieldRemovalCheck(ev.Implanted.Value, ev.Implant); - } + if (ev.Implanted == null) + return; + + EnsureComp(ev.Implanted.Value); + 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) + private void MindShieldRemovalCheck(EntityUid implanted, EntityUid implant) { if (HasComp(implanted)) { diff --git a/Content.Server/NPC/HTN/HTNComponent.cs b/Content.Server/NPC/HTN/HTNComponent.cs index 788a347638..43b8a70785 100644 --- a/Content.Server/NPC/HTN/HTNComponent.cs +++ b/Content.Server/NPC/HTN/HTNComponent.cs @@ -37,6 +37,9 @@ public sealed partial class HTNComponent : NPCComponent [ViewVariables(VVAccess.ReadWrite)] public float PlanAccumulator = 0f; + [DataField] + public bool ConstantlyReplan = true; + [ViewVariables] public HTNPlanJob? PlanningJob = null; diff --git a/Content.Server/NPC/HTN/HTNPlanJob.cs b/Content.Server/NPC/HTN/HTNPlanJob.cs index 9c62f5840a..8a57d52a66 100644 --- a/Content.Server/NPC/HTN/HTNPlanJob.cs +++ b/Content.Server/NPC/HTN/HTNPlanJob.cs @@ -56,16 +56,16 @@ public sealed class HTNPlanJob : Job // hence we'll store it here. var appliedStates = new List?>(); - var tasksToProcess = new Queue(); + var tasksToProcess = new Stack(); var finalPlan = new List(); - tasksToProcess.Enqueue(_rootTask); + tasksToProcess.Push(_rootTask); // How many primitive tasks we've added since last record. var primitiveCount = 0; int tasksProcessed = 0; - while (tasksToProcess.TryDequeue(out var currentTask)) + while (tasksToProcess.TryPop(out var currentTask)) { if (tasksProcessed++ > _rootTask.MaximumTasks) throw new Exception("HTN Planner exceeded maximum tasks"); @@ -161,7 +161,7 @@ public sealed class HTNPlanJob : Job /// /// Goes through each compound task branch and tries to find an appropriate one. /// - private bool TryFindSatisfiedMethod(HTNCompoundTask compoundId, Queue tasksToProcess, NPCBlackboard blackboard, ref int mtrIndex) + private bool TryFindSatisfiedMethod(HTNCompoundTask compoundId, Stack tasksToProcess, NPCBlackboard blackboard, ref int mtrIndex) { var compound = _protoManager.Index(compoundId.Task); @@ -182,9 +182,9 @@ public sealed class HTNPlanJob : Job if (!isValid) continue; - foreach (var task in branch.Tasks) + foreach (var task in branch.Tasks.AsEnumerable().Reverse()) { - tasksToProcess.Enqueue(task); + tasksToProcess.Push(task); } return true; @@ -198,7 +198,7 @@ public sealed class HTNPlanJob : Job /// private void RestoreTolastDecomposedTask( Stack decompHistory, - Queue tasksToProcess, + Stack tasksToProcess, List?> appliedStates, List finalPlan, ref int primitiveCount, @@ -223,7 +223,7 @@ public sealed class HTNPlanJob : Job primitiveCount = lastDecomp.PrimitiveCount; blackboard = lastDecomp.Blackboard; - tasksToProcess.Enqueue(lastDecomp.CompoundTask); + tasksToProcess.Push(lastDecomp.CompoundTask); } /// diff --git a/Content.Server/NPC/HTN/HTNSystem.cs b/Content.Server/NPC/HTN/HTNSystem.cs index ce4b248a0d..89b4ae7786 100644 --- a/Content.Server/NPC/HTN/HTNSystem.cs +++ b/Content.Server/NPC/HTN/HTNSystem.cs @@ -328,7 +328,7 @@ public sealed class HTNSystem : EntitySystem component.PlanAccumulator -= frameTime; // We'll still try re-planning occasionally even when we're updating in case new data comes in. - if (component.PlanAccumulator <= 0f) + if ((component.ConstantlyReplan || component.Plan is null) && component.PlanAccumulator <= 0f) { RequestPlan(component); } @@ -462,7 +462,7 @@ public sealed class HTNSystem : EntitySystem if (component.PlanningJob != null) return; - component.PlanAccumulator += component.PlanCooldown; + component.PlanAccumulator = component.PlanCooldown; var cancelToken = new CancellationTokenSource(); var branchTraversal = component.Plan?.BranchTraversalRecord; diff --git a/Content.Server/NPC/NPCBlackboardSerializer.cs b/Content.Server/NPC/NPCBlackboardSerializer.cs index 56db17a0a7..a7c36dc6a5 100644 --- a/Content.Server/NPC/NPCBlackboardSerializer.cs +++ b/Content.Server/NPC/NPCBlackboardSerializer.cs @@ -23,11 +23,11 @@ public sealed class NPCBlackboardSerializer : ITypeReader(container.Owner, out var storageComponent)) { if (storageComponent is { Open: false } && _weldable.IsWelded(container.Owner)) diff --git a/Content.Server/NameIdentifier/NameIdentifierSystem.cs b/Content.Server/NameIdentifier/NameIdentifierSystem.cs index 273e9407fd..0a9f87557a 100644 --- a/Content.Server/NameIdentifier/NameIdentifierSystem.cs +++ b/Content.Server/NameIdentifier/NameIdentifierSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.GameTicking; using Content.Shared.NameIdentifier; +using Content.Shared.NameModifier.EntitySystems; using Robust.Shared.Collections; using Robust.Shared.Prototypes; using Robust.Shared.Random; @@ -13,7 +14,7 @@ public sealed class NameIdentifierSystem : EntitySystem { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IRobustRandom _robustRandom = default!; - [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly NameModifierSystem _nameModifier = default!; /// /// Free IDs available per . @@ -27,6 +28,7 @@ public sealed class NameIdentifierSystem : EntitySystem SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnComponentShutdown); + SubscribeLocalEvent(OnRefreshNameModifiers); SubscribeLocalEvent(CleanupIds); SubscribeLocalEvent(OnReloadPrototypes); @@ -44,6 +46,7 @@ public sealed class NameIdentifierSystem : EntitySystem ids[randomIndex] = component.Identifier; ids.Add(random); } + _nameModifier.RefreshNameModifiers(uid); } /// @@ -108,12 +111,22 @@ public sealed class NameIdentifierSystem : EntitySystem ? uniqueName : $"({uniqueName})"; - var meta = MetaData(uid); - // "DR-1234" as opposed to "drone (DR-1234)" - _metaData.SetEntityName(uid, group.FullName - ? uniqueName - : $"{meta.EntityName} ({uniqueName})", meta); Dirty(uid, component); + _nameModifier.RefreshNameModifiers(uid); + } + + private void OnRefreshNameModifiers(Entity ent, ref RefreshNameModifiersEvent args) + { + // Don't apply the modifier if the component is being removed + if (ent.Comp.LifeStage > ComponentLifeStage.Running) + return; + + if (!_prototypeManager.TryIndex(ent.Comp.Group, out var group)) + return; + var format = group.FullName ? "name-identifier-format-full" : "name-identifier-format-append"; + // We apply the modifier with a low priority to keep it near the base name + // "Beep (Si-4562) the zombie" instead of "Beep the zombie (Si-4562)" + args.AddModifier(format, -10, ("identifier", ent.Comp.FullIdentifier)); } private void InitialSetupPrototypes() diff --git a/Content.Server/Ninja/Systems/BatteryDrainerSystem.cs b/Content.Server/Ninja/Systems/BatteryDrainerSystem.cs index 8e707cf3fc..71e38ed3f6 100644 --- a/Content.Server/Ninja/Systems/BatteryDrainerSystem.cs +++ b/Content.Server/Ninja/Systems/BatteryDrainerSystem.cs @@ -106,6 +106,6 @@ public sealed class BatteryDrainerSystem : SharedBatteryDrainerSystem _popup.PopupEntity(Loc.GetString("battery-drainer-success", ("battery", target)), uid, uid); // repeat the doafter until battery is full - return !_battery.IsFull(ent, battery); + return !_battery.IsFull(comp.BatteryUid.Value, battery); } } diff --git a/Content.Server/Ninja/Systems/NinjaSuitSystem.cs b/Content.Server/Ninja/Systems/NinjaSuitSystem.cs index 20674dda87..62d3d0e3ca 100644 --- a/Content.Server/Ninja/Systems/NinjaSuitSystem.cs +++ b/Content.Server/Ninja/Systems/NinjaSuitSystem.cs @@ -74,7 +74,7 @@ public sealed class NinjaSuitSystem : SharedNinjaSuitSystem var user = Transform(uid).ParentUid; // can only upgrade power cell, not swap to recharge instantly otherwise ninja could just swap batteries with flashlights in maints for easy power - if (GetCellScore(inserting.Owner, inserting) <= GetCellScore(battery.Owner, battery)) + if (GetCellScore(args.EntityUid, inserting) <= GetCellScore(batteryUid.Value, battery)) { args.Cancel(); Popup.PopupEntity(Loc.GetString("ninja-cell-downgrade"), user, user); diff --git a/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs b/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs index cdcfcc1f21..200554faa3 100644 --- a/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/CreamPieSystem.cs @@ -93,13 +93,16 @@ namespace Content.Server.Nutrition.EntitySystems protected override void CreamedEntity(EntityUid uid, CreamPiedComponent creamPied, ThrowHitByEvent args) { - _popup.PopupEntity(Loc.GetString("cream-pied-component-on-hit-by-message", ("thrower", args.Thrown)), uid, args.Target); - var otherPlayers = Filter.Empty().AddPlayersByPvs(uid); - if (TryComp(args.Target, out var actor)) - { - otherPlayers.RemovePlayer(actor.PlayerSession); - } - _popup.PopupEntity(Loc.GetString("cream-pied-component-on-hit-by-message-others", ("owner", Identity.Name(uid, EntityManager)), ("thrower", args.Thrown)), uid, otherPlayers, false); + _popup.PopupEntity(Loc.GetString("cream-pied-component-on-hit-by-message", + ("thrown", Identity.Entity(args.Thrown, EntityManager))), + uid, args.Target); + + var otherPlayers = Filter.PvsExcept(uid); + + _popup.PopupEntity(Loc.GetString("cream-pied-component-on-hit-by-message-others", + ("owner", Identity.Entity(uid, EntityManager)), + ("thrown", Identity.Entity(args.Thrown, EntityManager))), + uid, otherPlayers, false); } private void OnRejuvenate(Entity entity, ref RejuvenateEvent args) diff --git a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs index fd68f611c1..e294edf15b 100644 --- a/Content.Server/Nutrition/EntitySystems/FoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/FoodSystem.cs @@ -336,6 +336,9 @@ public sealed class FoodSystem : EntitySystem if (ev.Cancelled) return; + var afterEvent = new AfterFullyEatenEvent(user); + RaiseLocalEvent(food, ref afterEvent); + var dev = new DestructionEventArgs(); RaiseLocalEvent(food, dev); diff --git a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs index 5684cef3f4..5335a9b02b 100644 --- a/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SliceableFoodSystem.cs @@ -14,6 +14,7 @@ using Robust.Shared.Random; using Robust.Shared.Containers; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; +using Content.Shared.Destructible; namespace Content.Server.Nutrition.EntitySystems; @@ -140,6 +141,9 @@ public sealed class SliceableFoodSystem : EntitySystem if (ev.Cancelled) return; + var dev = new DestructionEventArgs(); + RaiseLocalEvent(uid, dev); + // Locate the sliced food and spawn its trash foreach (var trash in foodComp.Trash) { diff --git a/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs b/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs index 0d637139d8..b3ef8bff69 100644 --- a/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs +++ b/Content.Server/Nutrition/EntitySystems/SmokingSystem.cs @@ -15,8 +15,10 @@ using Content.Shared.Nutrition.Components; using Content.Shared.Smoking; using Content.Shared.Temperature; using Robust.Server.GameObjects; +using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using System.Linq; +using Content.Shared.Atmos; namespace Content.Server.Nutrition.EntitySystems { @@ -29,6 +31,7 @@ namespace Content.Server.Nutrition.EntitySystems [Dependency] private readonly TransformSystem _transformSystem = default!; [Dependency] private readonly InventorySystem _inventorySystem = default!; [Dependency] private readonly ClothingSystem _clothing = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedItemSystem _items = default!; [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; @@ -38,26 +41,28 @@ namespace Content.Server.Nutrition.EntitySystems private float _timer; - /// - /// We keep a list of active smokables, because iterating all existing smokables would be dumb. - /// - private readonly HashSet _active = new(); - public override void Initialize() { SubscribeLocalEvent(OnSmokableIsHotEvent); SubscribeLocalEvent(OnSmokableShutdownEvent); SubscribeLocalEvent(OnSmokeableEquipEvent); + Subs.SubscribeWithRelay(OnExtinguishEvent); InitializeCigars(); InitializePipes(); InitializeVapes(); } + private void OnExtinguishEvent(Entity ent, ref ExtinguishEvent args) + { + if (ent.Comp.State == SmokableState.Lit) + SetSmokableState(ent, SmokableState.Burnt, ent); + } + public void SetSmokableState(EntityUid uid, SmokableState state, SmokableComponent? smokable = null, AppearanceComponent? appearance = null, ClothingComponent? clothing = null) { - if (!Resolve(uid, ref smokable, ref appearance, ref clothing)) + if (!Resolve(uid, ref smokable, ref appearance, ref clothing) || smokable.State == state) return; smokable.State = state; @@ -74,9 +79,19 @@ namespace Content.Server.Nutrition.EntitySystems _items.SetHeldPrefix(uid, newState); if (state == SmokableState.Lit) - _active.Add(uid); + { + EnsureComp(uid); + _audio.PlayPvs(smokable.LightSound, uid); + var igniteEvent = new IgnitedEvent(); + RaiseLocalEvent(uid, ref igniteEvent); + } else - _active.Remove(uid); + { + RemComp(uid); + _audio.PlayPvs(smokable.SnuffSound, uid); + var extinguishEvent = new ExtinguishedEvent(); + RaiseLocalEvent(uid, ref extinguishEvent); + } } private void OnSmokableIsHotEvent(Entity entity, ref IsHotEvent args) @@ -86,7 +101,7 @@ namespace Content.Server.Nutrition.EntitySystems private void OnSmokableShutdownEvent(Entity entity, ref ComponentShutdown args) { - _active.Remove(entity); + RemComp(entity); } private void OnSmokeableEquipEvent(Entity entity, ref GotEquippedEvent args) @@ -104,18 +119,12 @@ namespace Content.Server.Nutrition.EntitySystems if (_timer < UpdateTimer) return; - // TODO Use an "active smoke" component instead, EntityQuery over that. - foreach (var uid in _active.ToArray()) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _, out var smokable)) { - if (!TryComp(uid, out SmokableComponent? smokable)) - { - _active.Remove(uid); - continue; - } - if (!_solutionContainerSystem.TryGetSolution(uid, smokable.Solution, out var soln, out var solution)) { - _active.Remove(uid); + SetSmokableState(uid, SmokableState.Unlit, smokable); continue; } diff --git a/Content.Server/Objectives/Components/KillPersonConditionComponent.cs b/Content.Server/Objectives/Components/KillPersonConditionComponent.cs index 7bbc42ac98..534e8094b6 100644 --- a/Content.Server/Objectives/Components/KillPersonConditionComponent.cs +++ b/Content.Server/Objectives/Components/KillPersonConditionComponent.cs @@ -10,8 +10,14 @@ namespace Content.Server.Objectives.Components; public sealed partial class KillPersonConditionComponent : Component { /// - /// Whether the target must be truly dead, ignores missing evac. + /// Whether the target must be dead /// [DataField, ViewVariables(VVAccess.ReadWrite)] public bool RequireDead = false; + + /// + /// Whether the target must not be on evac + /// + [DataField, ViewVariables(VVAccess.ReadWrite)] + public bool RequireMaroon = false; } diff --git a/Content.Server/Objectives/Components/StealAreaComponent.cs b/Content.Server/Objectives/Components/StealAreaComponent.cs index 6139171753..4d7798f150 100644 --- a/Content.Server/Objectives/Components/StealAreaComponent.cs +++ b/Content.Server/Objectives/Components/StealAreaComponent.cs @@ -1,5 +1,4 @@ using Content.Server._CP14.Objectives.Systems; -using Content.Server._CP14.StealArea; using Content.Server.Objectives.Systems; using Content.Server.Thief.Systems; @@ -8,7 +7,7 @@ namespace Content.Server.Objectives.Components; /// /// An abstract component that allows other systems to count adjacent objects as "stolen" when controlling other systems /// -[RegisterComponent, Access(typeof(StealConditionSystem), typeof(ThiefBeaconSystem), typeof(CP14CurrencyCollectConditionSystem), typeof(CP14StealAreaAutoJobConnectSystem))] //CP14 add currency condition access +[RegisterComponent, Access(typeof(StealConditionSystem), typeof(ThiefBeaconSystem), typeof(CP14CurrencyCollectConditionSystem))] public sealed partial class StealAreaComponent : Component { [DataField] diff --git a/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs b/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs index 45ad68e28b..012fb80f76 100644 --- a/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs +++ b/Content.Server/Objectives/Systems/KillPersonConditionSystem.cs @@ -29,36 +29,38 @@ public sealed class KillPersonConditionSystem : EntitySystem if (!_target.GetTarget(uid, out var target)) return; - args.Progress = GetProgress(target.Value, comp.RequireDead); + args.Progress = GetProgress(target.Value, comp.RequireDead, comp.RequireMaroon); } - private float GetProgress(EntityUid target, bool requireDead) + private float GetProgress(EntityUid target, bool requireDead, bool requireMaroon) { // deleted or gibbed or something, counts as dead if (!TryComp(target, out var mind) || mind.OwnedEntity == null) return 1f; - // dead is success - if (_mind.IsCharacterDeadIc(mind)) - return 1f; + var targetDead = _mind.IsCharacterDeadIc(mind); + var targetOnShuttle = _emergencyShuttle.IsTargetEscaping(mind.OwnedEntity.Value); + if (!_config.GetCVar(CCVars.EmergencyShuttleEnabled) && requireMaroon) + { + requireDead = true; + requireMaroon = false; + } - // if the target has to be dead dead then don't check evac stuff - if (requireDead) + if (requireDead && !targetDead) return 0f; - // if evac is disabled then they really do have to be dead - if (!_config.GetCVar(CCVars.EmergencyShuttleEnabled)) + // Always failed if the target needs to be marooned and the shuttle hasn't even arrived yet + if (requireMaroon && !_emergencyShuttle.EmergencyShuttleArrived) return 0f; - // target is escaping so you fail - if (_emergencyShuttle.IsTargetEscaping(mind.OwnedEntity.Value)) - return 0f; + // If the shuttle hasn't left, give 50% progress if the target isn't on the shuttle as a "almost there!" + if (requireMaroon && !_emergencyShuttle.ShuttlesLeft) + return targetOnShuttle ? 0f : 0.5f; - // evac has left without the target, greentext since the target is afk in space with a full oxygen tank and coordinates off. - if (_emergencyShuttle.ShuttlesLeft) - return 1f; + // If the shuttle has already left, and the target isn't on it, 100% + if (requireMaroon && _emergencyShuttle.ShuttlesLeft) + return targetOnShuttle ? 0f : 1f; - // if evac is still here and target hasn't boarded, show 50% to give you an indicator that you are doing good - return _emergencyShuttle.EmergencyShuttleArrived ? 0.5f : 0f; + return 1f; // Good job you did it woohoo } } diff --git a/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs b/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs index ee99658f66..808829f6d9 100644 --- a/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs +++ b/Content.Server/Objectives/Systems/NinjaConditionsSystem.cs @@ -4,6 +4,7 @@ using Content.Server.Warps; using Content.Shared.Objectives.Components; using Content.Shared.Ninja.Components; using Content.Shared.Roles; +using Content.Shared.Warps; using Robust.Shared.Random; namespace Content.Server.Objectives.Systems; diff --git a/Content.Server/PAI/PAISystem.cs b/Content.Server/PAI/PAISystem.cs index b0f4f2476d..289b74b258 100644 --- a/Content.Server/PAI/PAISystem.cs +++ b/Content.Server/PAI/PAISystem.cs @@ -2,13 +2,17 @@ using Content.Server.Ghost.Roles; using Content.Server.Ghost.Roles.Components; using Content.Server.Instruments; using Content.Server.Kitchen.Components; +using Content.Server.Store.Systems; using Content.Shared.Interaction.Events; using Content.Shared.Mind.Components; using Content.Shared.PAI; using Content.Shared.Popups; +using Content.Shared.Store; +using Content.Shared.Store.Components; +using Content.Shared.Instruments; using Robust.Shared.Random; +using Robust.Shared.Prototypes; using System.Text; -using Robust.Shared.Player; namespace Content.Server.PAI; @@ -18,12 +22,13 @@ public sealed class PAISystem : SharedPAISystem [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly MetaDataSystem _metaData = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly StoreSystem _store = default!; [Dependency] private readonly ToggleableGhostRoleSystem _toggleableGhostRole = default!; /// /// Possible symbols that can be part of a scrambled pai's name. /// - private static readonly char[] SYMBOLS = new[] { '#', '~', '-', '@', '&', '^', '%', '$', '*', ' '}; + private static readonly char[] SYMBOLS = new[] { '#', '~', '-', '@', '&', '^', '%', '$', '*', ' ' }; public override void Initialize() { @@ -33,6 +38,8 @@ public sealed class PAISystem : SharedPAISystem SubscribeLocalEvent(OnMindAdded); SubscribeLocalEvent(OnMindRemoved); SubscribeLocalEvent(OnMicrowaved); + + SubscribeLocalEvent(OnShop); } private void OnUseInHand(EntityUid uid, PAIComponent component, UseInHandEvent args) @@ -100,6 +107,14 @@ public sealed class PAISystem : SharedPAISystem _metaData.SetEntityName(uid, val); } + private void OnShop(Entity ent, ref PAIShopActionEvent args) + { + if (!TryComp(ent, out var store)) + return; + + _store.ToggleUi(args.Performer, ent, store); + } + public void PAITurningOff(EntityUid uid) { // Close the instrument interface if it was open diff --git a/Content.Server/PDA/PdaSystem.cs b/Content.Server/PDA/PdaSystem.cs index a9527020b0..bfa8e1825d 100644 --- a/Content.Server/PDA/PdaSystem.cs +++ b/Content.Server/PDA/PdaSystem.cs @@ -2,22 +2,19 @@ using Content.Server.Access.Systems; using Content.Server.AlertLevel; using Content.Server.CartridgeLoader; using Content.Server.Chat.Managers; -using Content.Server.DeviceNetwork.Components; using Content.Server.Instruments; -using Content.Server.Light.EntitySystems; using Content.Server.PDA.Ringer; using Content.Server.Station.Systems; -using Content.Server.Store.Components; using Content.Server.Store.Systems; using Content.Server.Traitor.Uplink; using Content.Shared.Access.Components; using Content.Shared.CartridgeLoader; using Content.Shared.Chat; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.Light; -using Content.Shared.Light.Components; using Content.Shared.Light.EntitySystems; using Content.Shared.PDA; -using Content.Shared.Store.Components; +using Content.Shared.PDA.Ringer; using Robust.Server.Containers; using Robust.Server.GameObjects; using Robust.Shared.Containers; @@ -170,7 +167,7 @@ namespace Content.Server.PDA /// /// Send new UI state to clients, call if you modify something like uplink. /// - public void UpdatePdaUi(EntityUid uid, PdaComponent? pda = null) + public override void UpdatePdaUi(EntityUid uid, PdaComponent? pda = null) { if (!Resolve(uid, ref pda, false)) return; @@ -247,7 +244,7 @@ namespace Content.Server.PDA return; if (HasComp(uid)) - _ringer.ToggleRingerUI(uid, msg.Actor); + _ringer.TryToggleRingerUi(uid, msg.Actor); } private void OnUiMessage(EntityUid uid, PdaComponent pda, PdaShowMusicMessage msg) @@ -276,7 +273,7 @@ namespace Content.Server.PDA if (TryComp(uid, out var uplink)) { - _ringer.LockUplink(uid, uplink); + _ringer.LockUplink((uid, uplink)); UpdatePdaUi(uid, pda); } } diff --git a/Content.Server/PDA/Ringer/RingerComponent.cs b/Content.Server/PDA/Ringer/RingerComponent.cs deleted file mode 100644 index 55dc458b74..0000000000 --- a/Content.Server/PDA/Ringer/RingerComponent.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Content.Shared.PDA; - -namespace Content.Server.PDA.Ringer -{ - [RegisterComponent] - public sealed partial class RingerComponent : Component - { - [DataField("ringtone")] - public Note[] Ringtone = new Note[SharedRingerSystem.RingtoneLength]; - - [DataField("timeElapsed")] - public float TimeElapsed = 0; - - /// - /// Keeps track of how many notes have elapsed if the ringer component is playing. - /// - [DataField("noteCount")] - public int NoteCount = 0; - - /// - /// How far the sound projects in metres. - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("range")] - public float Range = 3f; - - [ViewVariables(VVAccess.ReadWrite)] - [DataField("volume")] - public float Volume = -4f; - } - - [RegisterComponent] - public sealed partial class ActiveRingerComponent : Component - { - } -} diff --git a/Content.Server/PDA/Ringer/RingerSystem.cs b/Content.Server/PDA/Ringer/RingerSystem.cs index 0cc4ea86c2..b47ca0fde3 100644 --- a/Content.Server/PDA/Ringer/RingerSystem.cs +++ b/Content.Server/PDA/Ringer/RingerSystem.cs @@ -1,253 +1,134 @@ using System.Linq; -using System.Runtime.InteropServices; -using Content.Server.Store.Components; using Content.Server.Store.Systems; using Content.Shared.PDA; using Content.Shared.PDA.Ringer; -using Content.Shared.Popups; -using Content.Shared.Store; using Content.Shared.Store.Components; -using Robust.Server.GameObjects; -using Robust.Shared.Audio; -using Robust.Shared.Network; -using Robust.Shared.Player; using Robust.Shared.Random; -using Robust.Shared.Timing; -using Robust.Shared.Utility; -using Robust.Server.Audio; -namespace Content.Server.PDA.Ringer +namespace Content.Server.PDA.Ringer; + +/// +/// Handles the server-side logic for . +/// +public sealed class RingerSystem : SharedRingerSystem { - public sealed class RingerSystem : SharedRingerSystem + [Dependency] private readonly IRobustRandom _random = default!; + + /// + public override void Initialize() { - [Dependency] private readonly PdaSystem _pda = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly UserInterfaceSystem _ui = default!; - [Dependency] private readonly AudioSystem _audio = default!; - [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - [Dependency] private readonly TransformSystem _transform = default!; + base.Initialize(); - private readonly Dictionary _lastSetRingtoneAt = new(); + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnCurrencyInsert); - public override void Initialize() - { - base.Initialize(); - - // General Event Subscriptions - SubscribeLocalEvent(RandomizeRingtone); - SubscribeLocalEvent(RandomizeUplinkCode); - // RingerBoundUserInterface Subscriptions - SubscribeLocalEvent(OnSetRingtone); - SubscribeLocalEvent(OnSetUplinkRingtone); - SubscribeLocalEvent(RingerPlayRingtone); - SubscribeLocalEvent(UpdateRingerUserInterfaceDriver); - - SubscribeLocalEvent(OnCurrencyInsert); - } - - //Event Functions - - private void OnCurrencyInsert(EntityUid uid, RingerComponent ringer, CurrencyInsertAttemptEvent args) - { - if (!TryComp(uid, out var uplink)) - { - args.Cancel(); - return; - } - - // if the store can be locked, it must be unlocked first before inserting currency. Stops traitor checking. - if (!uplink.Unlocked) - args.Cancel(); - } - - private void RingerPlayRingtone(EntityUid uid, RingerComponent ringer, RingerPlayRingtoneMessage args) - { - EnsureComp(uid); - - _popupSystem.PopupEntity(Loc.GetString("comp-ringer-vibration-popup"), uid, Filter.Pvs(uid, 0.05f), false, PopupType.Small); - - UpdateRingerUserInterface(uid, ringer, true); - } - - public void RingerPlayRingtone(Entity ent) - { - if (!Resolve(ent, ref ent.Comp)) - return; - - EnsureComp(ent); - - _popupSystem.PopupEntity(Loc.GetString("comp-ringer-vibration-popup"), ent, Filter.Pvs(ent, 0.05f), false, PopupType.Medium); - - UpdateRingerUserInterface(ent, ent.Comp, true); - } - - private void UpdateRingerUserInterfaceDriver(EntityUid uid, RingerComponent ringer, RingerRequestUpdateInterfaceMessage args) - { - UpdateRingerUserInterface(uid, ringer, HasComp(uid)); - } - - private void OnSetRingtone(EntityUid uid, RingerComponent ringer, RingerSetRingtoneMessage args) - { - if (!TryComp(args.Actor, out ActorComponent? actorComp)) - return; - - ref var lastSetAt = ref CollectionsMarshal.GetValueRefOrAddDefault(_lastSetRingtoneAt, actorComp.PlayerSession.UserId, out var exists); - - // Delay on the client is 0.333, 0.25 is still enough and gives some leeway in case of small time differences - if (exists && lastSetAt > _gameTiming.CurTime - TimeSpan.FromMilliseconds(250)) - return; - - lastSetAt = _gameTiming.CurTime; - - // Client sent us an updated ringtone so set it to that. - if (args.Ringtone.Length != RingtoneLength) - return; - - var ev = new BeforeRingtoneSetEvent(args.Ringtone); - RaiseLocalEvent(uid, ref ev); - if (ev.Handled) - return; - - UpdateRingerRingtone(uid, ringer, args.Ringtone); - } - - private void OnSetUplinkRingtone(EntityUid uid, RingerUplinkComponent uplink, ref BeforeRingtoneSetEvent args) - { - if (uplink.Code.SequenceEqual(args.Ringtone) && HasComp(uid)) - { - uplink.Unlocked = !uplink.Unlocked; - if (TryComp(uid, out var pda)) - _pda.UpdatePdaUi(uid, pda); - - // can't keep store open after locking it - if (!uplink.Unlocked) - _ui.CloseUi(uid, StoreUiKey.Key); - - // no saving the code to prevent meta click set on sus guys pda -> wewlad - args.Handled = true; - } - } - - /// - /// Locks the uplink and closes the window, if its open - /// - /// - /// Will not update the PDA ui so you must do that yourself if needed - /// - public void LockUplink(EntityUid uid, RingerUplinkComponent? uplink) - { - if (!Resolve(uid, ref uplink, true)) - return; - - uplink.Unlocked = false; - _ui.CloseUi(uid, StoreUiKey.Key); - } - - public void RandomizeRingtone(EntityUid uid, RingerComponent ringer, MapInitEvent args) - { - UpdateRingerRingtone(uid, ringer, GenerateRingtone()); - } - - public void RandomizeUplinkCode(EntityUid uid, RingerUplinkComponent uplink, ComponentInit args) - { - uplink.Code = GenerateRingtone(); - } - - //Non Event Functions - - private Note[] GenerateRingtone() - { - // Default to using C pentatonic so it at least sounds not terrible. - return GenerateRingtone(new[] - { - Note.C, - Note.D, - Note.E, - Note.G, - Note.A - }); - } - - private Note[] GenerateRingtone(Note[] notes) - { - var ringtone = new Note[RingtoneLength]; - - for (var i = 0; i < RingtoneLength; i++) - { - ringtone[i] = _random.Pick(notes); - } - - return ringtone; - } - - private bool UpdateRingerRingtone(EntityUid uid, RingerComponent ringer, Note[] ringtone) - { - // Assume validation has already happened. - ringer.Ringtone = ringtone; - UpdateRingerUserInterface(uid, ringer, HasComp(uid)); - - return true; - } - - private void UpdateRingerUserInterface(EntityUid uid, RingerComponent ringer, bool isPlaying) - { - _ui.SetUiState(uid, RingerUiKey.Key, new RingerUpdateState(isPlaying, ringer.Ringtone)); - } - - public bool ToggleRingerUI(EntityUid uid, EntityUid actor) - { - _ui.TryToggleUi(uid, RingerUiKey.Key, actor); - return true; - } - - public override void Update(float frameTime) //Responsible for actually playing the ringtone - { - var remove = new RemQueue(); - - var pdaQuery = EntityQueryEnumerator(); - while (pdaQuery.MoveNext(out var uid, out var ringer, out var _)) - { - ringer.TimeElapsed += frameTime; - - if (ringer.TimeElapsed < NoteDelay) - continue; - - ringer.TimeElapsed -= NoteDelay; - var ringerXform = Transform(uid); - - _audio.PlayEntity( - GetSound(ringer.Ringtone[ringer.NoteCount]), - Filter.Empty().AddInRange(_transform.GetMapCoordinates(uid, ringerXform), ringer.Range), - uid, - true, - AudioParams.Default.WithMaxDistance(ringer.Range).WithVolume(ringer.Volume) - ); - - ringer.NoteCount++; - - if (ringer.NoteCount > RingtoneLength - 1) - { - remove.Add(uid); - UpdateRingerUserInterface(uid, ringer, false); - ringer.TimeElapsed = 0; - ringer.NoteCount = 0; - break; - } - } - - foreach (var ent in remove) - { - RemComp(ent); - } - } - - private static string GetSound(Note note) - { - return new ResPath("/Audio/Effects/RingtoneNotes/" + note.ToString().ToLower()) + ".ogg"; - } + SubscribeLocalEvent(OnGenerateUplinkCode); } - [ByRefEvent] - public record struct BeforeRingtoneSetEvent(Note[] Ringtone, bool Handled = false); + /// + /// Randomizes a ringtone for on . + /// + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + UpdateRingerRingtone(ent, GenerateRingtone()); + } + + /// + /// Handles the for . + /// + private void OnCurrencyInsert(Entity ent, ref CurrencyInsertAttemptEvent args) + { + // TODO: Store isn't predicted, can't move it to shared + if (!TryComp(ent, out var uplink)) + { + args.Cancel(); + return; + } + + // if the store can be locked, it must be unlocked first before inserting currency. Stops traitor checking. + if (!uplink.Unlocked) + args.Cancel(); + } + + /// + /// Handles the for generating an uplink code. + /// + private void OnGenerateUplinkCode(Entity ent, ref GenerateUplinkCodeEvent ev) + { + var code = GenerateRingtone(); + + // Set the code on the component + ent.Comp.Code = code; + + // Return the code via the event + ev.Code = code; + } + + /// + public override bool TryToggleUplink(EntityUid uid, Note[] ringtone, EntityUid? user = null) + { + if (!TryComp(uid, out var uplink)) + return false; + + if (!HasComp(uid)) + return false; + + // Wasn't generated yet + if (uplink.Code is null) + return false; + + // On the server, we always check if the code matches + if (!uplink.Code.SequenceEqual(ringtone)) + return false; + + return ToggleUplinkInternal((uid, uplink)); + } + + /// + /// Generates a random ringtone using the C pentatonic scale. + /// + /// An array of Notes representing the ringtone. + /// The logic for this is on the Server so that we don't get a different result on the Client every time. + private Note[] GenerateRingtone() + { + // Default to using C pentatonic so it at least sounds not terrible. + return GenerateRingtone(new[] + { + Note.C, + Note.D, + Note.E, + Note.G, + Note.A + }); + } + + /// + /// Generates a random ringtone using the specified notes. + /// + /// The notes to choose from when generating the ringtone. + /// An array of Notes representing the ringtone. + /// The logic for this is on the Server so that we don't get a different result on the Client every time. + private Note[] GenerateRingtone(Note[] notes) + { + var ringtone = new Note[RingtoneLength]; + + for (var i = 0; i < RingtoneLength; i++) + { + ringtone[i] = _random.Pick(notes); + } + + return ringtone; + } +} + +/// +/// Event raised to generate a new uplink code for a PDA. +/// +[ByRefEvent] +public record struct GenerateUplinkCodeEvent +{ + /// + /// The generated uplink code (filled in by the event handler). + /// + public Note[]? Code; } diff --git a/Content.Server/PDA/Ringer/RingerUplinkComponent.cs b/Content.Server/PDA/Ringer/RingerUplinkComponent.cs deleted file mode 100644 index 4ffedf3af4..0000000000 --- a/Content.Server/PDA/Ringer/RingerUplinkComponent.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Content.Shared.PDA; - -namespace Content.Server.PDA.Ringer; - -/// -/// Opens the store ui when the ringstone is set to the secret code. -/// Traitors are told the code when greeted. -/// -[RegisterComponent, Access(typeof(RingerSystem))] -public sealed partial class RingerUplinkComponent : Component -{ - /// - /// Notes to set ringtone to in order to lock or unlock the uplink. - /// Automatically initialized to random notes. - /// - [DataField("code")] - public Note[] Code = new Note[RingerSystem.RingtoneLength]; - - /// - /// Whether to show the toggle uplink button in pda settings. - /// - [DataField("unlocked"), ViewVariables(VVAccess.ReadWrite)] - public bool Unlocked; -} diff --git a/Content.Server/Parallax/BiomeSystem.cs b/Content.Server/Parallax/BiomeSystem.cs index dfa084c283..30ece7b4a6 100644 --- a/Content.Server/Parallax/BiomeSystem.cs +++ b/Content.Server/Parallax/BiomeSystem.cs @@ -256,7 +256,7 @@ public sealed partial class BiomeSystem : SharedBiomeSystem private void OnFTLStarted(ref FTLStartedEvent ev) { - var targetMap = ev.TargetCoordinates.ToMap(EntityManager, _transform); + var targetMap = _transform.ToMapCoordinates(ev.TargetCoordinates); var targetMapUid = _mapManager.GetMapEntityId(targetMap.MapId); if (!TryComp(targetMapUid, out var biome)) @@ -324,7 +324,7 @@ public sealed partial class BiomeSystem : SharedBiomeSystem private bool CanLoad(EntityUid uid) { - return !_ghostQuery.HasComp(uid) || _tags.HasTag(uid, AllowBiomeLoadingTag); + return !_ghostQuery.HasComp(uid);// CP14 - Admin biome loading break mapping || _tags.HasTag(uid, AllowBiomeLoadingTag); } public override void Update(float frameTime) diff --git a/Content.Server/Pinpointer/NavMapSystem.cs b/Content.Server/Pinpointer/NavMapSystem.cs index da9ab20a39..2819f5ba42 100644 --- a/Content.Server/Pinpointer/NavMapSystem.cs +++ b/Content.Server/Pinpointer/NavMapSystem.cs @@ -13,6 +13,7 @@ using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Timing; using System.Diagnostics.CodeAnalysis; +using Content.Shared.Warps; namespace Content.Server.Pinpointer; @@ -436,12 +437,12 @@ public sealed partial class NavMapSystem : SharedNavMapSystem /// to the position of from the nearest beacon. /// [PublicAPI] - public string GetNearestBeaconString(Entity ent) + public string GetNearestBeaconString(Entity ent, bool onlyName = false) { if (!Resolve(ent, ref ent.Comp)) return Loc.GetString("nav-beacon-pos-no-beacons"); - return GetNearestBeaconString(_transformSystem.GetMapCoordinates(ent, ent.Comp)); + return GetNearestBeaconString(_transformSystem.GetMapCoordinates(ent, ent.Comp), onlyName); } /// @@ -449,11 +450,14 @@ public sealed partial class NavMapSystem : SharedNavMapSystem /// to from the nearest beacon. /// - public string GetNearestBeaconString(MapCoordinates coordinates) + public string GetNearestBeaconString(MapCoordinates coordinates, bool onlyName = false) { if (!TryGetNearestBeacon(coordinates, out var beacon, out var pos)) return Loc.GetString("nav-beacon-pos-no-beacons"); + if (onlyName) + return beacon.Value.Comp.Text!; + var gridOffset = Angle.Zero; if (_mapManager.TryFindGridAt(pos.Value, out var grid, out _)) gridOffset = Transform(grid).LocalRotation; diff --git a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs index 1fd4af9da6..15e384d38e 100644 --- a/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs +++ b/Content.Server/Players/PlayTimeTracking/PlayTimeTrackingSystem.cs @@ -5,7 +5,6 @@ using Content.Server.Afk; using Content.Server.Afk.Events; using Content.Server.GameTicking; using Content.Server.GameTicking.Events; -using Content.Server.Mind; using Content.Server.Preferences.Managers; using Content.Server.Station.Events; using Content.Shared.CCVar; @@ -33,7 +32,6 @@ public sealed class PlayTimeTrackingSystem : EntitySystem [Dependency] private readonly IAdminManager _adminManager = default!; [Dependency] private readonly IAfkManager _afk = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; - [Dependency] private readonly MindSystem _minds = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IServerPreferencesManager _preferencesManager = default!; [Dependency] private readonly IPrototypeManager _prototypes = default!; @@ -123,7 +121,7 @@ public sealed class PlayTimeTrackingSystem : EntitySystem private void OnRoleEvent(RoleEvent ev) { - if (_minds.TryGetSession(ev.Mind, out var session)) + if (_playerManager.TryGetSessionById(ev.Mind.UserId, out var session)) _tracking.QueueRefreshTrackers(session); } diff --git a/Content.Server/Pointing/EntitySystems/PointingSystem.cs b/Content.Server/Pointing/EntitySystems/PointingSystem.cs index 23c70d78f4..e12cb24ca7 100644 --- a/Content.Server/Pointing/EntitySystems/PointingSystem.cs +++ b/Content.Server/Pointing/EntitySystems/PointingSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.Ghost; using Content.Shared.IdentityManagement; using Content.Shared.Input; using Content.Shared.Interaction; +using Content.Shared.Inventory; using Content.Shared.Mind; using Content.Shared.Pointing; using Content.Shared.Popups; @@ -16,6 +17,7 @@ using JetBrains.Annotations; using Robust.Server.GameObjects; using Robust.Server.Player; using Robust.Shared.Configuration; +using Robust.Shared.Containers; using Robust.Shared.Enums; using Robust.Shared.GameStates; using Robust.Shared.Input.Binding; @@ -36,6 +38,7 @@ namespace Content.Server.Pointing.EntitySystems [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly RotateToFaceSystem _rotateToFaceSystem = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly VisibilitySystem _visibilitySystem = default!; [Dependency] private readonly SharedMindSystem _minds = default!; @@ -208,15 +211,66 @@ namespace Content.Server.Pointing.EntitySystems { var pointedName = Identity.Entity(pointed, EntityManager); - selfMessage = player == pointed - ? Loc.GetString("pointing-system-point-at-self") - : Loc.GetString("pointing-system-point-at-other", ("other", pointedName)); + EntityUid? containingInventory = null; + // Search up through the target's containing containers until we find an inventory + var inventoryQuery = GetEntityQuery(); + foreach (var container in _container.GetContainingContainers(pointed)) + { + if (inventoryQuery.HasComp(container.Owner)) + { + // We want the innermost inventory, since that's the "owner" of the item + containingInventory = container.Owner; + break; + } + } - viewerMessage = player == pointed - ? Loc.GetString("pointing-system-point-at-self-others", ("otherName", playerName), ("other", playerName)) - : Loc.GetString("pointing-system-point-at-other-others", ("otherName", playerName), ("other", pointedName)); + var pointingAtSelf = player == pointed; - viewerPointedAtMessage = Loc.GetString("pointing-system-point-at-you-other", ("otherName", playerName)); + // Are we in a mob's inventory? + if (containingInventory != null) + { + var item = pointed; + var itemName = Identity.Entity(item, EntityManager); + + // Target the pointing at the item's holder + pointed = containingInventory.Value; + pointedName = Identity.Entity(pointed, EntityManager); + var pointingAtOwnItem = player == pointed; + + if (pointingAtOwnItem) + { + // You point at your item + selfMessage = Loc.GetString("pointing-system-point-in-own-inventory-self", ("item", itemName)); + // Urist McPointer points at his item + viewerMessage = Loc.GetString("pointing-system-point-in-own-inventory-others", ("item", itemName), ("pointer", playerName)); + } + else + { + // You point at Urist McHands' item + selfMessage = Loc.GetString("pointing-system-point-in-other-inventory-self", ("item", itemName), ("wearer", pointedName)); + // Urist McPointer points at Urist McWearer's item + viewerMessage = Loc.GetString("pointing-system-point-in-other-inventory-others", ("item", itemName), ("pointer", playerName), ("wearer", pointedName)); + // Urist McPointer points at your item + viewerPointedAtMessage = Loc.GetString("pointing-system-point-in-other-inventory-target", ("item", itemName), ("pointer", playerName)); + } + } + else + { + selfMessage = pointingAtSelf + // You point at yourself + ? Loc.GetString("pointing-system-point-at-self") + // You point at Urist McTarget + : Loc.GetString("pointing-system-point-at-other", ("other", pointedName)); + + viewerMessage = pointingAtSelf + // Urist McPointer points at himself + ? Loc.GetString("pointing-system-point-at-self-others", ("otherName", playerName), ("other", playerName)) + // Urist McPointer points at Urist McTarget + : Loc.GetString("pointing-system-point-at-other-others", ("otherName", playerName), ("other", pointedName)); + + // Urist McPointer points at you + viewerPointedAtMessage = Loc.GetString("pointing-system-point-at-you-other", ("otherName", playerName)); + } var ev = new AfterPointedAtEvent(pointed); RaiseLocalEvent(player, ref ev); diff --git a/Content.Server/Points/PointSystem.cs b/Content.Server/Points/PointSystem.cs index cf33f8e3c6..77c4793c92 100644 --- a/Content.Server/Points/PointSystem.cs +++ b/Content.Server/Points/PointSystem.cs @@ -25,7 +25,7 @@ public sealed class PointSystem : SharedPointSystem private void OnStartup(EntityUid uid, PointManagerComponent component, ComponentStartup args) { - _pvsOverride.AddGlobalOverride(GetNetEntity(uid)); + _pvsOverride.AddGlobalOverride(uid); } /// diff --git a/Content.Server/Polymorph/Systems/PolymorphSystem.Map.cs b/Content.Server/Polymorph/Systems/PolymorphSystem.Map.cs index 120e04eeb0..1db624439a 100644 --- a/Content.Server/Polymorph/Systems/PolymorphSystem.Map.cs +++ b/Content.Server/Polymorph/Systems/PolymorphSystem.Map.cs @@ -31,8 +31,7 @@ public sealed partial class PolymorphSystem if (PausedMap != null && Exists(PausedMap)) return; - var newmap = _mapManager.CreateMap(); - _mapManager.SetMapPaused(newmap, true); - PausedMap = _mapManager.GetMapEntityId(newmap); + PausedMap = _map.CreateMap(); + _map.SetPaused(PausedMap.Value, true); } } diff --git a/Content.Server/Polymorph/Systems/PolymorphSystem.cs b/Content.Server/Polymorph/Systems/PolymorphSystem.cs index e305109ad5..b9d4afc889 100644 --- a/Content.Server/Polymorph/Systems/PolymorphSystem.cs +++ b/Content.Server/Polymorph/Systems/PolymorphSystem.cs @@ -2,9 +2,11 @@ using Content.Server.Actions; using Content.Server.Humanoid; using Content.Server.Inventory; using Content.Server.Mind.Commands; +using Content.Shared.Nutrition; using Content.Server.Polymorph.Components; using Content.Shared.Actions; using Content.Shared.Buckle; +using Content.Shared.Coordinates; using Content.Shared.Damage; using Content.Shared.Destructible; using Content.Shared.Hands.EntitySystems; @@ -28,7 +30,7 @@ namespace Content.Server.Polymorph.Systems; public sealed partial class PolymorphSystem : EntitySystem { [Dependency] private readonly IComponentFactory _compFact = default!; - [Dependency] private readonly IMapManager _mapManager = default!; + [Dependency] private readonly SharedMapSystem _map = default!; [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly IGameTiming _gameTiming = default!; [Dependency] private readonly ActionsSystem _actions = default!; @@ -277,6 +279,10 @@ public sealed partial class PolymorphSystem : EntitySystem var ev = new PolymorphedEvent(uid, child, false); RaiseLocalEvent(uid, ref ev); + // visual effect spawn + if (configuration.EffectProto != null) + SpawnAttachedTo(configuration.EffectProto, child.ToCoordinates()); + return child; } @@ -353,6 +359,10 @@ public sealed partial class PolymorphSystem : EntitySystem var ev = new PolymorphedEvent(uid, parent, true); RaiseLocalEvent(uid, ref ev); + // visual effect spawn + if (component.Configuration.EffectProto != null) + SpawnAttachedTo(component.Configuration.EffectProto, parent.ToCoordinates()); + if (component.Configuration.ExitPolymorphPopup != null) _popup.PopupEntity(Loc.GetString(component.Configuration.ExitPolymorphPopup, ("parent", Identity.Entity(uid, EntityManager)), diff --git a/Content.Server/Popups/PopupSystem.cs b/Content.Server/Popups/PopupSystem.cs index 9338d81b92..aec4dbbfb3 100644 --- a/Content.Server/Popups/PopupSystem.cs +++ b/Content.Server/Popups/PopupSystem.cs @@ -35,6 +35,16 @@ namespace Content.Server.Popups RaiseNetworkEvent(new PopupCursorEvent(message, type), actor.PlayerSession); } + public override void PopupPredictedCursor(string? message, ICommonSession recipient, PopupType type = PopupType.Small) + { + // Do nothing, since the client already predicted the popup. + } + + public override void PopupPredictedCursor(string? message, EntityUid recipient, PopupType type = PopupType.Small) + { + // Do nothing, since the client already predicted the popup. + } + public override void PopupCoordinates(string? message, EntityCoordinates coordinates, Filter filter, bool replayRecord, PopupType type = PopupType.Small) { if (message == null) diff --git a/Content.Server/Power/Components/ExtensionCableProviderComponent.cs b/Content.Server/Power/Components/ExtensionCableProviderComponent.cs index 27dae2ed76..a0bfc75f80 100644 --- a/Content.Server/Power/Components/ExtensionCableProviderComponent.cs +++ b/Content.Server/Power/Components/ExtensionCableProviderComponent.cs @@ -13,7 +13,7 @@ namespace Content.Server.Power.Components [DataField("transferRange")] public int TransferRange { get; set; } = 3; - [ViewVariables] public List LinkedReceivers { get; } = new(); + [ViewVariables] public List> LinkedReceivers { get; } = new(); /// /// If s should consider connecting to this. diff --git a/Content.Server/Power/Components/ExtensionCableReceiverComponent.cs b/Content.Server/Power/Components/ExtensionCableReceiverComponent.cs index 58e5c05dd0..a4fbdaceac 100644 --- a/Content.Server/Power/Components/ExtensionCableReceiverComponent.cs +++ b/Content.Server/Power/Components/ExtensionCableReceiverComponent.cs @@ -7,7 +7,7 @@ namespace Content.Server.Power.Components public sealed partial class ExtensionCableReceiverComponent : Component { [ViewVariables] - public ExtensionCableProviderComponent? Provider { get; set; } + public Entity? Provider { get; set; } [ViewVariables] public bool Connectable = false; diff --git a/Content.Server/Power/EntitySystems/BatterySystem.cs b/Content.Server/Power/EntitySystems/BatterySystem.cs index 6e636622e6..89e3ed2c1f 100644 --- a/Content.Server/Power/EntitySystems/BatterySystem.cs +++ b/Content.Server/Power/EntitySystems/BatterySystem.cs @@ -13,7 +13,7 @@ namespace Content.Server.Power.EntitySystems [UsedImplicitly] public sealed class BatterySystem : EntitySystem { - [Dependency] protected readonly IGameTiming Timing = default!; + [Dependency] private readonly IGameTiming _timing = default!; public override void Initialize() { @@ -92,7 +92,7 @@ namespace Content.Server.Power.EntitySystems if (comp.AutoRechargePause) { - if (comp.NextAutoRecharge > Timing.CurTime) + if (comp.NextAutoRecharge > _timing.CurTime) continue; } @@ -179,7 +179,7 @@ namespace Content.Server.Power.EntitySystems if (value < 0) value = batteryself.AutoRechargePauseTime; - if (Timing.CurTime + TimeSpan.FromSeconds(value) <= batteryself.NextAutoRecharge) + if (_timing.CurTime + TimeSpan.FromSeconds(value) <= batteryself.NextAutoRecharge) return; SetChargeCooldown(uid, batteryself.AutoRechargePauseTime, batteryself); @@ -194,9 +194,9 @@ namespace Content.Server.Power.EntitySystems return; if (value >= 0) - batteryself.NextAutoRecharge = Timing.CurTime + TimeSpan.FromSeconds(value); + batteryself.NextAutoRecharge = _timing.CurTime + TimeSpan.FromSeconds(value); else - batteryself.NextAutoRecharge = Timing.CurTime; + batteryself.NextAutoRecharge = _timing.CurTime; } /// diff --git a/Content.Server/Power/EntitySystems/CableSystem.Placer.cs b/Content.Server/Power/EntitySystems/CableSystem.Placer.cs index a5cf54fae0..5d9105a3fc 100644 --- a/Content.Server/Power/EntitySystems/CableSystem.Placer.cs +++ b/Content.Server/Power/EntitySystems/CableSystem.Placer.cs @@ -28,17 +28,18 @@ public sealed partial class CableSystem if (component.CablePrototypeId == null) return; - if(!TryComp(_transform.GetGrid(args.ClickLocation), out var grid)) + if (!TryComp(_transform.GetGrid(args.ClickLocation), out var grid)) return; var gridUid = _transform.GetGrid(args.ClickLocation)!.Value; - var snapPos = grid.TileIndicesFor(args.ClickLocation); - var tileDef = (ContentTileDefinition) _tileManager[_map.GetTileRef(gridUid, grid,snapPos).Tile.TypeId]; + var snapPos = _map.TileIndicesFor((gridUid, grid), args.ClickLocation); + var tileDef = (ContentTileDefinition)_tileManager[_map.GetTileRef(gridUid, grid, snapPos).Tile.TypeId]; if (!tileDef.IsSubFloor || !tileDef.Sturdy) return; - foreach (var anchored in grid.GetAnchoredEntities(snapPos)) + + foreach (var anchored in _map.GetAnchoredEntities((gridUid, grid), snapPos)) { if (TryComp(anchored, out var wire) && wire.CableType == component.BlockingCableType) return; @@ -47,7 +48,7 @@ public sealed partial class CableSystem if (TryComp(placer, out var stack) && !_stack.Use(placer, 1, stack)) return; - var newCable = EntityManager.SpawnEntity(component.CablePrototypeId, grid.GridTileToLocal(snapPos)); + var newCable = EntityManager.SpawnEntity(component.CablePrototypeId, _map.GridTileToLocal(gridUid, grid, snapPos)); _adminLogger.Add(LogType.Construction, LogImpact.Low, $"{ToPrettyString(args.User):player} placed {ToPrettyString(newCable):cable} at {Transform(newCable).Coordinates}"); args.Handled = true; diff --git a/Content.Server/Power/EntitySystems/CableSystem.cs b/Content.Server/Power/EntitySystems/CableSystem.cs index 8fc7edacf3..1aeddf6e29 100644 --- a/Content.Server/Power/EntitySystems/CableSystem.cs +++ b/Content.Server/Power/EntitySystems/CableSystem.cs @@ -69,7 +69,7 @@ public sealed partial class CableSystem : EntitySystem // anchor state can change as a result of deletion (detach to null). // We don't want to spawn an entity when deleted. - if (!TryLifeStage(uid, out var life) || life >= EntityLifeStage.Terminating) + if (TerminatingOrDeleted(uid)) return; // This entity should not be un-anchorable. But this can happen if the grid-tile is deleted (RCD, explosion, diff --git a/Content.Server/Power/EntitySystems/ExtensionCableSystem.cs b/Content.Server/Power/EntitySystems/ExtensionCableSystem.cs index 85e553031f..89f32166ae 100644 --- a/Content.Server/Power/EntitySystems/ExtensionCableSystem.cs +++ b/Content.Server/Power/EntitySystems/ExtensionCableSystem.cs @@ -8,6 +8,8 @@ namespace Content.Server.Power.EntitySystems { public sealed class ExtensionCableSystem : EntitySystem { + [Dependency] private readonly SharedMapSystem _map = default!; + public override void Initialize() { base.Initialize(); @@ -34,17 +36,17 @@ namespace Content.Server.Power.EntitySystems return; provider.TransferRange = range; - ResetReceivers(provider); + ResetReceivers((uid, provider)); } - private void OnProviderStarted(EntityUid uid, ExtensionCableProviderComponent provider, ComponentStartup args) + private void OnProviderStarted(Entity provider, ref ComponentStartup args) { - Connect(uid, provider); + Connect(provider); } - private void OnProviderShutdown(EntityUid uid, ExtensionCableProviderComponent provider, ComponentShutdown args) + private void OnProviderShutdown(Entity provider, ref ComponentShutdown args) { - var xform = Transform(uid); + var xform = Transform(provider); // If grid deleting no need to update power. if (HasComp(xform.GridUid) && @@ -53,54 +55,54 @@ namespace Content.Server.Power.EntitySystems return; } - Disconnect(uid, provider); + Disconnect(provider); } - private void OnProviderAnchorStateChanged(EntityUid uid, ExtensionCableProviderComponent provider, ref AnchorStateChangedEvent args) + private void OnProviderAnchorStateChanged(Entity provider, ref AnchorStateChangedEvent args) { if (args.Anchored) - Connect(uid, provider); + Connect(provider); else - Disconnect(uid, provider); + Disconnect(provider); } - private void Connect(EntityUid uid, ExtensionCableProviderComponent provider) + private void Connect(Entity provider) { - provider.Connectable = true; + provider.Comp.Connectable = true; - foreach (var receiver in FindAvailableReceivers(uid, provider.TransferRange)) + foreach (var receiver in FindAvailableReceivers(provider.Owner, provider.Comp.TransferRange)) { - receiver.Comp.Provider?.LinkedReceivers.Remove(receiver); + receiver.Comp.Provider?.Comp.LinkedReceivers.Remove(receiver); receiver.Comp.Provider = provider; - provider.LinkedReceivers.Add(receiver); + provider.Comp.LinkedReceivers.Add(receiver); RaiseLocalEvent(receiver, new ProviderConnectedEvent(provider), broadcast: false); - RaiseLocalEvent(uid, new ReceiverConnectedEvent(receiver), broadcast: false); + RaiseLocalEvent(provider, new ReceiverConnectedEvent(receiver), broadcast: false); } } - private void Disconnect(EntityUid uid, ExtensionCableProviderComponent provider) + private void Disconnect(Entity provider) { // same as OnProviderShutdown - provider.Connectable = false; + provider.Comp.Connectable = false; ResetReceivers(provider); } - private void OnProviderReAnchor(EntityUid uid, ExtensionCableProviderComponent component, ref ReAnchorEvent args) + private void OnProviderReAnchor(Entity provider, ref ReAnchorEvent args) { - Disconnect(uid, component); - Connect(uid, component); + Disconnect(provider); + Connect(provider); } - private void ResetReceivers(ExtensionCableProviderComponent provider) + private void ResetReceivers(Entity provider) { var providerId = provider.Owner; - var receivers = provider.LinkedReceivers.ToArray(); - provider.LinkedReceivers.Clear(); + var receivers = provider.Comp.LinkedReceivers.ToArray(); + provider.Comp.LinkedReceivers.Clear(); foreach (var receiver in receivers) { var receiverId = receiver.Owner; - receiver.Provider = null; + receiver.Comp.Provider = null; RaiseLocalEvent(receiverId, new ProviderDisconnectedEvent(provider), broadcast: false); RaiseLocalEvent(providerId, new ReceiverDisconnectedEvent((receiverId, receiver)), broadcast: false); } @@ -126,7 +128,7 @@ namespace Content.Server.Power.EntitySystems if (!TryComp(xform.GridUid, out MapGridComponent? grid)) yield break; - var nearbyEntities = grid.GetCellsInSquareArea(coordinates, (int) Math.Ceiling(range / grid.TileSize)); + var nearbyEntities = _map.GetCellsInSquareArea(xform.GridUid.Value, grid, coordinates, (int)Math.Ceiling(range / grid.TileSize)); foreach (var entity in nearbyEntities) { @@ -162,88 +164,88 @@ namespace Content.Server.Power.EntitySystems if (provider != null) { - RaiseLocalEvent(provider.Owner, new ReceiverDisconnectedEvent((uid, receiver)), broadcast: false); - provider.LinkedReceivers.Remove(receiver); + RaiseLocalEvent(provider.Value, new ReceiverDisconnectedEvent((uid, receiver)), broadcast: false); + provider.Value.Comp.LinkedReceivers.Remove((uid, receiver)); } receiver.ReceptionRange = range; - TryFindAndSetProvider(receiver); + TryFindAndSetProvider((uid, receiver)); } - private void OnReceiverStarted(EntityUid uid, ExtensionCableReceiverComponent receiver, ComponentStartup args) + private void OnReceiverStarted(Entity receiver, ref ComponentStartup args) { if (EntityManager.TryGetComponent(receiver.Owner, out PhysicsComponent? physicsComponent)) { - receiver.Connectable = physicsComponent.BodyType == BodyType.Static; + receiver.Comp.Connectable = physicsComponent.BodyType == BodyType.Static; } - if (receiver.Provider == null) + if (receiver.Comp.Provider == null) { TryFindAndSetProvider(receiver); } } - private void OnReceiverShutdown(EntityUid uid, ExtensionCableReceiverComponent receiver, ComponentShutdown args) + private void OnReceiverShutdown(Entity receiver, ref ComponentShutdown args) { - Disconnect(uid, receiver); + Disconnect(receiver); } - private void OnReceiverAnchorStateChanged(EntityUid uid, ExtensionCableReceiverComponent receiver, ref AnchorStateChangedEvent args) + private void OnReceiverAnchorStateChanged(Entity receiver, ref AnchorStateChangedEvent args) { if (args.Anchored) { - Connect(uid, receiver); + Connect(receiver); } else { - Disconnect(uid, receiver); + Disconnect(receiver); } } - private void OnReceiverReAnchor(EntityUid uid, ExtensionCableReceiverComponent receiver, ref ReAnchorEvent args) + private void OnReceiverReAnchor(Entity receiver, ref ReAnchorEvent args) { - Disconnect(uid, receiver); - Connect(uid, receiver); + Disconnect(receiver); + Connect(receiver); } - private void Connect(EntityUid uid, ExtensionCableReceiverComponent receiver) + private void Connect(Entity receiver) { - receiver.Connectable = true; - if (receiver.Provider == null) + receiver.Comp.Connectable = true; + if (receiver.Comp.Provider == null) { TryFindAndSetProvider(receiver); } } - private void Disconnect(EntityUid uid, ExtensionCableReceiverComponent receiver) + private void Disconnect(Entity receiver) { - receiver.Connectable = false; - RaiseLocalEvent(uid, new ProviderDisconnectedEvent(receiver.Provider), broadcast: false); - if (receiver.Provider != null) + receiver.Comp.Connectable = false; + RaiseLocalEvent(receiver, new ProviderDisconnectedEvent(receiver.Comp.Provider), broadcast: false); + if (receiver.Comp.Provider != null) { - RaiseLocalEvent(receiver.Provider.Owner, new ReceiverDisconnectedEvent((uid, receiver)), broadcast: false); - receiver.Provider.LinkedReceivers.Remove(receiver); + RaiseLocalEvent(receiver.Comp.Provider.Value, new ReceiverDisconnectedEvent(receiver), broadcast: false); + receiver.Comp.Provider.Value.Comp.LinkedReceivers.Remove(receiver); } - receiver.Provider = null; + receiver.Comp.Provider = null; } - private void TryFindAndSetProvider(ExtensionCableReceiverComponent receiver, TransformComponent? xform = null) + private void TryFindAndSetProvider(Entity receiver, TransformComponent? xform = null) { var uid = receiver.Owner; - if (!receiver.Connectable) + if (!receiver.Comp.Connectable) return; - if (!TryFindAvailableProvider(uid, receiver.ReceptionRange, out var provider, xform)) + if (!TryFindAvailableProvider(uid, receiver.Comp.ReceptionRange, out var provider, xform)) return; - receiver.Provider = provider; - provider.LinkedReceivers.Add(receiver); + receiver.Comp.Provider = provider; + provider.Value.Comp.LinkedReceivers.Add(receiver); RaiseLocalEvent(uid, new ProviderConnectedEvent(provider), broadcast: false); - RaiseLocalEvent(provider.Owner, new ReceiverConnectedEvent((uid, receiver)), broadcast: false); + RaiseLocalEvent(provider.Value, new ReceiverConnectedEvent((uid, receiver)), broadcast: false); } - private bool TryFindAvailableProvider(EntityUid owner, float range, [NotNullWhen(true)] out ExtensionCableProviderComponent? foundProvider, TransformComponent? xform = null) + private bool TryFindAvailableProvider(EntityUid owner, float range, [NotNullWhen(true)] out Entity? foundProvider, TransformComponent? xform = null) { if (!Resolve(owner, ref xform) || !TryComp(xform.GridUid, out MapGridComponent? grid)) { @@ -252,12 +254,12 @@ namespace Content.Server.Power.EntitySystems } var coordinates = xform.Coordinates; - var nearbyEntities = grid.GetCellsInSquareArea(coordinates, (int) Math.Ceiling(range / grid.TileSize)); + var nearbyEntities = _map.GetCellsInSquareArea(xform.GridUid.Value, grid, coordinates, (int)Math.Ceiling(range / grid.TileSize)); var cableQuery = GetEntityQuery(); var metaQuery = GetEntityQuery(); var xformQuery = GetEntityQuery(); - ExtensionCableProviderComponent? closestCandidate = null; + Entity? closestCandidate = null; var closestDistanceFound = float.MaxValue; foreach (var entity in nearbyEntities) { @@ -277,12 +279,12 @@ namespace Content.Server.Power.EntitySystems if (distance >= closestDistanceFound) continue; - closestCandidate = provider; + closestCandidate = (entity, provider); closestDistanceFound = distance; } // Make sure the provider is in range before claiming success - if (closestCandidate != null && closestDistanceFound <= Math.Min(range, closestCandidate.TransferRange)) + if (closestCandidate != null && closestDistanceFound <= Math.Min(range, closestCandidate.Value.Comp.TransferRange)) { foundProvider = closestCandidate; return true; diff --git a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs index 0239273455..f3405486e6 100644 --- a/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs +++ b/Content.Server/Power/EntitySystems/PowerReceiverSystem.cs @@ -15,7 +15,6 @@ namespace Content.Server.Power.EntitySystems public sealed class PowerReceiverSystem : SharedPowerReceiverSystem { [Dependency] private readonly IAdminManager _adminManager = default!; - private EntityQuery _recQuery; private EntityQuery _provQuery; diff --git a/Content.Server/Power/Generation/Teg/TegSystem.cs b/Content.Server/Power/Generation/Teg/TegSystem.cs index 5c2ac27352..04f876c2c2 100644 --- a/Content.Server/Power/Generation/Teg/TegSystem.cs +++ b/Content.Server/Power/Generation/Teg/TegSystem.cs @@ -9,12 +9,14 @@ using Content.Server.NodeContainer.Nodes; using Content.Server.Power.Components; using Content.Shared.Atmos; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Examine; using Content.Shared.Power; using Content.Shared.Power.EntitySystems; using Content.Shared.Power.Generation.Teg; using Content.Shared.Rounding; using Robust.Server.GameObjects; +using Robust.Shared.Utility; namespace Content.Server.Power.Generation.Teg; @@ -260,13 +262,16 @@ public sealed class TegSystem : EntitySystem // Otherwise, make sure circulator is set to nothing. if (!group.IsFullyBuilt) { - UpdateCirculatorAppearance(uid, false); + UpdateCirculatorAppearance((uid, component), false); } } - private void UpdateCirculatorAppearance(EntityUid uid, bool powered) + private void UpdateCirculatorAppearance(Entity ent, bool powered) { - var circ = Comp(uid); + if (!Resolve(ent, ref ent.Comp)) + return; + + var circ = ent.Comp; TegCirculatorSpeed speed; if (powered && circ.LastPressureDelta > 0 && circ.LastMolesTransferred > 0) @@ -281,13 +286,13 @@ public sealed class TegSystem : EntitySystem speed = TegCirculatorSpeed.SpeedStill; } - _appearance.SetData(uid, TegVisuals.CirculatorSpeed, speed); - _appearance.SetData(uid, TegVisuals.CirculatorPower, powered); + _appearance.SetData(ent, TegVisuals.CirculatorSpeed, speed); + _appearance.SetData(ent, TegVisuals.CirculatorPower, powered); - if (_pointLight.TryGetLight(uid, out var pointLight)) + if (_pointLight.TryGetLight(ent, out var pointLight)) { - _pointLight.SetEnabled(uid, powered, pointLight); - _pointLight.SetColor(uid, speed == TegCirculatorSpeed.SpeedFast ? circ.LightColorFast : circ.LightColorSlow, pointLight); + _pointLight.SetEnabled(ent, powered, pointLight); + _pointLight.SetColor(ent, speed == TegCirculatorSpeed.SpeedFast ? circ.LightColorFast : circ.LightColorSlow, pointLight); } } diff --git a/Content.Server/Radiation/Systems/GeigerSystem.cs b/Content.Server/Radiation/Systems/GeigerSystem.cs index 9b6ed31781..6cf17c49c8 100644 --- a/Content.Server/Radiation/Systems/GeigerSystem.cs +++ b/Content.Server/Radiation/Systems/GeigerSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Radiation.Systems; using Robust.Server.Audio; using Robust.Server.GameObjects; using Robust.Server.Player; +using Robust.Shared.Player; namespace Content.Server.Radiation.Systems; @@ -155,16 +156,17 @@ public sealed class GeigerSystem : SharedGeigerSystem if (!component.Sounds.TryGetValue(component.DangerLevel, out var sounds)) return; - if (component.User == null) - return; - - if (!_player.TryGetSessionByEntity(component.User.Value, out var session)) - return; - var sound = _audio.ResolveSound(sounds); - var param = sounds.Params.WithLoop(true).WithVolume(-4f); + var param = sounds.Params.WithLoop(true).WithVolume(component.Volume); - component.Stream = _audio.PlayGlobal(sound, session, param)?.Entity; + if (component.BroadcastAudio) + { + // For some reason PlayPvs sounds quieter even at distance 0, so we need to boost the volume a bit for consistency + param = sounds.Params.WithLoop(true).WithVolume(component.Volume + 1.5f).WithMaxDistance(component.BroadcastRange); + component.Stream = _audio.PlayPvs(sound, uid, param)?.Entity; + } + else if(component.User is not null && _player.TryGetSessionByEntity(component.User.Value, out var session)) + component.Stream = _audio.PlayGlobal(sound, session, param)?.Entity; } public static GeigerDangerLevel RadsToLevel(float rads) diff --git a/Content.Server/Radiation/Systems/RadiationSystem.cs b/Content.Server/Radiation/Systems/RadiationSystem.cs index 3ba393959c..7402a72701 100644 --- a/Content.Server/Radiation/Systems/RadiationSystem.cs +++ b/Content.Server/Radiation/Systems/RadiationSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Radiation.Components; +using Content.Server.Radiation.Components; using Content.Shared.Radiation.Components; using Content.Shared.Radiation.Events; using Content.Shared.Stacks; @@ -50,7 +50,7 @@ public sealed partial class RadiationSystem : EntitySystem public void IrradiateEntity(EntityUid uid, float radsPerSecond, float time) { - var msg = new OnIrradiatedEvent(time, radsPerSecond); + var msg = new OnIrradiatedEvent(time, radsPerSecond, uid); RaiseLocalEvent(uid, msg); } diff --git a/Content.Server/Radio/EntitySystems/JammerSystem.cs b/Content.Server/Radio/EntitySystems/JammerSystem.cs index 1fe48d22b4..1cea981d3c 100644 --- a/Content.Server/Radio/EntitySystems/JammerSystem.cs +++ b/Content.Server/Radio/EntitySystems/JammerSystem.cs @@ -1,4 +1,3 @@ -using Content.Server.DeviceNetwork.Components; using Content.Server.Power.EntitySystems; using Content.Server.PowerCell; using Content.Shared.DeviceNetwork.Components; diff --git a/Content.Server/Research/Systems/ResearchSystem.Technology.cs b/Content.Server/Research/Systems/ResearchSystem.Technology.cs index 360985b4b6..0237c8712a 100644 --- a/Content.Server/Research/Systems/ResearchSystem.Technology.cs +++ b/Content.Server/Research/Systems/ResearchSystem.Technology.cs @@ -119,15 +119,17 @@ public sealed partial class ResearchSystem } component.UnlockedTechnologies.Add(technology.ID); + var addedRecipes = new List(); foreach (var unlock in technology.RecipeUnlocks) { if (component.UnlockedRecipes.Contains(unlock)) continue; component.UnlockedRecipes.Add(unlock); + addedRecipes.Add(unlock); } Dirty(uid, component); - var ev = new TechnologyDatabaseModifiedEvent(); + var ev = new TechnologyDatabaseModifiedEvent(addedRecipes); RaiseLocalEvent(uid, ref ev); } diff --git a/Content.Server/Robotics/Systems/RoboticsConsoleSystem.cs b/Content.Server/Robotics/Systems/RoboticsConsoleSystem.cs index 916694fdd8..c4554d65d6 100644 --- a/Content.Server/Robotics/Systems/RoboticsConsoleSystem.cs +++ b/Content.Server/Robotics/Systems/RoboticsConsoleSystem.cs @@ -1,5 +1,4 @@ using Content.Server.Administration.Logs; -using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; using Content.Server.Radio.EntitySystems; using Content.Shared.Lock; @@ -10,7 +9,7 @@ using Content.Shared.Robotics.Components; using Content.Shared.Robotics.Systems; using Robust.Server.GameObjects; using Robust.Shared.Timing; -using System.Diagnostics.CodeAnalysis; +using Content.Shared.DeviceNetwork.Events; namespace Content.Server.Research.Systems; diff --git a/Content.Server/Roles/Jobs/JobSystem.cs b/Content.Server/Roles/Jobs/JobSystem.cs index 28cfbe76b5..2ef66617ac 100644 --- a/Content.Server/Roles/Jobs/JobSystem.cs +++ b/Content.Server/Roles/Jobs/JobSystem.cs @@ -1,9 +1,9 @@ using System.Globalization; using Content.Server.Chat.Managers; -using Content.Server.Mind; using Content.Shared.Mind; using Content.Shared.Roles; using Content.Shared.Roles.Jobs; +using Robust.Shared.Player; namespace Content.Server.Roles.Jobs; @@ -13,7 +13,7 @@ namespace Content.Server.Roles.Jobs; public sealed class JobSystem : SharedJobSystem { [Dependency] private readonly IChatManager _chat = default!; - [Dependency] private readonly MindSystem _mind = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; [Dependency] private readonly RoleSystem _roles = default!; public override void Initialize() @@ -42,7 +42,7 @@ public sealed class JobSystem : SharedJobSystem if (args.Silent) return; - if (!_mind.TryGetSession(mindId, out var session)) + if (!_player.TryGetSessionById(component.UserId, out var session)) return; if (!MindTryGetJob(mindId, out var prototype)) diff --git a/Content.Server/Roles/RoleSystem.cs b/Content.Server/Roles/RoleSystem.cs index 278ac48579..6cbd039c73 100644 --- a/Content.Server/Roles/RoleSystem.cs +++ b/Content.Server/Roles/RoleSystem.cs @@ -46,7 +46,7 @@ public sealed class RoleSystem : SharedRoleSystem public void RoleUpdateMessage(MindComponent mind) { - if (mind.Session is null) + if (!Player.TryGetSessionById(mind.UserId, out var session)) return; if (!_proto.TryIndex(mind.RoleType, out var proto)) @@ -55,8 +55,6 @@ public sealed class RoleSystem : SharedRoleSystem var roleText = Loc.GetString(proto.Name); var color = proto.Color; - var session = mind.Session; - //TODO add audio? Would need to be optional so it does not play on role changes that already come with their own audio // _audio.PlayGlobal(Sound, session); diff --git a/Content.Server/RoundEnd/RoundEndSystem.cs b/Content.Server/RoundEnd/RoundEndSystem.cs index bb5934f3f0..900a52057e 100644 --- a/Content.Server/RoundEnd/RoundEndSystem.cs +++ b/Content.Server/RoundEnd/RoundEndSystem.cs @@ -4,8 +4,6 @@ using Content.Server.AlertLevel; using Content.Shared.CCVar; using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.GameTicking; using Content.Server.Screens.Components; @@ -21,6 +19,7 @@ using Robust.Shared.Configuration; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Timing; +using Content.Shared.DeviceNetwork.Components; using Timer = Robust.Shared.Timing.Timer; namespace Content.Server.RoundEnd diff --git a/Content.Server/Salvage/SalvageSystem.Expeditions.cs b/Content.Server/Salvage/SalvageSystem.Expeditions.cs index 65583b38f5..0493bb22ce 100644 --- a/Content.Server/Salvage/SalvageSystem.Expeditions.cs +++ b/Content.Server/Salvage/SalvageSystem.Expeditions.cs @@ -165,13 +165,11 @@ public sealed partial class SalvageSystem EntityManager, _timing, _logManager, - _mapManager, _prototypeManager, _anchorable, _biome, _dungeon, _metaData, - _transform, _mapSystem, station, coordinatesDisk, diff --git a/Content.Server/Salvage/SalvageSystem.cs b/Content.Server/Salvage/SalvageSystem.cs index 9115c60536..53bb0c06b3 100644 --- a/Content.Server/Salvage/SalvageSystem.cs +++ b/Content.Server/Salvage/SalvageSystem.cs @@ -16,7 +16,7 @@ using Content.Shared.Construction.EntitySystems; using Robust.Shared.Audio.Systems; using Robust.Shared.Map.Components; using Robust.Shared.Timing; -using Content.Server.Labels; +using Content.Shared.Labels.EntitySystems; using Robust.Shared.EntitySerialization.Systems; namespace Content.Server.Salvage diff --git a/Content.Server/Salvage/SpawnSalvageMissionJob.cs b/Content.Server/Salvage/SpawnSalvageMissionJob.cs index 21da7e89a0..cbce4dc692 100644 --- a/Content.Server/Salvage/SpawnSalvageMissionJob.cs +++ b/Content.Server/Salvage/SpawnSalvageMissionJob.cs @@ -41,13 +41,11 @@ public sealed class SpawnSalvageMissionJob : Job { private readonly IEntityManager _entManager; private readonly IGameTiming _timing; - private readonly IMapManager _mapManager; private readonly IPrototypeManager _prototypeManager; private readonly AnchorableSystem _anchorable; private readonly BiomeSystem _biome; private readonly DungeonSystem _dungeon; private readonly MetaDataSystem _metaData; - private readonly SharedTransformSystem _xforms; private readonly SharedMapSystem _map; public readonly EntityUid Station; @@ -61,13 +59,11 @@ public sealed class SpawnSalvageMissionJob : Job IEntityManager entManager, IGameTiming timing, ILogManager logManager, - IMapManager mapManager, IPrototypeManager protoManager, AnchorableSystem anchorable, BiomeSystem biome, DungeonSystem dungeon, MetaDataSystem metaData, - SharedTransformSystem xform, SharedMapSystem map, EntityUid station, EntityUid? coordinatesDisk, @@ -76,13 +72,11 @@ public sealed class SpawnSalvageMissionJob : Job { _entManager = entManager; _timing = timing; - _mapManager = mapManager; _prototypeManager = protoManager; _anchorable = anchorable; _biome = biome; _dungeon = dungeon; _metaData = metaData; - _xforms = xform; _map = map; Station = station; CoordinatesDisk = coordinatesDisk; @@ -157,8 +151,8 @@ public sealed class SpawnSalvageMissionJob : Job } } - _mapManager.DoMapInitialize(mapId); - _mapManager.SetMapPaused(mapId, true); + _map.InitializeMap(mapId); + _map.SetPaused(mapUid, true); // Setup expedition var expedition = _entManager.AddComponent(mapUid); @@ -178,7 +172,7 @@ public sealed class SpawnSalvageMissionJob : Job dungeonOffset = dungeonRotation.RotateVec(dungeonOffset); var dungeonMod = _prototypeManager.Index(mission.Dungeon); var dungeonConfig = _prototypeManager.Index(dungeonMod.Proto); - var dungeons = await WaitAsyncTask(_dungeon.GenerateDungeonAsync(dungeonConfig, mapUid, grid, (Vector2i) dungeonOffset, + var dungeons = await WaitAsyncTask(_dungeon.GenerateDungeonAsync(dungeonConfig, mapUid, grid, (Vector2i)dungeonOffset, _missionParams.Seed)); var dungeon = dungeons.First(); @@ -214,7 +208,14 @@ public sealed class SpawnSalvageMissionJob : Job if (!lootProto.Guaranteed) continue; - await SpawnDungeonLoot(lootProto, mapUid); + try + { + await SpawnDungeonLoot(lootProto, mapUid); + } + catch (Exception e) + { + _sawmill.Error($"Failed to spawn guaranteed loot {lootProto.ID}: {e}"); + } } // Handle boss loot (when relevant). @@ -244,7 +245,14 @@ public sealed class SpawnSalvageMissionJob : Job if (entry == null) break; - await SpawnRandomEntry(grid, entry, dungeon, random); + try + { + await SpawnRandomEntry((mapUid, grid), entry, dungeon, random); + } + catch (Exception e) + { + _sawmill.Error($"Failed to spawn mobs for {entry.Proto}: {e}"); + } } var allLoot = _prototypeManager.Index(SharedSalvageSystem.ExpeditionsLootProto); @@ -271,7 +279,7 @@ public sealed class SpawnSalvageMissionJob : Job break; _sawmill.Debug($"Spawning dungeon loot {entry.Proto}"); - await SpawnRandomEntry(grid, entry, dungeon, random); + await SpawnRandomEntry((mapUid, grid), entry, dungeon, random); } break; default: @@ -282,7 +290,7 @@ public sealed class SpawnSalvageMissionJob : Job return true; } - private async Task SpawnRandomEntry(MapGridComponent grid, IBudgetEntry entry, Dungeon dungeon, Random random) + private async Task SpawnRandomEntry(Entity grid, IBudgetEntry entry, Dungeon dungeon, Random random) { await SuspendIfOutOfTime(); @@ -300,13 +308,13 @@ public sealed class SpawnSalvageMissionJob : Job { var tile = availableTiles.RemoveSwap(random.Next(availableTiles.Count)); - if (!_anchorable.TileFree(grid, tile, (int) CollisionGroup.MachineLayer, - (int) CollisionGroup.MachineLayer)) + if (!_anchorable.TileFree(grid, tile, (int)CollisionGroup.MachineLayer, + (int)CollisionGroup.MachineLayer)) { continue; } - var uid = _entManager.SpawnAtPosition(entry.Proto, grid.GridTileToLocal(tile)); + var uid = _entManager.SpawnAtPosition(entry.Proto, _map.GridTileToLocal(grid, grid, tile)); _entManager.RemoveComponent(uid); _entManager.RemoveComponent(uid); return; diff --git a/Content.Server/Screens/Systems/ScreenSystem.cs b/Content.Server/Screens/Systems/ScreenSystem.cs index 782fe38c88..c159bfe1d5 100644 --- a/Content.Server/Screens/Systems/ScreenSystem.cs +++ b/Content.Server/Screens/Systems/ScreenSystem.cs @@ -2,6 +2,8 @@ using Content.Shared.TextScreen; using Content.Server.Screens.Components; using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; using Robust.Shared.Timing; @@ -63,7 +65,7 @@ public sealed class ScreenSystem : EntitySystem /// /// Determines if/how a timer packet affects this screen. /// Currently there are 2 broadcast domains: Arrivals, and every other screen. - /// Domain is determined by the on each timer. + /// Domain is determined by the on each timer. /// Each broadcast domain is divided into subnets. Screen MapUid determines subnet. /// Subnets are the shuttle, source, and dest. Source/dest change each jump. /// This is required to send different timers to the shuttle/terminal/station. diff --git a/Content.Server/Security/GenpopSystem.cs b/Content.Server/Security/GenpopSystem.cs new file mode 100644 index 0000000000..0a4233308e --- /dev/null +++ b/Content.Server/Security/GenpopSystem.cs @@ -0,0 +1,30 @@ +using Content.Shared.Security.Components; +using Content.Shared.Security.Systems; + +namespace Content.Server.Security; + +public sealed class GenpopSystem : SharedGenpopSystem +{ + protected override void CreateId(Entity ent, string name, float sentence, string crime) + { + var xform = Transform(ent); + var uid = Spawn(ent.Comp.IdCardProto, xform.Coordinates); + ent.Comp.LinkedId = uid; + IdCard.TryChangeFullName(uid, name); + + if (TryComp(uid, out var id)) + { + id.Crime = crime; + id.SentenceDuration = TimeSpan.FromMinutes(sentence); + Dirty(uid, id); + } + if (sentence <= 0) + IdCard.SetPermanent(uid, true); + IdCard.SetExpireTime(uid, TimeSpan.FromMinutes(sentence) + Timing.CurTime); + + var metaData = MetaData(ent); + MetaDataSystem.SetEntityName(ent, Loc.GetString("genpop-locker-name-used", ("name", name)), metaData); + MetaDataSystem.SetEntityDescription(ent, Loc.GetString("genpop-locker-desc-used", ("name", name)), metaData); + Dirty(ent); + } +} diff --git a/Content.Server/SensorMonitoring/BatterySensorSystem.cs b/Content.Server/SensorMonitoring/BatterySensorSystem.cs index 501b094c89..5047cd1d29 100644 --- a/Content.Server/SensorMonitoring/BatterySensorSystem.cs +++ b/Content.Server/SensorMonitoring/BatterySensorSystem.cs @@ -2,6 +2,7 @@ using Content.Server.DeviceNetwork.Systems; using Content.Server.Power.Components; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; namespace Content.Server.SensorMonitoring; diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs index dec3e6c36e..a562abd926 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.UI.cs @@ -1,7 +1,7 @@ -using Content.Server.DeviceNetwork.Components; -using Content.Shared.SensorMonitoring; +using Content.Shared.SensorMonitoring; using Robust.Shared.Collections; using ConsoleUIState = Content.Shared.SensorMonitoring.SensorMonitoringConsoleBoundInterfaceState; +using Content.Shared.DeviceNetwork.Components; using IncrementalUIState = Content.Shared.SensorMonitoring.SensorMonitoringIncrementalUpdate; namespace Content.Server.SensorMonitoring; diff --git a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs index ddd7812394..ebe8f304ba 100644 --- a/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs +++ b/Content.Server/SensorMonitoring/SensorMonitoringConsoleSystem.cs @@ -1,10 +1,7 @@ using Content.Server.Atmos.Monitor.Components; using Content.Server.Atmos.Monitor.Systems; -using Content.Server.Atmos.Piping.Binary.Components; using Content.Server.Atmos.Piping.Components; using Content.Server.Atmos.Piping.Unary.Components; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.Power.Generation.Teg; using Content.Shared.Atmos.Monitor; @@ -12,6 +9,7 @@ using Content.Shared.Atmos.Piping.Binary.Components; using Content.Shared.Atmos.Piping.Unary.Components; using Content.Shared.DeviceNetwork; using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.DeviceNetwork.Systems; using Content.Shared.SensorMonitoring; using Robust.Server.GameObjects; diff --git a/Content.Server/Shuttles/Commands/FTLDiskCommand.cs b/Content.Server/Shuttles/Commands/FTLDiskCommand.cs index b17c7c11a7..014dbe6d99 100644 --- a/Content.Server/Shuttles/Commands/FTLDiskCommand.cs +++ b/Content.Server/Shuttles/Commands/FTLDiskCommand.cs @@ -1,8 +1,8 @@ using Content.Server.Administration; -using Content.Server.Labels; using Content.Shared.Administration; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; +using Content.Shared.Labels.EntitySystems; using Content.Shared.Shuttles.Components; using Content.Shared.Storage; using Content.Shared.Storage.EntitySystems; diff --git a/Content.Server/Shuttles/DockingConfig.cs b/Content.Server/Shuttles/DockingConfig.cs index 58d2878514..c4f7077219 100644 --- a/Content.Server/Shuttles/DockingConfig.cs +++ b/Content.Server/Shuttles/DockingConfig.cs @@ -24,5 +24,9 @@ public sealed class DockingConfig public Box2 Area; public EntityCoordinates Coordinates; + + /// + /// Local angle of the docking grid relative to the target grid. + /// public Angle Angle; } diff --git a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs index 896570fb34..aa1c2e6dff 100644 --- a/Content.Server/Shuttles/Systems/ArrivalsSystem.cs +++ b/Content.Server/Shuttles/Systems/ArrivalsSystem.cs @@ -2,7 +2,6 @@ using System.Linq; using System.Numerics; using Content.Server.Administration; using Content.Server.Chat.Managers; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.GameTicking; using Content.Server.GameTicking.Events; @@ -19,6 +18,7 @@ using Content.Shared.Administration; using Content.Shared.CCVar; using Content.Shared.Damage.Components; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; using Content.Shared.GameTicking; using Content.Shared.Mobs.Components; using Content.Shared.Movement.Components; @@ -26,20 +26,17 @@ using Content.Shared.Parallax.Biomes; using Content.Shared.Salvage; using Content.Shared.Shuttles.Components; using Content.Shared.Tiles; -using Robust.Server.GameObjects; using Robust.Shared.Collections; using Robust.Shared.Configuration; using Robust.Shared.Console; -using Robust.Shared.EntitySerialization; using Robust.Shared.EntitySerialization.Systems; using Robust.Shared.Map; -using Robust.Shared.Map.Components; using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; +using Robust.Shared.Spawners; using Robust.Shared.Timing; using Robust.Shared.Utility; -using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; namespace Content.Server.Shuttles.Systems; diff --git a/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs b/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs index 8435075a69..5e3029333e 100644 --- a/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs +++ b/Content.Server/Shuttles/Systems/DockingSystem.Shuttle.cs @@ -79,7 +79,7 @@ public sealed partial class DockingSystem return false; shuttleDockedAABB = matty.TransformBox(shuttleAABB); - gridRotation = (targetGridRotation + offsetAngle).Reduced(); + gridRotation = offsetAngle.Reduced(); return true; } @@ -125,7 +125,8 @@ public sealed partial class DockingSystem public DockingConfig? GetDockingConfigAt(EntityUid shuttleUid, EntityUid targetGrid, EntityCoordinates coordinates, - Angle angle) + Angle angle, + bool fallback = true) { var gridDocks = GetDocks(targetGrid); var shuttleDocks = GetDocks(shuttleUid); @@ -140,6 +141,11 @@ public sealed partial class DockingSystem } } + if (fallback && configs.Count > 0) + { + return configs.First(); + } + return null; } diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs index 09aad1d931..95c6ab5a1b 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.Console.cs @@ -1,5 +1,4 @@ using System.Threading; -using Content.Server.DeviceNetwork.Components; using Content.Server.Screens.Components; using Content.Server.Shuttles.Components; using Content.Server.Shuttles.Events; @@ -14,6 +13,7 @@ using Content.Shared.Shuttles.Systems; using Content.Shared.UserInterface; using Robust.Shared.Map; using Robust.Shared.Player; +using Content.Shared.DeviceNetwork.Components; using Timer = Robust.Shared.Timing.Timer; namespace Content.Server.Shuttles.Systems; diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index afa77421bd..c9c764a014 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -6,7 +6,6 @@ using Content.Server.Administration.Logs; using Content.Server.Administration.Managers; using Content.Server.Chat.Systems; using Content.Server.Communications; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.GameTicking.Events; using Content.Server.Pinpointer; @@ -37,6 +36,7 @@ using Robust.Shared.Player; using Robust.Shared.Random; using Robust.Shared.Timing; using Robust.Shared.Utility; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.Shuttles.Systems; @@ -648,18 +648,11 @@ public sealed partial class EmergencyShuttleSystem : EntitySystem if (!EmergencyShuttleArrived) return false; - // check each emergency shuttle + // check if target is on an emergency shuttle var xform = Transform(target); - foreach (var stationData in EntityQuery()) - { - if (stationData.EmergencyShuttle == null) - continue; - if (IsOnGrid(xform, stationData.EmergencyShuttle.Value)) - { - return true; - } - } + if (HasComp(xform.GridUid)) + return true; return false; } diff --git a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs index 05d53ec0ca..20cb09b290 100644 --- a/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs +++ b/Content.Server/Shuttles/Systems/ShuttleSystem.FasterThanLight.cs @@ -262,7 +262,7 @@ public sealed partial class ShuttleSystem } } - if (HasComp(shuttleUid)) + if (HasComp(shuttleUid) || HasComp(shuttleUid)) { reason = Loc.GetString("shuttle-console-prevent"); return false; @@ -384,8 +384,6 @@ public sealed partial class ShuttleSystem _audio.SetGridAudio(audio); component.StartupStream = audio?.Entity; - // TODO: Play previs here for docking arrival. - // Make sure the map is setup before we leave to avoid pop-in (e.g. parallax). EnsureFTLMap(); return true; @@ -469,7 +467,8 @@ public sealed partial class ShuttleSystem if (entity.Comp1.VisualizerProto != null) { - comp.VisualizerEntity = SpawnAtPosition(entity.Comp1.VisualizerProto, entity.Comp1.TargetCoordinates); + comp.VisualizerEntity = SpawnAttachedTo(entity.Comp1.VisualizerProto, entity.Comp1.TargetCoordinates); + DebugTools.Assert(Transform(comp.VisualizerEntity.Value).ParentUid == entity.Comp1.TargetCoordinates.EntityId); var visuals = Comp(comp.VisualizerEntity.Value); visuals.Grid = entity.Owner; Dirty(comp.VisualizerEntity.Value, visuals); @@ -775,7 +774,7 @@ public sealed partial class ShuttleSystem // Set position var mapCoordinates = _transform.ToMapCoordinates(config.Coordinates); var mapUid = _mapSystem.GetMap(mapCoordinates.MapId); - _transform.SetCoordinates(shuttle.Owner, shuttle.Comp, new EntityCoordinates(mapUid, mapCoordinates.Position), rotation: config.Angle); + _transform.SetCoordinates(shuttle.Owner, shuttle.Comp, new EntityCoordinates(mapUid, mapCoordinates.Position), rotation: config.Angle + _transform.GetWorldRotation(config.Coordinates.EntityId)); // Connect everything foreach (var (dockAUid, dockBUid, dockA, dockB) in config.Docks) diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs b/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs index 4d2a8912e8..e950d3f288 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Transponder.cs @@ -1,13 +1,10 @@ using Content.Shared.DeviceNetwork; -using Content.Shared.Emag.Components; using Content.Shared.Movement.Components; using Content.Shared.Popups; using Content.Shared.Robotics; using Content.Shared.Silicons.Borgs.Components; -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; -using Content.Server.DeviceNetwork.Systems; -using Content.Server.Explosion.Components; +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Emag.Systems; using Robust.Shared.Utility; diff --git a/Content.Server/Silicons/Borgs/BorgSystem.Ui.cs b/Content.Server/Silicons/Borgs/BorgSystem.Ui.cs index 40c2c3bf33..9f9977cddc 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.Ui.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.Ui.cs @@ -62,8 +62,6 @@ public sealed partial class BorgSystem } var name = args.Name.Trim(); - if (TryComp(uid, out var identifier)) - name = $"{name} {identifier.FullIdentifier}"; var metaData = MetaData(uid); diff --git a/Content.Server/Silicons/Borgs/BorgSystem.cs b/Content.Server/Silicons/Borgs/BorgSystem.cs index d8fa1f300b..82e247cb0b 100644 --- a/Content.Server/Silicons/Borgs/BorgSystem.cs +++ b/Content.Server/Silicons/Borgs/BorgSystem.cs @@ -54,7 +54,7 @@ public sealed partial class BorgSystem : SharedBorgSystem [Dependency] private readonly UserInterfaceSystem _ui = default!; [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; - + [Dependency] private readonly ISharedPlayerManager _player = default!; [ValidatePrototypeId] public const string BorgJobId = "Borg"; @@ -110,9 +110,10 @@ public sealed partial class BorgSystem : SharedBorgSystem if (component.BrainEntity == null && brain != null && _whitelistSystem.IsWhitelistPassOrNull(component.BrainWhitelist, used)) { - if (_mind.TryGetMind(used, out _, out var mind) && mind.Session != null) + if (_mind.TryGetMind(used, out _, out var mind) && + _player.TryGetSessionById(mind.UserId, out var session)) { - if (!CanPlayerBeBorged(mind.Session)) + if (!CanPlayerBeBorged(session)) { Popup.PopupEntity(Loc.GetString("borg-player-not-allowed"), used, args.User); return; @@ -245,10 +246,11 @@ public sealed partial class BorgSystem : SharedBorgSystem container.ID != chassisComponent.BrainContainerId) return; - if (!_mind.TryGetMind(uid, out var mindId, out var mind) || mind.Session == null) + if (!_mind.TryGetMind(uid, out var mindId, out var mind) || + !_player.TryGetSessionById(mind.UserId, out var session)) return; - if (!CanPlayerBeBorged(mind.Session)) + if (!CanPlayerBeBorged(session)) { Popup.PopupEntity(Loc.GetString("borg-player-not-allowed-eject"), uid); Container.RemoveEntity(containerEnt, uid); diff --git a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs index 68543cc175..c9e217b170 100644 --- a/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs +++ b/Content.Server/Singularity/EntitySystems/EventHorizonSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.Singularity.Components; using Content.Shared.Singularity.EntitySystems; using Content.Shared.Tag; using Robust.Shared.Containers; +using Robust.Shared.GameObjects; using Robust.Shared.Map; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; @@ -477,7 +478,7 @@ public sealed class EventHorizonSystem : SharedEventHorizonSystem if (drop_container is null) _containerSystem.TryGetContainingContainer((uid, null, null), out drop_container); - foreach (var container in comp.GetAllContainers()) + foreach (var container in _containerSystem.GetAllContainers(uid)) { ConsumeEntitiesInContainer(args.EventHorizonUid, container, args.EventHorizon, drop_container); } diff --git a/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs b/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs index bc0de7c8c6..4b31d5f814 100644 --- a/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs +++ b/Content.Server/Singularity/EntitySystems/SingularityAttractorSystem.cs @@ -64,7 +64,7 @@ public sealed class SingularityAttractorSystem : EntitySystem attractor.LastPulseTime = _timing.CurTime; - var mapPos = xform.Coordinates.ToMap(EntityManager, _transform); + var mapPos = _transform.ToMapCoordinates(xform.Coordinates); if (mapPos == MapCoordinates.Nullspace) return; @@ -72,7 +72,7 @@ public sealed class SingularityAttractorSystem : EntitySystem var query = EntityQuery(); foreach (var (singulo, walk, singuloXform) in query) { - var singuloMapPos = singuloXform.Coordinates.ToMap(EntityManager, _transform); + var singuloMapPos = _transform.ToMapCoordinates(singuloXform.Coordinates); if (singuloMapPos.MapId != mapPos.MapId) continue; diff --git a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs index ad59fc83cf..7331894bcf 100644 --- a/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs +++ b/Content.Server/Spawners/EntitySystems/ConditionalSpawnerSystem.cs @@ -135,7 +135,7 @@ namespace Content.Server.Spawners.EntitySystems var yOffset = _robustRandom.NextFloat(-ent.Comp.Offset, ent.Comp.Offset); var trueCoords = coords.Offset(new Vector2(xOffset, yOffset)); - Spawn(proto, trueCoords); + SpawnAtPosition(proto, trueCoords); } } } diff --git a/Content.Server/Speech/EntitySystems/MobsterAccentSystem.cs b/Content.Server/Speech/EntitySystems/MobsterAccentSystem.cs index 0e9b0a34ef..5906bf3ed4 100644 --- a/Content.Server/Speech/EntitySystems/MobsterAccentSystem.cs +++ b/Content.Server/Speech/EntitySystems/MobsterAccentSystem.cs @@ -14,7 +14,7 @@ public sealed class MobsterAccentSystem : EntitySystem private static readonly Regex RegexUpperAr = new(@"(?<=\w)A[Rr](?=\w)"); private static readonly Regex RegexFirstWord = new(@"^(\S+)"); private static readonly Regex RegexLastWord = new(@"(\S+)$"); - + private static readonly Regex RegexLastPunctuation = new(@"([.!?]+$)(?!.*[.!?])|(?(entity); // And finally, set the correct amount! diff --git a/Content.Server/Station/Commands/JobsCommand.cs b/Content.Server/Station/Commands/JobsCommand.cs index 599a87aac6..c971a1cac3 100644 --- a/Content.Server/Station/Commands/JobsCommand.cs +++ b/Content.Server/Station/Commands/JobsCommand.cs @@ -1,8 +1,9 @@ -using System.Linq; +using System.Linq; using Content.Server.Administration; using Content.Server.Station.Systems; using Content.Shared.Administration; using Content.Shared.Roles; +using Robust.Shared.Prototypes; using Robust.Shared.Toolshed; using Robust.Shared.Toolshed.Syntax; using Robust.Shared.Toolshed.TypeParsers; @@ -30,15 +31,15 @@ public sealed class JobsCommand : ToolshedCommand => stations.SelectMany(Jobs); [CommandImplementation("job")] - public JobSlotRef Job([PipedArgument] EntityUid station, Prototype job) + public JobSlotRef Job([PipedArgument] EntityUid station, ProtoId job) { _jobs ??= GetSys(); - return new JobSlotRef(job.Value.ID, station, _jobs, EntityManager); + return new JobSlotRef(job.Id, station, _jobs, EntityManager); } [CommandImplementation("job")] - public IEnumerable Job([PipedArgument] IEnumerable stations, Prototype job) + public IEnumerable Job([PipedArgument] IEnumerable stations, ProtoId job) => stations.Select(x => Job(x, job)); [CommandImplementation("isinfinite")] diff --git a/Content.Server/Station/Systems/StationJobsSystem.Roundstart.cs b/Content.Server/Station/Systems/StationJobsSystem.Roundstart.cs index 8045cfed46..c6c682bcf3 100644 --- a/Content.Server/Station/Systems/StationJobsSystem.Roundstart.cs +++ b/Content.Server/Station/Systems/StationJobsSystem.Roundstart.cs @@ -19,7 +19,6 @@ public sealed partial class StationJobsSystem { [Dependency] private readonly IPrototypeManager _prototypeManager = default!; [Dependency] private readonly IBanManager _banManager = default!; - [Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly AntagSelectionSystem _antag = default!; private Dictionary> _jobsByWeight = default!; @@ -366,7 +365,7 @@ public sealed partial class StationJobsSystem if (!_prototypeManager.TryIndex(jobId, out var job)) continue; - if (!job.CanBeAntag && (!_playerManager.TryGetSessionById(player, out var session) || antagBlocked.Contains(session))) + if (!job.CanBeAntag && (!_player.TryGetSessionById(player, out var session) || antagBlocked.Contains(session))) continue; if (weight is not null && job.Weight != weight.Value) diff --git a/Content.Server/Station/Systems/StationSpawningSystem.cs b/Content.Server/Station/Systems/StationSpawningSystem.cs index a77716eddf..70176ea071 100644 --- a/Content.Server/Station/Systems/StationSpawningSystem.cs +++ b/Content.Server/Station/Systems/StationSpawningSystem.cs @@ -162,6 +162,17 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem profile = HumanoidCharacterProfile.RandomWithSpecies(speciesId); } + if (profile != null) + { + _humanoidSystem.LoadProfile(entity.Value, profile); + _metaSystem.SetEntityName(entity.Value, profile.Name); + + if (profile.FlavorText != "" && _configurationManager.GetCVar(CCVars.FlavorText)) + { + AddComp(entity.Value).Content = profile.FlavorText; + } + } + if (loadout != null) { EquipRoleLoadout(entity.Value, loadout, roleProto!); @@ -176,17 +187,9 @@ public sealed class StationSpawningSystem : SharedStationSpawningSystem var gearEquippedEv = new StartingGearEquippedEvent(entity.Value); RaiseLocalEvent(entity.Value, ref gearEquippedEv); - if (profile != null) + if (prototype != null && TryComp(entity.Value, out MetaDataComponent? metaData)) { - if (prototype != null) - SetPdaAndIdCardData(entity.Value, profile.Name, prototype, station); - - _humanoidSystem.LoadProfile(entity.Value, profile); - _metaSystem.SetEntityName(entity.Value, profile.Name); - if (profile.FlavorText != "" && _configurationManager.GetCVar(CCVars.FlavorText)) - { - AddComp(entity.Value).Content = profile.FlavorText; - } + SetPdaAndIdCardData(entity.Value, metaData.EntityName, prototype, station); } DoJobSpecials(job, entity.Value); diff --git a/Content.Server/Station/Systems/StationSystem.cs b/Content.Server/Station/Systems/StationSystem.cs index a61adb78ab..d80e2d08d1 100644 --- a/Content.Server/Station/Systems/StationSystem.cs +++ b/Content.Server/Station/Systems/StationSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Station; using Content.Shared.Station.Components; using JetBrains.Annotations; using Robust.Server.GameObjects; +using Robust.Server.GameStates; using Robust.Server.Player; using Robust.Shared.Collections; using Robust.Shared.Configuration; @@ -34,6 +35,7 @@ public sealed class StationSystem : EntitySystem [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly MetaDataSystem _metaData = default!; [Dependency] private readonly MapSystem _map = default!; + [Dependency] private readonly PvsOverrideSystem _pvsOverride = default!; private ISawmill _sawmill = default!; @@ -97,7 +99,7 @@ public sealed class StationSystem : EntitySystem var metaData = MetaData(uid); RaiseLocalEvent(new StationInitializedEvent(uid)); _sawmill.Info($"Set up station {metaData.EntityName} ({uid})."); - + _pvsOverride.AddGlobalOverride(uid); } private void OnStationDeleted(EntityUid uid, StationDataComponent component, ComponentShutdown args) diff --git a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs index a3c2440fe9..a2781e27a3 100644 --- a/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs +++ b/Content.Server/StationEvents/BasicStationEventSchedulerSystem.cs @@ -10,6 +10,7 @@ using JetBrains.Annotations; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Toolshed; +using Robust.Shared.Toolshed.TypeParsers; using Robust.Shared.Utility; namespace Content.Server.StationEvents @@ -94,7 +95,7 @@ namespace Content.Server.StationEvents /// to even exist) so I think it's fine. /// [CommandImplementation("simulate")] - public IEnumerable<(string, float)> Simulate(EntityPrototype eventScheduler, int rounds, int playerCount, float roundEndMean, float roundEndStdDev) + public IEnumerable<(string, float)> Simulate([CommandArgument] Prototype eventSchedulerProto, [CommandArgument] int rounds, [CommandArgument] int playerCount, [CommandArgument] float roundEndMean, [CommandArgument] float roundEndStdDev) { _stationEvent ??= GetSys(); _entityTable ??= GetSys(); @@ -108,6 +109,8 @@ namespace Content.Server.StationEvents occurrences.Add(ev.Key.ID, 0); } + eventSchedulerProto.Deconstruct(out EntityPrototype eventScheduler); + if (!eventScheduler.TryGetComponent(out var basicScheduler, _compFac)) { return occurrences.Select(p => (p.Key, (float)p.Value)).OrderByDescending(p => p.Item2); @@ -118,7 +121,7 @@ namespace Content.Server.StationEvents for (var i = 0; i < rounds; i++) { var curTime = TimeSpan.Zero; - var randomEndTime = _random.NextGaussian(roundEndMean, roundEndStdDev) * 60; // *60 = minutes to seconds + var randomEndTime = _random.NextGaussian(roundEndMean, roundEndStdDev) * 60; // Its in minutes, should probably be a better time format once we get that in toolshed like [hh:mm:ss] if (randomEndTime <= 0) continue; @@ -127,14 +130,13 @@ namespace Content.Server.StationEvents // sim an event curTime += TimeSpan.FromSeconds(compMinMax.Next(_random)); - if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, out var selectedEvents)) + var available = _stationEvent.AvailableEvents(false, playerCount, curTime); + if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, available, out var selectedEvents)) { continue; // doesnt break because maybe the time is preventing events being available. } - var available = _stationEvent.AvailableEvents(false, playerCount, curTime); - var plausibleEvents = new Dictionary(available.Intersect(selectedEvents)); // C# makes me sad - var ev = _stationEvent.FindEvent(plausibleEvents); + var ev = _stationEvent.FindEvent(selectedEvents); if (ev == null) continue; @@ -146,15 +148,18 @@ namespace Content.Server.StationEvents } [CommandImplementation("lsprob")] - public IEnumerable<(string, float)> LsProb(EntityPrototype eventScheduler) + public IEnumerable<(string, float)> LsProb([CommandArgument] Prototype eventSchedulerProto) { _compFac ??= IoCManager.Resolve(); _stationEvent ??= GetSys(); + eventSchedulerProto.Deconstruct(out EntityPrototype eventScheduler); + if (!eventScheduler.TryGetComponent(out var basicScheduler, _compFac)) yield break; - if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, out var events)) + var available = _stationEvent.AvailableEvents(); + if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, available, out var events)) yield break; var totalWeight = events.Sum(x => x.Value.Weight); // Well this shit definitely isnt correct now, and I see no way to make it correct. @@ -165,19 +170,24 @@ namespace Content.Server.StationEvents } } - [CommandImplementation("lsprobtime")] - public IEnumerable<(string, float)> LsProbTime(EntityPrototype eventScheduler, float time) + [CommandImplementation("lsprobtheoretical")] + public IEnumerable<(string, float)> LsProbTime([CommandArgument] Prototype eventSchedulerProto, [CommandArgument] int playerCount, [CommandArgument] float time) { _compFac ??= IoCManager.Resolve(); _stationEvent ??= GetSys(); + eventSchedulerProto.Deconstruct(out EntityPrototype eventScheduler); + if (!eventScheduler.TryGetComponent(out var basicScheduler, _compFac)) yield break; - if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, out var untimedEvents)) + var timemins = time * 60; + var theoryTime = TimeSpan.Zero + TimeSpan.FromSeconds(timemins); + var available = _stationEvent.AvailableEvents(false, playerCount, theoryTime); + if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, available, out var untimedEvents)) yield break; - var events = untimedEvents.Where(pair => pair.Value.EarliestStart <= time).ToList(); + var events = untimedEvents.Where(pair => pair.Value.EarliestStart <= timemins).ToList(); var totalWeight = events.Sum(x => x.Value.Weight); // same subsetting issue as lsprob. @@ -188,15 +198,18 @@ namespace Content.Server.StationEvents } [CommandImplementation("prob")] - public float Prob(EntityPrototype eventScheduler, string eventId) + public float Prob([CommandArgument] Prototype eventSchedulerProto, [CommandArgument] string eventId) { _compFac ??= IoCManager.Resolve(); _stationEvent ??= GetSys(); + eventSchedulerProto.Deconstruct(out EntityPrototype eventScheduler); + if (!eventScheduler.TryGetComponent(out var basicScheduler, _compFac)) return 0f; - if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, out var events)) + var available = _stationEvent.AvailableEvents(); + if (!_stationEvent.TryBuildLimitedEvents(basicScheduler.ScheduledGameRules, available, out var events)) return 0f; var totalWeight = events.Sum(x => x.Value.Weight); // same subsetting issue as lsprob. diff --git a/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs b/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs index ab5d722a73..01d67f61cf 100644 --- a/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs +++ b/Content.Server/StationEvents/Components/CargoGiftsRuleComponent.cs @@ -34,6 +34,12 @@ public sealed partial class CargoGiftsRuleComponent : Component [DataField, ViewVariables(VVAccess.ReadWrite)] public LocId Dest = "cargo-gift-default-dest"; + /// + /// Account the gifts are deposited into + /// + [DataField] + public ProtoId Account = "Cargo"; + /// /// Cargo that you would like gifted to the station, with the quantity for each /// Use Ids from cargoProduct Prototypes diff --git a/Content.Server/StationEvents/EventManagerSystem.cs b/Content.Server/StationEvents/EventManagerSystem.cs index a66499d0aa..6585fe3248 100644 --- a/Content.Server/StationEvents/EventManagerSystem.cs +++ b/Content.Server/StationEvents/EventManagerSystem.cs @@ -55,7 +55,10 @@ public sealed class EventManagerSystem : EntitySystem /// public void RunRandomEvent(EntityTableSelector limitedEventsTable) { - if (!TryBuildLimitedEvents(limitedEventsTable, out var limitedEvents)) + var availableEvents = AvailableEvents(); // handles the player counts and individual event restrictions. + // Putting this here only makes any sense in the context of the toolshed commands in BasicStationEventScheduler. Kill me. + + if (!TryBuildLimitedEvents(limitedEventsTable, availableEvents, out var limitedEvents)) { Log.Warning("Provided event table could not build dict!"); return; @@ -80,12 +83,14 @@ public sealed class EventManagerSystem : EntitySystem /// /// Returns true if the provided EntityTableSelector gives at least one prototype with a StationEvent comp. /// - public bool TryBuildLimitedEvents(EntityTableSelector limitedEventsTable, out Dictionary limitedEvents) + public bool TryBuildLimitedEvents( + EntityTableSelector limitedEventsTable, + Dictionary availableEvents, + out Dictionary limitedEvents + ) { limitedEvents = new Dictionary(); - var availableEvents = AvailableEvents(); // handles the player counts and individual event restrictions - if (availableEvents.Count == 0) { Log.Warning("No events were available to run!"); diff --git a/Content.Server/StationEvents/Events/CargoGiftsRule.cs b/Content.Server/StationEvents/Events/CargoGiftsRule.cs index ff2d1ca631..f8a718a536 100644 --- a/Content.Server/StationEvents/Events/CargoGiftsRule.cs +++ b/Content.Server/StationEvents/Events/CargoGiftsRule.cs @@ -53,7 +53,7 @@ public sealed class CargoGiftsRule : StationEventSystem } // Add some presents - var outstanding = CargoSystem.GetOutstandingOrderCount(cargoDb); + var outstanding = CargoSystem.GetOutstandingOrderCount(cargoDb, component.Account); while (outstanding < cargoDb.Capacity - component.OrderSpaceToLeave && component.Gifts.Count > 0) { // I wish there was a nice way to pop this @@ -72,6 +72,7 @@ public sealed class CargoGiftsRule : StationEventSystem Loc.GetString(component.Description), Loc.GetString(component.Dest), cargoDb, + component.Account, (station.Value, stationData) )) { diff --git a/Content.Server/StationEvents/Events/VentClogRule.cs b/Content.Server/StationEvents/Events/VentClogRule.cs index f14958631d..3b6eeebe85 100644 --- a/Content.Server/StationEvents/Events/VentClogRule.cs +++ b/Content.Server/StationEvents/Events/VentClogRule.cs @@ -8,6 +8,7 @@ using Content.Shared.Station.Components; using JetBrains.Annotations; using Robust.Shared.Random; using System.Linq; +using Content.Shared.Chemistry.Reaction; namespace Content.Server.StationEvents.Events; @@ -47,7 +48,7 @@ public sealed class VentClogRule : StationEventSystem var quantity = weak ? component.WeakReagentQuantity : component.ReagentQuantity; solution.AddReagent(reagent, quantity); - var foamEnt = Spawn("Foam", transform.Coordinates); + var foamEnt = Spawn(ChemicalReactionSystem.FoamReaction, transform.Coordinates); var spreadAmount = weak ? component.WeakSpread : component.Spread; _smoke.StartSmoke(foamEnt, solution, component.Time, spreadAmount); Audio.PlayPvs(component.Sound, transform.Coordinates); diff --git a/Content.Server/Storage/Components/CursedEntityStorageComponent.cs b/Content.Server/Storage/Components/CursedEntityStorageComponent.cs index 8a56ecc78e..5f387135d7 100644 --- a/Content.Server/Storage/Components/CursedEntityStorageComponent.cs +++ b/Content.Server/Storage/Components/CursedEntityStorageComponent.cs @@ -5,6 +5,6 @@ namespace Content.Server.Storage.Components; [RegisterComponent] public sealed partial class CursedEntityStorageComponent : Component { - [DataField("cursedSound")] - public SoundSpecifier CursedSound = new SoundPathSpecifier("/Audio/Effects/teleport_departure.ogg"); + [DataField] + public SoundSpecifier CursedSound = new SoundPathSpecifier("/Audio/Effects/teleport_departure.ogg", AudioParams.Default.WithVariation(0.125f)); } diff --git a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs index 3a88bf3910..de5ab7a6ca 100644 --- a/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs +++ b/Content.Server/Storage/EntitySystems/BluespaceLockerSystem.cs @@ -17,6 +17,7 @@ using Robust.Shared.Random; using Robust.Shared.Timing; using Robust.Shared.Prototypes; using Content.Server.Shuttles.Components; +using Robust.Shared.Physics; namespace Content.Server.Storage.EntitySystems; @@ -163,11 +164,11 @@ public sealed class BluespaceLockerSystem : EntitySystem return false; if (lockerComponent.PickLinksFromSameMap && - link.ToCoordinates().GetMapId(EntityManager) != locker.ToCoordinates().GetMapId(EntityManager)) + _transformSystem.GetMapId(link.ToCoordinates()) != _transformSystem.GetMapId(locker.ToCoordinates())) return false; if (lockerComponent.PickLinksFromStationGrids && - !HasComp(link.ToCoordinates().GetGridUid(EntityManager))) + !HasComp(_transformSystem.GetGrid(link.ToCoordinates()))) return false; if (lockerComponent.PickLinksFromResistLockers && @@ -392,7 +393,7 @@ public sealed class BluespaceLockerSystem : EntitySystem switch (component.BehaviorProperties.DestroyType) { case BluespaceLockerDestroyType.Explode: - _explosionSystem.QueueExplosion(uid.ToCoordinates().ToMap(EntityManager, _transformSystem), + _explosionSystem.QueueExplosion(_transformSystem.ToMapCoordinates(uid.ToCoordinates()), ExplosionSystem.DefaultExplosionPrototypeId, 4, 1, 2, uid, maxTileBreak: 0); goto case BluespaceLockerDestroyType.Delete; case BluespaceLockerDestroyType.Delete: diff --git a/Content.Server/Storage/EntitySystems/CursedEntityStorageSystem.cs b/Content.Server/Storage/EntitySystems/CursedEntityStorageSystem.cs index 9b65daf461..4e1d0647ee 100644 --- a/Content.Server/Storage/EntitySystems/CursedEntityStorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/CursedEntityStorageSystem.cs @@ -1,10 +1,9 @@ -using System.Linq; using Content.Server.Storage.Components; -using Content.Shared.Audio; using Content.Shared.Storage.Components; -using Robust.Shared.Random; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; +using Robust.Shared.Random; +using System.Linq; namespace Content.Server.Storage.EntitySystems; @@ -50,6 +49,6 @@ public sealed class CursedEntityStorageSystem : EntitySystem _entityStorage.AddToContents(entity, lockerEnt); } - _audio.PlayPvs(component.CursedSound, uid, AudioHelpers.WithVariation(0.125f, _random)); + _audio.PlayPvs(component.CursedSound, uid); } } diff --git a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs index 007645d425..c2fcbf716e 100644 --- a/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs +++ b/Content.Server/Storage/EntitySystems/EntityStorageSystem.cs @@ -140,7 +140,7 @@ public sealed class EntityStorageSystem : SharedEntityStorageSystem private TileRef? GetOffsetTileRef(EntityUid uid, EntityStorageComponent component) { - var targetCoordinates = new EntityCoordinates(uid, component.EnteringOffset).ToMap(EntityManager, TransformSystem); + var targetCoordinates = TransformSystem.ToMapCoordinates(new EntityCoordinates(uid, component.EnteringOffset)); if (_map.TryFindGridAt(targetCoordinates, out var gridId, out var grid)) { diff --git a/Content.Server/Storage/EntitySystems/StorageFillVisualizerSystem.cs b/Content.Server/Storage/EntitySystems/StorageFillVisualizerSystem.cs deleted file mode 100644 index 04894461ed..0000000000 --- a/Content.Server/Storage/EntitySystems/StorageFillVisualizerSystem.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Content.Shared.Rounding; -using Content.Shared.Storage; -using Content.Shared.Storage.Components; -using Robust.Shared.Containers; - -namespace Content.Server.Storage.EntitySystems; - -public sealed class StorageFillVisualizerSystem : EntitySystem -{ - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnStartup); - SubscribeLocalEvent(OnInserted); - SubscribeLocalEvent(OnRemoved); - } - - private void OnStartup(EntityUid uid, StorageFillVisualizerComponent component, ComponentStartup args) - { - UpdateAppearance(uid, component: component); - } - - private void OnInserted(EntityUid uid, StorageFillVisualizerComponent component, EntInsertedIntoContainerMessage args) - { - UpdateAppearance(uid, component: component); - } - - private void OnRemoved(EntityUid uid, StorageFillVisualizerComponent component, EntRemovedFromContainerMessage args) - { - UpdateAppearance(uid, component: component); - } - - private void UpdateAppearance(EntityUid uid, StorageComponent? storage = null, AppearanceComponent? appearance = null, - StorageFillVisualizerComponent? component = null) - { - if (!Resolve(uid, ref storage, ref appearance, ref component, false)) - return; - - if (component.MaxFillLevels < 1) - return; - - if (!_appearance.TryGetData(uid, StorageVisuals.StorageUsed, out var used, appearance)) - return; - - if (!_appearance.TryGetData(uid, StorageVisuals.Capacity, out var capacity, appearance)) - return; - - var level = ContentHelpers.RoundToLevels(used, capacity, component.MaxFillLevels); - _appearance.SetData(uid, StorageFillVisuals.FillLevel, level, appearance); - } -} diff --git a/Content.Server/Store/Systems/StoreSystem.Ui.cs b/Content.Server/Store/Systems/StoreSystem.Ui.cs index 93bbd3bd96..587270bd64 100644 --- a/Content.Server/Store/Systems/StoreSystem.Ui.cs +++ b/Content.Server/Store/Systems/StoreSystem.Ui.cs @@ -1,7 +1,6 @@ using System.Linq; using Content.Server.Actions; using Content.Server.Administration.Logs; -using Content.Server.PDA.Ringer; using Content.Server.Stack; using Content.Server.Store.Components; using Content.Shared.Actions; @@ -9,6 +8,7 @@ using Content.Shared.Database; using Content.Shared.FixedPoint; using Content.Shared.Hands.EntitySystems; using Content.Shared.Mind; +using Content.Shared.PDA.Ringer; using Content.Shared.Store; using Content.Shared.Store.Components; using Content.Shared.UserInterface; diff --git a/Content.Server/Strip/StrippableSystem.cs b/Content.Server/Strip/StrippableSystem.cs index b74e40e1da..b3efa392b6 100644 --- a/Content.Server/Strip/StrippableSystem.cs +++ b/Content.Server/Strip/StrippableSystem.cs @@ -9,6 +9,7 @@ using Content.Shared.Ensnaring.Components; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.IdentityManagement; +using Content.Shared.Interaction; using Content.Shared.Interaction.Events; using Content.Shared.Inventory; using Content.Shared.Inventory.VirtualItem; diff --git a/Content.Server/Stunnable/Systems/StunbatonSystem.cs b/Content.Server/Stunnable/Systems/StunbatonSystem.cs index 1e2494203a..efe8cc442e 100644 --- a/Content.Server/Stunnable/Systems/StunbatonSystem.cs +++ b/Content.Server/Stunnable/Systems/StunbatonSystem.cs @@ -4,7 +4,6 @@ using Content.Server.Power.Events; using Content.Shared.Chemistry.EntitySystems; using Content.Shared.Damage.Events; using Content.Shared.Examine; -using Content.Shared.Item; using Content.Shared.Item.ItemToggle; using Content.Shared.Item.ItemToggle.Components; using Content.Shared.Popups; @@ -14,7 +13,6 @@ namespace Content.Server.Stunnable.Systems { public sealed class StunbatonSystem : SharedStunbatonSystem { - [Dependency] private readonly SharedItemSystem _item = default!; [Dependency] private readonly RiggableSystem _riggableSystem = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly BatterySystem _battery = default!; @@ -28,7 +26,6 @@ namespace Content.Server.Stunnable.Systems SubscribeLocalEvent(OnSolutionChange); SubscribeLocalEvent(OnStaminaHitAttempt); SubscribeLocalEvent(TryTurnOn); - SubscribeLocalEvent(ToggleDone); SubscribeLocalEvent(OnChargeChanged); } @@ -55,11 +52,6 @@ namespace Content.Server.Stunnable.Systems } } - private void ToggleDone(Entity entity, ref ItemToggledEvent args) - { - _item.SetHeldPrefix(entity.Owner, args.Activated ? "on" : "off"); - } - private void TryTurnOn(Entity entity, ref ItemToggleActivateAttemptEvent args) { if (!TryComp(entity, out var battery) || battery.CurrentCharge < entity.Comp.EnergyPerUse) diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs index 21e71c4316..30bbb2f0e9 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraMonitorSystem.cs @@ -3,6 +3,7 @@ using Content.Server.DeviceNetwork; using Content.Server.DeviceNetwork.Systems; using Content.Server.Power.Components; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; using Content.Shared.UserInterface; using Content.Shared.SurveillanceCamera; diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraRouterSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraRouterSystem.cs index 315273a0cc..c6886dee33 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraRouterSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraRouterSystem.cs @@ -1,15 +1,13 @@ -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; -using Content.Server.Power.Components; using Content.Shared.ActionBlocker; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; using Content.Shared.SurveillanceCamera; using Content.Shared.Verbs; using Robust.Server.GameObjects; -using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.SurveillanceCamera; diff --git a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.cs b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.cs index f1d1b58bf5..709e383c06 100644 --- a/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.cs +++ b/Content.Server/SurveillanceCamera/Systems/SurveillanceCameraSystem.cs @@ -1,16 +1,15 @@ -using Content.Server.DeviceNetwork; -using Content.Server.DeviceNetwork.Components; using Content.Server.DeviceNetwork.Systems; using Content.Server.Emp; -using Content.Server.Power.Components; using Content.Shared.ActionBlocker; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; using Content.Shared.SurveillanceCamera; using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Content.Shared.DeviceNetwork.Components; namespace Content.Server.SurveillanceCamera; diff --git a/Content.Server/Teleportation/TeleportLocationsSystem.cs b/Content.Server/Teleportation/TeleportLocationsSystem.cs new file mode 100644 index 0000000000..14211d9672 --- /dev/null +++ b/Content.Server/Teleportation/TeleportLocationsSystem.cs @@ -0,0 +1,71 @@ +using Content.Server.Chat.Systems; +using Content.Shared.Teleportation; +using Content.Shared.Teleportation.Components; +using Content.Shared.Teleportation.Systems; +using Content.Shared.UserInterface; +using Content.Shared.Warps; +using Content.Shared.Whitelist; + +namespace Content.Server.Teleportation; + +/// +/// +/// +public sealed partial class TeleportLocationsSystem : SharedTeleportLocationsSystem +{ + [Dependency] private readonly ChatSystem _chat = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnBeforeUiOpen); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + UpdateTeleportPoints(ent); + } + + private void OnBeforeUiOpen(Entity ent, ref BeforeActivatableUIOpenEvent args) + { + UpdateTeleportPoints(ent); + } + + protected override void OnTeleportToLocationRequest(Entity ent, ref TeleportLocationDestinationMessage args) + { + if (Delay.IsDelayed(ent.Owner, TeleportDelay)) + return; + + if (!string.IsNullOrWhiteSpace(ent.Comp.Speech)) + { + var msg = Loc.GetString(ent.Comp.Speech, ("location", args.PointName)); + _chat.TrySendInGameICMessage(args.Actor, msg, InGameICChatType.Speak, ChatTransmitRange.Normal); + } + + base.OnTeleportToLocationRequest(ent, ref args); + } + + // If it's in shared this doesn't populate the points on the UI + /// + /// Gets the teleport points to send to the BUI + /// + private void UpdateTeleportPoints(Entity ent) + { + ent.Comp.AvailableWarps.Clear(); + + var allEnts = AllEntityQuery(); + + while (allEnts.MoveNext(out var warpEnt, out var warpPointComp)) + { + if (_whitelist.IsBlacklistPass(warpPointComp.Blacklist, warpEnt) || string.IsNullOrWhiteSpace(warpPointComp.Location)) + continue; + + ent.Comp.AvailableWarps.Add(new TeleportPoint(warpPointComp.Location, GetNetEntity(warpEnt))); + } + + Dirty(ent); + } +} diff --git a/Content.Server/Tips/TipsSystem.cs b/Content.Server/Tips/TipsSystem.cs index 2f7edd45d6..effbb7ba87 100644 --- a/Content.Server/Tips/TipsSystem.cs +++ b/Content.Server/Tips/TipsSystem.cs @@ -35,6 +35,16 @@ public sealed class TipsSystem : EntitySystem private string _tipsDataset = ""; private float _tipTippyChance; + /// + /// Always adds this time to a speech message. This is so really short message stay around for a bit. + /// + private const float SpeechBuffer = 3f; + + /// + /// Expected reading speed. + /// + private const float Wpm = 180f; + [ViewVariables(VVAccess.ReadWrite)] private TimeSpan _nextTipTime = TimeSpan.Zero; @@ -127,6 +137,8 @@ public sealed class TipsSystem : EntitySystem if (args.Length > 3) ev.SpeakTime = float.Parse(args[3]); + else + ev.SpeakTime = GetSpeechTime(ev.Msg); if (args.Length > 4) ev.SlideTime = float.Parse(args[4]); @@ -183,6 +195,12 @@ public sealed class TipsSystem : EntitySystem _tipTippyChance = value; } + public static float GetSpeechTime(string text) + { + var wordCount = (float)text.Split().Length; + return SpeechBuffer + wordCount * (60f / Wpm); + } + private void AnnounceRandomTip() { if (!_prototype.TryIndex(_tipsDataset, out var tips)) @@ -194,7 +212,7 @@ public sealed class TipsSystem : EntitySystem if (_random.Prob(_tipTippyChance)) { var ev = new TippyEvent(msg); - ev.SpeakTime = 1 + tip.Length * 0.05f; + ev.SpeakTime = GetSpeechTime(msg); RaiseNetworkEvent(ev); } else { diff --git a/Content.Server/Traitor/Systems/AutoTraitorSystem.cs b/Content.Server/Traitor/Systems/AutoTraitorSystem.cs index d5a4db591a..3343fec7ab 100644 --- a/Content.Server/Traitor/Systems/AutoTraitorSystem.cs +++ b/Content.Server/Traitor/Systems/AutoTraitorSystem.cs @@ -1,6 +1,7 @@ using Content.Server.Antag; using Content.Server.Traitor.Components; using Content.Shared.Mind.Components; +using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Server.Traitor.Systems; @@ -11,6 +12,7 @@ namespace Content.Server.Traitor.Systems; public sealed class AutoTraitorSystem : EntitySystem { [Dependency] private readonly AntagSelectionSystem _antag = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; public override void Initialize() { @@ -21,6 +23,9 @@ public sealed class AutoTraitorSystem : EntitySystem private void OnMindAdded(EntityUid uid, AutoTraitorComponent comp, MindAddedMessage args) { - _antag.ForceMakeAntag(args.Mind.Comp.Session, comp.Profile); + if (!_player.TryGetSessionById(args.Mind.Comp.UserId, out var session)) + return; + + _antag.ForceMakeAntag(session, comp.Profile); } } diff --git a/Content.Server/Turrets/DeployableTurretSystem.cs b/Content.Server/Turrets/DeployableTurretSystem.cs index 359d91fd1d..72c011bc90 100644 --- a/Content.Server/Turrets/DeployableTurretSystem.cs +++ b/Content.Server/Turrets/DeployableTurretSystem.cs @@ -8,6 +8,8 @@ using Content.Server.Power.Components; using Content.Server.Repairable; using Content.Shared.Destructible; using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; using Content.Shared.Power; using Content.Shared.Turrets; using Content.Shared.Weapons.Ranged.Events; diff --git a/Content.Server/VendingMachines/VendingMachineSystem.cs b/Content.Server/VendingMachines/VendingMachineSystem.cs index e061398114..bd95c92327 100644 --- a/Content.Server/VendingMachines/VendingMachineSystem.cs +++ b/Content.Server/VendingMachines/VendingMachineSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Damage; using Content.Shared.Destructible; using Content.Shared.DoAfter; using Content.Shared.Emp; +using Content.Shared.IdentityManagement; using Content.Shared.Popups; using Content.Shared.Power; using Content.Shared.Throwing; @@ -15,6 +16,7 @@ using Content.Shared.UserInterface; using Content.Shared.VendingMachines; using Content.Shared.Wall; using Robust.Shared.Audio; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -141,7 +143,9 @@ namespace Content.Server.VendingMachines TryRestockInventory(uid, component); - Popup.PopupEntity(Loc.GetString("vending-machine-restock-done", ("this", args.Args.Used), ("user", args.Args.User), ("target", uid)), args.Args.User, PopupType.Medium); + Popup.PopupEntity(Loc.GetString("vending-machine-restock-done-self", ("target", uid)), args.Args.User, args.Args.User, PopupType.Medium); + var othersFilter = Filter.PvsExcept(args.Args.User); + Popup.PopupEntity(Loc.GetString("vending-machine-restock-done-others", ("user", Identity.Entity(args.User, EntityManager)), ("target", uid)), args.Args.User, othersFilter, true, PopupType.Medium); Audio.PlayPvs(restockComponent.SoundRestockDone, uid, AudioParams.Default.WithVolume(-2f).WithVariation(0.2f)); diff --git a/Content.Server/VoiceTrigger/StorageVoiceControlSystem.cs b/Content.Server/VoiceTrigger/StorageVoiceControlSystem.cs index 72e361bc58..c3fde14517 100644 --- a/Content.Server/VoiceTrigger/StorageVoiceControlSystem.cs +++ b/Content.Server/VoiceTrigger/StorageVoiceControlSystem.cs @@ -36,10 +36,6 @@ public sealed class StorageVoiceControlSystem : EntitySystem (itemSlot.SlotFlags & ent.Comp.AllowedSlots) == 0) return; - // Don't do anything if there is no message - if (args.Message == null) - return; - // Get the storage component if (!TryComp(ent, out var storage)) return; @@ -79,20 +75,33 @@ public sealed class StorageVoiceControlSystem : EntitySystem // If otherwise, we're retrieving an item, so check all the items currently in the attached storage foreach (var item in storage.Container.ContainedEntities) { - // Get the item's name - var itemName = MetaData(item).EntityName; - // The message doesn't match the item name the requestor requested, skip and move on to the next item - if (!args.Message.Contains(itemName, StringComparison.InvariantCultureIgnoreCase)) - continue; - - // We found the item we want, so draw it from storage and place it into the player's hands - if (storage.Container.ContainedEntities.Count != 0) + // Check if the name contains the actual command. + // This will do comparisons against any length of string which is a little weird, but worth the tradeoff. + // E.g "go go s" would give you the screwdriver because "screwdriver" contains "s" + if (Name(item).Contains(args.MessageWithoutPhrase)) { - _container.RemoveEntity(ent, item); - _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(args.Source)} retrieved {ToPrettyString(item)} from {ToPrettyString(ent)} via voice control"); - _hands.TryPickup(args.Source, item, handsComp: hands); + ExtractItemFromStorage(ent, item, args.Source, hands); break; } } } + + /// + /// Extracts an item from storage and places it into the player's hands. + /// + /// The entity with the + /// The entity to be extracted from the attached storage + /// The entity wearing the item + /// The of the person wearing the item + private void ExtractItemFromStorage(Entity ent, + EntityUid item, + EntityUid source, + HandsComponent hands) + { + _container.RemoveEntity(ent, item); + _adminLogger.Add(LogType.Action, + LogImpact.Low, + $"{ToPrettyString(source)} retrieved {ToPrettyString(item)} from {ToPrettyString(ent)} via voice control"); + _hands.TryPickup(source, item, handsComp: hands); + } } diff --git a/Content.Server/Warps/WarpPointComponent.cs b/Content.Server/Warps/WarpPointComponent.cs deleted file mode 100644 index ce169f2e19..0000000000 --- a/Content.Server/Warps/WarpPointComponent.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace Content.Server.Warps -{ - /// - /// Allows ghosts etc to warp to this entity by name. - /// - [RegisterComponent] - public sealed partial class WarpPointComponent : Component - { - [ViewVariables(VVAccess.ReadWrite), DataField] - public string? Location; - - /// - /// If true, ghosts warping to this entity will begin following it. - /// - [DataField] - public bool Follow; - } -} diff --git a/Content.Server/Warps/WarpPointSystem.cs b/Content.Server/Warps/WarpPointSystem.cs index d3b978a147..2e2264a81a 100644 --- a/Content.Server/Warps/WarpPointSystem.cs +++ b/Content.Server/Warps/WarpPointSystem.cs @@ -1,5 +1,6 @@ using Content.Shared.Examine; using Content.Shared.Ghost; +using Content.Shared.Warps; namespace Content.Server.Warps; diff --git a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs index ff975c4714..1e8f3334ac 100644 --- a/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs +++ b/Content.Server/Weapons/Melee/MeleeWeaponSystem.cs @@ -1,26 +1,13 @@ using Content.Server.Chat.Systems; -using Content.Server.CombatMode.Disarm; using Content.Server.Movement.Systems; -using Content.Shared.Actions.Events; -using Content.Shared.Administration.Components; -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.Hands.Components; -using Content.Shared.IdentityManagement; -using Content.Shared.Mobs.Systems; -using Content.Shared.Popups; using Content.Shared.Speech.Components; -using Content.Shared.StatusEffect; using Content.Shared.Weapons.Melee; using Content.Shared.Weapons.Melee.Events; -using Robust.Shared.Audio; -using Robust.Shared.Audio.Systems; using Robust.Shared.Map; using Robust.Shared.Player; -using Robust.Shared.Random; using System.Linq; using System.Numerics; @@ -28,12 +15,9 @@ namespace Content.Server.Weapons.Melee; public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem { - [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly ChatSystem _chat = default!; [Dependency] private readonly DamageExamineSystem _damageExamine = default!; [Dependency] private readonly LagCompensationSystem _lag = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly SharedColorFlashEffectSystem _color = default!; public override void Initialize() @@ -85,106 +69,6 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem return true; } - protected override bool DoDisarm(EntityUid user, DisarmAttackEvent ev, EntityUid meleeUid, MeleeWeaponComponent component, ICommonSession? session) - { - if (!base.DoDisarm(user, ev, meleeUid, component, session)) - return false; - - if (!TryComp(user, out var combatMode) || - combatMode.CanDisarm != true) - { - return false; - } - - var target = GetEntity(ev.Target!.Value); - - if (_mobState.IsIncapacitated(target)) - { - return false; - } - - if (!TryComp(target, out var targetHandsComponent)) - { - if (!TryComp(target, out var status) || !status.AllowedEffects.Contains("KnockedDown")) - return false; - } - - if (!InRange(user, target, component.Range, session)) - { - return false; - } - - EntityUid? inTargetHand = null; - - if (targetHandsComponent?.ActiveHand is { IsEmpty: false }) - { - inTargetHand = targetHandsComponent.ActiveHand.HeldEntity!.Value; - } - - Interaction.DoContactInteraction(user, target); - - var attemptEvent = new DisarmAttemptEvent(target, user, inTargetHand); - - if (inTargetHand != null) - { - RaiseLocalEvent(inTargetHand.Value, attemptEvent); - } - - RaiseLocalEvent(target, attemptEvent); - - if (attemptEvent.Cancelled) - return false; - - var chance = CalculateDisarmChance(user, target, inTargetHand, combatMode); - - if (_random.Prob(chance)) - { - // Yknow something tells me this comment is hilariously out of date... - // Don't play a sound as the swing is already predicted. - // Also don't play popups because most disarms will miss. - return false; - } - - AdminLogger.Add(LogType.DisarmedAction, $"{ToPrettyString(user):user} used disarm on {ToPrettyString(target):target}"); - - var eventArgs = new DisarmedEvent { Target = target, Source = user, PushProbability = 1 - chance }; - RaiseLocalEvent(target, eventArgs); - - if (!eventArgs.Handled) - { - return false; - } - - _audio.PlayPvs(combatMode.DisarmSuccessSound, user, AudioParams.Default.WithVariation(0.025f).WithVolume(5f)); - AdminLogger.Add(LogType.DisarmedAction, $"{ToPrettyString(user):user} used disarm on {ToPrettyString(target):target}"); - - var targetEnt = Identity.Entity(target, EntityManager); - var userEnt = Identity.Entity(user, EntityManager); - - var msgOther = Loc.GetString( - eventArgs.PopupPrefix + "popup-message-other-clients", - ("performerName", userEnt), - ("targetName", targetEnt)); - - var msgUser = Loc.GetString(eventArgs.PopupPrefix + "popup-message-cursor", ("targetName", targetEnt)); - - var filterOther = Filter.PvsExcept(user, entityManager: EntityManager); - - PopupSystem.PopupEntity(msgOther, user, filterOther, true); - PopupSystem.PopupEntity(msgUser, target, user); - - if (eventArgs.IsStunned) - { - - PopupSystem.PopupEntity(Loc.GetString("stunned-component-disarm-success-others", ("source", userEnt), ("target", targetEnt)), targetEnt, Filter.PvsExcept(user), true, PopupType.LargeCaution); - PopupSystem.PopupCursor(Loc.GetString("stunned-component-disarm-success", ("target", targetEnt)), user, PopupType.Large); - - AdminLogger.Add(LogType.DisarmedKnockdown, LogImpact.Medium, $"{ToPrettyString(user):user} knocked down {ToPrettyString(target):target}"); - } - - return true; - } - protected override bool InRange(EntityUid user, EntityUid target, float range, ICommonSession? session) { EntityCoordinates targetCoordinates; @@ -205,24 +89,6 @@ public sealed class MeleeWeaponSystem : SharedMeleeWeaponSystem _color.RaiseEffect(Color.Red, targets, filter); } - private float CalculateDisarmChance(EntityUid disarmer, EntityUid disarmed, EntityUid? inTargetHand, CombatModeComponent disarmerComp) - { - if (HasComp(disarmer)) - return 1.0f; - - if (HasComp(disarmed)) - return 0.0f; - - var chance = disarmerComp.BaseDisarmFailChance; - - if (inTargetHand != null && TryComp(inTargetHand, out var malus)) - { - chance += malus.Malus; - } - - return Math.Clamp(chance, 0f, 1f); - } - public override void DoLunge(EntityUid user, EntityUid weapon, Angle angle, Vector2 localPos, string? animation, bool predicted = true) { Filter filter; diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs index e5439cdb06..47b0d5f3c6 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.AutoFire.cs @@ -31,7 +31,7 @@ public sealed partial class GunSystem } else if (gun.BurstActivated) { - var parent = _transform.GetParentUid(uid); + var parent = TransformSystem.GetParentUid(uid); if (HasComp(parent)) AttemptShoot(parent, uid, gun, gun.ShootCoordinates ?? new EntityCoordinates(uid, gun.DefaultDirection)); else diff --git a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs index 86be82d1c3..b8d488b575 100644 --- a/Content.Server/Weapons/Ranged/Systems/GunSystem.cs +++ b/Content.Server/Weapons/Ranged/Systems/GunSystem.cs @@ -32,9 +32,9 @@ public sealed partial class GunSystem : SharedGunSystem [Dependency] private readonly DamageExamineSystem _damageExamine = default!; [Dependency] private readonly PricingSystem _pricing = default!; [Dependency] private readonly SharedColorFlashEffectSystem _color = default!; - [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly StaminaSystem _stamina = default!; [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SharedMapSystem _map = default!; private const float DamagePitchVariation = 0.05f; @@ -76,16 +76,16 @@ public sealed partial class GunSystem : SharedGunSystem } } - var fromMap = fromCoordinates.ToMap(EntityManager, TransformSystem); - var toMap = toCoordinates.ToMapPos(EntityManager, TransformSystem); + var fromMap = TransformSystem.ToMapCoordinates(fromCoordinates); + var toMap = TransformSystem.ToMapCoordinates(toCoordinates).Position; var mapDirection = toMap - fromMap.Position; var mapAngle = mapDirection.ToAngle(); var angle = GetRecoilAngle(Timing.CurTime, gun, mapDirection.ToAngle()); // If applicable, this ensures the projectile is parented to grid on spawn, instead of the map. - var fromEnt = MapManager.TryFindGridAt(fromMap, out var gridUid, out var grid) - ? fromCoordinates.WithEntityId(gridUid, EntityManager) - : new EntityCoordinates(MapManager.GetMapEntityId(fromMap.MapId), fromMap.Position); + var fromEnt = MapManager.TryFindGridAt(fromMap, out var gridUid, out _) + ? TransformSystem.WithEntityId(fromCoordinates, gridUid) + : new EntityCoordinates(_map.GetMapOrInvalid(fromMap.MapId), fromMap.Position); // Update shot based on the recoil toMap = fromMap.Position + angle.ToVec() * mapDirection.Length(); @@ -196,7 +196,7 @@ public sealed partial class GunSystem : SharedGunSystem break; fromEffect = Transform(hit).Coordinates; - from = fromEffect.ToMap(EntityManager, _transform); + from = TransformSystem.ToMapCoordinates(fromEffect); dir = ev.Direction; lastUser = hit; } @@ -405,13 +405,13 @@ public sealed partial class GunSystem : SharedGunSystem if (gridUid != fromCoordinates.EntityId && TryComp(gridUid, out TransformComponent? gridXform)) { var (_, gridRot, gridInvMatrix) = TransformSystem.GetWorldPositionRotationInvMatrix(gridXform); - var map = _transform.ToMapCoordinates(fromCoordinates); + var map = TransformSystem.ToMapCoordinates(fromCoordinates); fromCoordinates = new EntityCoordinates(gridUid.Value, Vector2.Transform(map.Position, gridInvMatrix)); angle -= gridRot; } else { - angle -= _transform.GetWorldRotation(fromXform); + angle -= TransformSystem.GetWorldRotation(fromXform); } if (distance >= 1f) diff --git a/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs b/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs index f2e051669a..1207d6f157 100644 --- a/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs +++ b/Content.Server/Worldgen/Systems/Carvers/NoiseRangeCarverSystem.cs @@ -1,4 +1,4 @@ -using Content.Server.Worldgen.Components.Carvers; +using Content.Server.Worldgen.Components.Carvers; using Content.Server.Worldgen.Systems.Debris; namespace Content.Server.Worldgen.Systems.Carvers; @@ -20,7 +20,7 @@ public sealed class NoiseRangeCarverSystem : EntitySystem private void OnPrePlaceDebris(EntityUid uid, NoiseRangeCarverComponent component, ref PrePlaceDebrisFeatureEvent args) { - var coords = WorldGen.WorldToChunkCoords(args.Coords.ToMapPos(EntityManager, _transform)); + var coords = WorldGen.WorldToChunkCoords(_transform.ToMapCoordinates(args.Coords).Position); var val = _index.Evaluate(uid, component.NoiseChannel, coords); foreach (var (low, high) in component.Ranges) diff --git a/Content.Server/Worldgen/Systems/Debris/DebrisFeaturePlacerSystem.cs b/Content.Server/Worldgen/Systems/Debris/DebrisFeaturePlacerSystem.cs index 47ee6f6214..b609f7e1f7 100644 --- a/Content.Server/Worldgen/Systems/Debris/DebrisFeaturePlacerSystem.cs +++ b/Content.Server/Worldgen/Systems/Debris/DebrisFeaturePlacerSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using System.Numerics; using Content.Server.Worldgen.Components; using Content.Server.Worldgen.Components.Debris; @@ -26,6 +26,8 @@ public sealed class DebrisFeaturePlacerSystem : BaseWorldSystem private ISawmill _sawmill = default!; + private List> _mapGrids = new(); + /// public override void Initialize() { @@ -139,7 +141,14 @@ public sealed class DebrisFeaturePlacerSystem : BaseWorldSystem component.DoSpawns = false; // Don't repeat yourself if this crashes. - var chunk = Comp(args.Chunk); + if (!TryComp(args.Chunk, out var chunk)) + return; + + var chunkMap = chunk.Map; + + if (!TryComp(chunkMap, out var map)) + return; + var densityChannel = component.DensityNoiseChannel; var density = _noiseIndex.Evaluate(uid, densityChannel, chunk.Coordinates + new Vector2(0.5f, 0.5f)); if (density == 0) @@ -157,7 +166,9 @@ public sealed class DebrisFeaturePlacerSystem : BaseWorldSystem .ToList(); } - points ??= GeneratePointsInChunk(args.Chunk, density, chunk.Coordinates, chunk.Map); + points ??= GeneratePointsInChunk(args.Chunk, density, chunk.Coordinates, chunkMap); + + var mapId = map.MapId; var safetyBounds = Box2.UnitCentered.Enlarged(component.SafetyZoneRadius); var failures = 0; // Avoid severe log spam. @@ -173,11 +184,10 @@ public sealed class DebrisFeaturePlacerSystem : BaseWorldSystem if (pointDensity == 0 && component.DensityClip || _random.Prob(component.RandomCancellationChance)) continue; - var coords = new EntityCoordinates(chunk.Map, point); + if (HasCollisions(mapId, safetyBounds.Translated(point))) + continue; - if (_mapManager - .FindGridsIntersecting(Comp(chunk.Map).MapId, safetyBounds.Translated(point)).Any()) - continue; // Oops, gonna collide. + var coords = new EntityCoordinates(chunkMap, point); var preEv = new PrePlaceDebrisFeatureEvent(coords, args.Chunk); RaiseLocalEvent(uid, ref preEv); @@ -216,6 +226,19 @@ public sealed class DebrisFeaturePlacerSystem : BaseWorldSystem _sawmill.Error($"Failed to place {failures} debris at chunk {args.Chunk}"); } + /// + /// Checks to see if the potential spawn point is clear + /// + /// + /// + /// + private bool HasCollisions(MapId mapId, Box2 point) + { + _mapGrids.Clear(); + _mapManager.FindGridsIntersecting(mapId, point, ref _mapGrids); + return _mapGrids.Count > 0; + } + /// /// Generates the points to put into a chunk using a poisson disk sampler. /// diff --git a/Content.Server/Worldgen/Systems/Debris/NoiseDrivenDebrisSelectorSystem.cs b/Content.Server/Worldgen/Systems/Debris/NoiseDrivenDebrisSelectorSystem.cs index 8d8ca1b6c7..a02ff81362 100644 --- a/Content.Server/Worldgen/Systems/Debris/NoiseDrivenDebrisSelectorSystem.cs +++ b/Content.Server/Worldgen/Systems/Debris/NoiseDrivenDebrisSelectorSystem.cs @@ -1,5 +1,6 @@ -using Content.Server.Worldgen.Components.Debris; +using Content.Server.Worldgen.Components.Debris; using Robust.Server.GameObjects; +using Robust.Shared.Physics; using Robust.Shared.Random; namespace Content.Server.Worldgen.Systems.Debris; @@ -28,7 +29,7 @@ public sealed class NoiseDrivenDebrisSelectorSystem : BaseWorldSystem private void OnSelectDebrisKind(EntityUid uid, NoiseDrivenDebrisSelectorComponent component, ref TryGetPlaceableDebrisFeatureEvent args) { - var coords = WorldGen.WorldToChunkCoords(args.Coords.ToMapPos(EntityManager, _xformSys)); + var coords = WorldGen.WorldToChunkCoords(_xformSys.ToMapCoordinates(args.Coords).Position); var prob = _index.Evaluate(uid, component.NoiseChannel, coords); if (prob is < 0 or > 1) diff --git a/Content.Server/Worldgen/Systems/WorldgenConfigSystem.cs b/Content.Server/Worldgen/Systems/WorldgenConfigSystem.cs index c47bfb9f88..cc0ec62733 100644 --- a/Content.Server/Worldgen/Systems/WorldgenConfigSystem.cs +++ b/Content.Server/Worldgen/Systems/WorldgenConfigSystem.cs @@ -22,7 +22,7 @@ public sealed class WorldgenConfigSystem : EntitySystem [Dependency] private readonly GameTicker _gameTicker = default!; [Dependency] private readonly IConfigurationManager _cfg = default!; [Dependency] private readonly IConsoleHost _conHost = default!; - [Dependency] private readonly IMapManager _map = default!; + [Dependency] private readonly SharedMapSystem _map = default!; [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly ISerializationManager _ser = default!; @@ -53,7 +53,7 @@ public sealed class WorldgenConfigSystem : EntitySystem return; } - var map = _map.GetMapEntityId(new MapId(mapInt)); + var map = _map.GetMapOrInvalid(new MapId(mapInt)); if (!_proto.TryIndex(args[1], out var proto)) { @@ -73,7 +73,7 @@ public sealed class WorldgenConfigSystem : EntitySystem if (_enabled == false) return; - var target = _map.GetMapEntityId(_gameTicker.DefaultMap); + var target = _map.GetMapOrInvalid(_gameTicker.DefaultMap); Log.Debug($"Trying to configure {_gameTicker.DefaultMap}, aka {ToPrettyString(target)} aka {target}"); var cfg = _proto.Index(_worldgenConfig); diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteSystem.cs b/Content.Server/Xenoarchaeology/Artifact/RandomArtifactSpriteSystem.cs similarity index 64% rename from Content.Server/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteSystem.cs rename to Content.Server/Xenoarchaeology/Artifact/RandomArtifactSpriteSystem.cs index 091441df21..645dac24e2 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteSystem.cs +++ b/Content.Server/Xenoarchaeology/Artifact/RandomArtifactSpriteSystem.cs @@ -1,11 +1,11 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; using Content.Shared.Item; +using Content.Shared.Xenoarchaeology.Artifact; using Content.Shared.Xenoarchaeology.XenoArtifacts; using Robust.Server.GameObjects; using Robust.Shared.Random; using Robust.Shared.Timing; -namespace Content.Server.Xenoarchaeology.XenoArtifacts; +namespace Content.Server.Xenoarchaeology.Artifact; public sealed class RandomArtifactSpriteSystem : EntitySystem { @@ -17,8 +17,11 @@ public sealed class RandomArtifactSpriteSystem : EntitySystem public override void Initialize() { base.Initialize(); + SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnActivated); + SubscribeLocalEvent(UnlockingStageStarted); + SubscribeLocalEvent(UnlockingStageFinished); + SubscribeLocalEvent(ArtifactActivated); } public override void Update(float frameTime) @@ -47,9 +50,19 @@ public sealed class RandomArtifactSpriteSystem : EntitySystem _item.SetHeldPrefix(uid, "ano" + randomSprite.ToString("D2")); //set item artifact inhands } - private void OnActivated(EntityUid uid, RandomArtifactSpriteComponent component, ArtifactActivatedEvent args) + private void UnlockingStageStarted(Entity ent, ref ArtifactUnlockingStartedEvent args) { - _appearance.SetData(uid, SharedArtifactsVisuals.IsActivated, true); - component.ActivationStart = _time.CurTime; + _appearance.SetData(ent, SharedArtifactsVisuals.IsUnlocking, true); + } + + private void UnlockingStageFinished(Entity ent, ref ArtifactUnlockingFinishedEvent args) + { + _appearance.SetData(ent, SharedArtifactsVisuals.IsUnlocking, false); + } + + private void ArtifactActivated(Entity ent, ref XenoArtifactActivatedEvent args) + { + _appearance.SetData(ent, SharedArtifactsVisuals.IsActivated, true); + ent.Comp.ActivationStart = _time.CurTime; } } diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEChargeBatteryComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEChargeBatteryComponent.cs new file mode 100644 index 0000000000..d63a52f42b --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEChargeBatteryComponent.cs @@ -0,0 +1,14 @@ +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// This is used for recharging all nearby batteries when activated. +/// +[RegisterComponent, Access(typeof(XAEChargeBatterySystem))] +public sealed partial class XAEChargeBatteryComponent : Component +{ + /// + /// The radius of entities that will be affected. + /// + [DataField("radius")] + public float Radius = 15f; +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAECreateGasComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAECreateGasComponent.cs new file mode 100644 index 0000000000..ba0893dc71 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAECreateGasComponent.cs @@ -0,0 +1,16 @@ +using Content.Shared.Atmos; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// XenoArtifact effect that creates gas in atmosphere. +/// +[RegisterComponent, Access(typeof(XAECreateGasSystem))] +public sealed partial class XAECreateGasComponent : Component +{ + /// + /// The gases and how many moles will be created of each. + /// + [DataField] + public Dictionary Gases = new(); +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAECreatePuddleComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAECreatePuddleComponent.cs new file mode 100644 index 0000000000..f77fc96227 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAECreatePuddleComponent.cs @@ -0,0 +1,46 @@ +using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Reagent; +using Content.Shared.Destructible.Thresholds; +using Robust.Shared.Prototypes; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// This is used for an artifact that creates a puddle of +/// random chemicals upon being triggered. +/// +[RegisterComponent, Access(typeof(XAECreatePuddleSystem))] +public sealed partial class XAECreatePuddleComponent : Component +{ + /// + /// The solution where all the chemicals are stored. + /// + [DataField(required: true), ViewVariables(VVAccess.ReadWrite)] + public Solution ChemicalSolution = default!; + + /// + /// The different chemicals that can be spawned by this effect. + /// + [DataField] + public List> PossibleChemicals = new(); + + /// + /// The number of chemicals in the puddle. + /// + [DataField] + public MinMax ChemAmount = new MinMax(1, 3); + + /// + /// List of reagents selected for this node. Selected ones are chosen on first activation + /// and are picked from and is calculated separately for each node. + /// + [DataField] + public List>? SelectedChemicals; + + /// + /// Marker, if entity where this component is placed should have description replaced with selected chemicals + /// on component init. + /// + [DataField] + public bool ReplaceDescription; +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEEmpInAreaComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEEmpInAreaComponent.cs new file mode 100644 index 0000000000..1e9489e9ec --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEEmpInAreaComponent.cs @@ -0,0 +1,26 @@ +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// Effect of EMP on activation. +/// +[RegisterComponent, Access(typeof(XAEEmpInAreaSystem))] +public sealed partial class XAEEmpInAreaComponent : Component +{ + /// + /// Range of EMP effect. + /// + [DataField] + public float Range = 4f; + + /// + /// Energy to be consumed from energy containers. + /// + [DataField] + public float EnergyConsumption = 1000000; + + /// + /// Duration (in seconds) for which devices going to be disabled. + /// + [DataField] + public float DisableDuration = 60f; +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEFoamComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEFoamComponent.cs new file mode 100644 index 0000000000..d216275945 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEFoamComponent.cs @@ -0,0 +1,56 @@ +using Content.Shared.Chemistry.Reagent; +using Robust.Shared.Prototypes; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// Generates foam from the artifact when activated. +/// +[RegisterComponent, Access(typeof(XAEFoamSystem))] +public sealed partial class XAEFoamComponent : Component +{ + /// + /// The list of reagents that will randomly be picked from + /// to choose the foam reagent. + /// + [DataField(required: true)] + public List> Reagents = new(); + + /// + /// The foam reagent. + /// + [DataField] + public string? SelectedReagent; + + /// + /// How long does the foam last? + /// + [DataField] + public float Duration = 10f; + + /// + /// How much reagent is in the foam? + /// + [DataField] + public float ReagentAmount = 100f; + + /// + /// Minimum radius of foam spawned. + /// + [DataField] + public int MinFoamAmount = 15; + + /// + /// Maximum radius of foam spawned. + /// + [DataField] + public int MaxFoamAmount = 20; + + /// + /// Marker, if entity where this component is placed should have description replaced with selected chemicals + /// on component init. + /// + [DataField] + public bool ReplaceDescription; +} + diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEIgniteComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEIgniteComponent.cs new file mode 100644 index 0000000000..a8d591efe1 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEIgniteComponent.cs @@ -0,0 +1,22 @@ +using Content.Shared.Destructible.Thresholds; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// Artifact that ignites surrounding entities when triggered. +/// +[RegisterComponent, Access(typeof(XAEIgniteSystem))] +public sealed partial class XAEIgniteComponent : Component +{ + /// + /// Range, inside which all entities going be set on fire. + /// + [DataField] + public float Range = 2f; + + /// + /// Amount of fire stacks to apply + /// + [DataField] + public MinMax FireStack = new(2, 5); +} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/LightFlickerArtifactComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAELightFlickerComponent.cs similarity index 51% rename from Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/LightFlickerArtifactComponent.cs rename to Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAELightFlickerComponent.cs index 24578d722d..b7fe332dcf 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/LightFlickerArtifactComponent.cs +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAELightFlickerComponent.cs @@ -1,20 +1,20 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; /// /// Flickers all the lights within a certain radius. /// -[RegisterComponent] -public sealed partial class LightFlickerArtifactComponent : Component +[RegisterComponent, Access(typeof(XAELightFlickerSystem))] +public sealed partial class XAELightFlickerComponent : Component { /// - /// Lights within this radius will be flickered on activation + /// Lights within this radius will be flickered on activation. /// - [DataField("radius")] + [DataField] public float Radius = 4; /// - /// The chance that the light will flicker + /// The chance that the light will flicker. /// - [DataField("flickerChance")] + [DataField] public float FlickerChance = 0.75f; } diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PolyOthersArtifactComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEPolymorphComponent.cs similarity index 62% rename from Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PolyOthersArtifactComponent.cs rename to Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEPolymorphComponent.cs index 2611d78b08..02aaa3f4ad 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PolyOthersArtifactComponent.cs +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEPolymorphComponent.cs @@ -1,16 +1,14 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; -using Robust.Shared.Audio; using Content.Shared.Polymorph; +using Robust.Shared.Audio; using Robust.Shared.Prototypes; -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; /// -/// Artifact polymorphs surrounding entities when triggered. +/// Artifact polymorphs entities when triggered. /// -[RegisterComponent] -[Access(typeof(PolyOthersArtifactSystem))] -public sealed partial class PolyOthersArtifactComponent : Component +[RegisterComponent, Access(typeof(XAEPolymorphSystem))] +public sealed partial class XAEPolymorphComponent : Component { /// /// The polymorph effect to trigger. @@ -19,7 +17,7 @@ public sealed partial class PolyOthersArtifactComponent : Component public ProtoId PolymorphPrototypeName = "ArtifactMonkey"; /// - /// range of the effect. + /// Range of the effect. /// [DataField] public float Range = 2f; diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEPortalComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEPortalComponent.cs new file mode 100644 index 0000000000..bafaf78e7f --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEPortalComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.Prototypes; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// When activated artifact will spawn a pair of portals. First - right in artifact, Second - at random point of station. +/// +[RegisterComponent, Access(typeof(XAEPortalSystem))] +public sealed partial class XAEPortalComponent : Component +{ + /// + /// Entity that should be spawned as portal. + /// + [DataField, AutoNetworkedField] + public EntProtoId PortalProto = "PortalArtifact"; +} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TelepathicArtifactComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETelepathicComponent.cs similarity index 85% rename from Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TelepathicArtifactComponent.cs rename to Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETelepathicComponent.cs index a7073a743a..2354d2f16b 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TelepathicArtifactComponent.cs +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETelepathicComponent.cs @@ -1,11 +1,11 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; /// /// Harmless artifact that broadcast "thoughts" to players nearby. /// Thoughts are shown as popups and unique for each player. /// -[RegisterComponent] -public sealed partial class TelepathicArtifactComponent : Component +[RegisterComponent, Access(typeof(XAETelepathicSystem))] +public sealed partial class XAETelepathicComponent : Component { /// /// Loc string ids of telepathic messages. diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TemperatureArtifactComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETemperatureComponent.cs similarity index 75% rename from Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TemperatureArtifactComponent.cs rename to Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETemperatureComponent.cs index 0988617cdc..00d3775a8d 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TemperatureArtifactComponent.cs +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETemperatureComponent.cs @@ -1,12 +1,12 @@ using Content.Shared.Atmos; -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; /// /// Change atmospherics temperature until it reach target. /// -[RegisterComponent] -public sealed partial class TemperatureArtifactComponent : Component +[RegisterComponent, Access(typeof(XAETemperatureSystem))] +public sealed partial class XAETemperatureComponent : Component { [DataField("targetTemp"), ViewVariables(VVAccess.ReadWrite)] public float TargetTemperature = Atmospherics.T0C; diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ThrowArtifactComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEThrowThingsAroundComponent.cs similarity index 75% rename from Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ThrowArtifactComponent.cs rename to Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEThrowThingsAroundComponent.cs index 0c27392208..674bfd3251 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ThrowArtifactComponent.cs +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAEThrowThingsAroundComponent.cs @@ -1,11 +1,11 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; /// /// Throws all nearby entities backwards. /// Also pries nearby tiles. /// -[RegisterComponent] -public sealed partial class ThrowArtifactComponent : Component +[RegisterComponent, Access(typeof(XAEThrowThingsAroundSystem))] +public sealed partial class XAEThrowThingsAroundComponent : Component { /// /// How close do you have to be to get yeeted? diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETriggerExplosivesComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETriggerExplosivesComponent.cs new file mode 100644 index 0000000000..b9e23f036b --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/Components/XAETriggerExplosivesComponent.cs @@ -0,0 +1,9 @@ +using Content.Shared.Explosion.Components.OnTrigger; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// Activates 'trigger' for . +/// +[RegisterComponent, Access(typeof(XAETriggerExplosivesSystem))] +public sealed partial class XAETriggerExplosivesComponent : Component; diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAEChargeBatterySystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEChargeBatterySystem.cs new file mode 100644 index 0000000000..5e9bf7352b --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEChargeBatterySystem.cs @@ -0,0 +1,31 @@ +using Content.Server.Power.Components; +using Content.Server.Power.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact activation effect that is fully charging batteries in certain range. +/// +public sealed class XAEChargeBatterySystem : BaseXAESystem +{ + [Dependency] private readonly BatterySystem _battery = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + + /// Pre-allocated and re-used collection. + private readonly HashSet> _batteryEntities = new(); + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + var chargeBatteryComponent = ent.Comp; + _batteryEntities.Clear(); + _lookup.GetEntitiesInRange(args.Coordinates, chargeBatteryComponent.Radius, _batteryEntities); + foreach (var battery in _batteryEntities) + { + _battery.SetCharge(battery, battery.Comp.MaxCharge, battery); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAECreateGasSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAECreateGasSystem.cs new file mode 100644 index 0000000000..517e2144e0 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAECreateGasSystem.cs @@ -0,0 +1,52 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Atmos; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; +using Robust.Server.GameObjects; +using Robust.Shared.Collections; +using Robust.Shared.Map.Components; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect that creates certain atmospheric gas on artifact tile / adjacent tiles. +/// +public sealed class XAECreateGasSystem : BaseXAESystem +{ + [Dependency] private readonly AtmosphereSystem _atmosphere = default!; + [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly MapSystem _map = default!; + + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + var grid = _transform.GetGrid(args.Coordinates); + var map = _transform.GetMap(args.Coordinates); + if (map == null || !TryComp(grid, out var gridComp)) + return; + + var tile = _map.LocalToTile(grid.Value, gridComp, args.Coordinates); + + var mixtures = new ValueList(); + if (_atmosphere.GetTileMixture(grid.Value, map.Value, tile, excite: true) is { } localMixture) + mixtures.Add(localMixture); + + if (_atmosphere.GetAdjacentTileMixtures(grid.Value, tile, excite: true) is var adjacentTileMixtures) + { + while (adjacentTileMixtures.MoveNext(out var adjacentMixture)) + { + mixtures.Add(adjacentMixture); + } + } + + foreach (var (gas, moles) in ent.Comp.Gases) + { + var molesPerMixture = moles / mixtures.Count; + + foreach (var mixture in mixtures) + { + mixture.AdjustMoles(gas, molesPerMixture); + } + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAECreatePuddleSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAECreatePuddleSystem.cs new file mode 100644 index 0000000000..7f996266f6 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAECreatePuddleSystem.cs @@ -0,0 +1,77 @@ +using Content.Server.Fluids.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Chemistry.Reagent; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect that creates puddle of chemical reagents under artifact. +/// +public sealed class XAECreatePuddleSystem: BaseXAESystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly PuddleSystem _puddle = default!; + [Dependency] private readonly MetaDataSystem _metaData= default!; + [Dependency] private readonly IPrototypeManager _prototypeManager= default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnInit); + } + + private void OnInit(EntityUid uid, XAECreatePuddleComponent component, MapInitEvent _) + { + if (component.PossibleChemicals == null || component.PossibleChemicals.Count == 0) + return; + + if (component.SelectedChemicals == null) + { + var chemicalList = new List>(); + var chemAmount = component.ChemAmount.Next(_random); + for (var i = 0; i < chemAmount; i++) + { + var chemProto = _random.Pick(component.PossibleChemicals); + chemicalList.Add(chemProto); + } + + component.SelectedChemicals = chemicalList; + } + + if (component.ReplaceDescription) + { + var reagentNames = new HashSet(); + foreach (var chemProtoId in component.SelectedChemicals) + { + var reagent = _prototypeManager.Index(chemProtoId); + reagentNames.Add(reagent.LocalizedName); + } + + var reagentNamesStr = string.Join(", ", reagentNames); + var newEntityDescription = Loc.GetString("xenoarch-effect-puddle", ("reagent", reagentNamesStr)); + _metaData.SetEntityDescription(uid, newEntityDescription); + } + } + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + var component = ent.Comp; + if (component.SelectedChemicals == null) + return; + + var amountPerChem = component.ChemicalSolution.MaxVolume / component.SelectedChemicals.Count; + foreach (var reagent in component.SelectedChemicals) + { + component.ChemicalSolution.AddReagent(reagent, amountPerChem); + } + + _puddle.TrySpillAt(ent, component.ChemicalSolution, out _); + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAEEmpInAreaSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEEmpInAreaSystem.cs new file mode 100644 index 0000000000..43a8ed9929 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEEmpInAreaSystem.cs @@ -0,0 +1,20 @@ +using Content.Server.Emp; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect that creates EMP on use. +/// +public sealed class XAEEmpInAreaSystem : BaseXAESystem +{ + [Dependency] private readonly EmpSystem _emp = default!; + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + _emp.EmpPulse(args.Coordinates, ent.Comp.Range, ent.Comp.EnergyConsumption, ent.Comp.DisableDuration); + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAEFoamSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEFoamSystem.cs new file mode 100644 index 0000000000..d5190ce416 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEFoamSystem.cs @@ -0,0 +1,63 @@ +using Content.Server.Fluids.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Chemistry.Components; +using Content.Shared.Chemistry.Reaction; +using Content.Shared.Chemistry.Reagent; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect that starts Foam chemical reaction with random-ish reagents inside. +/// +public sealed class XAEFoamSystem : BaseXAESystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SmokeSystem _smoke = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager= default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + } + + private void OnMapInit(EntityUid uid, XAEFoamComponent component, MapInitEvent args) + { + if (component.SelectedReagent != null) + return; + + if (component.Reagents.Count == 0) + return; + + component.SelectedReagent = _random.Pick(component.Reagents); + + if (component.ReplaceDescription) + { + var reagent = _prototypeManager.Index(component.SelectedReagent); + var newEntityDescription = Loc.GetString("xenoarch-effect-foam", ("reagent", reagent.LocalizedName)); + _metaData.SetEntityDescription(uid, newEntityDescription); + } + } + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + var component = ent.Comp; + if (component.SelectedReagent == null) + return; + + var sol = new Solution(); + var range = (int)MathF.Round(MathHelper.Lerp(component.MinFoamAmount, component.MaxFoamAmount, _random.NextFloat(0, 1f))); + sol.AddReagent(component.SelectedReagent, component.ReagentAmount); + var foamEnt = Spawn(ChemicalReactionSystem.FoamReaction, args.Coordinates); + var spreadAmount = range * 4; + _smoke.StartSmoke(foamEnt, sol, component.Duration, spreadAmount); + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAEIgniteSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEIgniteSystem.cs new file mode 100644 index 0000000000..14270fb866 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEIgniteSystem.cs @@ -0,0 +1,47 @@ +using Content.Server.Atmos.Components; +using Content.Server.Atmos.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; +using Robust.Shared.Random; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact activation effect that ignites any flammable entity in range. +/// +public sealed class XAEIgniteSystem : BaseXAESystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly FlammableSystem _flammable = default!; + + private EntityQuery _flammables; + + /// Pre-allocated and re-used collection. + private readonly HashSet _entities = new(); + + /// + public override void Initialize() + { + base.Initialize(); + + _flammables = GetEntityQuery(); + } + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + var component = ent.Comp; + _entities.Clear(); + _lookup.GetEntitiesInRange(ent.Owner, component.Range, _entities); + foreach (var target in _entities) + { + if (!_flammables.TryGetComponent(target, out var fl)) + continue; + + fl.FireStacks += component.FireStack.Next(_random); + _flammable.Ignite(target, ent.Owner, fl); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAELightFlickerSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAELightFlickerSystem.cs new file mode 100644 index 0000000000..4c4073b123 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAELightFlickerSystem.cs @@ -0,0 +1,49 @@ +using Content.Server.Ghost; +using Content.Server.Light.Components; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; +using Robust.Shared.Random; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact activation effect that flickers light on and off. +/// +public sealed class XAELightFlickerSystem : BaseXAESystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly GhostSystem _ghost = default!; + + private EntityQuery _lights; + + /// Pre-allocated and re-used collection. + private readonly HashSet _entities = new(); + + /// + public override void Initialize() + { + base.Initialize(); + + _lights = GetEntityQuery(); + } + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + _entities.Clear(); + _lookup.GetEntitiesInRange(ent.Owner, ent.Comp.Radius, _entities, LookupFlags.StaticSundries); + foreach (var light in _entities) + { + if (!_lights.HasComponent(light)) + continue; + + if (!_random.Prob(ent.Comp.FlickerChance)) + continue; + + //todo: extract effect from ghost system, update power system accordingly + _ghost.DoGhostBooEvent(light); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAEPolymorphSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEPolymorphSystem.cs new file mode 100644 index 0000000000..8418a3baf9 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEPolymorphSystem.cs @@ -0,0 +1,39 @@ +using Content.Server.Polymorph.Systems; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Humanoid; +using Content.Shared.Mobs.Systems; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; +using Robust.Shared.Audio.Systems; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact activation effect that is polymorphing all humanoid entities in range. +/// +public sealed class XAEPolymorphSystem : BaseXAESystem +{ + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly MobStateSystem _mob = default!; + [Dependency] private readonly PolymorphSystem _poly = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + + /// Pre-allocated and re-used collection. + private readonly HashSet> _humanoids = new(); + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + _humanoids.Clear(); + _lookup.GetEntitiesInRange(args.Coordinates, ent.Comp.Range, _humanoids); + foreach (var comp in _humanoids) + { + var target = comp.Owner; + if (!_mob.IsAlive(target)) + continue; + + _poly.PolymorphEntity(target, ent.Comp.PolymorphPrototypeName); + _audio.PlayPvs(ent.Comp.PolySound, ent); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAEPortalSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEPortalSystem.cs new file mode 100644 index 0000000000..acc36f0f8d --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEPortalSystem.cs @@ -0,0 +1,58 @@ +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Mind.Components; +using Content.Shared.Mobs.Components; +using Content.Shared.Teleportation.Systems; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; +using Robust.Shared.Collections; +using Robust.Shared.Containers; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect that creates temporary portal between places on station. +/// +public sealed class XAEPortalSystem : BaseXAESystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly LinkedEntitySystem _link = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + if (!_timing.IsFirstTimePredicted) + return; + + var map = Transform(ent).MapID; + var validMinds = new ValueList(); + var mindQuery = EntityQueryEnumerator(); + while (mindQuery.MoveNext(out var uid, out var mc, out _, out var xform, out var meta)) + { + // check if the MindContainer has a Mind and if the entity is not in a container (this also auto excludes AI) and if they are on the same map + if (mc.HasMind && !_container.IsEntityOrParentInContainer(uid, meta: meta, xform: xform) && xform.MapID == map) + { + validMinds.Add(uid); + } + } + // this would only be 0 if there were a station full of AIs and no one else, in that case just stop this function + if (validMinds.Count == 0) + return; + + if(!TrySpawnNextTo(ent.Comp.PortalProto, args.Artifact, out var firstPortal)) + return; + + var target = _random.Pick(validMinds); + if(!TrySpawnNextTo(ent.Comp.PortalProto, target, out var secondPortal)) + return; + + // Manual position swapping, because the portal that opens doesn't trigger a collision, and doesn't teleport targets the first time. + _transform.SwapPositions(target, args.Artifact.Owner); + + _link.TryLink(firstPortal.Value, secondPortal.Value, true); + } +} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TelepathicArtifactSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAETelepathicSystem.cs similarity index 53% rename from Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TelepathicArtifactSystem.cs rename to Content.Server/Xenoarchaeology/Artifact/XAE/XAETelepathicSystem.cs index df06d4ab01..1755248a5b 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TelepathicArtifactSystem.cs +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAETelepathicSystem.cs @@ -1,31 +1,34 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; using Content.Shared.Popups; -using Robust.Server.GameObjects; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; using Robust.Shared.Player; using Robust.Shared.Random; -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; +namespace Content.Server.Xenoarchaeology.Artifact.XAE; -public sealed class TelepathicArtifactSystem : EntitySystem +/// +/// System for xeno artifact activation effect that sends sublime telepathic messages. +/// +public sealed class XAETelepathicSystem : BaseXAESystem { [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnActivate); - } + /// Pre-allocated and re-used collection. + private readonly HashSet _entities = new(); - private void OnActivate(EntityUid uid, TelepathicArtifactComponent component, ArtifactActivatedEvent args) + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) { + var component = ent.Comp; // try to find victims nearby - var victims = _lookup.GetEntitiesInRange(uid, component.Range); - foreach (var victimUid in victims) + _entities.Clear(); + _lookup.GetEntitiesInRange(ent, component.Range, _entities); + foreach (var victimUid in _entities) { - if (!EntityManager.HasComponent(victimUid)) + if (!HasComp(victimUid)) continue; // roll if msg should be usual or drastic diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAETemperatureSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAETemperatureSystem.cs new file mode 100644 index 0000000000..01a11b946f --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAETemperatureSystem.cs @@ -0,0 +1,49 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Atmos; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; +using Robust.Server.GameObjects; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect that changes atmospheric temperature on adjacent tiles. +/// +public sealed class XAETemperatureSystem : BaseXAESystem +{ + [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; + [Dependency] private readonly TransformSystem _transformSystem = default!; + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + var component = ent.Comp; + var transform = Transform(ent); + + var center = _atmosphereSystem.GetContainingMixture(ent.Owner, false, true); + if (center == null) + return; + + UpdateTileTemperature(component, center); + + if (component.AffectAdjacentTiles && transform.GridUid != null) + { + var position = _transformSystem.GetGridOrMapTilePosition(ent, transform); + var enumerator = _atmosphereSystem.GetAdjacentTileMixtures(transform.GridUid.Value, position, excite: true); + + while (enumerator.MoveNext(out var mixture)) + { + UpdateTileTemperature(component, mixture); + } + } + } + + private void UpdateTileTemperature(XAETemperatureComponent component, GasMixture environment) + { + var dif = component.TargetTemperature - environment.Temperature; + var absDif = Math.Abs(dif); + var step = Math.Min(absDif, component.SpawnTemperature); + environment.Temperature += dif > 0 ? step : -step; + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAEThrowThingsAroundSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEThrowThingsAroundSystem.cs new file mode 100644 index 0000000000..e73fc86a71 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAEThrowThingsAroundSystem.cs @@ -0,0 +1,72 @@ +using System.Numerics; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Maps; +using Content.Shared.Physics; +using Content.Shared.Throwing; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; +using Robust.Shared.Map.Components; +using Robust.Shared.Physics.Components; +using Robust.Shared.Random; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact activation effect that pries tiles and throws stuff around. +/// +public sealed class XAEThrowThingsAroundSystem : BaseXAESystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly ThrowingSystem _throwing = default!; + [Dependency] private readonly TileSystem _tile = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + + private EntityQuery _physQuery; + + /// Pre-allocated and re-used collection. + private readonly HashSet _entities = new(); + + /// + public override void Initialize() + { + base.Initialize(); + + _physQuery = GetEntityQuery(); + } + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + var component = ent.Comp; + var xform = Transform(ent); + if (TryComp(xform.GridUid, out var grid)) + { + var areaForTilesPry = new Circle(_transform.GetWorldPosition(xform), component.Range); + var tiles = _map.GetTilesIntersecting(xform.GridUid.Value, grid, areaForTilesPry, true); + + foreach (var tile in tiles) + { + if (!_random.Prob(component.TilePryChance)) + continue; + + _tile.PryTile(tile); + } + } + + _entities.Clear(); + _lookup.GetEntitiesInRange(ent, component.Range, _entities, LookupFlags.Dynamic | LookupFlags.Sundries); + foreach (var entity in _entities) + { + if (_physQuery.TryGetComponent(entity, out var phys) + && (phys.CollisionMask & (int)CollisionGroup.GhostImpassable) != 0) + continue; + + var tempXform = Transform(entity); + + var foo = _transform.GetWorldPosition(tempXform) - _transform.GetWorldPosition(xform); + _throwing.TryThrow(entity, foo * 2, component.ThrowStrength, ent, 0); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAE/XAETriggerExplosivesSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAE/XAETriggerExplosivesSystem.cs new file mode 100644 index 0000000000..8767023c61 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAE/XAETriggerExplosivesSystem.cs @@ -0,0 +1,24 @@ +using Content.Server.Explosion.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAE.Components; +using Content.Shared.Explosion.Components; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.XAE; + +namespace Content.Server.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect of triggering explosion. +/// +public sealed class XAETriggerExplosivesSystem : BaseXAESystem +{ + [Dependency] private readonly ExplosionSystem _explosion = default!; + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + if(!TryComp(ent, out var explosiveComp)) + return; + + _explosion.TriggerExplosive(ent, explosiveComp); + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATGasComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATGasComponent.cs new file mode 100644 index 0000000000..a5a9a4447b --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATGasComponent.cs @@ -0,0 +1,28 @@ +using Content.Shared.Atmos; + +namespace Content.Server.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for an artifact that is activated by having a certain amount of gas around it. +/// +[RegisterComponent, Access(typeof(XATGasSystem))] +public sealed partial class XATGasComponent : Component +{ + /// + /// The gas that is related to trigger. + /// + [DataField] + public Gas TargetGas; + + /// + /// The amount of gas needed. + /// + [DataField] + public float Moles = Atmospherics.MolesCellStandard * 0.1f; + + /// + /// Marker, if mentioned gas should be present in entity tile for trigger to activate, or it should not. + /// + [DataField] + public bool ShouldBePresent = true; +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATMagnetComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATMagnetComponent.cs new file mode 100644 index 0000000000..0126a2f5a8 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATMagnetComponent.cs @@ -0,0 +1,21 @@ +namespace Content.Server.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// Component for triggering node on getting activated by powerful magnets. +/// +[RegisterComponent, Access(typeof(XATMagnetSystem))] +public sealed partial class XATMagnetComponent : Component +{ + /// + /// How close to the magnet do you have to be? + /// + [DataField] + public float MagnetRange = 40f; + + /// + /// How close do active magboots have to be? + /// This is smaller because they are weaker magnets + /// + [DataField] + public float MagbootsRange = 2f; +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATPressureComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATPressureComponent.cs new file mode 100644 index 0000000000..bdd2f21e33 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATPressureComponent.cs @@ -0,0 +1,20 @@ +namespace Content.Server.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for an artifact that activates when above or below a certain pressure. +/// +[RegisterComponent, Access(typeof(XATPressureSystem))] +public sealed partial class XATPressureComponent : Component +{ + /// + /// The lower-end pressure threshold. Is not considered when null. + /// + [DataField] + public float? MinPressureThreshold; + + /// + /// The higher-end pressure threshold. Is not considered when null. + /// + [DataField] + public float? MaxPressureThreshold; +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATTemperatureComponent.cs b/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATTemperatureComponent.cs new file mode 100644 index 0000000000..b8e080ccd9 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAT/Components/XATTemperatureComponent.cs @@ -0,0 +1,20 @@ +namespace Content.Server.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for an artifact that is activated by having a certain temperature near it. +/// +[RegisterComponent, Access(typeof(XATTemperatureSystem))] +public sealed partial class XATTemperatureComponent : Component +{ + /// + /// Threshold temperature for trigger activation. + /// + [DataField] + public float TargetTemperature; + + /// + /// Marker, if temp needs to be above or below the target. + /// + [DataField] + public bool TriggerOnHigherTemp = true; +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAT/XATGasSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAT/XATGasSystem.cs new file mode 100644 index 0000000000..49f24acbd1 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAT/XATGasSystem.cs @@ -0,0 +1,36 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAT.Components; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT; + +namespace Content.Server.Xenoarchaeology.Artifact.XAT; + +/// +/// System for xeno artifact trigger, which gets activated from some gas being on the same time as artifact with certain concentration. +/// +public sealed class XATGasSystem : BaseQueryUpdateXATSystem +{ + [Dependency] private readonly AtmosphereSystem _atmosphere = default!; + + protected override void UpdateXAT(Entity artifact, Entity node, float frameTime) + { + var xform = Transform(artifact); + + if (_atmosphere.GetTileMixture((artifact, xform)) is not { } mixture) + return; + + var gasTrigger = node.Comp1; + var moles = mixture.GetMoles(gasTrigger.TargetGas); + + if (gasTrigger.ShouldBePresent) + { + if (moles >= gasTrigger.Moles) + Trigger(artifact, node); + } + else + { + if (moles <= gasTrigger.Moles) + Trigger(artifact, node); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAT/XATMagnetSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAT/XATMagnetSystem.cs new file mode 100644 index 0000000000..d045682d55 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAT/XATMagnetSystem.cs @@ -0,0 +1,67 @@ +using Content.Server.Salvage; +using Content.Server.Xenoarchaeology.Artifact.XAT.Components; +using Content.Shared.Clothing; +using Content.Shared.Item.ItemToggle.Components; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT; + +namespace Content.Server.Xenoarchaeology.Artifact.XAT; + +/// +/// System for checking if magnets-related xeno artifact node should be triggered. +/// Works with magboots and salvage magnet, salvage magnet triggers only upon pulsing on activation. +/// +public sealed class XATMagnetSystem : BaseQueryUpdateXATSystem +{ + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + + /// Pre-allocated and re-used collection. + private HashSet> _magbootEntities = new(); + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMagnetActivated); + } + + /// + protected override void UpdateXAT(Entity artifact, Entity node, float frameTime) + { + var coords = Transform(artifact.Owner).Coordinates; + + _magbootEntities.Clear(); + _lookup.GetEntitiesInRange(coords, node.Comp1.MagbootsRange, _magbootEntities); + foreach (var ent in _magbootEntities) + { + if(!TryComp(ent, out var itemToggle) || !itemToggle.Activated) + continue; + + Trigger(artifact, node); + break; + } + } + + private void OnMagnetActivated(ref SalvageMagnetActivatedEvent args) + { + var magnetCoordinates = Transform(args.Magnet).Coordinates; + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var node)) + { + if (node.Attached == null) + continue; + + var artifact = _xenoArtifactQuery.Get(GetEntity(node.Attached.Value)); + + if (!CanTrigger(artifact, (uid, node))) + continue; + + var artifactCoordinates = Transform(artifact).Coordinates; + if (_transform.InRange(magnetCoordinates, artifactCoordinates, comp.MagnetRange)) + Trigger(artifact, (uid, comp, node)); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAT/XATPressureSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAT/XATPressureSystem.cs new file mode 100644 index 0000000000..571bbee9a8 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAT/XATPressureSystem.cs @@ -0,0 +1,29 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAT.Components; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT; + +namespace Content.Server.Xenoarchaeology.Artifact.XAT; + +/// +/// System for checking if pressure-related xeno artifact node should be triggered. +/// +public sealed class XATPressureSystem : BaseQueryUpdateXATSystem +{ + [Dependency] private readonly AtmosphereSystem _atmosphere = default!; + + /// + protected override void UpdateXAT(Entity artifact, Entity node, float frameTime) + { + var xform = Transform(artifact); + + if (_atmosphere.GetTileMixture((artifact, xform)) is not { } mixture) + return; + + var pressure = mixture.Pressure; + if (pressure >= node.Comp1.MaxPressureThreshold || pressure <= node.Comp1.MinPressureThreshold) + { + Trigger(artifact, node); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XAT/XATTemperatureSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XAT/XATTemperatureSystem.cs new file mode 100644 index 0000000000..99e2b72eef --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XAT/XATTemperatureSystem.cs @@ -0,0 +1,37 @@ +using Content.Server.Atmos.EntitySystems; +using Content.Server.Xenoarchaeology.Artifact.XAT.Components; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT; + +namespace Content.Server.Xenoarchaeology.Artifact.XAT; + +/// +/// System for checking if temperature-related xeno artifact node should be triggered. +/// +public sealed class XATTemperatureSystem : BaseQueryUpdateXATSystem +{ + [Dependency] private readonly AtmosphereSystem _atmosphere = default!; + + /// + protected override void UpdateXAT(Entity artifact, Entity node, float frameTime) + { + var xform = Transform(artifact); + + if (_atmosphere.GetTileMixture((artifact, xform)) is not { } mixture) + return; + + var curTemp = mixture.Temperature; + + var temperatureTriggerComponent = node.Comp1; + if (temperatureTriggerComponent.TriggerOnHigherTemp) + { + if (curTemp >= temperatureTriggerComponent.TargetTemperature) + Trigger(artifact, node); + } + else + { + if (curTemp <= temperatureTriggerComponent.TargetTemperature) + Trigger(artifact, node); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XenoArtifactCommands.cs b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactCommands.cs new file mode 100644 index 0000000000..31d079e3ad --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactCommands.cs @@ -0,0 +1,125 @@ +using System.Text; +using Content.Server.Administration; +using Content.Shared.Administration; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; +using Robust.Shared.Toolshed; + +namespace Content.Server.Xenoarchaeology.Artifact; + +/// +/// Toolshed commands for manipulating xeno artifact. +/// +[ToolshedCommand, AdminCommand(AdminFlags.Debug)] +public sealed class XenoArtifactCommand : ToolshedCommand +{ + [ValidatePrototypeId] + public const string ArtifactPrototype = "BaseXenoArtifact"; + + /// List existing artifacts. + [CommandImplementation("list")] + public IEnumerable List() + { + var query = EntityManager.EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) + { + yield return uid; + } + } + + /// + /// Output matrix of artifact nodes and how they are connected. + /// + [CommandImplementation("printMatrix")] + public string PrintMatrix([PipedArgument] EntityUid artifactEntitUid) + { + var comp = EntityManager.GetComponent(artifactEntitUid); + + var nodeCount = comp.NodeVertices.Length; + + var sb = new StringBuilder("\n |"); + for (var i = 0; i < nodeCount; i++) + { + sb.Append($" {i:D2}|"); + } + + AddHorizontalFiller(sb); + + for (var i = 0; i < nodeCount; i++) + { + sb.Append($"\n{i:D2}|"); + for (var j = 0; j < nodeCount; j++) + { + var value = comp.NodeAdjacencyMatrix[i][j] + ? "X" + : " "; + sb.Append($" {value} |"); + } + AddHorizontalFiller(sb); + } + + return sb.ToString(); + + void AddHorizontalFiller(StringBuilder builder) + { + builder.AppendLine(); + builder.Append("--+"); + for (var i = 0; i < nodeCount; i++) + { + builder.Append($"---+"); + } + } + } + + /// Output total research points artifact contains. + [CommandImplementation("totalResearch")] + public int TotalResearch([PipedArgument] EntityUid artifactEntityUid) + { + var artiSys = EntityManager.System(); + var comp = EntityManager.GetComponent(artifactEntityUid); + + var sum = 0; + + var nodes = artiSys.GetAllNodes((artifactEntityUid, comp)); + foreach (var node in nodes) + { + sum += node.Comp.ResearchValue; + } + + return sum; + } + + /// + /// Spawns a bunch of artifacts and gets average total research points they can yield. + /// + [CommandImplementation("averageResearch")] + public float AverageResearch() + { + const int n = 100; + var sum = 0; + + for (var i = 0; i < n; i++) + { + var ent = Spawn(ArtifactPrototype, MapCoordinates.Nullspace); + sum += TotalResearch(ent); + Del(ent); + } + + return (float) sum / n; + } + + /// Unlocks all nodes of artifact. + [CommandImplementation("unlockAllNodes")] + public void UnlockAllNodes([PipedArgument] EntityUid artifactEntityUid) + { + var artiSys = EntityManager.System(); + var comp = EntityManager.GetComponent(artifactEntityUid); + + var nodes = artiSys.GetAllNodes((artifactEntityUid, comp)); + foreach (var node in nodes) + { + artiSys.SetNodeUnlocked((node, node.Comp)); + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.ProcGen.cs b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.ProcGen.cs new file mode 100644 index 0000000000..9da98dca61 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.ProcGen.cs @@ -0,0 +1,219 @@ +using System.Linq; +using Content.Shared.Random.Helpers; +using Content.Shared.Whitelist; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server.Xenoarchaeology.Artifact; + +public sealed partial class XenoArtifactSystem +{ + [Dependency] private readonly EntityWhitelistSystem _entityWhitelist = default!; + + private void GenerateArtifactStructure(Entity ent) + { + var nodeCount = ent.Comp.NodeCount.Next(RobustRandom); + var triggerPool = CreateTriggerPool(ent, nodeCount); + // trigger pool could be smaller, then requested node count + nodeCount = triggerPool.Count; + ResizeNodeGraph(ent, nodeCount); + while (nodeCount > 0) + { + GenerateArtifactSegment(ent, triggerPool, ref nodeCount); + } + + RebuildXenoArtifactMetaData((ent, ent)); + } + + /// + /// Creates pool from all node triggers that current artifact can support. + /// As artifact cannot re-use triggers, pool will be growing smaller + /// and smaller with each node generated. + /// + /// Artifact for which pool should be created. + /// + /// Max size of pool. Resulting pool is not guaranteed to be exactly as large, but it will 100% won't be bigger. + /// + private List CreateTriggerPool(Entity ent, int size) + { + var triggerPool = new List(size); + var weightsProto = PrototypeManager.Index(ent.Comp.TriggerWeights); + var weightsByTriggersLeft = new Dictionary(weightsProto.Weights); + + while (triggerPool.Count < size) + { + // OOPS! We ran out of triggers. + if (weightsByTriggersLeft.Count == 0) + { + Log.Error($"Insufficient triggers for generating {ToPrettyString(ent)}! Needed {size} but had {triggerPool.Count}"); + return triggerPool; + } + + var triggerId = RobustRandom.Pick(weightsByTriggersLeft); + weightsByTriggersLeft.Remove(triggerId); + var trigger = PrototypeManager.Index(triggerId); + if (_entityWhitelist.IsWhitelistFail(trigger.Whitelist, ent)) + continue; + + triggerPool.Add(trigger); + } + + return triggerPool; + } + + /// + /// Generates segment of artifact - isolated graph, nodes inside which are interconnected. + /// As size of segment is randomized - it is subtracted from node count. + /// + private void GenerateArtifactSegment( + Entity ent, + List triggerPool, + ref int nodeCount + ) + { + var segmentSize = GetArtifactSegmentSize(ent, nodeCount); + nodeCount -= segmentSize; + var populatedNodes = PopulateArtifactSegmentRecursive(ent, triggerPool, ref segmentSize); + + var segments = GetSegmentsFromNodes(ent, populatedNodes).ToList(); + + // We didn't connect all of our nodes: do extra work to make sure there's a connection. + if (segments.Count > 1) + { + var parent = segments.MaxBy(s => s.Count)!; + var minP = parent.Min(n => n.Comp.Depth); + var maxP = parent.Max(n => n.Comp.Depth); + + segments.Remove(parent); + foreach (var segment in segments) + { + // calculate the range of the depth of the nodes in the segment + var minS = segment.Min(n => n.Comp.Depth); + var maxS = segment.Max(n => n.Comp.Depth); + + // Figure out the range of depths that allows for a connection between these two. + // The range is essentially the lower values + 1 on each side. + var min = Math.Max(minS, minP) - 1; + var max = Math.Min(maxS, maxP) + 1; + + // how the fuck did you do this? you don't even deserve to get a parent. fuck you. + if (min > max || min == max) + continue; + + var node1Options = segment.Where(n => n.Comp.Depth >= min && n.Comp.Depth <= max) + .ToList(); + if (node1Options.Count == 0) + { + continue; + } + + var node1 = RobustRandom.Pick(node1Options); + var node1Depth = node1.Comp.Depth; + + var node2Options = parent.Where(n => n.Comp.Depth >= node1Depth - 1 && n.Comp.Depth <= node1Depth + 1 && n.Comp.Depth != node1Depth) + .ToList(); + if (node2Options.Count == 0) + { + continue; + } + + var node2 = RobustRandom.Pick(node2Options); + + if (node1.Comp.Depth < node2.Comp.Depth) + { + AddEdge((ent, ent.Comp), node1, node2, false); + } + else + { + AddEdge((ent, ent.Comp), node2, node1, false); + } + } + } + } + + /// + /// Recursively populate layers of artifact segment - isolated graph, nodes inside which are interconnected. + /// Each next iteration is going to have more chances to have more nodes (so it goes 'from top to bottom' of + /// the tree, creating its peak nodes first, and then making layers with more and more branches). + /// + private List> PopulateArtifactSegmentRecursive( + Entity ent, + List triggerPool, + ref int segmentSize, + int iteration = 0 + ) + { + if (segmentSize == 0) + return new(); + + // Try and get larger as we create more layers. Prevents excessive layers. + var mod = RobustRandom.Next((int) (iteration / 1.5f), iteration + 1); + + var layerMin = Math.Min(ent.Comp.NodesPerSegmentLayer.Min + mod, segmentSize); + var layerMax = Math.Min(ent.Comp.NodesPerSegmentLayer.Max + mod, segmentSize); + + // Default to one node if we had shenanigans and ended up with weird layer counts. + var nodeCount = 1; + if (layerMax >= layerMin) + nodeCount = RobustRandom.Next(layerMin, layerMax + 1); // account for non-inclusive max + + segmentSize -= nodeCount; + var nodes = new List>(); + for (var i = 0; i < nodeCount; i++) + { + var trigger = RobustRandom.PickAndTake(triggerPool); + nodes.Add(CreateNode(ent, trigger, iteration)); + } + + var successors = PopulateArtifactSegmentRecursive( + ent, + triggerPool, + ref segmentSize, + iteration: iteration + 1 + ); + + if (successors.Count == 0) + return nodes; + + foreach (var successor in successors) + { + var node = RobustRandom.Pick(nodes); + AddEdge((ent, ent), node, successor, dirty: false); + } + + // randomly add in some extra edges for variance. + var scatterCount = ent.Comp.ScatterPerLayer.Next(RobustRandom); + for (var i = 0; i < scatterCount; i++) + { + var node = RobustRandom.Pick(nodes); + var successor = RobustRandom.Pick(successors); + AddEdge((ent, ent), node, successor, dirty: false); + } + + return nodes; + } + + /// + /// Rolls segment size, based on amount of nodes left and XenoArtifactComponent settings. + /// + private int GetArtifactSegmentSize(Entity ent, int nodeCount) + { + // Make sure we can't generate a single segment artifact. + // We always want to have at least 2 segments. For variety. + var segmentMin = ent.Comp.SegmentSize.Min; + var segmentMax = Math.Min(ent.Comp.SegmentSize.Max, Math.Max(nodeCount / 2, segmentMin)); + + var segmentSize = RobustRandom.Next(segmentMin, segmentMax + 1); // account for non-inclusive max + var remainder = nodeCount - segmentSize; + + // If our next segment is going to be undersized, then we just absorb it into this segment. + if (remainder < ent.Comp.SegmentSize.Min) + segmentSize += remainder; + + // Sanity check to make sure we don't exceed the node count. (it shouldn't happen prior anyway but oh well) + segmentSize = Math.Min(nodeCount, segmentSize); + + return segmentSize; + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.cs b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.cs new file mode 100644 index 0000000000..fbea515dc3 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactSystem.cs @@ -0,0 +1,35 @@ +using Content.Server.Cargo.Systems; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.Components; + +namespace Content.Server.Xenoarchaeology.Artifact; + +/// +public sealed partial class XenoArtifactSystem : SharedXenoArtifactSystem +{ + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnArtifactMapInit); + SubscribeLocalEvent(OnCalculatePrice); + } + + private void OnArtifactMapInit(Entity ent, ref MapInitEvent args) + { + if (ent.Comp.IsGenerationRequired) + GenerateArtifactStructure(ent); + } + + private void OnCalculatePrice(Entity ent, ref PriceCalculationEvent args) + { + foreach (var node in GetAllNodes(ent)) + { + if (node.Comp.Locked) + continue; + + args.Price += node.Comp.ResearchValue * ent.Comp.PriceMultiplier; + } + } +} diff --git a/Content.Server/Xenoarchaeology/Artifact/XenoArtifactUnlockNodeCommand.cs b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactUnlockNodeCommand.cs new file mode 100644 index 0000000000..1782619780 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Artifact/XenoArtifactUnlockNodeCommand.cs @@ -0,0 +1,84 @@ +using Content.Server.Administration; +using Content.Shared.Administration; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Robust.Shared.Console; + +namespace Content.Server.Xenoarchaeology.Artifact; + +/// Command for unlocking specific node of xeno artifact. +[AdminCommand(AdminFlags.Debug)] +public sealed class XenoArtifactUnlockNodeCommand : LocalizedCommands +{ + [Dependency] private readonly EntityManager _entities = default!; + + /// + public override string Command => "unlocknode"; + + /// + public override string Description => Loc.GetString("cmd-unlocknode-desc"); + + /// + public override string Help => Loc.GetString("cmd-unlocknode-help"); + + /// + public override void Execute(IConsoleShell shell, string argStr, string[] args) + { + if (args.Length != 2) + { + shell.WriteError(Loc.GetString("cmd-parse-failure-unlocknode-arg-num")); + return; + } + + if (!NetEntity.TryParse(args[1], out var netNode)) + { + shell.WriteError(Loc.GetString("cmd-parse-failure-unlocknode-invalid-entity")); + return; + } + + if (!_entities.TryGetEntity(netNode, out var entityUid)) + { + shell.WriteError(Loc.GetString("cmd-parse-failure-unlocknode-invalid-entity")); + return; + } + _entities.System() + .SetNodeUnlocked(entityUid.Value); + } + + /// + public override CompletionResult GetCompletion(IConsoleShell shell, string[] args) + { + if (args.Length == 1) + { + var query = _entities.EntityQueryEnumerator(); + var completionOptions = new List(); + while (query.MoveNext(out var uid, out _)) + { + completionOptions.Add(new CompletionOption(uid.ToString())); + } + + return CompletionResult.FromHintOptions(completionOptions, ""); + } + + if (args.Length == 2 && + NetEntity.TryParse(args[0], out var netEnt) && + _entities.TryGetEntity(netEnt, out var artifactUid) && + _entities.TryGetComponent(artifactUid, out var comp)) + { + var artifactSystem = _entities.System(); + + var result = new List(); + foreach (var node in artifactSystem.GetAllNodes((artifactUid.Value, comp))) + { + var metaData = _entities.MetaQuery.Comp(artifactUid.Value); + var entityUidStr = _entities.GetNetEntity(node) + .ToString(); + var completionOption = new CompletionOption(entityUidStr, metaData.EntityName); + result.Add(completionOption); + } + + return CompletionResult.FromHintOptions(result, ""); + } + + return CompletionResult.Empty; + } +} diff --git a/Content.Server/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs b/Content.Server/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs new file mode 100644 index 0000000000..ee9bcf8ec9 --- /dev/null +++ b/Content.Server/Xenoarchaeology/Equipment/ArtifactAnalyzerSystem.cs @@ -0,0 +1,51 @@ +using Content.Server.Research.Systems; +using Content.Server.Xenoarchaeology.Artifact; +using Content.Shared.Popups; +using Content.Shared.Xenoarchaeology.Equipment; +using Content.Shared.Xenoarchaeology.Equipment.Components; +using Robust.Shared.Audio.Systems; + +namespace Content.Server.Xenoarchaeology.Equipment; + +/// +public sealed class ArtifactAnalyzerSystem : SharedArtifactAnalyzerSystem +{ + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly ResearchSystem _research = default!; + [Dependency] private readonly XenoArtifactSystem _xenoArtifact = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnExtractButtonPressed); + } + + private void OnExtractButtonPressed(Entity ent, ref AnalysisConsoleExtractButtonPressedMessage args) + { + if (!TryGetArtifactFromConsole(ent, out var artifact)) + return; + + if (!_research.TryGetClientServer(ent, out var server, out var serverComponent)) + return; + + var sumResearch = 0; + foreach (var node in _xenoArtifact.GetAllNodes(artifact.Value)) + { + var research = _xenoArtifact.GetResearchValue(node); + _xenoArtifact.SetConsumedResearchValue(node, node.Comp.ConsumedResearchValue + research); + sumResearch += research; + } + + // 4-16-25: It's a sad day when a scientist makes negative 5k research + if (sumResearch <= 0) + return; + + _research.ModifyServerPoints(server.Value, sumResearch, serverComponent); + _audio.PlayPvs(ent.Comp.ExtractSound, artifact.Value); + _popup.PopupEntity(Loc.GetString("analyzer-artifact-extract-popup"), artifact.Value, PopupType.Large); + } +} + diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/ActiveArtifactAnalyzerComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/ActiveArtifactAnalyzerComponent.cs deleted file mode 100644 index 7c1fe288fc..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Components/ActiveArtifactAnalyzerComponent.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Robust.Shared.Serialization.TypeSerializers.Implementations; - -namespace Content.Server.Xenoarchaeology.Equipment.Components; - -/// -/// Activecomp used for tracking artifact analyzers that are currently -/// in the process of scanning an artifact. -/// -[RegisterComponent] -public sealed partial class ActiveArtifactAnalyzerComponent : Component -{ - /// - /// When did the scanning start or last resume? - /// - [DataField("startTime", customTypeSerializer: typeof(TimespanSerializer))] - public TimeSpan StartTime; - - /// - /// When pausing, this will store the duration the scan has already been running for. - /// - [ViewVariables(VVAccess.ReadWrite)] - public TimeSpan AccumulatedRunTime; - - /// - /// Is analysis paused? - /// It could be when the Artifact Analyzer has no power, for example. - /// - [ViewVariables(VVAccess.ReadWrite)] - public bool AnalysisPaused = false; - - /// - /// What is being scanned? - /// - [DataField] - public EntityUid Artifact; -} diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/ActiveScannedArtifactComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/ActiveScannedArtifactComponent.cs deleted file mode 100644 index da6b35dab0..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Components/ActiveScannedArtifactComponent.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Robust.Shared.Audio; - -namespace Content.Server.Xenoarchaeology.Equipment.Components; - -/// -/// This is used for tracking artifacts that are currently -/// being scanned by -/// -[RegisterComponent] -public sealed partial class ActiveScannedArtifactComponent : Component -{ - /// - /// The scanner that is scanning this artifact - /// - [ViewVariables] - public EntityUid Scanner; - - /// - /// The sound that plays when the scan fails - /// - public readonly SoundSpecifier ScanFailureSound = new SoundPathSpecifier("/Audio/Machines/custom_deny.ogg"); -} diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/AnalysisConsoleComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/AnalysisConsoleComponent.cs deleted file mode 100644 index 892e24495b..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Components/AnalysisConsoleComponent.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Content.Shared.DeviceLinking; -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Server.Xenoarchaeology.Equipment.Components; - -/// -/// The console that is used for artifact analysis -/// -[RegisterComponent] -public sealed partial class AnalysisConsoleComponent : Component -{ - /// - /// The analyzer entity the console is linked. - /// Can be null if not linked. - /// - [ViewVariables(VVAccess.ReadWrite)] - public EntityUid? AnalyzerEntity; - - /// - /// The machine linking port for the analyzer - /// - [DataField("linkingPort", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string LinkingPort = "ArtifactAnalyzerSender"; - - /// - /// The sound played when an artifact has points extracted. - /// - [DataField("extractSound")] - public SoundSpecifier ExtractSound = new SoundPathSpecifier("/Audio/Effects/radpulse11.ogg"); - - /// - /// The entity spawned by a report. - /// - [DataField("reportEntityId", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string ReportEntityId = "Paper"; -} diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs deleted file mode 100644 index 949717676f..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts; -using Content.Shared.Construction.Prototypes; -using Robust.Shared.Audio; -using Robust.Shared.Serialization.TypeSerializers.Implementations; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Server.Xenoarchaeology.Equipment.Components; - -/// -/// A machine that is combined and linked to the -/// in order to analyze artifacts and extract points. -/// -[RegisterComponent] -public sealed partial class ArtifactAnalyzerComponent : Component -{ - /// - /// How long it takes to analyze an artifact - /// - [DataField("analysisDuration", customTypeSerializer: typeof(TimespanSerializer))] - public TimeSpan AnalysisDuration = TimeSpan.FromSeconds(30); - - /// - /// The corresponding console entity. - /// Can be null if not linked. - /// - [ViewVariables] - public EntityUid? Console; - - [ViewVariables(VVAccess.ReadWrite)] - public bool ReadyToPrint = false; - - [DataField("scanFinishedSound")] - public SoundSpecifier ScanFinishedSound = new SoundPathSpecifier("/Audio/Machines/scan_finish.ogg"); - - #region Analysis Data - [DataField] - public EntityUid? LastAnalyzedArtifact; - - [ViewVariables] - public ArtifactNode? LastAnalyzedNode; - - [ViewVariables(VVAccess.ReadWrite)] - public int? LastAnalyzerPointValue; - #endregion -} diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/BiasedArtifactComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/BiasedArtifactComponent.cs deleted file mode 100644 index 16bd34d7ea..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Components/BiasedArtifactComponent.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Content.Server.Xenoarchaeology.Equipment.Components; - -/// -/// This is used for artifacts that are biased to move -/// in a particular direction via the -/// -[RegisterComponent] -public sealed partial class BiasedArtifactComponent : Component -{ - [ViewVariables] - public EntityUid Provider; -} diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/NodeScannerComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/NodeScannerComponent.cs deleted file mode 100644 index 36cc5f830e..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Components/NodeScannerComponent.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Content.Server.Xenoarchaeology.Equipment.Components; - -[RegisterComponent] -public sealed partial class NodeScannerComponent : Component -{ - -} diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs deleted file mode 100644 index c555f314ad..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Content.Server.Xenoarchaeology.Equipment.Components; - -/// -/// Suppress artifact activation, when entity is placed inside this container. -/// -[RegisterComponent] -public sealed partial class SuppressArtifactContainerComponent : Component -{ - -} diff --git a/Content.Server/Xenoarchaeology/Equipment/Components/TraversalDistorterComponent.cs b/Content.Server/Xenoarchaeology/Equipment/Components/TraversalDistorterComponent.cs deleted file mode 100644 index fe95114f73..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Components/TraversalDistorterComponent.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Content.Server.Xenoarchaeology.Equipment.Components; - -/// -/// This is used for a machine that biases -/// an artifact placed on it to move up/down -/// -[RegisterComponent] -public sealed partial class TraversalDistorterComponent : Component -{ - [ViewVariables(VVAccess.ReadWrite)] - public BiasDirection BiasDirection = BiasDirection.Up; - - public TimeSpan NextActivation = default!; - public TimeSpan ActivationDelay = TimeSpan.FromSeconds(1); -} - -public enum BiasDirection : byte -{ - Up, //Towards depth 0 - Down, //Away from depth 0 -} diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs deleted file mode 100644 index a5670ec8ee..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactAnalyzerSystem.cs +++ /dev/null @@ -1,519 +0,0 @@ -using System.Linq; -using Content.Server.Power.Components; -using Content.Server.Research.Systems; -using Content.Shared.UserInterface; -using Content.Server.Xenoarchaeology.Equipment.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Audio; -using Content.Shared.DeviceLinking; -using Content.Shared.DeviceLinking.Events; -using Content.Shared.Paper; -using Content.Shared.Placeable; -using Content.Shared.Popups; -using Content.Shared.Power; -using Content.Shared.Power.EntitySystems; -using Content.Shared.Research.Components; -using Content.Shared.Xenoarchaeology.Equipment; -using Content.Shared.Xenoarchaeology.XenoArtifacts; -using JetBrains.Annotations; -using Robust.Server.GameObjects; -using Robust.Shared.Audio; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; -using Robust.Shared.Utility; - -namespace Content.Server.Xenoarchaeology.Equipment.Systems; - -/// -/// This system is used for managing the artifact analyzer as well as the analysis console. -/// It also hanadles scanning and ui updates for both systems. -/// -public sealed class ArtifactAnalyzerSystem : EntitySystem -{ - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly IPrototypeManager _prototype = default!; - [Dependency] private readonly ArtifactSystem _artifact = default!; - [Dependency] private readonly MetaDataSystem _metaSystem = default!; - [Dependency] private readonly PaperSystem _paper = default!; - [Dependency] private readonly ResearchSystem _research = default!; - [Dependency] private readonly SharedAmbientSoundSystem _ambientSound = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly SharedPopupSystem _popup = default!; - [Dependency] private readonly SharedPowerReceiverSystem _receiver = default!; - [Dependency] private readonly TraversalDistorterSystem _traversalDistorter = default!; - [Dependency] private readonly UserInterfaceSystem _ui = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnArtifactActivated); - - SubscribeLocalEvent(OnAnalyzeStart); - SubscribeLocalEvent(OnAnalyzeEnd); - SubscribeLocalEvent(OnPowerChanged); - - SubscribeLocalEvent(OnItemPlaced); - SubscribeLocalEvent(OnItemRemoved); - - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnNewLink); - SubscribeLocalEvent(OnPortDisconnected); - - SubscribeLocalEvent(OnServerSelectionMessage); - SubscribeLocalEvent(OnScanButton); - SubscribeLocalEvent(OnPrintButton); - SubscribeLocalEvent(OnExtractButton); - SubscribeLocalEvent(OnBiasButton); - - SubscribeLocalEvent((e, c, _) => UpdateUserInterface(e, c), - after: new[] { typeof(ResearchSystem) }); - SubscribeLocalEvent((e, c, _) => UpdateUserInterface(e, c), - after: new[] { typeof(ResearchSystem) }); - SubscribeLocalEvent((e, c, _) => UpdateUserInterface(e, c)); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var active, out var scan)) - { - if (active.AnalysisPaused) - continue; - - if (_timing.CurTime - active.StartTime < scan.AnalysisDuration - active.AccumulatedRunTime) - continue; - - FinishScan(uid, scan, active); - } - } - - /// - /// Resets the current scan on the artifact analyzer - /// - /// The analyzer being reset - /// - [PublicAPI] - public void ResetAnalyzer(EntityUid uid, ArtifactAnalyzerComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - component.LastAnalyzedArtifact = null; - component.ReadyToPrint = false; - UpdateAnalyzerInformation(uid, component); - } - - /// - /// Goes through the current entities on - /// the analyzer and returns a valid artifact - /// - /// - /// - /// - private EntityUid? GetArtifactForAnalysis(EntityUid? uid, ItemPlacerComponent? placer = null) - { - if (uid == null || !Resolve(uid.Value, ref placer)) - return null; - - return placer.PlacedEntities.FirstOrNull(); - } - - /// - /// Updates the current scan information based on - /// the last artifact that was scanned. - /// - /// - /// - private void UpdateAnalyzerInformation(EntityUid uid, ArtifactAnalyzerComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - if (component.LastAnalyzedArtifact == null) - { - component.LastAnalyzerPointValue = null; - component.LastAnalyzedNode = null; - } - else if (TryComp(component.LastAnalyzedArtifact, out var artifact)) - { - var lastNode = artifact.CurrentNodeId == null - ? null - : (ArtifactNode?) _artifact.GetNodeFromId(artifact.CurrentNodeId.Value, artifact).Clone(); - component.LastAnalyzedNode = lastNode; - component.LastAnalyzerPointValue = _artifact.GetResearchPointValue(component.LastAnalyzedArtifact.Value, artifact); - } - } - - private void OnMapInit(EntityUid uid, ArtifactAnalyzerComponent component, MapInitEvent args) - { - if (!TryComp(uid, out var sink)) - return; - - foreach (var source in sink.LinkedSources) - { - if (!TryComp(source, out var analysis)) - continue; - component.Console = source; - analysis.AnalyzerEntity = uid; - return; - } - } - - private void OnNewLink(EntityUid uid, AnalysisConsoleComponent component, NewLinkEvent args) - { - if (!TryComp(args.Sink, out var analyzer)) - return; - - component.AnalyzerEntity = args.Sink; - analyzer.Console = uid; - - UpdateUserInterface(uid, component); - } - - private void OnPortDisconnected(EntityUid uid, AnalysisConsoleComponent component, PortDisconnectedEvent args) - { - if (args.Port == component.LinkingPort && component.AnalyzerEntity != null) - { - if (TryComp(component.AnalyzerEntity, out var analyzezr)) - analyzezr.Console = null; - component.AnalyzerEntity = null; - } - - UpdateUserInterface(uid, component); - } - - private void UpdateUserInterface(EntityUid uid, AnalysisConsoleComponent? component = null) - { - if (!Resolve(uid, ref component, false)) - return; - - EntityUid? artifact = null; - FormattedMessage? msg = null; - TimeSpan? totalTime = null; - var canScan = false; - var canPrint = false; - var points = 0; - - if (TryComp(component.AnalyzerEntity, out var analyzer)) - { - artifact = analyzer.LastAnalyzedArtifact; - msg = GetArtifactScanMessage(analyzer); - totalTime = analyzer.AnalysisDuration; - if (TryComp(component.AnalyzerEntity, out var placer)) - canScan = placer.PlacedEntities.Any(); - canPrint = analyzer.ReadyToPrint; - - // the artifact that's actually on the scanner right now. - if (GetArtifactForAnalysis(component.AnalyzerEntity, placer) is { } current) - points = _artifact.GetResearchPointValue(current); - } - - var analyzerConnected = component.AnalyzerEntity != null; - var serverConnected = TryComp(uid, out var client) && client.ConnectedToServer; - - var scanning = TryComp(component.AnalyzerEntity, out var active); - var paused = active != null ? active.AnalysisPaused : false; - - var biasDirection = BiasDirection.Up; - - if (TryComp(component.AnalyzerEntity, out var trav)) - biasDirection = trav.BiasDirection; - - var state = new AnalysisConsoleUpdateState(GetNetEntity(artifact), analyzerConnected, serverConnected, - canScan, canPrint, msg, scanning, paused, active?.StartTime, active?.AccumulatedRunTime, totalTime, points, biasDirection == BiasDirection.Down); - - _ui.SetUiState(uid, ArtifactAnalzyerUiKey.Key, state); - } - - /// - /// opens the server selection menu. - /// - /// - /// - /// - private void OnServerSelectionMessage(EntityUid uid, AnalysisConsoleComponent component, AnalysisConsoleServerSelectionMessage args) - { - _ui.OpenUi(uid, ResearchClientUiKey.Key, args.Actor); - } - - /// - /// Starts scanning the artifact. - /// - /// - /// - /// - private void OnScanButton(EntityUid uid, AnalysisConsoleComponent component, AnalysisConsoleScanButtonPressedMessage args) - { - if (component.AnalyzerEntity == null) - return; - - if (HasComp(component.AnalyzerEntity)) - return; - - var ent = GetArtifactForAnalysis(component.AnalyzerEntity); - if (ent == null) - return; - - var activeComp = EnsureComp(component.AnalyzerEntity.Value); - activeComp.StartTime = _timing.CurTime; - activeComp.AccumulatedRunTime = TimeSpan.Zero; - activeComp.Artifact = ent.Value; - - if (TryComp(component.AnalyzerEntity.Value, out var powa)) - activeComp.AnalysisPaused = !powa.Powered; - - var activeArtifact = EnsureComp(ent.Value); - activeArtifact.Scanner = component.AnalyzerEntity.Value; - UpdateUserInterface(uid, component); - } - - private void OnPrintButton(EntityUid uid, AnalysisConsoleComponent component, AnalysisConsolePrintButtonPressedMessage args) - { - if (component.AnalyzerEntity == null) - return; - - if (!TryComp(component.AnalyzerEntity, out var analyzer) || - analyzer.LastAnalyzedNode == null || - analyzer.LastAnalyzerPointValue == null || - !analyzer.ReadyToPrint) - { - return; - } - analyzer.ReadyToPrint = false; - - var report = Spawn(component.ReportEntityId, Transform(uid).Coordinates); - _metaSystem.SetEntityName(report, Loc.GetString("analysis-report-title", ("id", analyzer.LastAnalyzedNode.Id))); - - var msg = GetArtifactScanMessage(analyzer); - if (msg == null) - return; - - _popup.PopupEntity(Loc.GetString("analysis-console-print-popup"), uid); - if (TryComp(report, out var paperComp)) - _paper.SetContent((report, paperComp), msg.ToMarkup()); - UpdateUserInterface(uid, component); - } - - private FormattedMessage? GetArtifactScanMessage(ArtifactAnalyzerComponent component) - { - var msg = new FormattedMessage(); - if (component.LastAnalyzedNode == null) - return null; - - var n = component.LastAnalyzedNode; - - msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-id", ("id", n.Id))); - msg.PushNewline(); - msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-depth", ("depth", n.Depth))); - msg.PushNewline(); - - var activated = n.Triggered - ? "analysis-console-info-triggered-true" - : "analysis-console-info-triggered-false"; - msg.AddMarkupOrThrow(Loc.GetString(activated)); - msg.PushNewline(); - - msg.PushNewline(); - var needSecondNewline = false; - - var triggerProto = _prototype.Index(n.Trigger); - if (triggerProto.TriggerHint != null) - { - msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-trigger", - ("trigger", Loc.GetString(triggerProto.TriggerHint))) + "\n"); - needSecondNewline = true; - } - - var effectproto = _prototype.Index(n.Effect); - if (effectproto.EffectHint != null) - { - msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-effect", - ("effect", Loc.GetString(effectproto.EffectHint))) + "\n"); - needSecondNewline = true; - } - - if (needSecondNewline) - msg.PushNewline(); - - msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-edges", ("edges", n.Edges.Count))); - msg.PushNewline(); - - if (component.LastAnalyzerPointValue != null) - msg.AddMarkupOrThrow(Loc.GetString("analysis-console-info-value", ("value", component.LastAnalyzerPointValue))); - - return msg; - } - - /// - /// Extracts points from the artifact and updates the server points - /// - /// - /// - /// - private void OnExtractButton(EntityUid uid, AnalysisConsoleComponent component, AnalysisConsoleExtractButtonPressedMessage args) - { - if (component.AnalyzerEntity == null) - return; - - if (!_research.TryGetClientServer(uid, out var server, out var serverComponent)) - return; - - var artifact = GetArtifactForAnalysis(component.AnalyzerEntity); - if (artifact == null) - return; - - var pointValue = _artifact.GetResearchPointValue(artifact.Value); - - // no new nodes triggered so nothing to add - if (pointValue == 0) - return; - - _research.ModifyServerPoints(server.Value, pointValue, serverComponent); - _artifact.AdjustConsumedPoints(artifact.Value, pointValue); - - _audio.PlayPvs(component.ExtractSound, component.AnalyzerEntity.Value, AudioParams.Default.WithVolume(2f)); - - _popup.PopupEntity(Loc.GetString("analyzer-artifact-extract-popup"), - component.AnalyzerEntity.Value, PopupType.Large); - - UpdateUserInterface(uid, component); - } - - private void OnBiasButton(EntityUid uid, AnalysisConsoleComponent component, AnalysisConsoleBiasButtonPressedMessage args) - { - if (component.AnalyzerEntity == null) - return; - - if (!TryComp(component.AnalyzerEntity, out var trav)) - return; - - if (!_traversalDistorter.SetState(component.AnalyzerEntity.Value, trav, args.IsDown)) - return; - - UpdateUserInterface(uid, component); - } - - /// - /// Cancels scans if the artifact changes nodes (is activated) during the scan. - /// - private void OnArtifactActivated(EntityUid uid, ActiveScannedArtifactComponent component, ArtifactActivatedEvent args) - { - CancelScan(uid); - } - - /// - /// Stops the current scan - /// - [PublicAPI] - public void CancelScan(EntityUid artifact, ActiveScannedArtifactComponent? component = null, ArtifactAnalyzerComponent? analyzer = null) - { - if (!Resolve(artifact, ref component, false)) - return; - - if (!Resolve(component.Scanner, ref analyzer)) - return; - - _audio.PlayPvs(component.ScanFailureSound, component.Scanner, AudioParams.Default.WithVolume(3f)); - - RemComp(component.Scanner); - if (analyzer.Console != null) - UpdateUserInterface(analyzer.Console.Value); - - RemCompDeferred(artifact, component); - } - - /// - /// Finishes the current scan. - /// - [PublicAPI] - public void FinishScan(EntityUid uid, ArtifactAnalyzerComponent? component = null, ActiveArtifactAnalyzerComponent? active = null) - { - if (!Resolve(uid, ref component, ref active)) - return; - - component.ReadyToPrint = true; - _audio.PlayPvs(component.ScanFinishedSound, uid); - component.LastAnalyzedArtifact = active.Artifact; - UpdateAnalyzerInformation(uid, component); - - RemComp(active.Artifact); - RemComp(uid, active); - if (component.Console != null) - UpdateUserInterface(component.Console.Value); - } - - [PublicAPI] - public void PauseScan(EntityUid uid, ArtifactAnalyzerComponent? component = null, ActiveArtifactAnalyzerComponent? active = null) - { - if (!Resolve(uid, ref component, ref active) || active.AnalysisPaused) - return; - - active.AnalysisPaused = true; - // As we pause, we store what was already completed. - active.AccumulatedRunTime = (_timing.CurTime - active.StartTime) + active.AccumulatedRunTime; - - if (Exists(component.Console)) - UpdateUserInterface(component.Console.Value); - } - - [PublicAPI] - public void ResumeScan(EntityUid uid, ArtifactAnalyzerComponent? component = null, ActiveArtifactAnalyzerComponent? active = null) - { - if (!Resolve(uid, ref component, ref active) || !active.AnalysisPaused) - return; - - active.StartTime = _timing.CurTime; - active.AnalysisPaused = false; - - if (Exists(component.Console)) - UpdateUserInterface(component.Console.Value); - } - - private void OnItemPlaced(EntityUid uid, ArtifactAnalyzerComponent component, ref ItemPlacedEvent args) - { - if (component.Console != null && Exists(component.Console)) - UpdateUserInterface(component.Console.Value); - } - - private void OnItemRemoved(EntityUid uid, ArtifactAnalyzerComponent component, ref ItemRemovedEvent args) - { - // Scanners shouldn't give permanent remove vision to an artifact, and the scanned artifact doesn't have any - // component to track analyzers that have scanned it for removal if the artifact gets deleted. - // So we always clear this on removal. - component.LastAnalyzedArtifact = null; - - // cancel the scan if the artifact moves off the analyzer - CancelScan(args.OtherEntity); - if (Exists(component.Console)) - UpdateUserInterface(component.Console.Value); - } - - private void OnAnalyzeStart(EntityUid uid, ActiveArtifactAnalyzerComponent component, ComponentStartup args) - { - _receiver.SetNeedsPower(uid, true); - _ambientSound.SetAmbience(uid, true); - } - - private void OnAnalyzeEnd(EntityUid uid, ActiveArtifactAnalyzerComponent component, ComponentShutdown args) - { - _receiver.SetNeedsPower(uid, false); - _ambientSound.SetAmbience(uid, false); - } - - private void OnPowerChanged(EntityUid uid, ActiveArtifactAnalyzerComponent active, ref PowerChangedEvent args) - { - if (!args.Powered) - { - PauseScan(uid, null, active); - } - else - { - ResumeScan(uid, null, active); - } - } -} - diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactCrusherSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactCrusherSystem.cs index f841ea910e..8bc87cb378 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactCrusherSystem.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Systems/ArtifactCrusherSystem.cs @@ -1,16 +1,15 @@ using Content.Server.Body.Systems; using Content.Server.Popups; -using Content.Server.Power.Components; using Content.Server.Power.EntitySystems; using Content.Server.Stack; using Content.Server.Storage.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts; using Content.Shared.Body.Components; using Content.Shared.Damage; using Content.Shared.Power; using Content.Shared.Verbs; using Content.Shared.Whitelist; using Content.Shared.Xenoarchaeology.Equipment; +using Content.Shared.Xenoarchaeology.Equipment.Components; using Robust.Shared.Collections; using Robust.Shared.Random; using Robust.Shared.Timing; @@ -22,7 +21,6 @@ public sealed class ArtifactCrusherSystem : SharedArtifactCrusherSystem { [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly ArtifactSystem _artifact = default!; [Dependency] private readonly BodySystem _body = default!; [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly StackSystem _stack = default!; @@ -103,7 +101,6 @@ public sealed class ArtifactCrusherSystem : SharedArtifactCrusherSystem { ContainerSystem.Insert((stack, null, null, null), crusher.OutputContainer); } - _artifact.ForceActivateArtifact(contained); } if (!TryComp(contained, out var body)) diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/NodeScannerSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/NodeScannerSystem.cs index b388f3a6d4..2f8cd66736 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/NodeScannerSystem.cs +++ b/Content.Server/Xenoarchaeology/Equipment/Systems/NodeScannerSystem.cs @@ -1,63 +1,13 @@ -using Content.Server.Popups; -using Content.Server.Xenoarchaeology.Equipment.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts; -using Content.Shared.Interaction; -using Content.Shared.Timing; -using Content.Shared.Verbs; +using Content.Shared.Xenoarchaeology.Equipment; +using Content.Shared.Xenoarchaeology.Equipment.Components; namespace Content.Server.Xenoarchaeology.Equipment.Systems; -public sealed class NodeScannerSystem : EntitySystem +/// +public sealed class NodeScannerSystem : SharedNodeScannerSystem { - [Dependency] private readonly UseDelaySystem _useDelay = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; - - /// - public override void Initialize() + protected override void TryOpenUi(Entity device, EntityUid actor) { - SubscribeLocalEvent(OnBeforeRangedInteract); - SubscribeLocalEvent>(AddScanVerb); - } - - private void OnBeforeRangedInteract(EntityUid uid, NodeScannerComponent component, BeforeRangedInteractEvent args) - { - if (args.Handled || !args.CanReach || args.Target is not {} target) - return; - - if (!TryComp(target, out var artifact) || artifact.CurrentNodeId == null) - return; - - CreatePopup(uid, target, artifact); - args.Handled = true; - } - - private void AddScanVerb(EntityUid uid, NodeScannerComponent component, GetVerbsEvent args) - { - if (!args.CanAccess) - return; - - if (!TryComp(args.Target, out var artifact) || artifact.CurrentNodeId == null) - return; - - var verb = new UtilityVerb() - { - Act = () => - { - CreatePopup(uid, args.Target, artifact); - }, - Text = Loc.GetString("node-scan-tooltip") - }; - - args.Verbs.Add(verb); - } - - private void CreatePopup(EntityUid uid, EntityUid target, ArtifactComponent artifact) - { - if (TryComp(uid, out UseDelayComponent? useDelay) - && !_useDelay.TryResetDelay((uid, useDelay), true)) - return; - - _popupSystem.PopupEntity(Loc.GetString("node-scan-popup", - ("id", $"{artifact.CurrentNodeId}")), target); + // no-op } } diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/TraversalDistorterSystem.cs b/Content.Server/Xenoarchaeology/Equipment/Systems/TraversalDistorterSystem.cs deleted file mode 100644 index d277792243..0000000000 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/TraversalDistorterSystem.cs +++ /dev/null @@ -1,79 +0,0 @@ -using Content.Server.Popups; -using Content.Server.Power.EntitySystems; -using Content.Server.Xenoarchaeology.Equipment.Components; -using Content.Shared.Examine; -using Content.Shared.Interaction; -using Content.Shared.Placeable; -using Robust.Shared.Timing; - -namespace Content.Server.Xenoarchaeology.Equipment.Systems; - -public sealed class TraversalDistorterSystem : EntitySystem -{ - [Dependency] private readonly IGameTiming _timing = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnExamine); - - SubscribeLocalEvent(OnItemPlaced); - SubscribeLocalEvent(OnItemRemoved); - } - - private void OnInit(EntityUid uid, TraversalDistorterComponent component, MapInitEvent args) - { - component.NextActivation = _timing.CurTime; - } - - /// - /// Switches the state of the traversal distorter between up and down. - /// - /// The distorter's entity - /// The component on the entity - /// If the distorter changed state - public bool SetState(EntityUid uid, TraversalDistorterComponent component, bool isDown) - { - if (!this.IsPowered(uid, EntityManager)) - return false; - - if (_timing.CurTime < component.NextActivation) - return false; - - component.NextActivation = _timing.CurTime + component.ActivationDelay; - - component.BiasDirection = isDown ? BiasDirection.Down : BiasDirection.Up; - - return true; - } - - private void OnExamine(EntityUid uid, TraversalDistorterComponent component, ExaminedEvent args) - { - string examine = string.Empty; - switch (component.BiasDirection) - { - case BiasDirection.Up: - examine = Loc.GetString("traversal-distorter-desc-up"); - break; - case BiasDirection.Down: - examine = Loc.GetString("traversal-distorter-desc-down"); - break; - } - - args.PushMarkup(examine); - } - - private void OnItemPlaced(EntityUid uid, TraversalDistorterComponent component, ref ItemPlacedEvent args) - { - var bias = EnsureComp(args.OtherEntity); - bias.Provider = uid; - } - - private void OnItemRemoved(EntityUid uid, TraversalDistorterComponent component, ref ItemRemovedEvent args) - { - var otherEnt = args.OtherEntity; - if (TryComp(otherEnt, out var bias) && bias.Provider == uid) - RemComp(otherEnt, bias); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactComponent.cs deleted file mode 100644 index 4afd8af21c..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactComponent.cs +++ /dev/null @@ -1,166 +0,0 @@ -using Content.Shared.Xenoarchaeology.XenoArtifacts; -using Robust.Shared.Audio; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts; - -[RegisterComponent, Access(typeof(ArtifactSystem))] -public sealed partial class ArtifactComponent : Component -{ - /// - /// Every node contained in the tree - /// - [DataField("nodeTree"), ViewVariables] - public List NodeTree = new(); - - /// - /// The current node the artifact is on. - /// - [DataField("currentNodeId"), ViewVariables] - public int? CurrentNodeId; - - #region Node Tree Gen - /// - /// Minimum number of nodes to generate, inclusive - /// - [DataField("nodesMin")] - public int NodesMin = 3; - - /// - /// Maximum number of nodes to generate, exclusive - /// - [DataField("nodesMax")] - public int NodesMax = 9; - #endregion - - /// - /// Cooldown time between artifact activations (in seconds). - /// - [DataField("timer"), ViewVariables(VVAccess.ReadWrite)] - public TimeSpan CooldownTime = TimeSpan.FromSeconds(5); - - /// - /// Is this artifact under some suppression device? - /// f true, will ignore all trigger activations attempts. - /// - [DataField("isSuppressed"), ViewVariables(VVAccess.ReadWrite)] - public bool IsSuppressed; - - /// - /// The last time the artifact was activated. - /// - [DataField("lastActivationTime", customTypeSerializer: typeof(TimeOffsetSerializer))] - public TimeSpan LastActivationTime; - - /// - /// A multiplier applied to the calculated point value - /// to determine the monetary value of the artifact - /// - [DataField("priceMultiplier"), ViewVariables(VVAccess.ReadWrite)] - public float PriceMultiplier = 0.05f; - - /// - /// The base amount of research points for each artifact node. - /// - [DataField("pointsPerNode"), ViewVariables(VVAccess.ReadWrite)] - public int PointsPerNode = 6500; - - /// - /// Research points which have been "consumed" from the theoretical max value of the artifact. - /// - [DataField("consumedPoints"), ViewVariables(VVAccess.ReadWrite)] - public int ConsumedPoints; - - /// - /// A multiplier that is raised to the power of the average depth of a node. - /// Used for calculating the research point value of an artifact node. - /// - [DataField("pointDangerMultiplier"), ViewVariables(VVAccess.ReadWrite)] - public float PointDangerMultiplier = 1.35f; - - /// - /// The sound that plays when an artifact is activated - /// - [DataField("activationSound")] - public SoundSpecifier ActivationSound = new SoundCollectionSpecifier("ArtifactActivation") - { - Params = new() - { - Variation = 0.1f, - Volume = 3f - } - }; - - [DataField("activateActionEntity")] public EntityUid? ActivateActionEntity; -} - -/// -/// A single "node" of an artifact that contains various data about it. -/// -[DataDefinition] -public sealed partial class ArtifactNode : ICloneable -{ - /// - /// A numeric id corresponding to each node. - /// - [DataField("id"), ViewVariables] - public int Id; - - /// - /// how "deep" into the node tree. used for generation and price/value calculations - /// - [DataField("depth"), ViewVariables] - public int Depth; - - /// - /// A list of surrounding nodes. Used for tree traversal - /// - [DataField("edges"), ViewVariables] - public HashSet Edges = new(); - - /// - /// Whether or not the node has been entered - /// - [DataField("discovered"), ViewVariables(VVAccess.ReadWrite)] - public bool Discovered; - - /// - /// The trigger for the node - /// - [DataField("trigger", customTypeSerializer: typeof(PrototypeIdSerializer), required: true), ViewVariables] - public string Trigger = default!; - - /// - /// Whether or not the node has been triggered - /// - [DataField("triggered"), ViewVariables(VVAccess.ReadWrite)] - public bool Triggered; - - /// - /// The effect when the node is activated - /// - [DataField("effect", customTypeSerializer: typeof(PrototypeIdSerializer), required: true), ViewVariables] - public string Effect = default!; - - /// - /// Used for storing cumulative information about nodes - /// - [DataField("nodeData"), ViewVariables] - public Dictionary NodeData = new(); - - public object Clone() - { - return new ArtifactNode - { - Id = Id, - Depth = Depth, - Edges = Edges, - Discovered = Discovered, - Trigger = Trigger, - Triggered = Triggered, - Effect = Effect, - NodeData = NodeData - }; - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Actions.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Actions.cs deleted file mode 100644 index 6c4089a2db..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Actions.cs +++ /dev/null @@ -1,49 +0,0 @@ -using Content.Server.Actions; -using Content.Server.Popups; -using Content.Shared.Xenoarchaeology.XenoArtifacts; -using Robust.Shared.Prototypes; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts; - -public partial class ArtifactSystem -{ - [Dependency] private readonly ActionsSystem _actions = default!; - [Dependency] private readonly PopupSystem _popup = default!; - - [ValidatePrototypeId] private const string ArtifactActivateActionId = "ActionArtifactActivate"; - - /// - /// Used to add the artifact activation action (hehe), which lets sentient artifacts activate themselves, - /// either through admemery or the sentience effect. - /// - public void InitializeActions() - { - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnRemove); - - SubscribeLocalEvent(OnSelfActivate); - } - - private void OnMapInit(EntityUid uid, ArtifactComponent component, MapInitEvent args) - { - RandomizeArtifact(uid, component); - _actions.AddAction(uid, ref component.ActivateActionEntity, ArtifactActivateActionId); - } - - private void OnRemove(EntityUid uid, ArtifactComponent component, ComponentRemove args) - { - _actions.RemoveAction(uid, component.ActivateActionEntity); - } - - private void OnSelfActivate(EntityUid uid, ArtifactComponent component, ArtifactSelfActivateEvent args) - { - if (component.CurrentNodeId == null) - return; - - var curNode = GetNodeFromId(component.CurrentNodeId.Value, component).Id; - _popup.PopupEntity(Loc.GetString("activate-artifact-popup-self", ("node", curNode)), uid, uid); - TryActivateArtifact(uid, uid, component); - - args.Handled = true; - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Commands.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Commands.cs deleted file mode 100644 index d840a1f209..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Commands.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System.Linq; -using Content.Server.Administration; -using Content.Shared.Administration; -using Robust.Shared.Console; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts; - -public partial class ArtifactSystem -{ - [Dependency] private readonly IConsoleHost _conHost = default!; - - public void InitializeCommands() - { - _conHost.RegisterCommand("forceartifactnode", "Forces an artifact to traverse to a given node", "forceartifacteffect ", - ForceArtifactNode, - ForceArtifactNodeCompletions); - - _conHost.RegisterCommand("getartifactmaxvalue", "Reports the maximum research point value for a given artifact", "forceartifacteffect ", - GetArtifactMaxValue); - } - - [AdminCommand(AdminFlags.Fun)] - private void ForceArtifactNode(IConsoleShell shell, string argstr, string[] args) - { - if (args.Length != 2) - { - shell.WriteError("Argument length must be 2"); - return; - } - - if (!NetEntity.TryParse(args[0], out var uidNet) || !TryGetEntity(uidNet, out var uid) || !int.TryParse(args[1], out var id)) - return; - - if (!TryComp(uid, out var artifact)) - return; - - if (artifact.NodeTree.FirstOrDefault(n => n.Id == id) is { } node) - { - EnterNode(uid.Value, ref node); - } - } - - private CompletionResult ForceArtifactNodeCompletions(IConsoleShell shell, string[] args) - { - if (args.Length == 2 && NetEntity.TryParse(args[0], out var uidNet) && TryGetEntity(uidNet, out var uid)) - { - if (TryComp(uid, out var artifact)) - { - return CompletionResult.FromHintOptions(artifact.NodeTree.Select(s => s.Id.ToString()), ""); - } - } - - return CompletionResult.Empty; - } - - [AdminCommand(AdminFlags.Debug)] - private void GetArtifactMaxValue(IConsoleShell shell, string argstr, string[] args) - { - if (args.Length != 1) - shell.WriteError("Argument length must be 1"); - - if (!NetEntity.TryParse(args[0], out var uidNet) || !TryGetEntity(uidNet, out var uid)) - return; - - if (!TryComp(uid, out var artifact)) - return; - - var pointSum = GetResearchPointValue(uid.Value, artifact, true); - shell.WriteLine($"Max point value for {ToPrettyString(uid.Value)} with {artifact.NodeTree.Count} nodes: {pointSum}"); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Nodes.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Nodes.cs deleted file mode 100644 index a0e8420011..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.Nodes.cs +++ /dev/null @@ -1,244 +0,0 @@ -using System.Linq; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Whitelist; -using Content.Shared.Xenoarchaeology.XenoArtifacts; -using JetBrains.Annotations; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts; - -public sealed partial class ArtifactSystem -{ - [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; - - private const int MaxEdgesPerNode = 4; - - private readonly HashSet _usedNodeIds = new(); - - /// - /// Generate an Artifact tree with fully developed nodes. - /// - /// - /// - /// The amount of nodes it has. - private void GenerateArtifactNodeTree(EntityUid artifact, List allNodes, int nodesToCreate) - { - if (nodesToCreate < 1) - { - Log.Error($"nodesToCreate {nodesToCreate} is less than 1. Aborting artifact tree generation."); - return; - } - - _usedNodeIds.Clear(); - - var uninitializedNodes = new List { new(){ Id = GetValidNodeId() } }; - var createdNodes = 1; - - while (uninitializedNodes.Count > 0) - { - var node = uninitializedNodes[0]; - uninitializedNodes.Remove(node); - - node.Trigger = GetRandomTrigger(artifact, ref node); - node.Effect = GetRandomEffect(artifact, ref node); - - var maxChildren = _random.Next(1, MaxEdgesPerNode - 1); - - for (var i = 0; i < maxChildren; i++) - { - if (nodesToCreate <= createdNodes) - { - break; - } - - var child = new ArtifactNode {Id = GetValidNodeId(), Depth = node.Depth + 1}; - node.Edges.Add(child.Id); - child.Edges.Add(node.Id); - - uninitializedNodes.Add(child); - createdNodes++; - } - - allNodes.Add(node); - } - } - - private int GetValidNodeId() - { - var id = _random.Next(100, 1000); - while (_usedNodeIds.Contains(id)) - { - id = _random.Next(100, 1000); - } - - _usedNodeIds.Add(id); - - return id; - } - - //yeah these two functions are near duplicates but i don't - //want to implement an interface or abstract parent - - private string GetRandomTrigger(EntityUid artifact, ref ArtifactNode node) - { - var allTriggers = _prototype.EnumeratePrototypes() - .Where(x => _whitelistSystem.IsWhitelistPassOrNull(x.Whitelist, artifact) && - _whitelistSystem.IsBlacklistFailOrNull(x.Blacklist, artifact)).ToList(); - var validDepth = allTriggers.Select(x => x.TargetDepth).Distinct().ToList(); - - var weights = GetDepthWeights(validDepth, node.Depth); - var selectedRandomTargetDepth = GetRandomTargetDepth(weights); - var targetTriggers = allTriggers - .Where(x => x.TargetDepth == selectedRandomTargetDepth).ToList(); - - return _random.Pick(targetTriggers).ID; - } - - private string GetRandomEffect(EntityUid artifact, ref ArtifactNode node) - { - var allEffects = _prototype.EnumeratePrototypes() - .Where(x => _whitelistSystem.IsWhitelistPassOrNull(x.Whitelist, artifact) && - _whitelistSystem.IsBlacklistFailOrNull(x.Blacklist, artifact)).ToList(); - var validDepth = allEffects.Select(x => x.TargetDepth).Distinct().ToList(); - - var weights = GetDepthWeights(validDepth, node.Depth); - var selectedRandomTargetDepth = GetRandomTargetDepth(weights); - var targetEffects = allEffects - .Where(x => x.TargetDepth == selectedRandomTargetDepth).ToList(); - - return _random.Pick(targetEffects).ID; - } - - /// - /// The goal is that the depth that is closest to targetDepth has the highest chance of appearing. - /// The issue is that we also want some variance, so levels that are +/- 1 should also have a - /// decent shot of appearing. This function should probably get some tweaking at some point. - /// - private Dictionary GetDepthWeights(IEnumerable depths, int targetDepth) - { - // this function is just a normal distribution with a - // mean of target depth and standard deviation of 0.75 - var weights = new Dictionary(); - foreach (var d in depths) - { - var w = 10f / (0.75f * MathF.Sqrt(2 * MathF.PI)) * MathF.Pow(MathF.E, -MathF.Pow((d - targetDepth) / 0.75f, 2)); - weights.Add(d, w); - } - return weights; - } - - /// - /// Uses a weighted random system to get a random depth. - /// - private int GetRandomTargetDepth(Dictionary weights) - { - var sum = weights.Values.Sum(); - var accumulated = 0f; - - var rand = _random.NextFloat() * sum; - - foreach (var (key, weight) in weights) - { - accumulated += weight; - - if (accumulated >= rand) - { - return key; - } - } - - return _random.Pick(weights.Keys); //shouldn't happen - } - - /// - /// Enter a node: attach the relevant components - /// - private void EnterNode(EntityUid uid, ref ArtifactNode node, ArtifactComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - if (component.CurrentNodeId != null) - { - ExitNode(uid, component); - } - - component.CurrentNodeId = node.Id; - - var trigger = _prototype.Index(node.Trigger); - var effect = _prototype.Index(node.Effect); - - var allComponents = effect.Components.Concat(effect.PermanentComponents).Concat(trigger.Components); - foreach (var (name, entry) in allComponents) - { - var reg = _componentFactory.GetRegistration(name); - - if (node.Discovered && EntityManager.HasComponent(uid, reg.Type)) - { - // Don't re-add permanent components unless this is the first time you've entered this node - if (effect.PermanentComponents.ContainsKey(name)) - continue; - - EntityManager.RemoveComponent(uid, reg.Type); - } - - var comp = (Component)_componentFactory.GetComponent(reg); - - var temp = (object)comp; - _serialization.CopyTo(entry.Component, ref temp); - EntityManager.RemoveComponent(uid, temp!.GetType()); - EntityManager.AddComponent(uid, (Component)temp!); - } - - node.Discovered = true; - RaiseLocalEvent(uid, new ArtifactNodeEnteredEvent(component.CurrentNodeId.Value)); - } - - /// - /// Exit a node: remove the relevant components. - /// - private void ExitNode(EntityUid uid, ArtifactComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - if (component.CurrentNodeId == null) - return; - var currentNode = GetNodeFromId(component.CurrentNodeId.Value, component); - - var trigger = _prototype.Index(currentNode.Trigger); - var effect = _prototype.Index(currentNode.Effect); - - var entityPrototype = MetaData(uid).EntityPrototype; - var toRemove = effect.Components.Keys.Concat(trigger.Components.Keys).ToList(); - - foreach (var name in toRemove) - { - // if the entity prototype contained the component originally - if (entityPrototype?.Components.TryGetComponent(name, out var entry) ?? false) - { - var comp = (Component)_componentFactory.GetComponent(name); - var temp = (object)comp; - _serialization.CopyTo(entry, ref temp); - EntityManager.RemoveComponent(uid, temp!.GetType()); - EntityManager.AddComponent(uid, (Component)temp); - continue; - } - - EntityManager.RemoveComponentDeferred(uid, _componentFactory.GetRegistration(name).Type); - } - component.CurrentNodeId = null; - } - - [PublicAPI] - public ArtifactNode GetNodeFromId(int id, ArtifactComponent component) - { - return component.NodeTree.First(x => x.Id == id); - } - - [PublicAPI] - public ArtifactNode GetNodeFromId(int id, IEnumerable nodes) - { - return nodes.First(x => x.Id == id); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs deleted file mode 100644 index 6ddcd56abd..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/ArtifactSystem.cs +++ /dev/null @@ -1,299 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using Content.Server.Cargo.Systems; -using Content.Server.GameTicking; -using Content.Server.Power.EntitySystems; -using Content.Server.Xenoarchaeology.Equipment.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Content.Shared.CCVar; -using Content.Shared.Xenoarchaeology.XenoArtifacts; -using JetBrains.Annotations; -using Robust.Shared.Audio; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Configuration; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; -using Robust.Shared.Serialization.Manager; -using Robust.Shared.Timing; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts; - -public sealed partial class ArtifactSystem : EntitySystem -{ - [Dependency] private readonly IComponentFactory _componentFactory = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly IPrototypeManager _prototype = default!; - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly ISerializationManager _serialization = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(GetPrice); - - InitializeCommands(); - InitializeActions(); - } - - /// - /// Calculates the price of an artifact based on - /// how many nodes have been unlocked/triggered - /// - /// - /// General balancing (for fully unlocked artifacts): - /// Simple (1-2 Nodes): 1-2K - /// Medium (5-8 Nodes): 6-7K - /// Complex (7-12 Nodes): 10-11K - /// - private void GetPrice(EntityUid uid, ArtifactComponent component, ref PriceCalculationEvent args) - { - args.Price += (GetResearchPointValue(uid, component) + component.ConsumedPoints) * component.PriceMultiplier; - } - - /// - /// Calculates how many research points the artifact is worth - /// - /// - /// General balancing (for fully unlocked artifacts): - /// Simple (1-2 Nodes): ~10K - /// Medium (5-8 Nodes): ~30-40K - /// Complex (7-12 Nodes): ~60-80K - /// - /// Simple artifacts should be enough to unlock a few techs. - /// Medium should get you partway through a tree. - /// Complex should get you through a full tree and then some. - /// - public int GetResearchPointValue(EntityUid uid, ArtifactComponent? component = null, bool getMaxPrice = false) - { - if (!Resolve(uid, ref component)) - return 0; - - var sumValue = component.NodeTree.Sum(n => GetNodePointValue(n, component, getMaxPrice)); - var fullyExploredBonus = component.NodeTree.All(x => x.Triggered) || getMaxPrice ? 1.25f : 1; - - return (int) (sumValue * fullyExploredBonus) - component.ConsumedPoints; - } - - /// - /// Adjusts how many points on the artifact have been consumed - /// - public void AdjustConsumedPoints(EntityUid uid, int amount, ArtifactComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - component.ConsumedPoints += amount; - } - - /// - /// Sets whether or not the artifact is suppressed, - /// preventing it from activating - /// - public void SetIsSuppressed(EntityUid uid, bool suppressed, ArtifactComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - component.IsSuppressed = suppressed; - } - - /// - /// Gets the point value for an individual node - /// - private float GetNodePointValue(ArtifactNode node, ArtifactComponent component, bool getMaxPrice = false) - { - var valueDeduction = 1f; - if (!getMaxPrice) - { - if (!node.Discovered) - return 0; - - valueDeduction = !node.Triggered ? 0.25f : 1; - } - - var triggerProto = _prototype.Index(node.Trigger); - var effectProto = _prototype.Index(node.Effect); - - var nodeDanger = (node.Depth + effectProto.TargetDepth + triggerProto.TargetDepth) / 3; - return component.PointsPerNode * MathF.Pow(component.PointDangerMultiplier, nodeDanger) * valueDeduction; - } - - /// - /// Randomize a given artifact. - /// - [PublicAPI] - public void RandomizeArtifact(EntityUid uid, ArtifactComponent component) - { - var nodeAmount = _random.Next(component.NodesMin, component.NodesMax); - - GenerateArtifactNodeTree(uid, component.NodeTree, nodeAmount); - var firstNode = GetRootNode(component.NodeTree); - EnterNode(uid, ref firstNode, component); - } - - /// - /// Tries to activate the artifact - /// - /// - /// - /// - /// Set this to false if you don't know if the entity is an artifact. - /// - public bool TryActivateArtifact(EntityUid uid, EntityUid? user = null, ArtifactComponent? component = null, bool logMissing = true) - { - if (!Resolve(uid, ref component, logMissing)) - return false; - - // check if artifact is under suppression field - if (component.IsSuppressed) - return false; - - // check if artifact isn't under cooldown - var timeDif = _gameTiming.CurTime - component.LastActivationTime; - if (timeDif < component.CooldownTime) - return false; - - ForceActivateArtifact(uid, user, component); - return true; - } - - /// - /// Forces an artifact to activate - /// - /// - /// - /// - public void ForceActivateArtifact(EntityUid uid, EntityUid? user = null, ArtifactComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - if (component.CurrentNodeId == null) - return; - - _audio.PlayPvs(component.ActivationSound, uid); - component.LastActivationTime = _gameTiming.CurTime; - - var ev = new ArtifactActivatedEvent - { - Activator = user - }; - RaiseLocalEvent(uid, ev, true); - - var currentNode = GetNodeFromId(component.CurrentNodeId.Value, component); - - currentNode.Triggered = true; - if (currentNode.Edges.Count == 0) - return; - - var newNode = GetNewNode(uid, component); - if (newNode == null) - return; - - EnterNode(uid, ref newNode, component); - } - - private ArtifactNode? GetNewNode(EntityUid uid, ArtifactComponent component) - { - if (component.CurrentNodeId == null) - return null; - - var currentNode = GetNodeFromId(component.CurrentNodeId.Value, component); - - var allNodes = currentNode.Edges; - Log.Debug($"our node: {currentNode.Id}"); - Log.Debug($"other nodes: {string.Join(", ", allNodes)}"); - - if (TryComp(uid, out var bias) && - TryComp(bias.Provider, out var trav) && - this.IsPowered(bias.Provider, EntityManager)) - { - switch (trav.BiasDirection) - { - case BiasDirection.Up: - var upNodes = allNodes.Where(x => GetNodeFromId(x, component).Depth < currentNode.Depth).ToHashSet(); - if (upNodes.Count != 0) - allNodes = upNodes; - break; - case BiasDirection.Down: - var downNodes = allNodes.Where(x => GetNodeFromId(x, component).Depth > currentNode.Depth).ToHashSet(); - if (downNodes.Count != 0) - allNodes = downNodes; - break; - } - } - - var undiscoveredNodes = allNodes.Where(x => !GetNodeFromId(x, component).Discovered).ToList(); - Log.Debug($"Undiscovered nodes: {string.Join(", ", undiscoveredNodes)}"); - var newNode = _random.Pick(allNodes); - - if (undiscoveredNodes.Count != 0 && _random.Prob(0.75f)) - { - newNode = _random.Pick(undiscoveredNodes); - } - - Log.Debug($"Going to node {newNode}"); - - return GetNodeFromId(newNode, component); - } - - /// - /// Try and get a data object from a node - /// - /// The entity you're getting the data from - /// The data's key - /// The data you are trying to get. - /// - /// - /// - public bool TryGetNodeData(EntityUid uid, string key, [NotNullWhen(true)] out T? data, ArtifactComponent? component = null) - { - data = default; - - if (!Resolve(uid, ref component)) - return false; - - if (component.CurrentNodeId == null) - return false; - var currentNode = GetNodeFromId(component.CurrentNodeId.Value, component); - - if (currentNode.NodeData.TryGetValue(key, out var dat) && dat is T value) - { - data = value; - return true; - } - - return false; - } - - /// - /// Sets the node data to a certain value - /// - /// The artifact - /// The key being set - /// The value it's being set to - /// - public void SetNodeData(EntityUid uid, string key, object value, ArtifactComponent? component = null) - { - if (!Resolve(uid, ref component)) - return; - - if (component.CurrentNodeId == null) - return; - var currentNode = GetNodeFromId(component.CurrentNodeId.Value, component); - - currentNode.NodeData[key] = value; - } - - /// - /// Gets the base node (depth 0) of an artifact's node graph - /// - /// - /// - public ArtifactNode GetRootNode(List allNodes) - { - return allNodes.First(n => n.Depth == 0); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ChargeBatteryArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ChargeBatteryArtifactComponent.cs deleted file mode 100644 index a46dd9e813..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ChargeBatteryArtifactComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// This is used for recharging all nearby batteries when activated -/// -[RegisterComponent] -public sealed partial class ChargeBatteryArtifactComponent : Component -{ - /// - /// The radius of entities that will be affected - /// - [DataField("radius")] - public float Radius = 15f; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ChemicalPuddleArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ChemicalPuddleArtifactComponent.cs deleted file mode 100644 index 3065b1c417..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ChemicalPuddleArtifactComponent.cs +++ /dev/null @@ -1,32 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; -using Content.Shared.Chemistry.Components; -using Content.Shared.Chemistry.Reagent; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// This is used for an artifact that creates a puddle of -/// random chemicals upon being triggered. -/// -[RegisterComponent, Access(typeof(ChemicalPuddleArtifactSystem))] -public sealed partial class ChemicalPuddleArtifactComponent : Component -{ - /// - /// The solution where all the chemicals are stored - /// - [DataField("chemicalSolution", required: true), ViewVariables(VVAccess.ReadWrite)] - public Solution ChemicalSolution = default!; - - /// - /// The different chemicals that can be spawned by this effect - /// - [DataField("possibleChemicals", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List PossibleChemicals = default!; - - /// - /// The number of chemicals in the puddle - /// - [DataField("chemAmount")] - public int ChemAmount = 3; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/EmpArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/EmpArtifactComponent.cs deleted file mode 100644 index d00e65e7c6..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/EmpArtifactComponent.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// Artifact that EMP -/// -[RegisterComponent] -[Access(typeof(EmpArtifactSystem))] -public sealed partial class EmpArtifactComponent : Component -{ - [DataField("range"), ViewVariables(VVAccess.ReadWrite)] - public float Range = 4f; - - [DataField("energyConsumption"), ViewVariables(VVAccess.ReadWrite)] - public float EnergyConsumption = 1000000; - - [DataField("disableDuration"), ViewVariables(VVAccess.ReadWrite)] - public float DisableDuration = 60f; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/FoamArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/FoamArtifactComponent.cs deleted file mode 100644 index dc6fd06839..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/FoamArtifactComponent.cs +++ /dev/null @@ -1,49 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; -using Content.Shared.Chemistry.Reagent; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// Generates foam from the artifact when activated -/// -[RegisterComponent, Access(typeof(FoamArtifactSystem))] -public sealed partial class FoamArtifactComponent : Component -{ - /// - /// The list of reagents that will randomly be picked from - /// to choose the foam reagent - /// - [DataField("reagents", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List Reagents = new(); - - /// - /// The foam reagent - /// - [DataField("selectedReagent"), ViewVariables(VVAccess.ReadWrite)] - public string? SelectedReagent; - - /// - /// How long does the foam last? - /// - [DataField("duration"), ViewVariables(VVAccess.ReadWrite)] - public float Duration = 10; - - /// - /// How much reagent is in the foam? - /// - [DataField("reagentAmount"), ViewVariables(VVAccess.ReadWrite)] - public float ReagentAmount = 100; - - /// - /// Minimum radius of foam spawned - /// - [DataField("minFoamAmount"), ViewVariables(VVAccess.ReadWrite)] - public int MinFoamAmount = 15; - - /// - /// Maximum radius of foam spawned - /// - [DataField("maxFoamAmount"), ViewVariables(VVAccess.ReadWrite)] - public int MaxFoamAmount = 20; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/GasArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/GasArtifactComponent.cs deleted file mode 100644 index ee12326df3..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/GasArtifactComponent.cs +++ /dev/null @@ -1,63 +0,0 @@ -using Content.Shared.Atmos; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// Spawn a random gas with random temperature when artifact activated. -/// -[RegisterComponent] -public sealed partial class GasArtifactComponent : Component -{ - /// - /// Gas that will be spawned when artifact activated. - /// If null it will be picked on startup from . - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("spawnGas")] - public Gas? SpawnGas; - - /// - /// List of possible activation gases to pick on startup. - /// - [DataField("possibleGas")] - public List PossibleGases = new() - { - Gas.Oxygen, - Gas.Plasma, - Gas.Nitrogen, - Gas.CarbonDioxide, - Gas.Tritium, - Gas.Ammonia, - Gas.NitrousOxide, - Gas.Frezon - }; - - /// - /// Temperature of spawned gas. If null it will be picked on startup from range from - /// to . - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("spawnTemperature")] - public float? SpawnTemperature; - - [DataField("minRandomTemp")] - public float MinRandomTemperature = 100; - - [DataField("maxRandomTemp")] - public float MaxRandomTemperature = 400; - - /// - /// Max allowed external atmospheric pressure. - /// Artifact will stop spawn gas. - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("maxExternalPressure")] - public float MaxExternalPressure = Atmospherics.GasMinerDefaultMaxExternalPressure; - - /// - /// Moles of gas to spawn each time when artifact activated. - /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("spawnAmount")] - public float SpawnAmount = Atmospherics.MolesCellStandard * 3; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/IgniteArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/IgniteArtifactComponent.cs deleted file mode 100644 index 436790a16f..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/IgniteArtifactComponent.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// Artifact that ignites surrounding entities when triggered. -/// -[RegisterComponent] -public sealed partial class IgniteArtifactComponent : Component -{ - [DataField("range")] - public float Range = 2f; - - [DataField("minFireStack")] - public int MinFireStack = 2; - - [DataField("maxFireStack")] - public int MaxFireStack = 5; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/KnockArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/KnockArtifactComponent.cs deleted file mode 100644 index 4db2f8ea5e..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/KnockArtifactComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// This is used for using the "knock" spell when the artifact is activated -/// -[RegisterComponent] -public sealed partial class KnockArtifactComponent : Component -{ - /// - /// The range of the spell - /// - [DataField("knockRange")] - public float KnockRange = 4f; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PhasingArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PhasingArtifactComponent.cs deleted file mode 100644 index 4857233b65..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PhasingArtifactComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// Removes the masks/layers of hard fixtures from the artifact when added, allowing it to pass through walls -/// and such. -/// -[RegisterComponent] -public sealed partial class PhasingArtifactComponent : Component -{ -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PortalArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PortalArtifactComponent.cs deleted file mode 100644 index f64b95d821..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/PortalArtifactComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; -using Robust.Shared.Prototypes; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// When activated artifact will spawn an pair portals. First - right in artifact, Second - at random point of station. -/// -[RegisterComponent, Access(typeof(PortalArtifactSystem))] -public sealed partial class PortalArtifactComponent : Component -{ - [DataField] - public EntProtoId PortalProto = "PortalArtifact"; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/RandomInstrumentArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/RandomInstrumentArtifactComponent.cs deleted file mode 100644 index 28e91584ce..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/RandomInstrumentArtifactComponent.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -[RegisterComponent] -public sealed partial class RandomInstrumentArtifactComponent : Component -{ - -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ShuffleArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ShuffleArtifactComponent.cs deleted file mode 100644 index 4b712135f2..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/ShuffleArtifactComponent.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// When activated, will shuffle the position of all players -/// within a certain radius. -/// -[RegisterComponent] -public sealed partial class ShuffleArtifactComponent : Component -{ - [DataField("radius")] - public float Radius = 7.5f; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/SpawnArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/SpawnArtifactComponent.cs deleted file mode 100644 index 6fcd8b3f8b..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/SpawnArtifactComponent.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Content.Shared.Storage; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// When activated artifact will spawn an entity from prototype. -/// It could be an angry mob or some random item. -/// -[RegisterComponent] -public sealed partial class SpawnArtifactComponent : Component -{ - [DataField("spawns")] - public List? Spawns; - - /// - /// The range around the artifact that it will spawn the entity - /// - [DataField("range")] - public float Range = 0.5f; - - /// - /// The maximum number of times the spawn will occur - /// - [DataField("maxSpawns")] - public int MaxSpawns = 10; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TriggerArtifactComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TriggerArtifactComponent.cs deleted file mode 100644 index 9194cde7b1..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/TriggerArtifactComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; - -/// -/// This is used for an artifact that triggers when activated. -/// -[RegisterComponent] -public sealed partial class TriggerArtifactComponent : Component -{ - -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ChargeBatteryArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ChargeBatteryArtifactSystem.cs deleted file mode 100644 index 778c672729..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ChargeBatteryArtifactSystem.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Content.Server.Power.Components; -using Content.Server.Power.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Robust.Server.GameObjects; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -/// -/// This handles -/// -public sealed class ChargeBatteryArtifactSystem : EntitySystem -{ - [Dependency] private readonly BatterySystem _battery = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly TransformSystem _transform = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivated); - } - - private void OnActivated(EntityUid uid, ChargeBatteryArtifactComponent component, ArtifactActivatedEvent args) - { - foreach (var battery in _lookup.GetEntitiesInRange(_transform.GetMapCoordinates(uid), component.Radius)) - { - _battery.SetCharge(battery, battery.Comp.MaxCharge, battery); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ChemicalPuddleArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ChemicalPuddleArtifactSystem.cs deleted file mode 100644 index 542d8bb84c..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ChemicalPuddleArtifactSystem.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Content.Server.Fluids.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -/// -/// This handles -/// -public sealed class ChemicalPuddleArtifactSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly ArtifactSystem _artifact = default!; - [Dependency] private readonly PuddleSystem _puddle = default!; - - /// - /// The key for the node data entry containing - /// the chemicals that the puddle is made of. - /// - public const string NodeDataChemicalList = "nodeDataChemicalList"; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivated); - } - - private void OnActivated(EntityUid uid, ChemicalPuddleArtifactComponent component, ArtifactActivatedEvent args) - { - if (!TryComp(uid, out var artifact)) - return; - - if (!_artifact.TryGetNodeData(uid, NodeDataChemicalList, out List? chemicalList, artifact)) - { - chemicalList = new(); - for (var i = 0; i < component.ChemAmount; i++) - { - var chemProto = _random.Pick(component.PossibleChemicals); - chemicalList.Add(chemProto); - } - - _artifact.SetNodeData(uid, NodeDataChemicalList, chemicalList, artifact); - } - - var amountPerChem = component.ChemicalSolution.MaxVolume / component.ChemAmount; - foreach (var reagent in chemicalList) - { - component.ChemicalSolution.AddReagent(reagent, amountPerChem); - } - - _puddle.TrySpillAt(uid, component.ChemicalSolution, out _); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/DamageNearbyArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/DamageNearbyArtifactSystem.cs deleted file mode 100644 index f231120ad5..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/DamageNearbyArtifactSystem.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Damage; -using Content.Shared.Whitelist; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class BreakWindowArtifactSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly DamageableSystem _damageable = default!; - [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivated); - } - - private void OnActivated(EntityUid uid, DamageNearbyArtifactComponent component, ArtifactActivatedEvent args) - { - var ents = _lookup.GetEntitiesInRange(uid, component.Radius); - if (args.Activator != null) - ents.Add(args.Activator.Value); - foreach (var ent in ents) - { - if (_whitelistSystem.IsWhitelistFail(component.Whitelist, ent)) - continue; - - if (!_random.Prob(component.DamageChance)) - return; - - _damageable.TryChangeDamage(ent, component.Damage, component.IgnoreResistances); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/EmpArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/EmpArtifactSystem.cs deleted file mode 100644 index 970743f484..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/EmpArtifactSystem.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Content.Server.Emp; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Robust.Server.GameObjects; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class EmpArtifactSystem : EntitySystem -{ - [Dependency] private readonly EmpSystem _emp = default!; - [Dependency] private readonly TransformSystem _transform = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivate); - } - - private void OnActivate(EntityUid uid, EmpArtifactComponent component, ArtifactActivatedEvent args) - { - _emp.EmpPulse(_transform.GetMapCoordinates(uid), component.Range, component.EnergyConsumption, component.DisableDuration); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/FoamArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/FoamArtifactSystem.cs deleted file mode 100644 index 2d2c230b12..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/FoamArtifactSystem.cs +++ /dev/null @@ -1,43 +0,0 @@ -using System.Linq; -using Content.Server.Fluids.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Chemistry.Components; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class FoamArtifactSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly SmokeSystem _smoke = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnNodeEntered); - SubscribeLocalEvent(OnActivated); - } - - private void OnNodeEntered(EntityUid uid, FoamArtifactComponent component, ArtifactNodeEnteredEvent args) - { - if (!component.Reagents.Any()) - return; - - component.SelectedReagent = component.Reagents[args.RandomSeed % component.Reagents.Count]; - } - - private void OnActivated(EntityUid uid, FoamArtifactComponent component, ArtifactActivatedEvent args) - { - if (component.SelectedReagent == null) - return; - - var sol = new Solution(); - var xform = Transform(uid); - var range = (int) MathF.Round(MathHelper.Lerp(component.MinFoamAmount, component.MaxFoamAmount, _random.NextFloat(0, 1f))); - sol.AddReagent(component.SelectedReagent, component.ReagentAmount); - var foamEnt = Spawn("Foam", xform.Coordinates); - var spreadAmount = range * 4; - _smoke.StartSmoke(foamEnt, sol, component.Duration, spreadAmount); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/GasArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/GasArtifactSystem.cs deleted file mode 100644 index dc054d2318..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/GasArtifactSystem.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Content.Server.Atmos; -using Content.Server.Atmos.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Atmos; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class GasArtifactSystem : EntitySystem -{ - [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnNodeEntered); - SubscribeLocalEvent(OnActivate); - } - - private void OnNodeEntered(EntityUid uid, GasArtifactComponent component, ArtifactNodeEnteredEvent args) - { - if (component.SpawnGas == null && component.PossibleGases.Count != 0) - { - var gas = component.PossibleGases[args.RandomSeed % component.PossibleGases.Count]; - component.SpawnGas = gas; - } - - if (component.SpawnTemperature == null) - { - var temp = args.RandomSeed % component.MaxRandomTemperature - component.MinRandomTemperature + - component.MinRandomTemperature; - component.SpawnTemperature = temp; - } - } - - private void OnActivate(EntityUid uid, GasArtifactComponent component, ArtifactActivatedEvent args) - { - if (component.SpawnGas == null || component.SpawnTemperature == null) - return; - - var environment = _atmosphereSystem.GetContainingMixture(uid, false, true); - if (environment == null) - return; - - if (environment.Pressure >= component.MaxExternalPressure) - return; - - var merger = new GasMixture(1) { Temperature = component.SpawnTemperature.Value }; - merger.SetMoles(component.SpawnGas.Value, component.SpawnAmount); - - _atmosphereSystem.Merge(environment, merger); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/IgniteArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/IgniteArtifactSystem.cs deleted file mode 100644 index 0d6480a3ac..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/IgniteArtifactSystem.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Linq; -using Content.Server.Atmos.Components; -using Content.Server.Atmos.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class IgniteArtifactSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly FlammableSystem _flammable = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivate); - } - - private void OnActivate(EntityUid uid, IgniteArtifactComponent component, ArtifactActivatedEvent args) - { - var flammable = GetEntityQuery(); - foreach (var target in _lookup.GetEntitiesInRange(uid, component.Range)) - { - if (!flammable.TryGetComponent(target, out var fl)) - continue; - fl.FireStacks += _random.Next(component.MinFireStack, component.MaxFireStack); - _flammable.Ignite(target, uid, fl); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/KnockArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/KnockArtifactSystem.cs deleted file mode 100644 index 0245b220a3..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/KnockArtifactSystem.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Magic.Events; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class KnockArtifactSystem : EntitySystem -{ - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivated); - } - - private void OnActivated(EntityUid uid, KnockArtifactComponent component, ArtifactActivatedEvent args) - { - var ev = new KnockSpellEvent - { - Performer = uid, - Range = component.KnockRange - }; - RaiseLocalEvent(ev); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/LightFlickerArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/LightFlickerArtifactSystem.cs deleted file mode 100644 index 52d9fb0b36..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/LightFlickerArtifactSystem.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Content.Server.Ghost; -using Content.Server.Light.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -/// -/// This handles... -/// -public sealed class LightFlickerArtifactSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly GhostSystem _ghost = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivated); - } - - private void OnActivated(EntityUid uid, LightFlickerArtifactComponent component, ArtifactActivatedEvent args) - { - var lights = GetEntityQuery(); - foreach (var light in _lookup.GetEntitiesInRange(uid, component.Radius, LookupFlags.StaticSundries )) - { - if (!lights.HasComponent(light)) - continue; - - if (!_random.Prob(component.FlickerChance)) - continue; - - _ghost.DoGhostBooEvent(light); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PhasingArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PhasingArtifactSystem.cs deleted file mode 100644 index d07da6aa8f..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PhasingArtifactSystem.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Physics; -using Robust.Shared.Physics; -using Robust.Shared.Physics.Components; -using Robust.Shared.Physics.Dynamics; -using Robust.Shared.Physics.Systems; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -/// -/// Handles allowing activated artifacts to phase through walls. -/// -public sealed class PhasingArtifactSystem : EntitySystem -{ - [Dependency] private readonly SharedPhysicsSystem _physics = default!; - - /// - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnActivate); - } - - private void OnActivate(EntityUid uid, PhasingArtifactComponent component, ArtifactActivatedEvent args) - { - if (!TryComp(uid, out var fixtures)) - return; - - foreach (var fixture in fixtures.Fixtures.Values) - { - _physics.SetHard(uid, fixture, false, fixtures); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyOthersArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyOthersArtifactSystem.cs deleted file mode 100644 index 3831bea06c..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PolyOthersArtifactSystem.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Content.Server.Polymorph.Systems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Humanoid; -using Content.Shared.Mobs.Systems; -using Robust.Shared.Audio.Systems; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class PolyOthersArtifactSystem : 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(Entity ent, ref ArtifactActivatedEvent args) - { - var xform = Transform(ent); - var humanoids = new HashSet>(); - _lookup.GetEntitiesInRange(xform.Coordinates, ent.Comp.Range, humanoids); - - foreach (var comp in humanoids) - { - var target = comp.Owner; - if (_mob.IsAlive(target)) - { - _poly.PolymorphEntity(target, ent.Comp.PolymorphPrototypeName); - _audio.PlayPvs(ent.Comp.PolySound, ent); - } - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PortalArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PortalArtifactSystem.cs deleted file mode 100644 index 810d56e89b..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/PortalArtifactSystem.cs +++ /dev/null @@ -1,53 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Mind.Components; -using Content.Shared.Mobs.Components; -using Content.Shared.Teleportation.Systems; -using Robust.Shared.Collections; -using Robust.Shared.Containers; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class PortalArtifactSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly LinkedEntitySystem _link = default!; - [Dependency] private readonly SharedTransformSystem _transform = default!; - [Dependency] private readonly SharedContainerSystem _container = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnActivate); - } - - private void OnActivate(Entity artifact, ref ArtifactActivatedEvent args) - { - var map = Transform(artifact).MapID; - var validMinds = new ValueList(); - var mindQuery = EntityQueryEnumerator(); - while (mindQuery.MoveNext(out var uid, out var mc, out _, out var xform, out var meta)) - { - // check if the MindContainer has a Mind and if the entity is not in a container (this also auto excludes AI) and if they are on the same map - if (mc.HasMind && !_container.IsEntityOrParentInContainer(uid, meta: meta, xform: xform) && xform.MapID == map) - { - validMinds.Add(uid); - } - } - //this would only be 0 if there were a station full of AIs and no one else, in that case just stop this function - if (validMinds.Count == 0) - return; - - var firstPortal = Spawn(artifact.Comp.PortalProto, _transform.GetMapCoordinates(artifact)); - - var target = _random.Pick(validMinds); - - var secondPortal = Spawn(artifact.Comp.PortalProto, _transform.GetMapCoordinates(target)); - - //Manual position swapping, because the portal that opens doesn't trigger a collision, and doesn't teleport targets the first time. - _transform.SwapPositions(target, artifact.Owner); - - _link.TryLink(firstPortal, secondPortal, true); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/RandomInstrumentArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/RandomInstrumentArtifactSystem.cs deleted file mode 100644 index 118bc396a7..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/RandomInstrumentArtifactSystem.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Content.Server.Instruments; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Shared.Instruments; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class RandomInstrumentArtifactSystem : EntitySystem -{ - [Dependency] private readonly InstrumentSystem _instrument = default!; - [Dependency] private readonly IRobustRandom _random = default!; - /// - public override void Initialize() - { - SubscribeLocalEvent(OnStartup); - } - - private void OnStartup(EntityUid uid, RandomInstrumentArtifactComponent component, ComponentStartup args) - { - var instrument = EnsureComp(uid); - _instrument.SetInstrumentProgram(uid, instrument, (byte) _random.Next(0, 127), 0); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/RandomTeleportArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/RandomTeleportArtifactSystem.cs deleted file mode 100644 index 7e3ecb8faa..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/RandomTeleportArtifactSystem.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Popups; -using Robust.Shared.Player; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class RandomTeleportArtifactSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly SharedPopupSystem _popup = default!; - [Dependency] private readonly SharedTransformSystem _xform = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivate); - } - - private void OnActivate(EntityUid uid, RandomTeleportArtifactComponent component, ArtifactActivatedEvent args) - { - var xform = Transform(uid); - _popup.PopupCoordinates(Loc.GetString("blink-artifact-popup"), xform.Coordinates, PopupType.Medium); - - _xform.SetCoordinates(uid, xform, xform.Coordinates.Offset(_random.NextVector2(component.MinRange, component.MaxRange))); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs deleted file mode 100644 index c39627818a..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ShuffleArtifactSystem.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Mobs.Components; -using Robust.Shared.Map; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class ShuffleArtifactSystem : EntitySystem -{ - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly SharedTransformSystem _xform = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivated); - } - - private void OnActivated(EntityUid uid, ShuffleArtifactComponent component, ArtifactActivatedEvent args) - { - var mobState = GetEntityQuery(); - - List> toShuffle = new(); - - foreach (var ent in _lookup.GetEntitiesInRange(uid, component.Radius, LookupFlags.Dynamic | LookupFlags.Sundries)) - { - if (!mobState.HasComponent(ent)) - continue; - - var xform = Transform(ent); - - toShuffle.Add((ent, xform)); - } - - _random.Shuffle(toShuffle); - - while (toShuffle.Count > 1) - { - var ent1 = _random.PickAndTake(toShuffle); - var ent2 = _random.PickAndTake(toShuffle); - _xform.SwapPositions((ent1, ent1), (ent2, ent2)); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/SpawnArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/SpawnArtifactSystem.cs deleted file mode 100644 index c262283787..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/SpawnArtifactSystem.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System.Numerics; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Storage; -using Robust.Server.GameObjects; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class SpawnArtifactSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly ArtifactSystem _artifact = default!; - [Dependency] private readonly TransformSystem _transform = default!; - - public const string NodeDataSpawnAmount = "nodeDataSpawnAmount"; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnActivate); - } - - private void OnActivate(EntityUid uid, SpawnArtifactComponent component, ArtifactActivatedEvent args) - { - if (!_artifact.TryGetNodeData(uid, NodeDataSpawnAmount, out int amount)) - amount = 0; - - if (amount >= component.MaxSpawns) - return; - - if (component.Spawns is not {} spawns) - return; - - var artifactCord = _transform.GetMapCoordinates(uid); - foreach (var spawn in EntitySpawnCollection.GetSpawns(spawns, _random)) - { - var dx = _random.NextFloat(-component.Range, component.Range); - var dy = _random.NextFloat(-component.Range, component.Range); - var spawnCord = artifactCord.Offset(new Vector2(dx, dy)); - var ent = Spawn(spawn, spawnCord); - _transform.AttachToGridOrMap(ent); - } - _artifact.SetNodeData(uid, NodeDataSpawnAmount, amount + 1); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TemperatureArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TemperatureArtifactSystem.cs deleted file mode 100644 index e62ce36b5b..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TemperatureArtifactSystem.cs +++ /dev/null @@ -1,49 +0,0 @@ -using Content.Server.Atmos; -using Content.Server.Atmos.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Atmos; -using Robust.Server.GameObjects; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class TemperatureArtifactSystem : EntitySystem -{ - [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; - [Dependency] private readonly TransformSystem _transformSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnActivate); - } - - private void OnActivate(EntityUid uid, TemperatureArtifactComponent component, ArtifactActivatedEvent args) - { - var transform = Transform(uid); - - var center = _atmosphereSystem.GetContainingMixture(uid, false, true); - if (center == null) - return; - UpdateTileTemperature(component, center); - - if (component.AffectAdjacentTiles && transform.GridUid != null) - { - var enumerator = _atmosphereSystem.GetAdjacentTileMixtures(transform.GridUid.Value, - _transformSystem.GetGridOrMapTilePosition(uid, transform), excite: true); - - while (enumerator.MoveNext(out var mixture)) - { - UpdateTileTemperature(component, mixture); - } - } - } - - private void UpdateTileTemperature(TemperatureArtifactComponent component, GasMixture environment) - { - var dif = component.TargetTemperature - environment.Temperature; - var absDif = Math.Abs(dif); - var step = Math.Min(absDif, component.SpawnTemperature); - environment.Temperature += dif > 0 ? step : -step; - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ThrowArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ThrowArtifactSystem.cs deleted file mode 100644 index 7b8430dc48..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/ThrowArtifactSystem.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System.Numerics; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Shared.Maps; -using Content.Shared.Physics; -using Content.Shared.Throwing; -using Robust.Shared.Map.Components; -using Robust.Shared.Physics.Components; -using Robust.Shared.Random; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -public sealed class ThrowArtifactSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly ThrowingSystem _throwing = default!; - [Dependency] private readonly TileSystem _tile = default!; - [Dependency] private readonly SharedTransformSystem _transform = default!; - [Dependency] private readonly SharedMapSystem _mapSystem = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnActivated); - } - - private void OnActivated(EntityUid uid, ThrowArtifactComponent component, ArtifactActivatedEvent args) - { - var xform = Transform(uid); - if (TryComp(xform.GridUid, out var grid)) - { - var tiles = _mapSystem.GetTilesIntersecting( - xform.GridUid.Value, - grid, - Box2.CenteredAround(_transform.GetWorldPosition(xform), new Vector2(component.Range * 2, component.Range))); - - foreach (var tile in tiles) - { - if (!_random.Prob(component.TilePryChance)) - continue; - - _tile.PryTile(tile); - } - } - - var lookup = _lookup.GetEntitiesInRange(uid, component.Range, LookupFlags.Dynamic | LookupFlags.Sundries); - var physQuery = GetEntityQuery(); - foreach (var ent in lookup) - { - if (physQuery.TryGetComponent(ent, out var phys) - && (phys.CollisionMask & (int) CollisionGroup.GhostImpassable) != 0) - continue; - - var tempXform = Transform(ent); - - var foo = _transform.GetMapCoordinates(ent, xform: tempXform).Position - _transform.GetMapCoordinates(uid, xform: xform).Position; - _throwing.TryThrow(ent, foo*2, component.ThrowStrength, uid, 0); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TriggerArtifactSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TriggerArtifactSystem.cs deleted file mode 100644 index f70c8d7e9e..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Systems/TriggerArtifactSystem.cs +++ /dev/null @@ -1,24 +0,0 @@ -using Content.Server.Explosion.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Systems; - -/// -/// This handles -/// -public sealed class TriggerArtifactSystem : EntitySystem -{ - [Dependency] private readonly TriggerSystem _trigger = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnArtifactActivated); - } - - private void OnArtifactActivated(EntityUid uid, TriggerArtifactComponent component, ArtifactActivatedEvent args) - { - _trigger.Trigger(uid, args.Activator); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Events/ArtifactEvents.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Events/ArtifactEvents.cs deleted file mode 100644 index 57f5089825..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Events/ArtifactEvents.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Events; - -/// -/// Invokes when artifact was successfully activated. -/// Used to start attached effects. -/// -public sealed class ArtifactActivatedEvent : EntityEventArgs -{ - /// - /// Entity that activate this artifact. - /// Usually player, but can also be another object. - /// - public EntityUid? Activator; -} - -/// -/// Force to randomize artifact triggers. -/// -public sealed class ArtifactNodeEnteredEvent : EntityEventArgs -{ - /// - /// An entity-specific seed that can be used to - /// generate random values. - /// - public readonly int RandomSeed; - - public ArtifactNodeEnteredEvent(int randomSeed) - { - RandomSeed = randomSeed; - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactAnchorTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactAnchorTriggerComponent.cs deleted file mode 100644 index 3b2190debd..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactAnchorTriggerComponent.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Triggers when an artifact is anchored -/// -/// -/// Not every trigger can be a winner -/// -[RegisterComponent] -public sealed partial class ArtifactAnchorTriggerComponent : Component -{ - -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactDamageTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactDamageTriggerComponent.cs deleted file mode 100644 index 2f5ac6de81..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactDamageTriggerComponent.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Content.Shared.Damage.Prototypes; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Triggers when a certain threshold of damage of certain types is reached -/// -[RegisterComponent] -public sealed partial class ArtifactDamageTriggerComponent : Component -{ - /// - /// What damage types are accumulated for the trigger? - /// - [DataField("damageTypes", customTypeSerializer: typeof(PrototypeIdListSerializer))] - public List? DamageTypes; - - /// - /// What threshold has to be reached before it is activated? - /// - [DataField("damageThreshold", required: true)] - public float DamageThreshold; - - /// - /// How much damage has been accumulated on the artifact so far - /// - [ViewVariables(VVAccess.ReadWrite)] - public float AccumulatedDamage = 0; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactDeathTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactDeathTriggerComponent.cs deleted file mode 100644 index a9d4d1af48..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactDeathTriggerComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Triggers when a nearby entity dies -/// -[RegisterComponent] -public sealed partial class ArtifactDeathTriggerComponent : Component -{ - /// - /// How close to the death the artifact has to be for it to trigger. - /// - [DataField("range")] - public float Range = 15f; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactElectricityTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactElectricityTriggerComponent.cs deleted file mode 100644 index 4046d8c4d8..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactElectricityTriggerComponent.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Activate artifact when it contacted with an electricity source. -/// It could be connected MV cables, stun baton or multi tool. -/// -[RegisterComponent] -public sealed partial class ArtifactElectricityTriggerComponent : Component -{ - /// - /// How much power should artifact receive to operate. - /// - [DataField("minPower")] - public float MinPower = 400; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactExamineTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactExamineTriggerComponent.cs deleted file mode 100644 index ac669970de..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactExamineTriggerComponent.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Triggers when the artifact is examined. -/// -[RegisterComponent] -public sealed partial class ArtifactExamineTriggerComponent : Component -{ - -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactGasTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactGasTriggerComponent.cs deleted file mode 100644 index 77cb86f47f..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactGasTriggerComponent.cs +++ /dev/null @@ -1,38 +0,0 @@ -using Content.Shared.Atmos; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Activates artifact when it surrounded by certain gas. -/// -[RegisterComponent] -public sealed partial class ArtifactGasTriggerComponent : Component -{ - /// - /// List of possible activation gases to pick on startup. - /// - [DataField("possibleGas")] - public List PossibleGases = new() - { - Gas.Oxygen, - Gas.Plasma, - Gas.Nitrogen, - Gas.CarbonDioxide, - Gas.Ammonia, - Gas.NitrousOxide - }; - - /// - /// Gas id that will activate artifact. - /// - [DataField("gas")] - [ViewVariables(VVAccess.ReadWrite)] - public Gas? ActivationGas; - - /// - /// How many moles of gas should be present in room to activate artifact. - /// - [DataField("moles")] - [ViewVariables(VVAccess.ReadWrite)] - public float ActivationMoles = Atmospherics.MolesCellStandard * 0.1f; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactHeatTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactHeatTriggerComponent.cs deleted file mode 100644 index 0af4200780..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactHeatTriggerComponent.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -// TODO: This should probably be generalized for cold temperature too, -// but right now there is no sane way to make a freezer. - -/// -/// Triggers artifact if its in hot environment or -/// has contacted with a hot object (lit welder, lighter, etc). -/// -[RegisterComponent] -public sealed partial class ArtifactHeatTriggerComponent : Component -{ - /// - /// Minimal surrounding gas temperature to trigger artifact. - /// Around 100 degrees celsius by default. - /// Doesn't affect hot items temperature. - /// - [DataField("activationTemperature")] - [ViewVariables(VVAccess.ReadWrite)] - public float ActivationTemperature = 373; - - /// - /// Should artifact be activated by hot items (welders, lighter, etc)? - /// - [DataField("activateHot")] - [ViewVariables(VVAccess.ReadWrite)] - public bool ActivateHotItems = true; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactInteractionTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactInteractionTriggerComponent.cs deleted file mode 100644 index e2f00f9ebd..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactInteractionTriggerComponent.cs +++ /dev/null @@ -1,29 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Activate artifact by touching, attacking or pulling it. -/// -[RegisterComponent] -public sealed partial class ArtifactInteractionTriggerComponent : Component -{ - /// - /// Should artifact be activated just by touching with empty hand? - /// - [DataField("emptyHandActivation")] - [ViewVariables(VVAccess.ReadWrite)] - public bool EmptyHandActivation = true; - - /// - /// Should artifact be activated by melee attacking? - /// - [DataField("attackActivation")] - [ViewVariables(VVAccess.ReadWrite)] - public bool AttackActivation = true; - - /// - /// Should artifact be activated by starting pulling it? - /// - [DataField("pullActivation")] - [ViewVariables(VVAccess.ReadWrite)] - public bool PullActivation = true; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactLandTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactLandTriggerComponent.cs deleted file mode 100644 index b8be1b196f..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactLandTriggerComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Triggers when the artifact lands after being thrown. -/// -[RegisterComponent] -public sealed partial class ArtifactLandTriggerComponent : Component -{ -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMagnetTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMagnetTriggerComponent.cs deleted file mode 100644 index 6e7bb43e8b..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMagnetTriggerComponent.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Triggers when the salvage magnet is activated -/// -[RegisterComponent] -public sealed partial class ArtifactMagnetTriggerComponent : Component -{ - /// - /// how close to the magnet do you have to be? - /// - [DataField("range")] - public float Range = 40f; - - /// - /// How close do active magboots have to be? - /// This is smaller because they are weaker magnets - /// - [DataField("magbootRange")] - public float MagbootRange = 2f; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMicrowaveTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMicrowaveTriggerComponent.cs deleted file mode 100644 index 6270e4d826..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMicrowaveTriggerComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Triggers when an item artifact is microwaved. -/// -[RegisterComponent] -public sealed partial class ArtifactMicrowaveTriggerComponent : Component -{ -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMusicTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMusicTriggerComponent.cs deleted file mode 100644 index 1a67d5e446..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactMusicTriggerComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Triggers when an instrument is played nearby -/// -[RegisterComponent] -public sealed partial class ArtifactMusicTriggerComponent : Component -{ - /// - /// how close does the artifact have to be to the instrument to activate - /// - [DataField("range")] - public float Range = 5; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactPressureTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactPressureTriggerComponent.cs deleted file mode 100644 index 8a7d37cfb1..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactPressureTriggerComponent.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Triggers when a certain pressure threshold is hit -/// -[RegisterComponent] -public sealed partial class ArtifactPressureTriggerComponent : Component -{ - /// - /// The lower-end pressure threshold - /// - [DataField("minPressureThreshold")] - public float? MinPressureThreshold; - - /// - /// The higher-end pressure threshold - /// - [DataField("maxPressureThreshold")] - public float? MaxPressureThreshold; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactTimerTriggerComponent.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactTimerTriggerComponent.cs deleted file mode 100644 index bab364afbb..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Components/ArtifactTimerTriggerComponent.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -/// -/// Will try to activate artifact periodically. -/// Doesn't used for random artifacts, can be spawned by admins. -/// -[RegisterComponent] -public sealed partial class ArtifactTimerTriggerComponent : Component -{ - /// - /// Time between artifact activation attempts. - /// - [DataField("rate")] - [ViewVariables(VVAccess.ReadWrite)] - public TimeSpan ActivationRate = TimeSpan.FromSeconds(5.0f); - - /// - /// Last time when artifact was activated. - /// - public TimeSpan LastActivation; -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactAnchorTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactAnchorTriggerSystem.cs deleted file mode 100644 index 568273efbd..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactAnchorTriggerSystem.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactAnchorTriggerSystem : EntitySystem -{ - [Dependency] private readonly ArtifactSystem _artifact = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnAnchorStateChanged); - } - - private void OnAnchorStateChanged(EntityUid uid, ArtifactAnchorTriggerComponent component, ref AnchorStateChangedEvent args) - { - if (args.Detaching) - return; - - _artifact.TryActivateArtifact(uid); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDamageTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDamageTriggerSystem.cs deleted file mode 100644 index aa7c70753c..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDamageTriggerSystem.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Content.Shared.Damage; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactDamageTriggerSystem : EntitySystem -{ - [Dependency] private readonly ArtifactSystem _artifact = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnDamageChanged); - } - - private void OnDamageChanged(EntityUid uid, ArtifactDamageTriggerComponent component, DamageChangedEvent args) - { - if (!args.DamageIncreased) - return; - - if (args.DamageDelta == null) - return; - - foreach (var (type, amount) in args.DamageDelta.DamageDict) - { - if (component.DamageTypes != null && !component.DamageTypes.Contains(type)) - continue; - - component.AccumulatedDamage += (float) amount; - } - - if (component.AccumulatedDamage >= component.DamageThreshold) - _artifact.TryActivateArtifact(uid, args.Origin); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDeathTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDeathTriggerSystem.cs deleted file mode 100644 index a924120734..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactDeathTriggerSystem.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Content.Shared.Mobs; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactDeathTriggerSystem : EntitySystem -{ - [Dependency] private readonly ArtifactSystem _artifact = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnMobStateChanged); - } - - private void OnMobStateChanged(MobStateChangedEvent ev) - { - if (ev.NewMobState != MobState.Dead) - return; - - var deathXform = Transform(ev.Target); - - 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; - - if (distance > trigger.Range) - continue; - - toActivate.Add((uid, trigger)); - } - - foreach (var a in toActivate) - { - _artifact.TryActivateArtifact(a); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactElectricityTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactElectricityTriggerSystem.cs deleted file mode 100644 index 9d2fd58980..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactElectricityTriggerSystem.cs +++ /dev/null @@ -1,57 +0,0 @@ -using Content.Server.Power.Components; -using Content.Server.Power.Events; -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Content.Shared.Interaction; -using Content.Shared.Tools.Components; -using Content.Shared.Tools.Systems; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactElectricityTriggerSystem : EntitySystem -{ - [Dependency] private readonly ArtifactSystem _artifactSystem = default!; - [Dependency] private readonly SharedToolSystem _toolSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnInteractUsing); - SubscribeLocalEvent(OnPowerPulse); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - 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((uid, artifact)); - } - - foreach (var a in toUpdate) - { - _artifactSystem.TryActivateArtifact(a, null, a); - } - } - - private void OnInteractUsing(EntityUid uid, ArtifactElectricityTriggerComponent component, InteractUsingEvent args) - { - if (args.Handled) - return; - - if (!_toolSystem.HasQuality(args.Used, SharedToolSystem.PulseQuality)) - return; - - args.Handled = _artifactSystem.TryActivateArtifact(uid, args.User); - } - - private void OnPowerPulse(EntityUid uid, ArtifactElectricityTriggerComponent component, PowerPulseEvent args) - { - _artifactSystem.TryActivateArtifact(uid, args.User); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactExamineTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactExamineTriggerSystem.cs deleted file mode 100644 index b7afbcfc8b..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactExamineTriggerSystem.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Content.Shared.Examine; -using Content.Shared.Ghost; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactExamineTriggerSystem : EntitySystem -{ - [Dependency] private readonly ArtifactSystem _artifact = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnExamine); - } - - private void OnExamine(EntityUid uid, ArtifactExamineTriggerComponent component, ExaminedEvent args) - { - // Prevent ghosts from activating this trigger unless they have CanGhostInteract - if (TryComp(args.Examiner, out var ghost) && !ghost.CanGhostInteract) - return; - - _artifact.TryActivateArtifact(uid); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactGasTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactGasTriggerSystem.cs deleted file mode 100644 index 00f409f553..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactGasTriggerSystem.cs +++ /dev/null @@ -1,55 +0,0 @@ -using Content.Server.Atmos.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Events; -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactGasTriggerSystem : EntitySystem -{ - [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; - [Dependency] private readonly ArtifactSystem _artifactSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnRandomizeTrigger); - } - - private void OnRandomizeTrigger(EntityUid uid, ArtifactGasTriggerComponent component, ArtifactNodeEnteredEvent args) - { - if (component.ActivationGas != null) - return; - - var gas = component.PossibleGases[args.RandomSeed % component.PossibleGases.Count]; - component.ActivationGas = gas; - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - List> toUpdate = new(); - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var trigger, out var artifact, out var transform)) - { - if (trigger.ActivationGas == null) - continue; - - var environment = _atmosphereSystem.GetTileMixture((uid, transform)); - if (environment == null) - continue; - - // check if outside there is enough moles to activate artifact - var moles = environment.GetMoles(trigger.ActivationGas.Value); - if (moles < trigger.ActivationMoles) - continue; - - toUpdate.Add((uid, artifact)); - } - - foreach (var a in toUpdate) - { - _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 deleted file mode 100644 index 5525cdf359..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactHeatTriggerSystem.cs +++ /dev/null @@ -1,68 +0,0 @@ -using Content.Server.Atmos.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Content.Shared.Interaction; -using Content.Shared.Temperature; -using Content.Shared.Weapons.Melee.Events; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactHeatTriggerSystem : EntitySystem -{ - [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; - [Dependency] private readonly ArtifactSystem _artifactSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnAttacked); - SubscribeLocalEvent(OnUsing); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - List> toUpdate = new(); - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var trigger, out var transform, out var artifact)) - { - var environment = _atmosphereSystem.GetTileMixture((uid, transform)); - if (environment == null) - continue; - - if (environment.Temperature < trigger.ActivationTemperature) - continue; - - toUpdate.Add((uid, artifact)); - } - - foreach (var a in toUpdate) - { - _artifactSystem.TryActivateArtifact(a, null, a); - } - } - - private void OnAttacked(EntityUid uid, ArtifactHeatTriggerComponent component, AttackedEvent args) - { - if (!component.ActivateHotItems || !CheckHot(args.Used)) - return; - _artifactSystem.TryActivateArtifact(uid, args.User); - } - - private void OnUsing(EntityUid uid, ArtifactHeatTriggerComponent component, InteractUsingEvent args) - { - if (args.Handled) - return; - - if (!component.ActivateHotItems || !CheckHot(args.Used)) - return; - args.Handled = _artifactSystem.TryActivateArtifact(uid, args.User); - } - - private bool CheckHot(EntityUid usedUid) - { - var hotEvent = new IsHotEvent(); - RaiseLocalEvent(usedUid, hotEvent); - return hotEvent.IsHot; - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactInteractionTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactInteractionTriggerSystem.cs deleted file mode 100644 index 9976d56da0..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactInteractionTriggerSystem.cs +++ /dev/null @@ -1,46 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Content.Shared.Interaction; -using Content.Shared.Movement.Pulling.Events; -using Content.Shared.Weapons.Melee.Events; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactInteractionTriggerSystem : EntitySystem -{ - [Dependency] private readonly ArtifactSystem _artifactSystem = default!; - - public override void Initialize() - { - base.Initialize(); - SubscribeLocalEvent(OnPull); - SubscribeLocalEvent(OnAttack); - SubscribeLocalEvent(OnInteract); - } - - private void OnPull(EntityUid uid, ArtifactInteractionTriggerComponent component, PullStartedMessage args) - { - if (!component.PullActivation) - return; - - _artifactSystem.TryActivateArtifact(uid, args.PullerUid); - } - - private void OnAttack(EntityUid uid, ArtifactInteractionTriggerComponent component, AttackedEvent args) - { - if (!component.AttackActivation) - return; - - _artifactSystem.TryActivateArtifact(uid, args.User); - } - - private void OnInteract(EntityUid uid, ArtifactInteractionTriggerComponent component, InteractHandEvent args) - { - if (args.Handled) - return; - - if (!component.EmptyHandActivation) - return; - - args.Handled = _artifactSystem.TryActivateArtifact(uid, args.User); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactLandSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactLandSystem.cs deleted file mode 100644 index f92e4f8e30..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactLandSystem.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Content.Shared.Throwing; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactLandSystem : EntitySystem -{ - [Dependency] private readonly ArtifactSystem _artifact = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnLand); - } - - private void OnLand(EntityUid uid, ArtifactLandTriggerComponent component, ref LandEvent args) - { - _artifact.TryActivateArtifact(uid, args.User); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs deleted file mode 100644 index a585a9ef45..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMagnetTriggerSystem.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System.Linq; -using Content.Server.Salvage; -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Content.Shared.Clothing; -using Content.Shared.Item.ItemToggle.Components; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -/// -/// This handles artifacts that are activated by magnets, both salvage and magboots. -/// -public sealed class ArtifactMagnetTriggerSystem : EntitySystem -{ - [Dependency] private readonly ArtifactSystem _artifact = default!; - - private readonly List _toActivate = new(); - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnMagnetActivated); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - if (!EntityQuery().Any()) - return; - - _toActivate.Clear(); - - //assume that there's more magboots than artifacts - var query = EntityQueryEnumerator(); - while (query.MoveNext(out _, out var magboot, out var magXform, out var toggle)) - { - if (!toggle.Activated) - continue; - - 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; - - if (distance > trigger.MagbootRange) - continue; - - _toActivate.Add(artifactUid); - } - } - - foreach (var a in _toActivate) - { - _artifact.TryActivateArtifact(a); - } - } - - private void OnMagnetActivated(ref SalvageMagnetActivatedEvent ev) - { - var magXform = Transform(ev.Magnet); - - 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; - - if (distance > artifact.Range) - continue; - - _toActivate.Add(uid); - } - - foreach (var a in _toActivate) - { - _artifact.TryActivateArtifact(a); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMicrowaveTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMicrowaveTriggerSystem.cs deleted file mode 100644 index ca61c8f8ab..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMicrowaveTriggerSystem.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Content.Server.Kitchen.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactMicrowaveTriggerSystem : EntitySystem -{ - [Dependency] private readonly ArtifactSystem _artifact = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnMicrowaved); - } - - private void OnMicrowaved(EntityUid uid, ArtifactMicrowaveTriggerComponent component, BeingMicrowavedEvent args) - { - _artifact.TryActivateArtifact(uid); - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMusicTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMusicTriggerSystem.cs deleted file mode 100644 index c62ed58752..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactMusicTriggerSystem.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System.Linq; -using Content.Server.Instruments; -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -/// -/// This handles activating an artifact when music is playing nearby -/// -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); - - _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 - while (query.MoveNext(out _, out var instXform)) - { - foreach (var (uid, trigger, xform) in _artifacts) - { - if (!instXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) - continue; - - if (distance > trigger.Range) - continue; - - toActivate.Add(uid); - } - } - - foreach (var a in toActivate) - { - _artifact.TryActivateArtifact(a); - } - } -} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactPressureTriggerSystem.cs b/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactPressureTriggerSystem.cs deleted file mode 100644 index 8777ab0a8c..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactPressureTriggerSystem.cs +++ /dev/null @@ -1,36 +0,0 @@ -using Content.Server.Atmos.EntitySystems; -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -/// -/// This handles activation upon certain pressure thresholds. -/// -public sealed class ArtifactPressureTriggerSystem : EntitySystem -{ - [Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!; - [Dependency] private readonly ArtifactSystem _artifactSystem = default!; - - public override void Update(float frameTime) - { - base.Update(frameTime); - - List> toUpdate = new(); - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var trigger, out var artifact, out var transform)) - { - var environment = _atmosphereSystem.GetTileMixture((uid, transform)); - if (environment == null) - continue; - - var pressure = environment.Pressure; - if (pressure >= trigger.MaxPressureThreshold || pressure <= trigger.MinPressureThreshold) - toUpdate.Add((uid, artifact)); - } - - foreach (var a in toUpdate) - { - _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 deleted file mode 100644 index c6ea745e1c..0000000000 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Triggers/Systems/ArtifactTimerTriggerSystem.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Components; -using Robust.Shared.Timing; - -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems; - -public sealed class ArtifactTimerTriggerSystem : EntitySystem -{ - [Dependency] private readonly IGameTiming _time = default!; - [Dependency] private readonly ArtifactSystem _artifactSystem = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnStartup); - } - - private void OnStartup(EntityUid uid, ArtifactTimerTriggerComponent component, ComponentStartup args) - { - component.LastActivation = _time.CurTime; - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - 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((uid, artifact)); - trigger.LastActivation = _time.CurTime; - } - - foreach (var a in toUpdate) - { - _artifactSystem.TryActivateArtifact(a, null, a); - } - } -} diff --git a/Content.Server/Zombies/ZombieSystem.Transform.cs b/Content.Server/Zombies/ZombieSystem.Transform.cs index 155796481b..479c56cd5e 100644 --- a/Content.Server/Zombies/ZombieSystem.Transform.cs +++ b/Content.Server/Zombies/ZombieSystem.Transform.cs @@ -36,6 +36,7 @@ using Content.Shared.Traits.Assorted; using Robust.Shared.Audio.Systems; using Content.Shared.Ghost.Roles.Components; using Content.Shared.Tag; +using Robust.Shared.Player; using Robust.Shared.Prototypes; namespace Content.Server.Zombies; @@ -61,9 +62,10 @@ public sealed partial class ZombieSystem [Dependency] private readonly NPCSystem _npc = default!; [Dependency] private readonly TagSystem _tag = default!; [Dependency] private readonly NameModifierSystem _nameMod = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; private static readonly ProtoId InvalidForGlobalSpawnSpellTag = "InvalidForGlobalSpawnSpell"; - + private static readonly ProtoId CannotSuicideTag = "CannotSuicide"; /// /// Handles an entity turning into a zombie when they die or go into crit /// @@ -178,17 +180,7 @@ public sealed partial class ZombieSystem _humanoidAppearance.SetBaseLayerId(target, HumanoidVisualLayers.Snout, zombiecomp.BaseLayerExternal, humanoid: huApComp); //This is done here because non-humanoids shouldn't get baller damage - //lord forgive me for the hardcoded damage - DamageSpecifier dspec = new() - { - DamageDict = new() - { - { "Slash", 13 }, - { "Piercing", 7 }, - { "Structural", 10 } - } - }; - melee.Damage = dspec; + melee.Damage = zombiecomp.DamageOnBite; // humanoid zombies get to pry open doors and shit var pryComp = EnsureComp(target); @@ -244,8 +236,8 @@ public sealed partial class ZombieSystem _npc.SleepNPC(target, htn); //He's gotta have a mind - var hasMind = _mind.TryGetMind(target, out var mindId, out _); - if (hasMind && _mind.TryGetSession(mindId, out var session)) + var hasMind = _mind.TryGetMind(target, out var mindId, out var mind); + if (hasMind && mind != null && _player.TryGetSessionById(mind.UserId, out var session)) { //Zombie role for player manifest _role.MindAddRole(mindId, "MindRoleZombie", mind: null, silent: true); @@ -294,5 +286,6 @@ public sealed partial class ZombieSystem //Need to prevent them from getting an item, they have no hands. // Also prevents them from becoming a Survivor. They're undead. _tag.AddTag(target, InvalidForGlobalSpawnSpellTag); + _tag.AddTag(target, CannotSuicideTag); } } diff --git a/Content.Server/Zombies/ZombieSystem.cs b/Content.Server/Zombies/ZombieSystem.cs index aa5c2682bc..054bd0f6ec 100644 --- a/Content.Server/Zombies/ZombieSystem.cs +++ b/Content.Server/Zombies/ZombieSystem.cs @@ -7,6 +7,7 @@ using Content.Server.Emoting.Systems; using Content.Server.Speech.EntitySystems; using Content.Server.Roles; using Content.Shared.Anomaly.Components; +using Content.Shared.Armor; using Content.Shared.Bed.Sleep; using Content.Shared.Cloning.Events; using Content.Shared.Damage; @@ -74,7 +75,6 @@ namespace Content.Server.Zombies SubscribeLocalEvent(OnPendingMapInit); SubscribeLocalEvent(OnDamageChanged); - } private void OnBeforeRemoveAnomalyOnDeath(Entity ent, ref BeforeRemoveAnomalyOnDeathEvent args) @@ -87,6 +87,13 @@ namespace Content.Server.Zombies private void OnPendingMapInit(EntityUid uid, IncurableZombieComponent component, MapInitEvent args) { _actions.AddAction(uid, ref component.Action, component.ZombifySelfActionPrototype); + + if (HasComp(uid) || HasComp(uid)) + return; + + EnsureComp(uid, out PendingZombieComponent pendingComp); + + pendingComp.GracePeriod = _random.Next(pendingComp.MinInitialInfectedGrace, pendingComp.MaxInitialInfectedGrace); } private void OnPendingMapInit(EntityUid uid, PendingZombieComponent component, MapInitEvent args) @@ -98,7 +105,6 @@ namespace Content.Server.Zombies } component.NextTick = _timing.CurTime + TimeSpan.FromSeconds(1f); - component.GracePeriod = _random.Next(component.MinInitialInfectedGrace, component.MaxInitialInfectedGrace); } public override void Update(float frameTime) @@ -199,33 +205,29 @@ namespace Content.Server.Zombies } } - private float GetZombieInfectionChance(EntityUid uid, ZombieComponent component) + private float GetZombieInfectionChance(EntityUid uid, ZombieComponent zombieComponent) { - var max = component.MaxZombieInfectionChance; + var chance = zombieComponent.BaseZombieInfectionChance; - if (!_inventory.TryGetContainerSlotEnumerator(uid, out var enumerator, ProtectiveSlots)) - return max; - - var items = 0f; - var total = 0f; - while (enumerator.MoveNext(out var con)) + var armorEv = new CoefficientQueryEvent(ProtectiveSlots); + RaiseLocalEvent(uid, armorEv); + foreach (var resistanceEffectiveness in zombieComponent.ResistanceEffectiveness.DamageDict) { - total++; - if (con.ContainedEntity != null) - items++; + if (armorEv.DamageModifiers.Coefficients.TryGetValue(resistanceEffectiveness.Key, out var coefficient)) + { + // Scale the coefficient by the resistance effectiveness, very descriptive I know + // For example. With 30% slash resist (0.7 coeff), but only a 60% resistance effectiveness for slash, + // you'll end up with 1 - (0.3 * 0.6) = 0.82 coefficient, or a 18% resistance + var adjustedCoefficient = 1 - ((1 - coefficient) * resistanceEffectiveness.Value.Float()); + chance *= adjustedCoefficient; + } } - if (total == 0) - return max; + var zombificationResistanceEv = new ZombificationResistanceQueryEvent(ProtectiveSlots); + RaiseLocalEvent(uid, zombificationResistanceEv); + chance *= zombificationResistanceEv.TotalCoefficient; - // Everyone knows that when it comes to zombies, socks & sandals provide just as much protection as an - // armored vest. Maybe these should be weighted per-item. I.e. some kind of coverage/protection component. - // Or at the very least different weights per slot. - - var min = component.MinZombieInfectionChance; - //gets a value between the max and min based on how many items the entity is wearing - var chance = (max - min) * ((total - items) / total) + min; - return chance; + return MathF.Max(chance, zombieComponent.MinZombieInfectionChance); } private void OnMeleeHit(EntityUid uid, ZombieComponent component, MeleeHitEvent args) diff --git a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Connections.cs b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Connections.cs index df8ac8e26e..dfa890af7f 100644 --- a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Connections.cs +++ b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Connections.cs @@ -41,7 +41,7 @@ public sealed partial class CP14DemiplaneSystem return; RemoveDemiplaneRandomEntryPoint((rift.Comp.Demiplane.Value, riftDemiplane), rift); - RemoveDemiplanRandomExitPoint((rift.Comp.Demiplane.Value, riftDemiplane), rift); + RemoveDemiplaneRandomExitPoint((rift.Comp.Demiplane.Value, riftDemiplane), rift); } /// @@ -57,7 +57,7 @@ public sealed partial class CP14DemiplaneSystem /// /// Removing the demiplane exit point, one of which the player can exit to /// - private void RemoveDemiplanRandomExitPoint(Entity? demiplane, + private void RemoveDemiplaneRandomExitPoint(Entity? demiplane, EntityUid exitPoint) { if (!TryComp(exitPoint, out var riftComp)) @@ -69,7 +69,7 @@ public sealed partial class CP14DemiplaneSystem riftComp.Demiplane = null; } - if (riftComp.DeleteAfterDisconnect) + if (riftComp.DeleteAfterDisconnect && exitPoint.Valid) QueueDel(exitPoint); } @@ -95,7 +95,7 @@ public sealed partial class CP14DemiplaneSystem riftComp.Demiplane = null; } - if (riftComp.DeleteAfterDisconnect) + if (riftComp.DeleteAfterDisconnect && entryPoint.Valid) QueueDel(entryPoint); } diff --git a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Destruction.cs b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Destruction.cs index 91995a4a8e..000796c2d7 100644 --- a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Destruction.cs +++ b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Destruction.cs @@ -1,15 +1,42 @@ +using Content.Server._CP14.WeatherControl; +using Content.Server.Weather; using Content.Shared._CP14.Demiplane.Components; +using Content.Shared.Weather; using Robust.Shared.Audio; +using Robust.Shared.Map.Components; +using Robust.Shared.Prototypes; namespace Content.Server._CP14.Demiplane; public sealed partial class CP14DemiplaneSystem { + [Dependency] private readonly WeatherSystem _weather = default!; private void InitDestruction() { SubscribeLocalEvent(OnDestructionStarted); } + public void StartDestructDemiplane(Entity demiplane) + { + if (!TryComp(demiplane, out var map)) + return; + + if (HasComp(demiplane)) + return; + + EnsureComp(demiplane); + + if (HasComp(demiplane)) + { + RemCompDeferred(demiplane); + } + + if (!_proto.TryIndex("CP14DemiplaneDestructionStorm", out var indexedWeather)) + return; + + _weather.SetWeather(map.MapId, indexedWeather, null); + } + private void OnDestructionStarted(Entity ent, ref ComponentAdd args) { ent.Comp.EndTime = _timing.CurTime + ent.Comp.TimeToDestruction; diff --git a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Generation.cs b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Generation.cs index 707f41eef8..06958afa6c 100644 --- a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Generation.cs +++ b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Generation.cs @@ -30,13 +30,113 @@ public sealed partial class CP14DemiplaneSystem private void InitGeneration() { - SubscribeLocalEvent(GeneratorMapInit); + SubscribeLocalEvent(GeneratorMapInit); SubscribeLocalEvent(GeneratorUsedInHand); - SubscribeLocalEvent>(OnVerbExamine); + SubscribeLocalEvent>(OnVerbExamine); } - private void OnVerbExamine(Entity ent, ref GetVerbsEvent args) + private void GeneratorMapInit(Entity generator, ref MapInitEvent args) + { + if (!TryComp(generator, out var data)) + return; + + CP14DemiplaneLocationPrototype? selectedConfig = null; + //Location generation + if (data.Location is null || generator.Comp.OverrideLocation) + { + selectedConfig = GenerateDemiplaneLocation(generator.Comp.Level); + data.Location = selectedConfig; + } + else + { + if (!_proto.TryIndex(data.Location, out selectedConfig)) + return; + } + + //Modifier generation + var newModifiers = GenerateDemiplaneModifiers( + generator.Comp.Level, + selectedConfig, + generator.Comp.Limits); + + foreach (var mod in newModifiers) + { + data.SelectedModifiers.Add(mod); + } + } + + private void GeneratorUsedInHand(Entity ent, ref UseInHandEvent args) + { + if (!TryComp(ent, out var generator)) + return; + + UseGenerator((ent, generator), args.User); + } + //Ed: I hate this function. + private void UseGenerator(Entity generator, EntityUid? user = null) + { + //block the opening of demiplanes after the end of a round + if (_gameTicker.RunLevel != GameRunLevel.InRound) + { + if (user is not null) + _popup.PopupEntity(Loc.GetString("cp14-demiplan-cannot-open-end-round"), generator, user.Value); + return; + } + //We cant open demiplane in another demiplane or if parent is not Map + if (_demiplaneQuery.HasComp(Transform(generator).MapUid)) + { + if (user is not null) + _popup.PopupEntity(Loc.GetString("cp14-demiplan-cannot-open", ("name", MetaData(generator).EntityName)), generator, user.Value); + return; + } + + if (generator.Comp.Location is null) + return; + + //an attempt to open demiplanes can be intercepted by other systems that substitute a map instead of generating the planned demiplane. + Entity? demiplane = null; + var ev = new CP14DemiplaneGenerationCatchAttemptEvent(); + RaiseLocalEvent(ev); + + if (ev.Demiplane is null) + { + SpawnRandomDemiplane(generator.Comp.Location.Value, generator.Comp.SelectedModifiers, out demiplane, out var mapId); + if (demiplane is not null && TryComp(generator, out var blocker)) + { + EnsureComp(demiplane.Value, out var blockerMap); + blockerMap.Position = blocker.Position; + blockerMap.Station = blocker.Station; + blockerMap.IncreaseNodeDifficulty = 1; + } + } + else + { + demiplane = ev.Demiplane; + } + + if (demiplane is null) + return; + + //Admin log needed + EnsureComp(demiplane.Value); + + //Rifts spawning + foreach (var rift in generator.Comp.AutoRifts) + { + var spawnedRift = EntityManager.Spawn(rift); + _transform.SetCoordinates(spawnedRift, Transform(generator).Coordinates); + _transform.AttachToGridOrMap(spawnedRift); + var connection = EnsureComp(spawnedRift); + AddDemiplaneRandomExitPoint(demiplane.Value, (spawnedRift, connection)); + } + +#if !DEBUG + QueueDel(generator); //wtf its crash debug build! +#endif + } + + private void OnVerbExamine(Entity ent, ref GetVerbsEvent args) { if (!args.CanInteract || !args.CanAccess) return; @@ -50,7 +150,7 @@ public sealed partial class CP14DemiplaneSystem "/Textures/Interface/VerbIcons/dot.svg.192dpi.png"); //TODO custom icon } - private FormattedMessage GetDemiplanExamine(CP14DemiplaneGeneratorDataComponent comp) + private FormattedMessage GetDemiplanExamine(CP14DemiplaneDataComponent comp) { var msg = new FormattedMessage(); @@ -136,114 +236,52 @@ public sealed partial class CP14DemiplaneSystem _expeditionQueue.EnqueueJob(job); } - private void UseGenerator(Entity generator, EntityUid? user = null) - { - //block the opening of demiplanes after the end of a round - if (_gameTicker.RunLevel != GameRunLevel.InRound) - { - if (user is not null) - _popup.PopupEntity(Loc.GetString("cp14-demiplan-cannot-open-end-round"), generator, user.Value); - return; - } - //We cant open demiplane in another demiplane or if parent is not Map - if (_demiplaneQuery.HasComp(Transform(generator).MapUid)) - { - if (user is not null) - _popup.PopupEntity(Loc.GetString("cp14-demiplan-cannot-open", ("name", MetaData(generator).EntityName)), generator, user.Value); - return; - } - if (generator.Comp.Location is null) - return; - - //an attempt to open demiplanes can be intercepted by other systems that substitute a map instead of generating the planned demiplane. - Entity? demiplane = null; - var ev = new CP14DemiplaneGenerationCatchAttemptEvent(); - RaiseLocalEvent(ev); - - if (ev.Demiplane is null) - { - SpawnRandomDemiplane(generator.Comp.Location.Value, generator.Comp.SelectedModifiers, out demiplane, out var mapId); - } - else - { - demiplane = ev.Demiplane; - } - - _statistic.TrackAdd(generator.Comp.Statistic, 1); - - if (demiplane is null) - return; - - //Admin log needed - EnsureComp(demiplane.Value); - - //Rifts spawning - foreach (var rift in generator.Comp.AutoRifts) - { - var spawnedRift = EntityManager.Spawn(rift); - _transform.SetCoordinates(spawnedRift, Transform(generator).Coordinates); - _transform.AttachToGridOrMap(spawnedRift); - var connection = EnsureComp(spawnedRift); - AddDemiplaneRandomExitPoint(demiplane.Value, (spawnedRift, connection)); - } - -#if !DEBUG - QueueDel(generator); //wtf its crash debug build! -#endif - } - - private void GeneratorUsedInHand(Entity ent, ref UseInHandEvent args) - { - if (!TryComp(ent, out var generator)) - return; - - UseGenerator((ent, generator), args.User); - } - - private void GeneratorMapInit(Entity generator, ref MapInitEvent args) + /// + /// Returns a suitable demiplane location for the specified difficulty level. + /// + public CP14DemiplaneLocationPrototype GenerateDemiplaneLocation(int level) { CP14DemiplaneLocationPrototype? selectedConfig = null; - //Location generation - if (generator.Comp.Location is null) + + HashSet suitableConfigs = new(); + foreach (var locationConfig in _proto.EnumeratePrototypes()) { - HashSet suitableConfigs = new(); - foreach (var locationConfig in _proto.EnumeratePrototypes()) - { - suitableConfigs.Add(locationConfig); - } - - while (suitableConfigs.Count > 0) - { - var randomConfig = _random.Pick(suitableConfigs); - - //LevelRange filter - if (generator.Comp.Level < randomConfig.Levels.Min || generator.Comp.Level > randomConfig.Levels.Max) - { - suitableConfigs.Remove(randomConfig); - continue; - } - - selectedConfig = randomConfig; - break; - } - - if (selectedConfig is null) - { - // We dont should be here - - Log.Warning("Expedition mission generation failed: No suitable location configs."); - QueueDel(generator); - return; - } - generator.Comp.Location = selectedConfig; + suitableConfigs.Add(locationConfig); } - else + + while (suitableConfigs.Count > 0) { - if (!_proto.TryIndex(generator.Comp.Location, out selectedConfig)) - return; + var randomConfig = _random.Pick(suitableConfigs); + + //LevelRange filter + if (level < randomConfig.Levels.Min || level > randomConfig.Levels.Max) + { + suitableConfigs.Remove(randomConfig); + continue; + } + + selectedConfig = randomConfig; + break; } + if (selectedConfig is null) + throw new Exception($"No suitable demiplane location config found for level {level}!"); + + return selectedConfig; + } + + + /// + /// Returns a set of modifiers under the specified difficulty level that are appropriate for the specified demiplane location + /// + public List GenerateDemiplaneModifiers( + int level, + CP14DemiplaneLocationPrototype location, + Dictionary,float> modifierLimits) + { + List selectedModifiers = new(); + //Modifier generation Dictionary suitableModifiersWeights = new(); foreach (var modifier in _proto.EnumeratePrototypes()) @@ -262,14 +300,14 @@ public sealed partial class CP14DemiplaneSystem //Levels filter if (passed) { - if (generator.Comp.Level < modifier.Levels.Min || generator.Comp.Level > modifier.Levels.Max) + if (level < modifier.Levels.Min || level > modifier.Levels.Max) { passed = false; } } //Tag blacklist filter - foreach (var configTag in selectedConfig.Tags) + foreach (var configTag in location.Tags) { if (modifier.BlacklistTags.Count != 0 && modifier.BlacklistTags.Contains(configTag)) { @@ -283,7 +321,7 @@ public sealed partial class CP14DemiplaneSystem { foreach (var reqTag in modifier.RequiredTags) { - if (!selectedConfig.Tags.Contains(reqTag)) + if (!location.Tags.Contains(reqTag)) { passed = false; break; @@ -298,11 +336,12 @@ public sealed partial class CP14DemiplaneSystem //Limits calculation Dictionary, float> limits = new(); - foreach (var limit in generator.Comp.Limits) + foreach (var limit in modifierLimits) { limits.Add(limit.Key, limit.Value); } + while (suitableModifiersWeights.Count > 0) { var selectedModifier = ModifierPick(suitableModifiersWeights, _random); @@ -329,7 +368,7 @@ public sealed partial class CP14DemiplaneSystem if (!passed) continue; - generator.Comp.SelectedModifiers.Add(selectedModifier); + selectedModifiers.Add(selectedModifier); foreach (var category in selectedModifier.Categories) { @@ -340,15 +379,9 @@ public sealed partial class CP14DemiplaneSystem suitableModifiersWeights.Remove(selectedModifier); } - //Scenario generation - - //ETC generation - - if (HasComp(generator)) - UseGenerator(generator); + return selectedModifiers; } - /// /// Optimization moment: avoid re-indexing for weight selection /// diff --git a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Stabilization.cs b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Stabilization.cs index 529e0694f5..e80a1ea0e9 100644 --- a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Stabilization.cs +++ b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.Stabilization.cs @@ -75,7 +75,7 @@ public sealed partial class CP14DemiplaneSystem } } - private void DeleteDemiplane(Entity demiplane, bool safe = false) + public void DeleteDemiplane(Entity demiplane, bool safe = false) { var query = EntityQueryEnumerator(); diff --git a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs index 19d619df45..6da24aa80b 100644 --- a/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs +++ b/Content.Server/_CP14/Demiplane/CP14DemiplaneSystem.cs @@ -1,5 +1,4 @@ using Content.Server._CP14.Demiplane.Components; -using Content.Server._CP14.RoundStatistic; using Content.Server.Chat.Managers; using Content.Server.Chat.Systems; using Content.Server.Flash; @@ -33,7 +32,6 @@ public sealed partial class CP14DemiplaneSystem : CP14SharedDemiplaneSystem [Dependency] private readonly FlashSystem _flash = default!; [Dependency] private readonly IGameTiming _timing = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; - [Dependency] private readonly CP14RoundStatTrackerSystem _statistic = default!; [Dependency] private readonly ChatSystem _chat = default!; [Dependency] private readonly IChatManager _chatManager = default!; @@ -162,7 +160,7 @@ public sealed partial class CP14DemiplaneSystem : CP14SharedDemiplaneSystem foreach (var exit in demiplane.Comp.ExitPoints) { - RemoveDemiplanRandomExitPoint(demiplane, exit); + RemoveDemiplaneRandomExitPoint(demiplane, exit); } foreach (var entry in demiplane.Comp.EntryPoints) diff --git a/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneAutoOpenComponent.cs b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneAutoOpenComponent.cs deleted file mode 100644 index eef2f5ca79..0000000000 --- a/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneAutoOpenComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Content.Server._CP14.Demiplane.Components; - -/// -/// Open demiplane automatically on MapInit -/// -[RegisterComponent, Access(typeof(CP14DemiplaneSystem))] -public sealed partial class CP14DemiplaneAutoOpenComponent : Component -{ -} diff --git a/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneCoreComponent.cs b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneCoreComponent.cs new file mode 100644 index 0000000000..23b3576145 --- /dev/null +++ b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneCoreComponent.cs @@ -0,0 +1,19 @@ +using Content.Server._CP14.DemiplaneTraveling; + +namespace Content.Server._CP14.Demiplane.Components; + +/// +/// Demiplane Core - stores a position on the demiplane map to mark it as “passed” when all conditions are met +/// +[RegisterComponent, Access(typeof(CP14DemiplaneSystem), typeof(CP14StationDemiplaneMapSystem))] +public sealed partial class CP14DemiplaneCoreComponent : Component +{ + [DataField] + public EntityUid? Demiplane; + + [DataField] + public EntityUid? Station; + + [DataField] + public Vector2i Position; +} diff --git a/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneDataComponent.cs b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneDataComponent.cs new file mode 100644 index 0000000000..53b0a8a010 --- /dev/null +++ b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneDataComponent.cs @@ -0,0 +1,21 @@ +using Content.Server._CP14.DemiplaneTraveling; +using Content.Shared._CP14.Demiplane.Prototypes; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.Demiplane.Components; + +/// +/// Stores all the information needed to generate a new demiplane +/// +[RegisterComponent, Access(typeof(CP14DemiplaneSystem), typeof(CP14StationDemiplaneMapSystem))] +public sealed partial class CP14DemiplaneDataComponent : Component +{ + [DataField] + public ProtoId? Location; + + [DataField] + public List> SelectedModifiers = new(); + + [DataField] + public List AutoRifts = new() { "CP14DemiplaneTimedRadiusPassway", "CP14DemiplanRiftCore" }; +} diff --git a/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneMapNodeBlokerComponent.cs b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneMapNodeBlokerComponent.cs new file mode 100644 index 0000000000..acf7216f98 --- /dev/null +++ b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneMapNodeBlokerComponent.cs @@ -0,0 +1,19 @@ +using Content.Server._CP14.DemiplaneTraveling; + +namespace Content.Server._CP14.Demiplane.Components; + +/// +/// The existence of an entity with this component will block the discovery of a particular coordinate in the demiplane navigation map. +/// +[RegisterComponent, Access(typeof(CP14StationDemiplaneMapSystem), typeof(CP14DemiplaneSystem))] +public sealed partial class CP14DemiplaneMapNodeBlockerComponent : Component +{ + [DataField] + public EntityUid? Station = null; + + [DataField] + public Vector2i Position = new (0,0); + + [DataField] + public int IncreaseNodeDifficulty = 0; +} diff --git a/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneGeneratorDataComponent.cs b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneRandomGeneratorComponent.cs similarity index 51% rename from Content.Server/_CP14/Demiplane/Components/CP14DemiplaneGeneratorDataComponent.cs rename to Content.Server/_CP14/Demiplane/Components/CP14DemiplaneRandomGeneratorComponent.cs index 5544fb80e7..842752b6c5 100644 --- a/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneGeneratorDataComponent.cs +++ b/Content.Server/_CP14/Demiplane/Components/CP14DemiplaneRandomGeneratorComponent.cs @@ -1,20 +1,16 @@ using Content.Shared._CP14.Demiplane.Prototypes; -using Content.Shared._CP14.RoundStatistic; using Robust.Shared.Prototypes; namespace Content.Server._CP14.Demiplane.Components; /// -/// Stores the data needed to generate a new demiplane +/// Fills the DemiplaneDataComponent with random modifiers and location /// [RegisterComponent, Access(typeof(CP14DemiplaneSystem))] -public sealed partial class CP14DemiplaneGeneratorDataComponent : Component +public sealed partial class CP14DemiplaneRandomGeneratorComponent : Component { [DataField] - public ProtoId? Location; - - [DataField] - public List> SelectedModifiers = new(); + public bool OverrideLocation = false; /// /// Demiplane Difficulty Level. By design, the plan so far is for a framework of 1 to 10, but technically could support more. @@ -24,10 +20,4 @@ public sealed partial class CP14DemiplaneGeneratorDataComponent : Component [DataField(required: true)] public Dictionary, float> Limits = new(); - - [DataField] - public ProtoId Statistic = "DemiplaneOpen"; - - [DataField] - public List AutoRifts = new() { "CP14DemiplaneTimedRadiusPassway", "CP14DemiplanRiftCore" }; } diff --git a/Content.Server/_CP14/DemiplaneTraveling/CP14DemiplaneTravelingSystem.cs b/Content.Server/_CP14/DemiplaneTraveling/CP14DemiplaneTravelingSystem.cs index e5deef3203..8f302bba7b 100644 --- a/Content.Server/_CP14/DemiplaneTraveling/CP14DemiplaneTravelingSystem.cs +++ b/Content.Server/_CP14/DemiplaneTraveling/CP14DemiplaneTravelingSystem.cs @@ -34,7 +34,7 @@ public sealed partial class CP14DemiplaneTravelingSystem : EntitySystem } // !!!SHITCODE WARNING!!! - // This whole module is saturated with shieldcode, code duplication and other delights. Why? Because. + // This whole module is saturated with shitcode, code duplication and other delights. Why? Because. //TODO: Refactor this shitcode public override void Update(float frameTime) { diff --git a/Content.Server/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapSystem.cs b/Content.Server/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapSystem.cs new file mode 100644 index 0000000000..5e3a1252ff --- /dev/null +++ b/Content.Server/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapSystem.cs @@ -0,0 +1,355 @@ +using System.Linq; +using System.Numerics; +using Content.Server._CP14.Demiplane; +using Content.Server._CP14.Demiplane.Components; +using Content.Server.Destructible; +using Content.Server.Station.Systems; +using Content.Shared._CP14.Demiplane.Components; +using Content.Shared._CP14.Demiplane.Prototypes; +using Content.Shared._CP14.DemiplaneTraveling; +using Content.Shared.Damage; +using Content.Shared.Destructible; +using Content.Shared.Popups; +using Content.Shared.Pulling.Events; +using Content.Shared.UserInterface; +using Robust.Server.GameObjects; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Server._CP14.DemiplaneTraveling; + +public sealed partial class CP14StationDemiplaneMapSystem : CP14SharedStationDemiplaneMapSystem +{ + [Dependency] private readonly UserInterfaceSystem _userInterface = default!; + [Dependency] private readonly StationSystem _station = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly CP14DemiplaneSystem _demiplane = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly DestructibleSystem _destructible = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + + SubscribeLocalEvent(DemiplaneEjectAttempt); + SubscribeLocalEvent(DemiplaneRevokeAttempt); + + SubscribeLocalEvent(OnBeforeActivatableUiOpen); + SubscribeLocalEvent(OnNodeBlockerShutdown); + + SubscribeLocalEvent(OnCoreInit); + SubscribeLocalEvent(OnCoreShutdown); + } + + private void OnCoreShutdown(Entity ent, ref DestructionEventArgs args) + { + if (TryComp(ent.Comp.Demiplane, out var demiplane)) + { + _demiplane.StartDestructDemiplane((ent.Comp.Demiplane.Value, demiplane)); + } + + var station = _station.GetOwningStation(ent, Transform(ent)); + + if (TryComp(station, out var stationMap) && + stationMap.Nodes.TryGetValue(ent.Comp.Position, out var node) && ent.Comp.Station == station) + { + node.Scanned = true; + } + } + + private void OnCoreInit(Entity core, ref MapInitEvent args) + { + core.Comp.Demiplane = Transform(core).MapUid; + if (!TryComp(core.Comp.Demiplane, out var demiBlocker)) + return; + + core.Comp.Station = demiBlocker.Station; + core.Comp.Position = demiBlocker.Position; + + EnsureComp(core, out var coreBlocker); + + coreBlocker.Position = core.Comp.Position; + coreBlocker.Station = core.Comp.Station; + coreBlocker.IncreaseNodeDifficulty = 0; + } + + private void OnNodeBlockerShutdown(Entity ent, ref ComponentShutdown args) + { + if (!TryComp(ent.Comp.Station, out var stationMap)) + return; + + if (!stationMap.Nodes.TryGetValue(ent.Comp.Position, out var node)) + return; + + if (ent.Comp.IncreaseNodeDifficulty == 0) + return; + + node.AdditionalLevel += ent.Comp.IncreaseNodeDifficulty; + GenerateNodeData(node, clearOldModifiers: true); + } + + private void DemiplaneEjectAttempt(Entity ent, ref CP14DemiplaneMapEjectMessage args) + { + var station = _station.GetOwningStation(ent, Transform(ent)); + + if (!TryComp(station, out var stationMap)) + return; + + if (!stationMap.Nodes.TryGetValue(args.Position, out var node)) + return; + + if (!node.InFrontierZone) + return; + + //Eject! + var key = SpawnAttachedTo(ent.Comp.KeyProto, Transform(ent).Coordinates); + _audio.PlayPvs(ent.Comp.EjectSound, Transform(key).Coordinates); + + if (TryComp(key, out var demiData)) + { + demiData.Location = node.LocationConfig; + demiData.SelectedModifiers.AddRange(node.Modifiers); + } + + EnsureComp(key, out var blockerComp); + blockerComp.Position = args.Position; + blockerComp.Station = station; + } + + private void DemiplaneRevokeAttempt(Entity ent, ref CP14DemiplaneMapRevokeMessage args) + { + var station = _station.GetOwningStation(ent, Transform(ent)); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var blocker)) + { + if (blocker.Station != station) + continue; + + if (blocker.Position != args.Position) + continue; + + if (!TryComp(station, out var demiStation)) + continue; + + if (!demiStation.Nodes.TryGetValue(args.Position, out var node)) + continue; + + SpawnAttachedTo("CP14ImpactEffectMagicSplitting", Transform(ent).Coordinates); + + //If it's a demiplane, initiate closure. If not, just delete it. + if (TryComp(uid, out var demiplane)) + { + _demiplane.StartDestructDemiplane((uid, demiplane)); + _popup.PopupEntity(Loc.GetString("cp14-demiplane-revoke-map"), ent); + } + else + { + SpawnAttachedTo("CP14ImpactEffectMagicSplitting", Transform(uid).Coordinates); + _popup.PopupEntity(Loc.GetString("cp14-demiplane-revoke-item"), ent); + _popup.PopupEntity(Loc.GetString("cp14-demiplane-revoke-item"), uid); + _damageable.TryChangeDamage(uid, ent.Comp.RevokeDamage, true); + _destructible.DestroyEntity(uid); + } + } + } + + private void OnBeforeActivatableUiOpen(Entity ent, + ref BeforeActivatableUIOpenEvent args) + { + var station = _station.GetOwningStation(ent, Transform(ent)); + + if (!TryComp(station, out var stationMap)) + return; + + UpdateNodesStatus((station.Value, stationMap)); + + _userInterface.SetUiState(ent.Owner, + CP14DemiplaneMapUiKey.Key, + new CP14DemiplaneMapUiState(stationMap.Nodes, stationMap.Edges)); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + GenerateDemiplaneMap(ent); + } + + private void GenerateDemiplaneMap(Entity ent) + { + ent.Comp.Nodes.Clear(); + ent.Comp.Edges.Clear(); + + var allSpecials = _proto.EnumeratePrototypes().ToList(); + _random.Shuffle(allSpecials); + + var grid = new Dictionary(); + + //Spawn start room at 0 0 + var startPos = new Vector2i(0, 0); + var startNode = new CP14DemiplaneMapNode(0, startPos, true); + grid[startPos] = startNode; + + //Spawn special rooms + var specialCount = _random.Next(ent.Comp.Specials.Min, ent.Comp.Specials.Max + 1); + var placedSpecials = 0; + var specialPositions = new List(); + + foreach (var special in allSpecials) + { + if (placedSpecials >= specialCount) + break; + + var specialLevel = special.Levels.Next(_random); + + var possiblePositions = new List(); + for (var x = -specialLevel; x <= specialLevel; x++) + { + var y = specialLevel - Math.Abs(x); + if (y != 0) + possiblePositions.Add(new Vector2i(x, y)); + possiblePositions.Add(new Vector2i(x, -y)); + } + + _random.Shuffle(possiblePositions); + + var specialPos = new Vector2i(0, 0); + foreach (var pos in possiblePositions) + { + if (!grid.ContainsKey(pos)) + { + specialPos = pos; + break; + } + } + + if (grid.ContainsKey(specialPos)) + continue; + + var specialNode = new CP14DemiplaneMapNode( + specialLevel, + new Vector2(specialPos.X, specialPos.Y), + false, + locationConfig: special.Location, + modifiers: [..special.Modifiers] + ); + grid[specialPos] = specialNode; + specialPositions.Add(specialPos); + placedSpecials++; + } + + // Build meandering paths to each special room and add edges + foreach (var specialPos in specialPositions) + { + var current = startPos; + + while (current != specialPos) + { + var delta = specialPos - current; + var options = new List(); + + if (delta.X != 0) + options.Add(new Vector2i(Math.Sign(delta.X), 0)); + if (delta.Y != 0) + options.Add(new Vector2i(0, Math.Sign(delta.Y))); + + // Add the possibility of a "mistaken" step to the side + if (_random.Prob(0.3f)) // 30% chance to take a side step + { + if (delta.X != 0 && delta.Y != 0) + { + options.Add(new Vector2i(0, Math.Sign(delta.Y)) * -1); + options.Add(new Vector2i(Math.Sign(delta.X), 0) * -1); + } + } + + _random.Shuffle(options); + var step = options[0]; + var next = current + step; + + if (!grid.TryGetValue(next, out var nextNode)) + { + nextNode = new CP14DemiplaneMapNode(Math.Abs(next.X) + Math.Abs(next.Y), + new Vector2(next.X, next.Y), + false); + grid[next] = nextNode; + } + + ent.Comp.Edges.Add((current, next)); + + current = next; + } + } + + //Fill nodes with random data + foreach (var node in grid.Values) + { + GenerateNodeData(node); + } + + // Random visual offset + foreach (var node in grid.Values) + { + var x = node.UiPosition.X + _random.NextFloat(-0.2f, 0.2f); + var y = node.UiPosition.Y + _random.NextFloat(-0.2f, 0.2f); + node.UiPosition = new Vector2(x, y); + } + + //Add all rooms into component + ent.Comp.Nodes = grid; + } + + private void GenerateNodeData(CP14DemiplaneMapNode node, bool clearOldModifiers = false) + { + if (node.Level == 0) + return; + + var location = _demiplane.GenerateDemiplaneLocation(node.Level); + node.LocationConfig ??= location; + + var limits = new Dictionary, float> + { + { "Danger", (node.Level + node.AdditionalLevel) * 0.2f }, + { "GhostRoleDanger", 1f }, + { "Reward", Math.Max(node.Level * 0.2f, 0.5f) }, + { "Ore", Math.Max(node.Level * 0.2f, 0.5f) }, + { "Fun", 1f }, + { "Weather", 1f }, + { "MapLight", 1f }, + }; + var mods = _demiplane.GenerateDemiplaneModifiers(node.Level, location, limits); + + if (clearOldModifiers) + node.Modifiers.Clear(); + foreach (var mod in mods) + { + node.Modifiers.Add(mod); + } + } + + private void UpdateNodesStatus(Entity ent) + { + foreach (var node in ent.Comp.Nodes) + { + node.Value.InFrontierZone = NodeInFronrierZone(ent.Comp.Nodes, ent.Comp.Edges, node.Key); + node.Value.InUsing = false; + } + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var blocker)) + { + if (!TryComp(blocker.Station, out var stationMap)) + continue; + + if (!stationMap.Nodes.TryGetValue(blocker.Position, out var node)) + continue; + + node.InUsing = true; + } + } +} diff --git a/Content.Server/_CP14/Discord/DiscordAuthManager.cs b/Content.Server/_CP14/Discord/DiscordAuthManager.cs index a1a60deab9..657a246526 100644 --- a/Content.Server/_CP14/Discord/DiscordAuthManager.cs +++ b/Content.Server/_CP14/Discord/DiscordAuthManager.cs @@ -42,6 +42,7 @@ public sealed class DiscordAuthManager "1294276016117911594", "1278755078315970620", "1330772249644630157", + "1274951101464051846", }; public event EventHandler? PlayerVerified; diff --git a/Content.Server/_CP14/Farming/CP14FarmingSystem.Resourse.cs b/Content.Server/_CP14/Farming/CP14FarmingSystem.Resourse.cs index 74de9da51e..88a51510f7 100644 --- a/Content.Server/_CP14/Farming/CP14FarmingSystem.Resourse.cs +++ b/Content.Server/_CP14/Farming/CP14FarmingSystem.Resourse.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.DayCycle; using Content.Shared._CP14.Farming.Components; using Content.Shared.Chemistry.Components.SolutionManager; @@ -5,6 +6,7 @@ namespace Content.Server._CP14.Farming; public sealed partial class CP14FarmingSystem { + [Dependency] private readonly CP14DayCycleSystem _dayCycle = default!; private void InitializeResources() { SubscribeLocalEvent(OnTakeEnergyFromLight); @@ -16,7 +18,7 @@ public sealed partial class CP14FarmingSystem private void OnTakeEnergyFromLight(Entity regeneration, ref CP14PlantUpdateEvent args) { var gainEnergy = false; - var daylight = true;//_dayCycle.UnderSunlight(regeneration); + var daylight = _dayCycle.UnderSunlight(regeneration); if (regeneration.Comp.Daytime && daylight) gainEnergy = true; diff --git a/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonCurseRule.cs b/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonCurseRule.cs new file mode 100644 index 0000000000..36903c356e --- /dev/null +++ b/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonCurseRule.cs @@ -0,0 +1,114 @@ +using System.Linq; +using Content.Server._CP14.GameTicking.Rules.Components; +using Content.Server.Antag; +using Content.Server.Chat.Systems; +using Content.Server.GameTicking.Rules; +using Content.Server.Popups; +using Content.Server.Station.Components; +using Content.Server.Stunnable; +using Content.Shared._CP14.BloodMoon; +using Content.Shared._CP14.DayCycle; +using Content.Shared.Actions; +using Content.Shared.Examine; +using Content.Shared.GameTicking.Components; +using Content.Shared.Mobs; +using Content.Shared.Popups; +using Robust.Server.GameObjects; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Player; + +namespace Content.Server._CP14.GameTicking.Rules; + +public sealed class CP14BloodMoonCurseRule : GameRuleSystem +{ + [Dependency] private readonly AntagSelectionSystem _antag = default!; + [Dependency] private readonly StunSystem _stun = default!; + [Dependency] private readonly PopupSystem _popup = default!; + [Dependency] private readonly ChatSystem _chatSystem = default!; + [Dependency] private readonly TransformSystem _transform = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedActionsSystem _action = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnStartDay); + SubscribeLocalEvent(AfterAntagEntitySelected); + SubscribeLocalEvent(CurseExamined); + } + + private void CurseExamined(Entity ent, ref ExaminedEvent args) + { + args.PushMarkup(Loc.GetString("cp14-bloodmoon-curse-examined")); + } + + private void AfterAntagEntitySelected(Entity ent, ref AfterAntagEntitySelectedEvent args) + { + SpawnAttachedTo(ent.Comp.CurseEffect, Transform(args.EntityUid).Coordinates); + var curseComp = EnsureComp(args.EntityUid); + var effect = SpawnAttachedTo(curseComp.CurseEffect, Transform(args.EntityUid).Coordinates); + curseComp.SpawnedEffect = effect; + curseComp.CurseRule = ent; + _transform.SetParent(effect, args.EntityUid); + _action.AddAction(args.EntityUid, ref curseComp.ActionEntity, curseComp.Action); + } + + protected override void Started(EntityUid uid, + CP14BloodMoonCurseRuleComponent component, + GameRuleComponent gameRule, + GameRuleStartedEvent args) + { + Filter allPlayersInGame = Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame); + _chatSystem.DispatchFilteredAnnouncement(allPlayersInGame, Loc.GetString(component.StartAnnouncement), colorOverride: component.AnnouncementColor); + + _audio.PlayGlobal(component.GlobalSound, allPlayersInGame, true); + } + + protected override void Ended(EntityUid uid, + CP14BloodMoonCurseRuleComponent component, + GameRuleComponent gameRule, + GameRuleEndedEvent args) + { + Filter allPlayersInGame = Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame); + _chatSystem.DispatchFilteredAnnouncement(allPlayersInGame, Loc.GetString(component.EndAnnouncement), colorOverride: component.AnnouncementColor); + + var aliveAntags = _antag.GetAliveAntags(uid); + + foreach (var antag in aliveAntags) + { + SpawnAttachedTo(component.CurseEffect, Transform(antag).Coordinates); + ClearCurse(antag); + } + + GameTicker.EndRound(); + } + + private void OnStartDay(CP14StartDayEvent ev) + { + if (!HasComp(ev.Map)) + return; + + var query = QueryActiveRules(); + while (query.MoveNext(out var uid, out _, out var comp, out _)) + { + ForceEndSelf(uid); + } + } + + private void ClearCurse(Entity ent) + { + if (!Resolve(ent.Owner, ref ent.Comp, false)) + return; + + _stun.TryParalyze(ent, ent.Comp.EndStunDuration, true); + _popup.PopupEntity(Loc.GetString("cp14-bloodmoon-curse-removed"), ent, PopupType.SmallCaution); + if (TryComp(ent, out var curseComp)) + { + QueueDel(curseComp.SpawnedEffect); + RemCompDeferred(ent); + } + + _action.RemoveAction(ent.Comp.ActionEntity); + } +} diff --git a/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonRule.cs b/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonRule.cs new file mode 100644 index 0000000000..b65b0983bf --- /dev/null +++ b/Content.Server/_CP14/GameTicking/Rules/CP14BloodMoonRule.cs @@ -0,0 +1,54 @@ +using Content.Server._CP14.GameTicking.Rules.Components; +using Content.Server.Chat.Systems; +using Content.Server.GameTicking.Rules; +using Content.Server.Station.Components; +using Content.Server.StationEvents.Events; +using Content.Shared._CP14.DayCycle; +using Content.Shared.GameTicking.Components; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Player; + +namespace Content.Server._CP14.GameTicking.Rules; + +public sealed class CP14BloodMoonRule : GameRuleSystem +{ + [Dependency] private readonly ChatSystem _chatSystem = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnStartNight); + } + + protected override void Started(EntityUid uid, + CP14BloodMoonRuleComponent component, + GameRuleComponent gameRule, + GameRuleStartedEvent args) + { + base.Started(uid, component, gameRule, args); + + Filter allPlayersInGame = Filter.Empty().AddWhere(GameTicker.UserHasJoinedGame); + _chatSystem.DispatchFilteredAnnouncement( + allPlayersInGame, + message: Loc.GetString(component.StartAnnouncement), + colorOverride: component.AnnouncementColor); + + _audio.PlayGlobal(component.AnnounceSound, allPlayersInGame, true); + } + + private void OnStartNight(CP14StartNightEvent ev) + { + if (!HasComp(ev.Map)) + return; + + var query = QueryActiveRules(); + while (query.MoveNext(out var uid, out _, out var comp, out _)) + { + var ruleEnt = GameTicker.AddGameRule(comp.CurseRule); + GameTicker.StartGameRule(ruleEnt); + ForceEndSelf(uid); + } + } +} diff --git a/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonCurseRuleComponent.cs b/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonCurseRuleComponent.cs new file mode 100644 index 0000000000..663017d1b1 --- /dev/null +++ b/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonCurseRuleComponent.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.GameTicking.Rules.Components; + +[RegisterComponent, Access(typeof(CP14BloodMoonCurseRule))] +public sealed partial class CP14BloodMoonCurseRuleComponent : Component +{ + [DataField] + public LocId StartAnnouncement = "cp14-bloodmoon-start"; + + [DataField] + public LocId EndAnnouncement = "cp14-bloodmoon-end"; + + [DataField] + public Color? AnnouncementColor; + + [DataField] + public EntProtoId CurseEffect = "CP14ImpactEffectMagicSplitting"; + + [DataField] + public SoundSpecifier GlobalSound = new SoundPathSpecifier("/Audio/_CP14/Ambience/blood_moon_raise.ogg") + { + Params = AudioParams.Default.WithVolume(-2f) + }; +} diff --git a/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonRuleComponent.cs b/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonRuleComponent.cs new file mode 100644 index 0000000000..933465da07 --- /dev/null +++ b/Content.Server/_CP14/GameTicking/Rules/Components/CP14BloodMoonRuleComponent.cs @@ -0,0 +1,20 @@ +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.GameTicking.Rules.Components; + +[RegisterComponent, Access(typeof(CP14BloodMoonRule))] +public sealed partial class CP14BloodMoonRuleComponent : Component +{ + [DataField] + public EntProtoId CurseRule = "CP14BloodMoonCurseRule"; + + [DataField] + public LocId StartAnnouncement = "cp14-bloodmoon-raising"; + + [DataField] + public Color? AnnouncementColor = Color.FromHex("#e32759"); + + [DataField] + public SoundSpecifier? AnnounceSound; +} diff --git a/Content.Server/_CP14/LockKey/CP14KeyholeGenerationSystem.cs b/Content.Server/_CP14/LockKey/CP14KeyholeGenerationSystem.cs index 77362bcf07..6241e3ab06 100644 --- a/Content.Server/_CP14/LockKey/CP14KeyholeGenerationSystem.cs +++ b/Content.Server/_CP14/LockKey/CP14KeyholeGenerationSystem.cs @@ -3,6 +3,7 @@ using Content.Server.Labels; using Content.Shared._CP14.LockKey; using Content.Shared._CP14.LockKey.Components; using Content.Shared.GameTicking; +using Content.Shared.Labels.EntitySystems; using Robust.Shared.Prototypes; using Robust.Shared.Random; diff --git a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs index 3fd5710bf5..61a377e14c 100644 --- a/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs +++ b/Content.Server/_CP14/MagicEnergy/CP14MagicEnergySystem.Draw.cs @@ -1,15 +1,16 @@ using Content.Server._CP14.MagicEnergy.Components; +using Content.Shared._CP14.DayCycle; using Content.Shared._CP14.MagicEnergy.Components; using Content.Shared.Damage; using Content.Shared.Mobs.Components; using Content.Shared.Mobs.Systems; -using Robust.Shared.Map.Components; namespace Content.Server._CP14.MagicEnergy; public partial class CP14MagicEnergySystem { [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly CP14DayCycleSystem _dayCycle = default!; private void InitializeDraw() { @@ -59,7 +60,7 @@ public partial class CP14MagicEnergySystem if (TryComp(uid, out var mobState) && !_mobState.IsAlive(uid, mobState)) continue; - draw.NextUpdateTime = _gameTiming.CurTime + TimeSpan.FromSeconds(draw.Delay); + draw.NextUpdateTime += TimeSpan.FromSeconds(draw.Delay); ChangeEnergy((uid, magicContainer), draw.Energy, out _, out _, draw.Safe); } @@ -75,16 +76,7 @@ public partial class CP14MagicEnergySystem draw.NextUpdateTime = _gameTiming.CurTime + TimeSpan.FromSeconds(draw.Delay); - var daylight = false; - - //if (TryComp(Transform(uid).MapUid, out var mapLight)) - //{ - // var color = mapLight.AmbientLightColor; - // var medium = (color.R + color.G + color.B) / 3f; - // - // if (medium > draw.LightThreshold) - // daylight = true; - //} + var daylight = _dayCycle.UnderSunlight(uid); ChangeEnergy((uid, magicContainer), daylight ? draw.DaylightEnergy : draw.DarknessEnergy, out _, out _, true); } diff --git a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Sacrifice.cs b/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Sacrifice.cs deleted file mode 100644 index 0976c9a9cb..0000000000 --- a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Sacrifice.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared._CP14.MagicRitualTrigger.Triggers; -using Content.Shared.Humanoid; -using Content.Shared.Mobs; -using Content.Shared.Whitelist; - -namespace Content.Server._CP14.MagicRitualTrigger; - - -public partial class CP14RitualTriggerSystem -{ - [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; - - private void InitializeSacrifice() - { - SubscribeLocalEvent(OnMobStateChanged); - } - - private void OnMobStateChanged(MobStateChangedEvent ev) - { - if (ev.NewMobState != MobState.Dead) - return; - - var deathXform = Transform(ev.Target); - - SacrificeSpecies(ev, deathXform); - SacrificeWhitelist(ev, deathXform); - } - - private void SacrificeSpecies(MobStateChangedEvent ev, TransformComponent deathXform) - { - - if (!TryComp(ev.Target, out var humanoid)) - return; - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var sacrifice, out var phase, out var xform)) - { - if (!deathXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) - continue; - - foreach (var trigger in sacrifice.Triggers) - { - if (distance > trigger.Range) - continue; - - if (trigger.Edge is null) - continue; - - if (trigger.Species != humanoid.Species) - continue; - - TriggerRitualPhase((uid, phase), trigger.Edge.Value.Target); - } - } - } - - private void SacrificeWhitelist(MobStateChangedEvent ev, TransformComponent deathXform) - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var sacrifice, out var phase, out var xform)) - { - if (!deathXform.Coordinates.TryDistance(EntityManager, xform.Coordinates, out var distance)) - continue; - - foreach (var trigger in sacrifice.Triggers) - { - if (distance > trigger.Range) - continue; - - if (trigger.Edge is null) - continue; - - var entProto = MetaData(ev.Target).EntityPrototype; - - if (entProto is null) - continue; - - if (!_whitelist.IsValid(trigger.Whitelist, ev.Target)) - continue; - - TriggerRitualPhase((uid, phase), trigger.Edge.Value.Target); - } - } - } -} diff --git a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Timer.cs b/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Timer.cs deleted file mode 100644 index 63bccc6f43..0000000000 --- a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Timer.cs +++ /dev/null @@ -1,43 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared._CP14.MagicRitualTrigger.Triggers; -using Robust.Shared.Timing; - -namespace Content.Server._CP14.MagicRitualTrigger; - - -public partial class CP14RitualTriggerSystem -{ - [Dependency] private readonly IGameTiming _timing = default!; - - private void InitializeTimer() - { - SubscribeLocalEvent(OnMapInit); - } - - private void OnMapInit(Entity ent, ref MapInitEvent args) - { - foreach (var trigger in ent.Comp.Triggers) - { - trigger.TriggerTime = _timing.CurTime + TimeSpan.FromSeconds(trigger.Delay); - } - } - - private void UpdateTimer(float frameTime) - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var timer, out var phase)) - { - foreach (var trigger in timer.Triggers) - { - if (_timing.CurTime < trigger.TriggerTime || trigger.TriggerTime == TimeSpan.Zero) - continue; - - if (trigger.Edge is null) - continue; - - TriggerRitualPhase((uid, phase), trigger.Edge.Value.Target); - trigger.TriggerTime = TimeSpan.Zero; - } - } - } -} diff --git a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Voice.cs b/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Voice.cs deleted file mode 100644 index 3cdd461067..0000000000 --- a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.Voice.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Text.RegularExpressions; -using Content.Server.Speech; -using Content.Shared._CP14.MagicRitual; -using Content.Shared._CP14.MagicRitualTrigger.Triggers; - -namespace Content.Server._CP14.MagicRitualTrigger; - -public partial class CP14RitualTriggerSystem -{ - private void InitializeVoice() - { - SubscribeLocalEvent(OnListenEvent); - } - - private void OnListenEvent(Entity ent, ref ListenEvent args) - { - if (!TryComp(ent, out var phase)) - return; - - // Lowercase the phrase and remove all punctuation marks - var message = Regex.Replace(args.Message.Trim().ToLower(), @"[^\w\s]", ""); - - foreach (var trigger in ent.Comp.Triggers) - { - var triggerMessage = Regex.Replace(trigger.Message.ToLower(), @"[^\w\s]", ""); - - if (triggerMessage != message) - continue; - - if (trigger.Edge is null) - continue; - - TriggerRitualPhase((ent.Owner, phase), trigger.Edge.Value.Target); - } - } -} diff --git a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.cs b/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.cs deleted file mode 100644 index 37852bbc2f..0000000000 --- a/Content.Server/_CP14/MagicRitualTrigger/CP14RitualTriggerSystem.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared._CP14.MagicRitualTrigger; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.MagicRitualTrigger; - -public partial class CP14RitualTriggerSystem : CP14SharedRitualTriggerSystem -{ - public override void Initialize() - { - InitializeTimer(); - InitializeVoice(); - InitializeSacrifice(); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - UpdateTimer(frameTime); - } - - private void TriggerRitualPhase(Entity ent, EntProtoId nextPhase) - { - var evConfirmed = new CP14RitualTriggerEvent(nextPhase); - RaiseLocalEvent(ent, evConfirmed); - } -} diff --git a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Describer.cs b/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Describer.cs deleted file mode 100644 index da99773a6a..0000000000 --- a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Describer.cs +++ /dev/null @@ -1,167 +0,0 @@ -using System.Text; -using Content.Server._CP14.MagicRituals.Components; -using Content.Shared._CP14.MagicRitual; -using Content.Shared.Paper; -using Content.Shared.Verbs; -using Robust.Shared.Audio.Systems; -using Robust.Shared.Map; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.MagicRituals; - -public sealed partial class CP14RitualSystem -{ - [Dependency] private readonly PaperSystem _paper = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - private void InitializeDescriber() - { - - SubscribeLocalEvent>(OnDescriberVerbs); - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnShutdown); - } - - private void OnShutdown(Entity ent, ref ComponentShutdown args) - { - QueueDel(ent.Comp.CurrentPhase); - } - - private void OnMapInit(Entity ent, ref MapInitEvent args) - { - SetPhase(ent, ent.Comp.StartPhase); - } - - private void SetPhase(Entity ent, EntProtoId newProto, bool saveHistory = true) - { - var oldPhase = ent.Comp.CurrentPhase; - if (oldPhase is not null && saveHistory) - { - var oldProto = MetaData(oldPhase.Value).EntityPrototype; - if (oldProto is not null && oldProto != newProto) - { - ent.Comp.SearchHistory.Add(oldProto); - if (ent.Comp.SearchHistory.Count > 50) - ent.Comp.SearchHistory.RemoveAt(0); - } - } - QueueDel(oldPhase); - var newPhase = Spawn(newProto, MapCoordinates.Nullspace); - - ent.Comp.CurrentPhase = newPhase; - - if (!TryComp(ent, out var paper)) - return; - - _paper.SetContent((ent, paper), GetPhaseDescription(newPhase)); - _audio.PlayPvs(ent.Comp.UseSound, ent); - } - - private void BackPhase(Entity ent) - { - if (ent.Comp.SearchHistory.Count > 0) - SetPhase(ent, ent.Comp.SearchHistory[^1], false); - } - - private void OnDescriberVerbs(Entity ent, ref GetVerbsEvent args) - { - if (!args.CanAccess || !args.CanInteract) - return; - - if (!TryComp(ent.Comp.CurrentPhase, out var phase)) - return; - - if (!TryComp(ent.Comp.CurrentPhase.Value, out var phaseComp)) - return; - - foreach (var edge in phaseComp.Edges) - { - if (!_proto.TryIndex(edge.Target, out var indexedTarget)) - continue; - - Verb verb = new() - { - Text = Loc.GetString("cp14-ritual-describer-verb-item", ("name", indexedTarget.Name)), - Category = VerbCategory.CP14RitualBook, - Priority = 1, - Act = () => SetPhase(ent, edge.Target), - }; - args.Verbs.Add(verb); - } - - foreach (var hyperlink in ent.Comp.Hyperlinks) - { - if (!_proto.TryIndex(hyperlink, out var indexedTarget)) - continue; - - Verb verb = new() - { - Text = Loc.GetString("cp14-ritual-describer-verb-hyperlink", ("name", indexedTarget.Name)), - Category = VerbCategory.CP14RitualBook, - Priority = 0, - Act = () => SetPhase(ent, hyperlink), - }; - args.Verbs.Add(verb); - } - - if (ent.Comp.SearchHistory.Count > 0) - { - Verb verb = new() - { - Text = Loc.GetString("cp14-ritual-describer-verb-back"), - Category = VerbCategory.CP14RitualBook, - Priority = -1, - Act = () => BackPhase(ent), - }; - args.Verbs.Add(verb); - } - } - - private string GetPhaseDescription(EntityUid uid) - { - if (!TryComp(uid, out var phase)) - return string.Empty; - - return GetPhaseDescription((uid, phase)); - } - - private string GetPhaseDescription(Entity ent) - { - var sb = new StringBuilder(); - sb.Append($"[color=#e6a132][head=1]{MetaData(ent).EntityName}[/head][/color] \n \n"); - sb.Append($"[italic]{MetaData(ent).EntityDescription}[/italic] \n \n"); - - sb.Append(Loc.GetString("cp14-ritual-intro") + "\n \n \n"); - foreach (var edge in ent.Comp.Edges) - { - if (!_proto.TryIndex(edge.Target, out var targetIndexed)) - continue; - - sb.Append($"[color=#b5783c][head=3]{targetIndexed.Name}[/head][/color]" + "\n"); - - //TRIGGERS - if (edge.Triggers.Count > 0) - { - sb.Append($"[bold]{Loc.GetString("cp14-ritual-trigger-header")}[/bold] \n"); - foreach (var trigger in edge.Triggers) - sb.Append(trigger.GetGuidebookTriggerDescription(_proto, _entitySystem) + "\n"); - } - - //REQUIREMENTS - if (edge.Requirements.Count > 0) - { - sb.Append($"[bold]{Loc.GetString("cp14-ritual-req-header")}[/bold] \n"); - foreach (var req in edge.Requirements) - sb.Append(req.GetGuidebookRequirementDescription(_proto, _entitySystem) + "\n"); - } - - //ACTIONS - if (edge.Actions.Count > 0) - { - sb.Append($"[bold]{Loc.GetString("cp14-ritual-effect-header")}[/bold] \n"); - foreach (var act in edge.Actions) - sb.Append(act.GetGuidebookEffectDescription(_proto, _entitySystem) + "\n"); - } - } - return sb.ToString(); - } -} diff --git a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Visuals.cs b/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Visuals.cs deleted file mode 100644 index 9b88426e68..0000000000 --- a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.Visuals.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Server.GameObjects; - -namespace Content.Server._CP14.MagicRituals; - -public sealed partial class CP14RitualSystem -{ - [Dependency] private readonly AppearanceSystem _appearance = default!; - private void InitializeVisuals() - { - SubscribeLocalEvent(OnPhaseBound); - } - - private void OnPhaseBound(Entity ent, ref CP14RitualPhaseBoundEvent args) - { - if (!TryComp(args.Ritual, out var ritual)) - return; - - _pointLight.SetColor(ent, ent.Comp.PhaseColor); - _appearance.SetData(args.Ritual, RitualVisuals.Color, ent.Comp.PhaseColor); - } -} diff --git a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.cs b/Content.Server/_CP14/MagicRituals/CP14RitualSystem.cs deleted file mode 100644 index 5f440a5a50..0000000000 --- a/Content.Server/_CP14/MagicRituals/CP14RitualSystem.cs +++ /dev/null @@ -1,201 +0,0 @@ -using System.Text; -using Content.Server.Speech.Components; -using Content.Shared._CP14.MagicRitual; -using Content.Shared.DoAfter; -using Content.Shared.Examine; -using Content.Shared.Verbs; -using Robust.Server.GameObjects; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; -using Robust.Shared.Timing; - -namespace Content.Server._CP14.MagicRituals; - -public partial class CP14RitualSystem : CP14SharedRitualSystem -{ - [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; - [Dependency] private readonly IEntitySystemManager _entitySystem = default!; - [Dependency] private readonly PointLightSystem _pointLight = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly TransformSystem _transform = default!; - - public override void Initialize() - { - base.Initialize(); - - InitializeDescriber(); - InitializeVisuals(); - - SubscribeLocalEvent(OnActivateRitual); - SubscribeLocalEvent>(OnAlternativeVerb); - - SubscribeLocalEvent(OnPhaseTrigger); - - SubscribeLocalEvent(OnOrbExamine); - } - - private void OnActivateRitual(Entity ent, ref CP14ActivateRitualDoAfter args) - { - //if (args.Cancelled || args.Handled) - // return; -// - //args.Handled = true; -// - //StartRitual(ent); - } - - private void OnAlternativeVerb(Entity ent, ref GetVerbsEvent args) - { - //if (!args.CanInteract || ent.Comp.CurrentPhase is not null) - // return; -// - //var user = args.User; - //AlternativeVerb verb = new() - //{ - // Act = () => - // { - // var doAfterArgs = - // new DoAfterArgs(EntityManager, user, ent.Comp.ActivationTime, new CP14ActivateRitualDoAfter(), ent, ent) - // { - // BreakOnDamage = true, - // BreakOnMove = true, - // }; -// - // _doAfter.TryStartDoAfter(doAfterArgs); - // }, - // Text = Loc.GetString("cp14-ritual-verb-text"), - // Priority = 1, - //}; - //args.Verbs.Add(verb); - } - - private void OnOrbExamine(Entity ent, ref ExaminedEvent args) - { - //var sb = new StringBuilder(); - //sb.Append(Loc.GetString("cp14-ritual-orb-examine", ("name", MetaData(ent).EntityName)) + "\n"); - //foreach (var orbType in ent.Comp.Powers) - //{ - // if (!_proto.TryIndex(orbType.Key, out var indexedType)) - // continue; -// - // sb.Append($"[color={indexedType.Color.ToHex()}]"); - // sb.Append(Loc.GetString("cp14-ritual-entry-item", - // ("name", Loc.GetString(indexedType.Name)), - // ("count", orbType.Value))); - // sb.Append($"[/color] \n"); - //} -// - //args.PushMarkup(sb.ToString()); - } - - private void OnPhaseTrigger(Entity phase, ref CP14RitualTriggerEvent args) - { - //if (phase.Comp.Ritual is null) - // return; -// - //if (!TryComp(phase, out var ritualComp)) - // return; -// - //RitualPhaseEdge? selectedEdge = null; - //foreach (var edge in phase.Comp.Edges) - //{ - // if (edge.Target == args.NextPhase) - // { - // selectedEdge = edge; - // break; - // } - //} -// - //if (selectedEdge is null) - // return; -// - //var passed = true; - //foreach (var req in selectedEdge.Value.Requirements) - //{ - // if (!req.Check(EntityManager, phase, ritualComp.Stability)) //lol - // { - // ChangeRitualStability(phase.Comp.Ritual.Value, -req.FailStabilityCost); - // passed = false; - // break; - // } - //} -// - //if (!passed) - // return; -// - //foreach (var action in selectedEdge.Value.Actions) - //{ - // action.Effect(EntityManager, _transform, phase); - //} -// - //ChangePhase(phase.Comp.Ritual.Value, args.NextPhase); - } - - public void StartRitual(EntityUid uid, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual, false)) - // return; -// - //EndRitual(uid); -// - //var ev = new CP14RitualStartEvent(uid); - //RaiseLocalEvent(uid, ev); -// - //ChangePhase(uid, ritual.StartPhase); - //_appearance.SetData(uid, RitualVisuals.Enabled, true); - } - - private void ChangePhase(EntityUid uid, EntProtoId newPhase, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual, false)) - // return; -// - //QueueDel(ritual.CurrentPhase); -// - //var newPhaseEnt = Spawn(newPhase, Transform(uid).Coordinates); - //_transform.SetParent(newPhaseEnt, uid); - //var newPhaseComp = EnsureComp(newPhaseEnt); -// - //ritual.CurrentPhase = newPhaseEnt; - //newPhaseComp.Ritual = uid; -// - //foreach (var edge in newPhaseComp.Edges) - //{ - // foreach (var trigger in edge.Triggers) - // { - // trigger.Initialize(EntityManager, ritual.CurrentPhase.Value, edge); - // } - //} -// - //var ev = new CP14RitualPhaseBoundEvent(uid, newPhaseEnt); - //RaiseLocalEvent(uid, ev); - //RaiseLocalEvent(newPhaseEnt, ev); -// - //if (newPhaseComp.DeadEnd) - // EndRitual(uid); - } - - public void EndRitual(EntityUid uid, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual, false)) - // return; -// - //if (ritual.CurrentPhase is null) - // return; -// - //QueueDel(ritual.CurrentPhase); - //ritual.CurrentPhase = null; -// - //var ev = new CP14RitualEndEvent(uid); - //RaiseLocalEvent(uid, ev); -// - //_appearance.SetData(uid, RitualVisuals.Enabled, false); -// - //foreach (var orb in ritual.Orbs) - //{ - // QueueDel(orb); - //} - } -} diff --git a/Content.Server/_CP14/MagicRituals/Components/CP14PaperPhaseDescriberComponent.cs b/Content.Server/_CP14/MagicRituals/Components/CP14PaperPhaseDescriberComponent.cs deleted file mode 100644 index d3bd9b00af..0000000000 --- a/Content.Server/_CP14/MagicRituals/Components/CP14PaperPhaseDescriberComponent.cs +++ /dev/null @@ -1,31 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Shared.Audio; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.MagicRituals.Components; - -/// -/// -/// -[RegisterComponent, Access(typeof(CP14RitualSystem))] -public sealed partial class CP14PaperPhaseDescriberComponent : Component -{ - [DataField(required: true)] - public EntProtoId StartPhase = default!; - - [DataField] - public EntityUid? CurrentPhase = null; - - public List SearchHistory = new(); - - [DataField] - public List Hyperlinks = new(); - - public SoundSpecifier UseSound = new SoundCollectionSpecifier("CP14Book") - { - Params = AudioParams.Default - .WithVariation(0.05f) - .WithVolume(0.5f), - }; -} - diff --git a/Content.Server/_CP14/MagicSpell/CP14MagicSystem.cs b/Content.Server/_CP14/MagicSpell/CP14MagicSystem.cs index 190e7037e1..714f8064a0 100644 --- a/Content.Server/_CP14/MagicSpell/CP14MagicSystem.cs +++ b/Content.Server/_CP14/MagicSpell/CP14MagicSystem.cs @@ -10,6 +10,7 @@ using Content.Shared._CP14.MagicSpell.Spells; using Content.Shared.Actions; using Content.Shared.CombatMode.Pacification; using Content.Shared.FixedPoint; +using Content.Shared.Instruments; using Content.Shared.Projectiles; using Content.Shared.Throwing; using Content.Shared.Weapons.Melee.Events; diff --git a/Content.Server/_CP14/Objectives/Components/CP14RichestJobConditionComponent.cs b/Content.Server/_CP14/Objectives/Components/CP14RichestJobConditionComponent.cs deleted file mode 100644 index 6c8b81296f..0000000000 --- a/Content.Server/_CP14/Objectives/Components/CP14RichestJobConditionComponent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Content.Server._CP14.Objectives.Systems; -using Content.Shared.Roles; -using Robust.Shared.Prototypes; -using Robust.Shared.Utility; - -namespace Content.Server._CP14.Objectives.Components; - -/// -/// The player must be the richest among the players among the specified list of roles -/// -[RegisterComponent, Access(typeof(CP14RichestJobConditionSystem))] -public sealed partial class CP14RichestJobConditionComponent : Component -{ - [DataField(required: true)] - public ProtoId Job; - - [DataField(required: true)] - public LocId ObjectiveText; - - [DataField(required: true)] - public LocId ObjectiveDescription; - - [DataField(required: true)] - public SpriteSpecifier ObjectiveSprite; -} diff --git a/Content.Server/_CP14/Objectives/Components/CP14StatisticRangeConditionComponent.cs b/Content.Server/_CP14/Objectives/Components/CP14StatisticRangeConditionComponent.cs deleted file mode 100644 index d5d372b683..0000000000 --- a/Content.Server/_CP14/Objectives/Components/CP14StatisticRangeConditionComponent.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Content.Server._CP14.Objectives.Systems; -using Content.Shared._CP14.RoundStatistic; -using Content.Shared.Destructible.Thresholds; -using Robust.Shared.Prototypes; -using Robust.Shared.Utility; - -namespace Content.Server._CP14.Objectives.Components; - -[RegisterComponent, Access(typeof(CP14StatisticRangeConditionSystem))] -public sealed partial class CP14StatisticRangeConditionComponent : Component -{ - [DataField(required: true)] - public ProtoId Statistic; - - [DataField(required: true)] - public MinMax Range; - - [DataField(required: true)] - public LocId ObjectiveText; - - [DataField(required: true)] - public LocId ObjectiveDescription; - - [DataField(required: true)] - public SpriteSpecifier? ObjectiveSprite; -} diff --git a/Content.Server/_CP14/Objectives/Systems/CP14RichestJobCondtionSystem.cs b/Content.Server/_CP14/Objectives/Systems/CP14RichestJobCondtionSystem.cs deleted file mode 100644 index 3a62d4293a..0000000000 --- a/Content.Server/_CP14/Objectives/Systems/CP14RichestJobCondtionSystem.cs +++ /dev/null @@ -1,74 +0,0 @@ -using Content.Server._CP14.Objectives.Components; -using Content.Shared._CP14.Currency; -using Content.Shared.Mind; -using Content.Shared.Objectives.Components; -using Content.Shared.Objectives.Systems; -using Content.Shared.Roles.Jobs; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.Objectives.Systems; - -public sealed class CP14RichestJobConditionSystem : EntitySystem -{ - [Dependency] private readonly MetaDataSystem _metaData = default!; - [Dependency] private readonly SharedObjectivesSystem _objectives = default!; - [Dependency] private readonly CP14SharedCurrencySystem _currency = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly SharedMindSystem _mind = default!; - [Dependency] private readonly SharedJobSystem _job = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnCollectAfterAssign); - SubscribeLocalEvent(OnCollectGetProgress); - } - - private void OnCollectAfterAssign(Entity condition, ref ObjectiveAfterAssignEvent args) - { - if (!_proto.TryIndex(condition.Comp.Job, out var indexedJob)) - return; - - _metaData.SetEntityName(condition.Owner, Loc.GetString(condition.Comp.ObjectiveText), args.Meta); - _metaData.SetEntityDescription(condition.Owner, Loc.GetString(condition.Comp.ObjectiveDescription), args.Meta); - _objectives.SetIcon(condition.Owner, condition.Comp.ObjectiveSprite); - } - - private void OnCollectGetProgress(Entity condition, ref ObjectiveGetProgressEvent args) - { - args.Progress = GetProgress(args.MindId, args.Mind, condition); - } - - private float GetProgress(EntityUid mindId, MindComponent mind, CP14RichestJobConditionComponent condition) - { - if (mind.OwnedEntity is null) - return 0; - - var ourValue = _currency.GetTotalCurrencyRecursive(mind.OwnedEntity.Value); - var otherMaxValue = 0; - - var allHumans = _mind.GetAliveHumans(mindId); - if (allHumans.Count == 0) - return 1; // No one to compare to, so we're the richest. - - foreach (var otherHuman in allHumans) - { - if (!_job.MindTryGetJob(otherHuman, out var otherJob)) - continue; - - if (otherJob != condition.Job) - continue; - - if (otherHuman.Comp.OwnedEntity is null) - continue; - - var otherValue = _currency.GetTotalCurrencyRecursive(otherHuman.Comp.OwnedEntity.Value); - if (otherValue > otherMaxValue) - otherMaxValue = otherValue; - } - - // if several players have the same amount of money, no one wins. - return ourValue == otherMaxValue ? 0.99f : Math.Clamp(ourValue / (float)otherMaxValue, 0, 1); - } -} diff --git a/Content.Server/_CP14/Objectives/Systems/CP14StatisticRangeConditionStstem.cs b/Content.Server/_CP14/Objectives/Systems/CP14StatisticRangeConditionStstem.cs deleted file mode 100644 index ceac079e2f..0000000000 --- a/Content.Server/_CP14/Objectives/Systems/CP14StatisticRangeConditionStstem.cs +++ /dev/null @@ -1,54 +0,0 @@ -using Content.Server._CP14.Objectives.Components; -using Content.Server._CP14.RoundStatistic; -using Content.Shared.Objectives.Components; -using Content.Shared.Objectives.Systems; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; - -namespace Content.Server._CP14.Objectives.Systems; - -public sealed class CP14StatisticRangeConditionSystem : EntitySystem -{ - [Dependency] private readonly IRobustRandom _random = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly MetaDataSystem _metaData = default!; - [Dependency] private readonly SharedObjectivesSystem _objectives = default!; - [Dependency] private readonly CP14RoundStatTrackerSystem _statistic = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnAfterAssign); - SubscribeLocalEvent(OnGetProgress); - } - - private void OnAfterAssign(Entity condition, ref ObjectiveAfterAssignEvent args) - { - var title = Loc.GetString(condition.Comp.ObjectiveText, - ("min", condition.Comp.Range.Min), - ("max", condition.Comp.Range.Max)); - - var description = Loc.GetString(condition.Comp.ObjectiveDescription, - ("min", condition.Comp.Range.Min), - ("max", condition.Comp.Range.Max)); - - _metaData.SetEntityName(condition.Owner, title, args.Meta); - _metaData.SetEntityDescription(condition.Owner, description, args.Meta); - if (condition.Comp.ObjectiveSprite is not null) - _objectives.SetIcon(condition.Owner, condition.Comp.ObjectiveSprite, args.Objective); - } - - private void OnGetProgress(Entity ent, ref ObjectiveGetProgressEvent args) - { - var statValue = _statistic.GetTrack(ent.Comp.Statistic); - - if (statValue is null || statValue > ent.Comp.Range.Max || statValue < ent.Comp.Range.Min) - { - args.Progress = 0; - return; - } - - args.Progress = 1; - } -} diff --git a/Content.Server/_CP14/ResearchTable/CP14ResearchSystem.cs b/Content.Server/_CP14/ResearchTable/CP14ResearchSystem.cs new file mode 100644 index 0000000000..3646a2c0d3 --- /dev/null +++ b/Content.Server/_CP14/ResearchTable/CP14ResearchSystem.cs @@ -0,0 +1,199 @@ +using Content.Server.DoAfter; +using Content.Shared._CP14.ResearchTable; +using Content.Shared._CP14.Skill; +using Content.Shared._CP14.Skill.Components; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared._CP14.Skill.Restrictions; +using Content.Shared.DoAfter; +using Content.Shared.UserInterface; +using Robust.Server.Audio; +using Robust.Server.GameObjects; +using Robust.Shared.Prototypes; + +namespace Content.Server._CP14.ResearchTable; + +public sealed class CP14ResearchSystem : CP14SharedResearchSystem +{ + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly IPrototypeManager _proto = default!; + [Dependency] private readonly UserInterfaceSystem _userInterface = default!; + [Dependency] private readonly DoAfterSystem _doAfter = default!; + [Dependency] private readonly AudioSystem _audio = default!; + + private IEnumerable _allSkills = []; + + public override void Initialize() + { + base.Initialize(); + + _allSkills = _proto.EnumeratePrototypes(); + + SubscribeLocalEvent(OnBeforeUIOpen); + SubscribeLocalEvent(OnResearch); + SubscribeLocalEvent(OnResearchEnd); + + SubscribeLocalEvent(OnReloadPrototypes); + } + + private void OnReloadPrototypes(PrototypesReloadedEventArgs ev) + { + _allSkills = _proto.EnumeratePrototypes(); + } + + private void OnResearchEnd(Entity table, ref CP14ResearchDoAfterEvent args) + { + if (args.Cancelled || args.Handled) + return; + + if (!_proto.TryIndex(args.Skill, out var indexedSkill)) + return; + + var placedEntities = _lookup.GetEntitiesInRange(Transform(table).Coordinates, + table.Comp.ResearchRadius, + LookupFlags.Uncontained); + + if (!CanResearch(indexedSkill, placedEntities, args.User)) + return; + + if (!TryComp(args.User, out var storage)) + return; + if (storage.ResearchedSkills.Contains(args.Skill) || storage.LearnedSkills.Contains(args.Skill)) + return; + storage.ResearchedSkills.Add(args.Skill); + Dirty(args.User, storage); + + foreach (var restriction in indexedSkill.Restrictions) + { + switch (restriction) + { + case Researched researched: + foreach (var req in researched.Requirements) + { + req.PostCraft(EntityManager, _proto, placedEntities, args.User); + } + break; + } + } + + _audio.PlayPvs(table.Comp.ResearchSound, table); + UpdateUI(table, args.User); + args.Handled = true; + } + + private void OnResearch(Entity ent, ref CP14ResearchMessage args) + { + if (!TryComp(args.Actor, out var storage)) + return; + + if (storage.ResearchedSkills.Contains(args.Skill) || storage.LearnedSkills.Contains(args.Skill)) + return; + + if (!_proto.TryIndex(args.Skill, out var indexedSkill)) + return; + + StartResearch(ent, args.Actor, indexedSkill); + } + + private void OnBeforeUIOpen(Entity ent, ref BeforeActivatableUIOpenEvent args) + { + UpdateUI(ent, args.User); + } + + private void UpdateUI(Entity entity, EntityUid user) + { + var placedEntities = _lookup.GetEntitiesInRange(Transform(entity).Coordinates, entity.Comp.ResearchRadius); + + if (!TryComp(user, out var storage)) + return; + + var researches = new List(); + foreach (var skill in _allSkills) + { + var researchable = false; + var canCraft = true; + var hidden = false; + + foreach (var restriction in skill.Restrictions) + { + if (storage.ResearchedSkills.Contains(skill) || storage.LearnedSkills.Contains(skill)) + continue; + + switch (restriction) + { + case SpeciesWhitelist speciesWhitelist: //We cant change species of our character, so hide it + if (!speciesWhitelist.Check(EntityManager, user, skill)) + hidden = true; + break; + + case NeedPrerequisite prerequisite: + if (!storage.ResearchedSkills.Contains(prerequisite.Prerequisite)) + hidden = true; + break; + + case Researched researched: + researchable = true; + + foreach (var req in researched.Requirements) + { + if (!req.CheckRequirement(EntityManager, _proto, placedEntities, user)) + { + canCraft = false; + } + } + break; + } + } + + if (!researchable || hidden) + continue; + + var entry = new CP14ResearchUiEntry(skill, canCraft); + + researches.Add(entry); + } + + _userInterface.SetUiState(entity.Owner, CP14ResearchTableUiKey.Key, new CP14ResearchTableUiState(researches)); + } + + private void StartResearch(Entity table, EntityUid user, CP14SkillPrototype skill) + { + var researchDoAfter = new CP14ResearchDoAfterEvent() + { + Skill = skill + }; + + var doAfterArgs = new DoAfterArgs(EntityManager, + user, + TimeSpan.FromSeconds(table.Comp.ResearchSpeed), + researchDoAfter, + table, + table) + { + BreakOnMove = true, + BreakOnDamage = true, + NeedHand = true, + }; + + _doAfter.TryStartDoAfter(doAfterArgs); + _audio.PlayPvs(table.Comp.ResearchSound, table); + } + + private bool CanResearch(CP14SkillPrototype skill, HashSet entities, EntityUid user) + { + foreach (var restriction in skill.Restrictions) + { + switch (restriction) + { + case Researched researched: + foreach (var req in researched.Requirements) + { + if (!req.CheckRequirement(EntityManager, _proto, entities, user)) + return false; + } + break; + } + } + + return true; + } +} diff --git a/Content.Server/_CP14/RoleSalary/CP14SalarySpawnerComponent.cs b/Content.Server/_CP14/RoleSalary/CP14SalarySpawnerComponent.cs deleted file mode 100644 index 525a51f6d1..0000000000 --- a/Content.Server/_CP14/RoleSalary/CP14SalarySpawnerComponent.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Content.Server._CP14.RoleSalary; - -[RegisterComponent, Access(typeof(CP14SalarySystem))] -public sealed partial class CP14SalarySpawnerComponent : Component -{ -} diff --git a/Content.Server/_CP14/RoleSalary/CP14SalarySystem.cs b/Content.Server/_CP14/RoleSalary/CP14SalarySystem.cs deleted file mode 100644 index f5eb7e2938..0000000000 --- a/Content.Server/_CP14/RoleSalary/CP14SalarySystem.cs +++ /dev/null @@ -1,118 +0,0 @@ -using System.Text; -using Content.Server._CP14.Cargo; -using Content.Server._CP14.Currency; -using Content.Server.Station.Events; -using Content.Shared.Paper; -using Content.Shared.Station.Components; -using Content.Shared.Storage.EntitySystems; -using Robust.Server.GameObjects; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; - -namespace Content.Server._CP14.RoleSalary; - -/// -/// A system that periodically sends paychecks to certain roles through the cargo ship system -/// -public sealed partial class CP14SalarySystem : EntitySystem -{ - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly CP14CargoSystem _cargo = default!; - [Dependency] private readonly TransformSystem _transform = default!; - [Dependency] private readonly PaperSystem _paper = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly CP14CurrencySystem _currency = default!; - [Dependency] private readonly SharedStorageSystem _storage = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnStationPostInit); - SubscribeLocalEvent(OnSalaryInit); - } - - public override void Update(float frameTime) - { - base.Update(frameTime); - - //var query = EntityQueryEnumerator(); - //while (query.MoveNext(out var uid, out var salary, out var store)) - //{ - // if (_timing.CurTime < salary.NextSalaryTime) - // continue; -// - // salary.NextSalaryTime = _timing.CurTime + salary.SalaryFrequency; - // _cargo.AddBuyQueue((uid, store), new List {salary.SalaryProto}); - //} - } - - private void OnSalaryInit(Entity ent, ref MapInitEvent args) - { - GenerateSalary(ent); - QueueDel(ent); - } - - private void GenerateSalary(Entity ent) - { - //Hardcode warning! ^-^ - var xform = Transform(ent); - - //First we need found a station - if (!TryComp(xform.GridUid, out var member)) - return; - - if (!TryComp(member.Station, out var stationSalaryComponent)) - return; - - var paper = Spawn("CP14Paper"); //TODO Special named paper - _transform.PlaceNextTo(paper, (ent, xform)); - if (TryComp(paper, out var paperComp)) - { - paperComp.Content = GenerateSalaryText((member.Station, stationSalaryComponent)) ?? ""; - _paper.TryStamp((paper, paperComp), - new StampDisplayInfo - { - StampedColor = Color.Red, - StampedName = Loc.GetString("cp14-stamp-salary"), - }, - "red_on_paper"); - } - - var wallet = Spawn("CP14Wallet"); - _transform.PlaceNextTo(wallet, (ent, xform)); - - foreach (var salary in stationSalaryComponent.Salary) - { - var coins = _currency.GenerateMoney(salary.Value, xform.Coordinates); - foreach (var coin in coins) - { - _storage.Insert(wallet, coin, out _); - } - } - } - - private string? GenerateSalaryText(Entity station) - { - var sb = new StringBuilder(); - - sb.Append(Loc.GetString("cp14-salary-title") + "\n"); - foreach (var salary in station.Comp.Salary) - { - sb.Append("\n"); - if (!_proto.TryIndex(salary.Key, out var indexedDep)) - continue; - - var name = Loc.GetString(indexedDep.Name); - sb.Append(Loc.GetString("cp14-salary-entry", - ("dep", name), - ("total", _currency.GetCurrencyPrettyString(salary.Value)))); - } - return sb.ToString(); - } - - private void OnStationPostInit(Entity ent, ref StationPostInitEvent args) - { - ent.Comp.NextSalaryTime = _timing.CurTime + ent.Comp.SalaryFrequency; - } -} diff --git a/Content.Server/_CP14/RoleSalary/CP14StationSalaryComponent.cs b/Content.Server/_CP14/RoleSalary/CP14StationSalaryComponent.cs deleted file mode 100644 index 8ae05d0fe1..0000000000 --- a/Content.Server/_CP14/RoleSalary/CP14StationSalaryComponent.cs +++ /dev/null @@ -1,23 +0,0 @@ -using Content.Shared.Roles; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.RoleSalary; - -[RegisterComponent, Access(typeof(CP14SalarySystem)), AutoGenerateComponentPause] -public sealed partial class CP14StationSalaryComponent : Component -{ - /// - /// listing all the departments and their salaries - /// - [DataField] - public Dictionary, int> Salary = new(); - - [DataField, AutoPausedField] - public TimeSpan NextSalaryTime = TimeSpan.Zero; - - [DataField] - public TimeSpan SalaryFrequency = TimeSpan.FromMinutes(18); - - [DataField] - public EntProtoId SalaryProto = "CP14SalarySpawner"; -} diff --git a/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.cs b/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.cs index 39c52fc200..a628d91f74 100644 --- a/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.cs +++ b/Content.Server/_CP14/RoundEnd/CP14RoundEndSystem.cs @@ -51,7 +51,7 @@ public sealed partial class CP14RoundEndSystem : EntitySystem _demiplane.DeleteAllDemiplanes(safe: false); _chatSystem.DispatchGlobalAnnouncement(Loc.GetString("cp14-round-end"), - announcementSound: new SoundPathSpecifier("/Audio/_CP14/Ambience/event_boom.ogg")); + announcementSound: new SoundPathSpecifier("/Audio/_CP14/Announce/event_boom.ogg")); _roundEnd.EndRound(); } @@ -63,7 +63,7 @@ public sealed partial class CP14RoundEndSystem : EntitySystem { _chatSystem.DispatchGlobalAnnouncement( Loc.GetString("cp14-round-end-monolith-50"), - announcementSound: new SoundPathSpecifier("/Audio/_CP14/Ambience/event_boom.ogg")); + announcementSound: new SoundPathSpecifier("/Audio/_CP14/Announce/event_boom.ogg")); } //We initiate round end timer @@ -99,7 +99,7 @@ public sealed partial class CP14RoundEndSystem : EntitySystem "cp14-round-end-monolith-discharged", ("time", time), ("units", Loc.GetString(unitsLocString))), - announcementSound: new SoundPathSpecifier("/Audio/_CP14/Ambience/event_boom.ogg")); + announcementSound: new SoundPathSpecifier("/Audio/_CP14/Announce/event_boom.ogg")); } private void CancelRoundEndTimer() @@ -107,6 +107,6 @@ public sealed partial class CP14RoundEndSystem : EntitySystem _roundEndMoment = TimeSpan.Zero; _chatSystem.DispatchGlobalAnnouncement(Loc.GetString("cp14-round-end-monolith-recharged"), - announcementSound: new SoundPathSpecifier("/Audio/_CP14/Ambience/event_boom.ogg")); + announcementSound: new SoundPathSpecifier("/Audio/_CP14/Announce/event_boom.ogg")); } } diff --git a/Content.Server/_CP14/RoundLeave/CP14RoundLeaveSystem.cs b/Content.Server/_CP14/RoundLeave/CP14RoundLeaveSystem.cs index 4ed1e6366d..ba99d64911 100644 --- a/Content.Server/_CP14/RoundLeave/CP14RoundLeaveSystem.cs +++ b/Content.Server/_CP14/RoundLeave/CP14RoundLeaveSystem.cs @@ -94,7 +94,7 @@ public sealed class CP14RoundLeaveSystem : EntitySystem _adminLog.Add(LogType.Action, LogImpact.High, - $"{ToPrettyString(ent):player} was leave the round by ghosting into mist"); + $"{ToPrettyString(ent):player} left the round by ghosting into mist"); LeaveRound(ent, userId.Value, args.Mind); } diff --git a/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleComponent.cs b/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleComponent.cs deleted file mode 100644 index ce3199097a..0000000000 --- a/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Server._CP14.RoundRemoveShuttle; - -[RegisterComponent] -public sealed partial class CP14RoundRemoveShuttleComponent : Component -{ - [DataField] - public EntityUid Station; -} diff --git a/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleSystem.cs b/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleSystem.cs deleted file mode 100644 index 6b7e32a949..0000000000 --- a/Content.Server/_CP14/RoundRemoveShuttle/CP14RoundRemoveShuttleSystem.cs +++ /dev/null @@ -1,101 +0,0 @@ -using System.Globalization; -using System.Linq; -using Content.Server.Chat.Systems; -using Content.Server.Mind; -using Content.Server.Shuttles.Events; -using Content.Server.Station.Systems; -using Content.Server.StationRecords; -using Content.Server.StationRecords.Systems; -using Content.Shared.Administration.Logs; -using Content.Shared.Database; -using Content.Shared.Mind.Components; -using Content.Shared.Mobs.Systems; -using Content.Shared.StationRecords; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.RoundRemoveShuttle; - -public sealed partial class CP14RoundRemoveShuttleSystem : EntitySystem -{ - [Dependency] private readonly ISharedAdminLogManager _adminLog = default!; - [Dependency] private readonly ChatSystem _chatSystem = default!; - [Dependency] private readonly MindSystem _mind = default!; - [Dependency] private readonly StationJobsSystem _stationJobs = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly StationRecordsSystem _stationRecords = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - - private readonly HashSet> _mindSet = new(); - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnFTL); - } - - private void OnFTL(Entity ent, ref FTLStartedEvent args) - { - _mindSet.Clear(); - _lookup.GetChildEntities(ent, _mindSet); - - if (!TryComp(ent.Comp.Station, out var stationRecords)) - return; - - HashSet toDelete = new(); - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var mindContainer)) - { - if (Transform(uid).GridUid != ent) - continue; - - if (!_mind.TryGetMind(uid, out _, out var mindComp, container: mindContainer)) - continue; - - var name = Name(uid); - var recordId = _stationRecords.GetRecordByName(ent.Comp.Station, name); - - if (recordId is null) - return; - - var key = new StationRecordKey(recordId.Value, ent.Comp.Station); - if (!_stationRecords.TryGetRecord(key, out var entry, stationRecords)) - return; - - _stationRecords.RemoveRecord(key, stationRecords); - //Trying return all jobs roles - var userId = mindComp.UserId; - string? jobName = entry.JobTitle; - if (userId is not null) - { - _stationJobs.TryAdjustJobSlot(ent.Comp.Station, entry.JobPrototype, 1, clamp: true); - if (_proto.TryIndex(entry.JobPrototype, out var indexedJob)) - { - jobName = Loc.GetString(indexedJob.Name); - } - } - - _adminLog.Add(LogType.Action, - LogImpact.High, - $"{ToPrettyString(uid):player} was leave the round on traveling merchant ship"); - - _chatSystem.DispatchStationAnnouncement(ent.Comp.Station, - Loc.GetString( - _mobState.IsDead(uid) ? "cp14-earlyleave-ship-announcement-dead" : "cp14-earlyleave-ship-announcement", - ("character", mindComp.CharacterName ?? "Unknown"), - ("job", CultureInfo.CurrentCulture.TextInfo.ToTitleCase(jobName ?? "Unknown")) - ), - Loc.GetString("cp14-ship-sender"), - playDefaultSound: false - ); - toDelete.Add(uid); - } - - while (toDelete.Count > 0) - { - var r = toDelete.First(); - toDelete.Remove(r); - QueueDel(r); - } - } -} diff --git a/Content.Server/_CP14/RoundStatistic/CP14RoundStatTrackerSystem.cs b/Content.Server/_CP14/RoundStatistic/CP14RoundStatTrackerSystem.cs deleted file mode 100644 index ced62e5461..0000000000 --- a/Content.Server/_CP14/RoundStatistic/CP14RoundStatTrackerSystem.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System.Text; -using Content.Server.GameTicking; -using Content.Shared._CP14.RoundStatistic; -using Content.Shared.GameTicking; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.RoundStatistic; - -public sealed partial class CP14RoundStatTrackerSystem : EntitySystem -{ - [Dependency] private readonly IPrototypeManager _proto = default!; - - private readonly Dictionary, int> _tracking = new(); - - public override void Initialize() - { - base.Initialize(); - InitializeDemiplaneDeath(); - - SubscribeLocalEvent(OnRoundReset); - SubscribeLocalEvent(OnRoundEndTextAppend); - ClearStatistic(); - } - - private void OnRoundReset(RoundRestartCleanupEvent ev) - { - ClearStatistic(); - } - - private void OnRoundEndTextAppend(RoundEndTextAppendEvent ev) - { - //TODO: Move to separate UI Text block - var sb = new StringBuilder(); - - sb.Append($"[head=3]{Loc.GetString("cp14-tracker-header")}[/head] \n"); - foreach (var pair in _tracking) - { - if (!_proto.TryIndex(pair.Key, out var indexedTracker)) - continue; - - sb.Append($"- {Loc.GetString(indexedTracker.Text)}: {pair.Value}\n"); - } - ev.AddLine(sb.ToString()); - } - - private void ClearStatistic() - { - _tracking.Clear(); - - foreach (var statTracker in _proto.EnumeratePrototypes()) - { - _tracking.Add(statTracker.ID, 0); - } - } - - public void TrackAdd(ProtoId proto, int dif) - { - _tracking[proto] += Math.Max(dif, 0); - } - - public int? GetTrack(ProtoId proto) - { - if (!_tracking.TryGetValue(proto, out var stat)) - { - Log.Error($"Failed to get round statistic: {proto}"); - return null; - } - - return stat; - } -} diff --git a/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14DeathDemiplaneStatisticComponent.cs b/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14DeathDemiplaneStatisticComponent.cs deleted file mode 100644 index df155ac9b1..0000000000 --- a/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14DeathDemiplaneStatisticComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Content.Shared._CP14.RoundStatistic; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.RoundStatistic.DemiplaneDeath; - -/// -/// Tracks the destruction or full-blown death of this entity. -/// -[RegisterComponent] -public sealed partial class CP14DeathDemiplaneStatisticComponent : Component -{ - [DataField] - public ProtoId Statistic = "DemiplaneDeaths"; -} diff --git a/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14RoundStatTrackerSystem.DemiplaneDeath.cs b/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14RoundStatTrackerSystem.DemiplaneDeath.cs deleted file mode 100644 index 744b0e1276..0000000000 --- a/Content.Server/_CP14/RoundStatistic/DemiplaneDeath/CP14RoundStatTrackerSystem.DemiplaneDeath.cs +++ /dev/null @@ -1,35 +0,0 @@ -using Content.Server._CP14.Demiplane; -using Content.Server._CP14.RoundStatistic.DemiplaneDeath; -using Content.Shared._CP14.Demiplane.Components; -using Content.Shared.GameTicking; - -namespace Content.Server._CP14.RoundStatistic; - -public sealed partial class CP14RoundStatTrackerSystem -{ - private void InitializeDemiplaneDeath() - { - SubscribeLocalEvent(OnSpawnComplete); - SubscribeLocalEvent(OnEntityTerminated); - SubscribeLocalEvent(OnDemiplaneUnsafeExit); - } - - private void OnSpawnComplete(PlayerSpawnCompleteEvent ev) - { - EnsureComp(ev.Mob); - } - - private void OnDemiplaneUnsafeExit(Entity ent, ref CP14DemiplaneUnsafeExit args) - { - TrackAdd(ent.Comp.Statistic, 1); - } - - //For round remove variants, like gibs or chasm falls - private void OnEntityTerminated(Entity ent, ref EntityTerminatingEvent args) - { - if (!HasComp(Transform(ent).MapUid)) - return; - - TrackAdd(ent.Comp.Statistic, 1); - } -} diff --git a/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectComponent.cs b/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectComponent.cs deleted file mode 100644 index b79e7f97b0..0000000000 --- a/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectComponent.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Content.Shared.Roles; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.StealArea; - -/// -/// -/// -[RegisterComponent, AutoGenerateComponentPause] -public sealed partial class CP14StealAreaAutoJobConnectComponent : Component -{ - [DataField] - public HashSet> Jobs = new(); - - [DataField] - public HashSet> Departments = new(); - - [DataField] - public bool Stations = true; -} diff --git a/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectSystem.cs b/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectSystem.cs deleted file mode 100644 index 4ef4c277d6..0000000000 --- a/Content.Server/_CP14/StealArea/CP14StealAreaAutoJobConnectSystem.cs +++ /dev/null @@ -1,104 +0,0 @@ -using Content.Server._CP14.StationCommonObjectives; -using Content.Server.Mind; -using Content.Server.Objectives.Components; -using Content.Shared.GameTicking; -using Content.Shared.Roles.Jobs; -using Robust.Server.Player; -using Robust.Shared.Prototypes; - -namespace Content.Server._CP14.StealArea; - -public sealed class CP14StealAreaAutoJobConnectSystem : EntitySystem -{ - - [Dependency] private readonly MindSystem _mind = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly IPlayerManager _playerManager = default!; - [Dependency] private readonly SharedJobSystem _job = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnPlayerSpawning); - } - - private void OnMapInit(Entity autoConnect, ref MapInitEvent args) - { - if (!TryComp(autoConnect, out var stealArea)) - return; - - if (autoConnect.Comp.Stations) - { - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out _)) - { - stealArea.Owners.Add(uid); - } - } - - foreach (var player in _playerManager.Sessions) - { - if (!_mind.TryGetMind(player.UserId, out var playerMind)) - continue; - - if (!_job.MindTryGetJob(playerMind, out var playerJob)) - continue; - - if (stealArea.Owners.Contains(playerMind.Value)) - continue; - - if (autoConnect.Comp.Jobs.Contains(playerJob)) - { - stealArea.Owners.Add(playerMind.Value); - break; - } - - foreach (var depObj in autoConnect.Comp.Departments) - { - if (!_proto.TryIndex(depObj, out var indexedDepart)) - continue; - - if (!indexedDepart.Roles.Contains(playerJob)) - continue; - - stealArea.Owners.Add(playerMind.Value); - break; - } - } - } - - private void OnPlayerSpawning(PlayerSpawnCompleteEvent ev) - { - if (!_mind.TryGetMind(ev.Player.UserId, out var mind)) - return; - - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var stealArea, out var autoConnect)) - { - if (stealArea.Owners.Contains(mind.Value)) - continue; - - if (ev.JobId is null) - continue; - - if (autoConnect.Jobs.Contains(ev.JobId)) - { - stealArea.Owners.Add(mind.Value); - break; - } - - foreach (var depObj in autoConnect.Departments) - { - if (!_proto.TryIndex(depObj, out var indexedDepart)) - continue; - - if (!indexedDepart.Roles.Contains(ev.JobId)) - continue; - - stealArea.Owners.Add(mind.Value); - break; - } - } - } -} diff --git a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs index 62c99e9e80..3dd4bf1126 100644 --- a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs +++ b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceComponent.cs @@ -37,7 +37,10 @@ public sealed partial class CP14FireplaceComponent : Component public float FuelDrainingPerUpdate = 1f; [DataField] - public TimeSpan UpdateFrequency = TimeSpan.FromSeconds(2f); + public bool DeleteOnEmpty = false; + + [DataField] + public TimeSpan UpdateFrequency = TimeSpan.FromSeconds(1f); [DataField] public TimeSpan NextUpdateTime = TimeSpan.Zero; diff --git a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs index bba2430003..a1e3e04ad3 100644 --- a/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs +++ b/Content.Server/_CP14/Temperature/Fireplace/CP14FireplaceSystem.cs @@ -102,6 +102,12 @@ public sealed partial class CP14FireplaceSystem : EntitySystem ConsumeFuel(uid, fireplace, fuel.Value); flammable.FirestackFade = -fireplace.FireFadeDelta; + + if (flammable.FireStacks == 0 && fireplace.DeleteOnEmpty) + { + QueueDel(uid); + return; + } } } } diff --git a/Content.Server/_CP14/WeatherControl/CP14WeatherControllerSystem.cs b/Content.Server/_CP14/WeatherControl/CP14WeatherControllerSystem.cs index 12974e5d48..d116f1914d 100644 --- a/Content.Server/_CP14/WeatherControl/CP14WeatherControllerSystem.cs +++ b/Content.Server/_CP14/WeatherControl/CP14WeatherControllerSystem.cs @@ -30,6 +30,9 @@ public sealed class CP14WeatherControllerSystem : EntitySystem var weatherData = PickWeatherDataByWeight(uid, weather.Entries); + if (weatherData is null) + continue; + if (!_proto.TryIndex(weatherData.Visuals, out var weatherVisualsIndexed)) { var weatherDuration = TimeSpan.FromSeconds(weatherData.Duration.Next(_random)); @@ -45,7 +48,7 @@ public sealed class CP14WeatherControllerSystem : EntitySystem } } - private CP14WeatherData PickWeatherDataByWeight(EntityUid map, HashSet entries) + private CP14WeatherData? PickWeatherDataByWeight(EntityUid map, HashSet entries) { var filteredEntries = new HashSet(entries); @@ -60,6 +63,9 @@ public sealed class CP14WeatherControllerSystem : EntitySystem } } + if (filteredEntries.Count == 0) + return null; + var totalWeight = filteredEntries.Sum(entry => entry.Weight); var randomWeight = _random.NextFloat() * totalWeight; var currentWeight = 0f; diff --git a/Content.Server/_CP14/Workbench/CP14WorkbenchComponent.cs b/Content.Server/_CP14/Workbench/CP14WorkbenchComponent.cs index f8cbc8b593..2590c9782e 100644 --- a/Content.Server/_CP14/Workbench/CP14WorkbenchComponent.cs +++ b/Content.Server/_CP14/Workbench/CP14WorkbenchComponent.cs @@ -24,7 +24,7 @@ public sealed partial class CP14WorkbenchComponent : Component public float CraftSpeed = 1f; [DataField] - public float WorkbenchRadius = 0.5f; + public float WorkbenchRadius = 1.5f; /// /// List of recipes available for crafting on this type of workbench diff --git a/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs b/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs index d8d88d22f9..f1511805b9 100644 --- a/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs +++ b/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.UI.cs @@ -35,10 +35,11 @@ public sealed partial class CP14WorkbenchSystem foreach (var requirement in indexedRecipe.Requirements) { - if (!requirement.CheckRequirement(EntityManager, _proto, placedEntities, user, indexedRecipe)) + if (!requirement.CheckRequirement(EntityManager, _proto, placedEntities, user)) { canCraft = false; - hidden = requirement.HideRecipe; + if (requirement.HideRecipe) + hidden = true; } } diff --git a/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.cs b/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.cs index fb84c2d091..4ccc6dc517 100644 --- a/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.cs +++ b/Content.Server/_CP14/Workbench/CP14WorkbenchSystem.cs @@ -20,7 +20,7 @@ using Robust.Shared.Random; namespace Content.Server._CP14.Workbench; -public sealed partial class CP14WorkbenchSystem : SharedCP14WorkbenchSystem +public sealed partial class CP14WorkbenchSystem : CP14SharedWorkbenchSystem { [Dependency] private readonly AudioSystem _audio = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; @@ -139,7 +139,7 @@ public sealed partial class CP14WorkbenchSystem : SharedCP14WorkbenchSystem { foreach (var req in recipe.Requirements) { - if (!req.CheckRequirement(EntityManager, _proto, entities, user, recipe)) + if (!req.CheckRequirement(EntityManager, _proto, entities, user)) return false; } diff --git a/Content.Shared.Database/LogType.cs b/Content.Shared.Database/LogType.cs index 321a89d591..0042ba8f72 100644 --- a/Content.Shared.Database/LogType.cs +++ b/Content.Shared.Database/LogType.cs @@ -464,4 +464,8 @@ public enum LogType /// Logs related to botany, such as planting and harvesting crops /// Botany = 100, + /// + /// Artifact node got activated. + /// + ArtifactNode = 101 } diff --git a/Content.Shared/Access/Components/ExpireIdCardComponent.cs b/Content.Shared/Access/Components/ExpireIdCardComponent.cs new file mode 100644 index 0000000000..68a2a97531 --- /dev/null +++ b/Content.Shared/Access/Components/ExpireIdCardComponent.cs @@ -0,0 +1,44 @@ +using Content.Shared.Access.Systems; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.Access.Components; + +/// +/// This is used for an ID that expires and replaces its access after a certain period has passed. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] +[Access(typeof(SharedIdCardSystem))] +public sealed partial class ExpireIdCardComponent : Component +{ + /// + /// Whether this ID has expired yet and had its accesses replaced. + /// + [DataField, AutoNetworkedField] + public bool Expired; + + /// + /// Whether this card will expire at all. + /// + [DataField, AutoNetworkedField] + public bool Permanent; + + /// + /// The time at which this card will expire and the access will be removed. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField, AutoNetworkedField] + public TimeSpan ExpireTime = TimeSpan.Zero; + + /// + /// Access the replaces current access once this card expires. + /// + [DataField] + public HashSet> ExpiredAccess = new(); + + /// + /// Line spoken by the card when it expires. + /// + [DataField] + public LocId? ExpireMessage; +} diff --git a/Content.Shared/Access/Components/IdCardComponent.cs b/Content.Shared/Access/Components/IdCardComponent.cs index 3b8322671b..9ca82b67b4 100644 --- a/Content.Shared/Access/Components/IdCardComponent.cs +++ b/Content.Shared/Access/Components/IdCardComponent.cs @@ -36,6 +36,13 @@ public sealed partial class IdCardComponent : Component [AutoNetworkedField] public ProtoId JobIcon = "JobIconUnknown"; + /// + /// Holds the job prototype when the ID card has no associated station record + /// + [DataField] + [AutoNetworkedField] + public ProtoId? JobPrototype; + /// /// The proto IDs of the departments associated with the job /// diff --git a/Content.Shared/Access/Systems/SharedIdCardSystem.cs b/Content.Shared/Access/Systems/SharedIdCardSystem.cs index db7d9b38c8..69d77fe9ec 100644 --- a/Content.Shared/Access/Systems/SharedIdCardSystem.cs +++ b/Content.Shared/Access/Systems/SharedIdCardSystem.cs @@ -9,12 +9,15 @@ using Content.Shared.PDA; using Content.Shared.Roles; using Content.Shared.StatusIcon; using Robust.Shared.Prototypes; +using Robust.Shared.Timing; namespace Content.Shared.Access.Systems; public abstract class SharedIdCardSystem : EntitySystem { [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedAccessSystem _access = default!; [Dependency] private readonly InventorySystem _inventorySystem = default!; [Dependency] private readonly MetaDataSystem _metaSystem = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; @@ -256,4 +259,49 @@ public abstract class SharedIdCardSystem : EntitySystem return $"{idCardComponent.FullName} ({CultureInfo.CurrentCulture.TextInfo.ToTitleCase(idCardComponent.LocalizedJobTitle ?? string.Empty)})" .Trim(); } + + public void SetExpireTime(Entity ent, TimeSpan time) + { + if (!Resolve(ent, ref ent.Comp)) + return; + ent.Comp.ExpireTime = time; + Dirty(ent); + } + + public void SetPermanent(Entity ent, bool val) + { + if (!Resolve(ent, ref ent.Comp)) + return; + ent.Comp.Permanent = val; + Dirty(ent); + } + + /// + /// Marks an as expired, setting the accesses. + /// + public virtual void ExpireId(Entity ent) + { + if (ent.Comp.Expired) + return; + + _access.TrySetTags(ent, ent.Comp.ExpiredAccess); + ent.Comp.Expired = true; + Dirty(ent); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp)) + { + if (comp.Expired || comp.Permanent) + continue; + + if (_timing.CurTime < comp.ExpireTime) + continue; + + ExpireId((uid, comp)); + } + } } diff --git a/Content.Shared/Actions/BaseActionComponent.cs b/Content.Shared/Actions/BaseActionComponent.cs index 25b36df2af..05abe30f24 100644 --- a/Content.Shared/Actions/BaseActionComponent.cs +++ b/Content.Shared/Actions/BaseActionComponent.cs @@ -86,24 +86,6 @@ public abstract partial class BaseActionComponent : Component /// [DataField("useDelay")] public TimeSpan? UseDelay; - /// - /// Convenience tool for actions with limited number of charges. Automatically decremented on use, and the - /// action is disabled when it reaches zero. Does NOT automatically remove the action from the action bar. - /// However, charges will regenerate if is enabled and the action will not disable - /// when charges reach zero. - /// - [DataField("charges")] public int? Charges; - - /// - /// The max charges this action has. If null, this is set automatically from on mapinit. - /// - [DataField] public int? MaxCharges; - - /// - /// If enabled, charges will regenerate after a is complete - /// - [DataField("renewCharges")]public bool RenewCharges; - /// /// The entity that contains this action. If the action is innate, this may be the user themselves. /// This should almost always be non-null. @@ -209,9 +191,6 @@ public abstract class BaseActionComponentState : ComponentState public bool Toggled; public (TimeSpan Start, TimeSpan End)? Cooldown; public TimeSpan? UseDelay; - public int? Charges; - public int? MaxCharges; - public bool RenewCharges; public NetEntity? Container; public NetEntity? EntityIcon; public bool CheckCanInteract; @@ -243,9 +222,6 @@ public abstract class BaseActionComponentState : ComponentState Toggled = component.Toggled; Cooldown = component.Cooldown; UseDelay = component.UseDelay; - Charges = component.Charges; - MaxCharges = component.MaxCharges; - RenewCharges = component.RenewCharges; CheckCanInteract = component.CheckCanInteract; CheckConsciousness = component.CheckConsciousness; ClientExclusive = component.ClientExclusive; diff --git a/Content.Shared/Actions/Events/DisarmAttemptEvent.cs b/Content.Shared/Actions/Events/DisarmAttemptEvent.cs index 8252205846..002aaf33df 100644 --- a/Content.Shared/Actions/Events/DisarmAttemptEvent.cs +++ b/Content.Shared/Actions/Events/DisarmAttemptEvent.cs @@ -1,15 +1,21 @@ namespace Content.Shared.Actions.Events; -public sealed class DisarmAttemptEvent : CancellableEntityEventArgs +/// +/// Raised directed on the target OR their actively held entity. +/// +[ByRefEvent] +public record struct DisarmAttemptEvent { public readonly EntityUid TargetUid; public readonly EntityUid DisarmerUid; public readonly EntityUid? TargetItemInHandUid; + public bool Cancelled; + public DisarmAttemptEvent(EntityUid targetUid, EntityUid disarmerUid, EntityUid? targetItemInHandUid = null) { TargetUid = targetUid; DisarmerUid = disarmerUid; TargetItemInHandUid = targetItemInHandUid; } -} \ No newline at end of file +} diff --git a/Content.Shared/Actions/SharedActionsSystem.cs b/Content.Shared/Actions/SharedActionsSystem.cs index 37bbd97778..b5e8785c59 100644 --- a/Content.Shared/Actions/SharedActionsSystem.cs +++ b/Content.Shared/Actions/SharedActionsSystem.cs @@ -21,14 +21,14 @@ namespace Content.Shared.Actions; public abstract class SharedActionsSystem : EntitySystem { [Dependency] protected readonly IGameTiming GameTiming = default!; - [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; - [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; - [Dependency] private readonly RotateToFaceSystem _rotateToFaceSystem = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly SharedTransformSystem _transformSystem = default!; - [Dependency] private readonly ActionContainerSystem _actionContainer = default!; - [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; + [Dependency] private readonly ActionContainerSystem _actionContainer = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private readonly RotateToFaceSystem _rotateToFaceSystem = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly SharedTransformSystem _transformSystem = default!; public override void Initialize() { @@ -69,47 +69,9 @@ public abstract class SharedActionsSystem : EntitySystem SubscribeAllEvent(OnActionRequest); } - public override void Update(float frameTime) - { - base.Update(frameTime); - - var worldActionQuery = EntityQueryEnumerator(); - while (worldActionQuery.MoveNext(out var uid, out var action)) - { - if (IsCooldownActive(action) || !ShouldResetCharges(action)) - continue; - - ResetCharges(uid, dirty: true); - } - - var instantActionQuery = EntityQueryEnumerator(); - while (instantActionQuery.MoveNext(out var uid, out var action)) - { - if (IsCooldownActive(action) || !ShouldResetCharges(action)) - continue; - - ResetCharges(uid, dirty: true); - } - - var entityActionQuery = EntityQueryEnumerator(); - while (entityActionQuery.MoveNext(out var uid, out var action)) - { - if (IsCooldownActive(action) || !ShouldResetCharges(action)) - continue; - - ResetCharges(uid, dirty: true); - } - } - private void OnActionMapInit(EntityUid uid, BaseActionComponent component, MapInitEvent args) { component.OriginalIconColor = component.IconColor; - - if (component.Charges == null) - return; - - component.MaxCharges ??= component.Charges.Value; - Dirty(uid, component); } private void OnActionShutdown(EntityUid uid, BaseActionComponent component, ComponentShutdown args) @@ -324,68 +286,6 @@ public abstract class SharedActionsSystem : EntitySystem Dirty(actionId.Value, action); } - public void SetCharges(EntityUid? actionId, int? charges) - { - if (!TryGetActionData(actionId, out var action) || - action.Charges == charges) - { - return; - } - - action.Charges = charges; - UpdateAction(actionId, action); - Dirty(actionId.Value, action); - } - - public int? GetCharges(EntityUid? actionId) - { - if (!TryGetActionData(actionId, out var action)) - return null; - - return action.Charges; - } - - public void AddCharges(EntityUid? actionId, int addCharges) - { - if (!TryGetActionData(actionId, out var action) || action.Charges == null || addCharges < 1) - return; - - action.Charges += addCharges; - UpdateAction(actionId, action); - Dirty(actionId.Value, action); - } - - public void RemoveCharges(EntityUid? actionId, int? removeCharges) - { - if (!TryGetActionData(actionId, out var action) || action.Charges == null) - return; - - if (removeCharges == null) - action.Charges = removeCharges; - else - action.Charges -= removeCharges; - - if (action.Charges is < 0) - action.Charges = null; - - UpdateAction(actionId, action); - Dirty(actionId.Value, action); - } - - public void ResetCharges(EntityUid? actionId, bool update = false, bool dirty = false) - { - if (!TryGetActionData(actionId, out var action)) - return; - - action.Charges = action.MaxCharges; - - if (update) - UpdateAction(actionId, action); - - if (dirty) - Dirty(actionId.Value, action); - } - private void OnActionsGetState(EntityUid uid, ActionsComponent component, ref ComponentGetState args) { args.State = new ActionsComponentState(GetNetEntitySet(component.Actions)); @@ -428,6 +328,10 @@ public abstract class SharedActionsSystem : EntitySystem if (!action.Enabled) return; + var curTime = GameTiming.CurTime; + if (IsCooldownActive(action, curTime)) + return; + // check for action use prevention // TODO: make code below use this event with a dedicated component var attemptEv = new ActionAttemptEvent(user); @@ -435,14 +339,6 @@ public abstract class SharedActionsSystem : EntitySystem if (attemptEv.Cancelled) return; - var curTime = GameTiming.CurTime; - if (IsCooldownActive(action, curTime)) - return; - - // TODO: Replace with individual charge recovery when we have the visuals to aid it - if (action is { Charges: < 1, RenewCharges: true }) - ResetCharges(actionEnt, true, true); - BaseActionEvent? performEvent = null; if (action.CheckConsciousness && !_actionBlockerSystem.CanConsciouslyPerformAction(user)) @@ -633,13 +529,12 @@ public abstract class SharedActionsSystem : EntitySystem // even if we don't check for obstructions, we may still need to check the range. var xform = Transform(user); - if (xform.MapID != coords.GetMapId(EntityManager)) + if (xform.MapID != _transformSystem.GetMapId(coords)) return false; if (range <= 0) return true; - - return coords.InRange(EntityManager, _transformSystem, Transform(user).Coordinates, range); + return _transformSystem.InRange(coords, xform.Coordinates, range); } return _interactionSystem.InRangeUnobstructed(user, coords, range: range); @@ -717,16 +612,8 @@ public abstract class SharedActionsSystem : EntitySystem var dirty = toggledBefore != action.Toggled; - if (action.Charges != null) - { - dirty = true; - action.Charges--; - if (action is { Charges: 0, RenewCharges: false }) - action.Enabled = false; - } - //action.Cooldown = null; //CP14 - disabling auto cooldown after using - if (action is { UseDelay: not null, Charges: null or < 1 }) + if (action is { UseDelay: not null}) { dirty = true; action.Cooldown = (curTime, curTime + action.UseDelay.Value); @@ -1026,8 +913,6 @@ public abstract class SharedActionsSystem : EntitySystem if (!action.Enabled) return false; - if (action.Charges.HasValue && action.Charges <= 0) - return false; var curTime = GameTiming.CurTime; if (action.Cooldown.HasValue && action.Cooldown.Value.End > curTime) @@ -1137,15 +1022,9 @@ public abstract class SharedActionsSystem : EntitySystem /// /// Checks if the action has a cooldown and if it's still active /// - protected bool IsCooldownActive(BaseActionComponent action, TimeSpan? curTime = null) + public bool IsCooldownActive(BaseActionComponent action, TimeSpan? curTime = null) { - curTime ??= GameTiming.CurTime; // TODO: Check for charge recovery timer return action.Cooldown.HasValue && action.Cooldown.Value.End > curTime; } - - protected bool ShouldResetCharges(BaseActionComponent action) - { - return action is { Charges: < 1, RenewCharges: true }; - } } diff --git a/Content.Shared/Administration/Components/MarkerComponent.cs b/Content.Shared/Administration/Components/MarkerComponent.cs new file mode 100644 index 0000000000..b879595619 --- /dev/null +++ b/Content.Shared/Administration/Components/MarkerComponent.cs @@ -0,0 +1,19 @@ +namespace Content.Shared.Administration.Components; + +/// +/// This component does nothing. It exists for admin and testing purposes. +/// +/// +/// As an example, this component can be added to an entity and then used as +/// the target component for a pinpointer. +/// +[RegisterComponent] +public sealed partial class MarkerOneComponent : Component; + +/// +[RegisterComponent] +public sealed partial class MarkerTwoComponent : Component; + +/// +[RegisterComponent] +public sealed partial class MarkerThreeComponent : Component; diff --git a/Content.Shared/Administration/PlayerInfo.cs b/Content.Shared/Administration/PlayerInfo.cs index ef26ab4fca..5164425347 100644 --- a/Content.Shared/Administration/PlayerInfo.cs +++ b/Content.Shared/Administration/PlayerInfo.cs @@ -12,6 +12,7 @@ public sealed record PlayerInfo( string StartingJob, bool Antag, RoleTypePrototype RoleProto, + LocId? Subtype, int SortWeight, NetEntity? NetEntity, NetUserId SessionId, diff --git a/Content.Shared/Administration/PlayerPanelEuiState.cs b/Content.Shared/Administration/PlayerPanelEuiState.cs index 186b992e4e..8942cc8aab 100644 --- a/Content.Shared/Administration/PlayerPanelEuiState.cs +++ b/Content.Shared/Administration/PlayerPanelEuiState.cs @@ -1,12 +1,12 @@ using Content.Shared.Eui; using Robust.Shared.Network; using Robust.Shared.Serialization; -using YamlDotNet.Serialization.Callbacks; namespace Content.Shared.Administration; [Serializable, NetSerializable] -public sealed class PlayerPanelEuiState(NetUserId guid, +public sealed class PlayerPanelEuiState( + NetUserId guid, string username, TimeSpan playtime, int? totalNotes, @@ -52,3 +52,6 @@ public sealed class PlayerPanelDeleteMessage : EuiMessageBase; [Serializable, NetSerializable] public sealed class PlayerPanelRejuvenationMessage: EuiMessageBase; + +[Serializable, NetSerializable] +public sealed class PlayerPanelFollowMessage: EuiMessageBase; diff --git a/Content.Shared/Anomaly/SharedAnomalySystem.cs b/Content.Shared/Anomaly/SharedAnomalySystem.cs index 30a7cb04d0..61b8cc7f90 100644 --- a/Content.Shared/Anomaly/SharedAnomalySystem.cs +++ b/Content.Shared/Anomaly/SharedAnomalySystem.cs @@ -153,10 +153,11 @@ public abstract class SharedAnomalySystem : EntitySystem if (!Timing.IsFirstTimePredicted) return; - Audio.PlayPvs(component.SupercriticalSound, Transform(uid).Coordinates); - if (_net.IsServer) + { + Audio.PlayPvs(component.SupercriticalSound, Transform(uid).Coordinates); Log.Info($"Raising supercritical event. Entity: {ToPrettyString(uid)}"); + } var powerMod = 1f; if (component.CurrentBehavior != null) @@ -355,7 +356,7 @@ public abstract class SharedAnomalySystem : EntitySystem if (Timing.CurTime <= super.EndTime) continue; DoAnomalySupercriticalEvent(ent, anom); - RemComp(ent, super); + // Removal of the supercritical component is handled by DoAnomalySupercriticalEvent } } diff --git a/Content.Shared/Atmos/Components/ExtinguishableSetCollisionWakeComponent.cs b/Content.Shared/Atmos/Components/ExtinguishableSetCollisionWakeComponent.cs new file mode 100644 index 0000000000..19e471f0e5 --- /dev/null +++ b/Content.Shared/Atmos/Components/ExtinguishableSetCollisionWakeComponent.cs @@ -0,0 +1,11 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Atmos.Components; + +/// +/// Makes entities with extinguishing behavior automatically enable/disable , +/// so they can be extinguished with fire extinguishers. +/// +[RegisterComponent] +[NetworkedComponent] +public sealed partial class ExtinguishableSetCollisionWakeComponent : Component; diff --git a/Content.Shared/Atmos/Components/MovedByPressureComponent.cs b/Content.Shared/Atmos/Components/MovedByPressureComponent.cs index 8a4e2c6d4c..67647daa80 100644 --- a/Content.Shared/Atmos/Components/MovedByPressureComponent.cs +++ b/Content.Shared/Atmos/Components/MovedByPressureComponent.cs @@ -27,5 +27,11 @@ public sealed partial class MovedByPressureComponent : Component [ViewVariables(VVAccess.ReadWrite)] public int LastHighPressureMovementAirCycle { get; set; } = 0; + + /// + /// Used to remember which fixtures we have to remove the table mask from and give it back accordingly + /// + [DataField] + public HashSet TableLayerRemoved = new(); } diff --git a/Content.Shared/Atmos/EntitySystems/ExtinguishableSetCollisionWakeSystem.cs b/Content.Shared/Atmos/EntitySystems/ExtinguishableSetCollisionWakeSystem.cs new file mode 100644 index 0000000000..107ac5efd7 --- /dev/null +++ b/Content.Shared/Atmos/EntitySystems/ExtinguishableSetCollisionWakeSystem.cs @@ -0,0 +1,30 @@ +using Content.Shared.Atmos.Components; + +namespace Content.Shared.Atmos.EntitySystems; + +/// +/// Implements . +/// +public sealed class ExtinguishableSetCollisionWakeSystem : EntitySystem +{ + [Dependency] + private readonly CollisionWakeSystem _collisionWake = null!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(HandleExtinguished); + SubscribeLocalEvent(HandleIgnited); + } + + private void HandleExtinguished(Entity ent, ref ExtinguishedEvent args) + { + _collisionWake.SetEnabled(ent, true); + } + + private void HandleIgnited(Entity ent, ref IgnitedEvent args) + { + _collisionWake.SetEnabled(ent, false); + } +} diff --git a/Content.Shared/Atmos/FireEvents.cs b/Content.Shared/Atmos/FireEvents.cs new file mode 100644 index 0000000000..4e19ef6147 --- /dev/null +++ b/Content.Shared/Atmos/FireEvents.cs @@ -0,0 +1,42 @@ +using Content.Shared.Inventory; +using Content.Shared.Nutrition.Components; + +namespace Content.Shared.Atmos; + +// NOTE: These components are currently not raised on the client, only on the server. + +/// +/// An entity has had an existing effect applied to it. +/// +/// +/// This does not necessarily mean the effect is strong enough to fully extinguish the entity in one go. +/// +[ByRefEvent] +public struct ExtinguishEvent : IInventoryRelayEvent +{ + /// + /// Amount of firestacks changed. Should be a negative number. + /// + public float FireStacksAdjustment; + + SlotFlags IInventoryRelayEvent.TargetSlots => SlotFlags.WITHOUT_POCKET; +} + +/// +/// A flammable entity has been extinguished. +/// +/// +/// This can occur on both Flammable entities as well as . +/// +/// +[ByRefEvent] +public struct ExtinguishedEvent; + +/// +/// A flammable entity has been ignited. +/// +/// +/// This can occur on both Flammable entities as well as . +/// +[ByRefEvent] +public struct IgnitedEvent; diff --git a/Content.Shared/Atmos/Piping/Binary/Components/GasVolumePumpComponent.cs b/Content.Shared/Atmos/Piping/Binary/Components/GasVolumePumpComponent.cs new file mode 100644 index 0000000000..653f68ce6b --- /dev/null +++ b/Content.Shared/Atmos/Piping/Binary/Components/GasVolumePumpComponent.cs @@ -0,0 +1,45 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Atmos.Piping.Binary.Components; + +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +public sealed partial class GasVolumePumpComponent : Component +{ + [DataField, AutoNetworkedField] + public bool Enabled = true; + + [DataField] + public bool Blocked = false; + + [ViewVariables(VVAccess.ReadWrite)] + public bool Overclocked = false; + + [DataField("inlet")] + public string InletName = "inlet"; + + [DataField("outlet")] + public string OutletName = "outlet"; + + [DataField, AutoNetworkedField] + public float TransferRate = Atmospherics.MaxTransferRate; + + [DataField] + public float MaxTransferRate = Atmospherics.MaxTransferRate; + + [DataField] + public float LeakRatio = 0.1f; + + [DataField] + public float LowerThreshold = 0.01f; + + [DataField] + public float HigherThreshold = DefaultHigherThreshold; + + public static readonly float DefaultHigherThreshold = 2 * Atmospherics.MaxOutputPressure; + + [DataField] + public float OverclockThreshold = 1000; + + [DataField] + public float LastMolesTransferred; +} diff --git a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasVolumePumpComponent.cs b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasVolumePumpComponent.cs index d4315f86f5..f3b6bb8caf 100644 --- a/Content.Shared/Atmos/Piping/Binary/Components/SharedGasVolumePumpComponent.cs +++ b/Content.Shared/Atmos/Piping/Binary/Components/SharedGasVolumePumpComponent.cs @@ -5,26 +5,11 @@ namespace Content.Shared.Atmos.Piping.Binary.Components public sealed record GasVolumePumpData(float LastMolesTransferred); [Serializable, NetSerializable] - public enum GasVolumePumpUiKey + public enum GasVolumePumpUiKey : byte { Key, } - [Serializable, NetSerializable] - public sealed class GasVolumePumpBoundUserInterfaceState : BoundUserInterfaceState - { - public string PumpLabel { get; } - public float TransferRate { get; } - public bool Enabled { get; } - - public GasVolumePumpBoundUserInterfaceState(string pumpLabel, float transferRate, bool enabled) - { - PumpLabel = pumpLabel; - TransferRate = transferRate; - Enabled = enabled; - } - } - [Serializable, NetSerializable] public sealed class GasVolumePumpToggleStatusMessage : BoundUserInterfaceMessage { diff --git a/Content.Shared/Atmos/Piping/Binary/Systems/SharedGasVolumePumpSystem.cs b/Content.Shared/Atmos/Piping/Binary/Systems/SharedGasVolumePumpSystem.cs new file mode 100644 index 0000000000..660f17b42f --- /dev/null +++ b/Content.Shared/Atmos/Piping/Binary/Systems/SharedGasVolumePumpSystem.cs @@ -0,0 +1,91 @@ +using Content.Shared.Administration.Logs; +using Content.Shared.Atmos.Piping.Binary.Components; +using Content.Shared.Atmos.Visuals; +using Content.Shared.Database; +using Content.Shared.Examine; +using Content.Shared.Power; +using Content.Shared.Power.EntitySystems; + +namespace Content.Shared.Atmos.Piping.Binary.Systems; + +public abstract class SharedGasVolumePumpSystem : EntitySystem +{ + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] private readonly SharedPowerReceiverSystem _receiver = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnInit); + SubscribeLocalEvent(OnPowerChanged); + + SubscribeLocalEvent(OnExamined); + SubscribeLocalEvent(OnToggleStatusMessage); + SubscribeLocalEvent(OnTransferRateChangeMessage); + } + + private void OnInit(Entity ent, ref ComponentInit args) + { + UpdateAppearance(ent.Owner, ent.Comp); + } + + private void OnPowerChanged(Entity ent, ref PowerChangedEvent args) + { + UpdateAppearance(ent.Owner, ent.Comp); + } + + protected virtual void UpdateUi(Entity entity) + { + + } + + private void OnToggleStatusMessage(EntityUid uid, GasVolumePumpComponent pump, GasVolumePumpToggleStatusMessage args) + { + pump.Enabled = args.Enabled; + _adminLogger.Add(LogType.AtmosPowerChanged, LogImpact.Medium, + $"{ToPrettyString(args.Actor):player} set the power on {ToPrettyString(uid):device} to {args.Enabled}"); + + Dirty(uid, pump); + UpdateUi((uid, pump)); + UpdateAppearance(uid, pump); + } + + private void OnTransferRateChangeMessage(EntityUid uid, GasVolumePumpComponent pump, GasVolumePumpChangeTransferRateMessage args) + { + pump.TransferRate = Math.Clamp(args.TransferRate, 0f, pump.MaxTransferRate); + Dirty(uid, pump); + UpdateUi((uid, pump)); + _adminLogger.Add(LogType.AtmosVolumeChanged, LogImpact.Medium, + $"{ToPrettyString(args.Actor):player} set the transfer rate on {ToPrettyString(uid):device} to {args.TransferRate}"); + } + + private void OnExamined(EntityUid uid, GasVolumePumpComponent pump, ExaminedEvent args) + { + if (!Transform(uid).Anchored) + return; + + if (Loc.TryGetString("gas-volume-pump-system-examined", + out var str, + ("statusColor", "lightblue"), // TODO: change with volume? + ("rate", pump.TransferRate) + )) + { + args.PushMarkup(str); + } + } + + protected void UpdateAppearance(EntityUid uid, GasVolumePumpComponent? pump = null, AppearanceComponent? appearance = null) + { + if (!Resolve(uid, ref pump, ref appearance, false)) + return; + + bool pumpOn = pump.Enabled && _receiver.IsPowered(uid); + if (!pumpOn) + _appearance.SetData(uid, GasVolumePumpVisuals.State, GasVolumePumpState.Off, appearance); + else if (pump.Blocked) + _appearance.SetData(uid, GasVolumePumpVisuals.State, GasVolumePumpState.Blocked, appearance); + else + _appearance.SetData(uid, GasVolumePumpVisuals.State, GasVolumePumpState.On, appearance); + } +} diff --git a/Content.Shared/Bed/Cryostorage/SharedCryostorageSystem.cs b/Content.Shared/Bed/Cryostorage/SharedCryostorageSystem.cs index f6b7a34785..1e2b15c8ce 100644 --- a/Content.Shared/Bed/Cryostorage/SharedCryostorageSystem.cs +++ b/Content.Shared/Bed/Cryostorage/SharedCryostorageSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Mobs.Systems; using Robust.Shared.Configuration; using Robust.Shared.Containers; using Robust.Shared.Map; +using Robust.Shared.Player; using Robust.Shared.Timing; namespace Content.Shared.Bed.Cryostorage; @@ -17,13 +18,15 @@ namespace Content.Shared.Bed.Cryostorage; /// public abstract class SharedCryostorageSystem : EntitySystem { - [Dependency] protected readonly ISharedAdminLogManager AdminLog = default!; - [Dependency] private readonly IConfigurationManager _configuration = default!; + [Dependency] private readonly IConfigurationManager _configuration = default!; + [Dependency] private readonly IMapManager _mapManager = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + [Dependency] private readonly MobStateSystem _mobState = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] protected readonly IGameTiming Timing = default!; - [Dependency] private readonly IMapManager _mapManager = default!; - [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] protected readonly ISharedAdminLogManager AdminLog = default!; [Dependency] protected readonly SharedMindSystem Mind = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; protected EntityUid? PausedMap { get; private set; } @@ -123,7 +126,8 @@ public abstract class SharedCryostorageSystem : EntitySystem if (args.Dragged == args.User) return; - if (!Mind.TryGetMind(args.Dragged, out _, out var mindComp) || mindComp.Session?.AttachedEntity != args.Dragged) + if (!_player.TryGetSessionByEntity(args.Dragged, out var session) || + session.AttachedEntity != args.Dragged) return; args.CanDrop = false; @@ -165,9 +169,8 @@ public abstract class SharedCryostorageSystem : EntitySystem if (PausedMap != null && Exists(PausedMap)) return; - var map = _mapManager.CreateMap(); - _mapManager.SetMapPaused(map, true); - PausedMap = _mapManager.GetMapEntityId(map); + PausedMap = _map.CreateMap(); + _map.SetPaused(PausedMap.Value, true); } public bool IsInPausedMap(Entity entity) diff --git a/Content.Shared/Blocking/BlockingSystem.cs b/Content.Shared/Blocking/BlockingSystem.cs index 594d1baf6c..c920fde13b 100644 --- a/Content.Shared/Blocking/BlockingSystem.cs +++ b/Content.Shared/Blocking/BlockingSystem.cs @@ -13,13 +13,9 @@ using Content.Shared.Physics; using Content.Shared.Popups; using Content.Shared.Toggleable; using Content.Shared.Verbs; -using Robust.Shared.Network; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; -using Robust.Shared.Player; -using Robust.Shared.Prototypes; -using Robust.Shared.Timing; using Robust.Shared.Utility; namespace Content.Shared.Blocking; @@ -35,8 +31,6 @@ public sealed partial class BlockingSystem : EntitySystem [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly ExamineSystemShared _examine = default!; - [Dependency] private readonly INetManager _net = default!; - [Dependency] private readonly IGameTiming _gameTiming = default!; public override void Initialize() { @@ -156,61 +150,53 @@ public sealed partial class BlockingSystem : EntitySystem var msgUser = Loc.GetString("action-popup-blocking-user", ("shield", shieldName)); var msgOther = Loc.GetString("action-popup-blocking-other", ("blockerName", blockerName), ("shield", shieldName)); - if (component.BlockingToggleAction != null) + //Don't allow someone to block if they're not parented to a grid + if (xform.GridUid != xform.ParentUid) { - //Don't allow someone to block if they're not parented to a grid - if (xform.GridUid != xform.ParentUid) - { - CantBlockError(user); - return false; - } + CantBlockError(user); + return false; + } - // Don't allow someone to block if they're not holding the shield - if(!_handsSystem.IsHolding(user, item, out _)) - { - CantBlockError(user); - return false; - } + // Don't allow someone to block if they're not holding the shield + if (!_handsSystem.IsHolding(user, item, out _)) + { + CantBlockError(user); + return false; + } - //Don't allow someone to block if someone else is on the same tile - var playerTileRef = xform.Coordinates.GetTileRef(); - if (playerTileRef != null) + //Don't allow someone to block if someone else is on the same tile + var playerTileRef = xform.Coordinates.GetTileRef(); + if (playerTileRef != null) + { + var intersecting = _lookup.GetLocalEntitiesIntersecting(playerTileRef.Value, 0f); + var mobQuery = GetEntityQuery(); + foreach (var uid in intersecting) { - var intersecting = _lookup.GetLocalEntitiesIntersecting(playerTileRef.Value, 0f); - var mobQuery = GetEntityQuery(); - foreach (var uid in intersecting) + if (uid != user && mobQuery.HasComponent(uid)) { - if (uid != user && mobQuery.HasComponent(uid)) - { - TooCloseError(user); - return false; - } + TooCloseError(user); + return false; } } - - //Don't allow someone to block if they're somehow not anchored. - _transformSystem.AnchorEntity(user, xform); - if (!xform.Anchored) - { - CantBlockError(user); - return false; - } - _actionsSystem.SetToggled(component.BlockingToggleActionEntity, true); - if (_gameTiming.IsFirstTimePredicted) - { - _popupSystem.PopupEntity(msgOther, user, Filter.PvsExcept(user), true); - if(_gameTiming.InPrediction) - _popupSystem.PopupEntity(msgUser, user, user); - } } + //Don't allow someone to block if they're somehow not anchored. + _transformSystem.AnchorEntity(user, xform); + if (!xform.Anchored) + { + CantBlockError(user); + return false; + } + _actionsSystem.SetToggled(component.BlockingToggleActionEntity, true); + _popupSystem.PopupPredicted(msgUser, msgOther, user, user); + if (TryComp(user, out var physicsComponent)) { _fixtureSystem.TryCreateFixture(user, component.Shape, BlockingComponent.BlockFixtureID, hard: true, - collisionLayer: (int) CollisionGroup.WallLayer, + collisionLayer: (int)CollisionGroup.WallLayer, body: physicsComponent); } @@ -223,13 +209,13 @@ public sealed partial class BlockingSystem : EntitySystem private void CantBlockError(EntityUid user) { var msgError = Loc.GetString("action-popup-blocking-user-cant-block"); - _popupSystem.PopupEntity(msgError, user, user); + _popupSystem.PopupClient(msgError, user, user); } private void TooCloseError(EntityUid user) { var msgError = Loc.GetString("action-popup-blocking-user-too-close"); - _popupSystem.PopupEntity(msgError, user, user); + _popupSystem.PopupClient(msgError, user, user); } /// @@ -255,8 +241,7 @@ public sealed partial class BlockingSystem : EntitySystem //If the component blocking toggle isn't null, grab the users SharedBlockingUserComponent and PhysicsComponent //then toggle the action to false, unanchor the user, remove the hard fixture //and set the users bodytype back to their original type - if (component.BlockingToggleAction != null && TryComp(user, out var blockingUserComponent) - && TryComp(user, out var physicsComponent)) + if (TryComp(user, out var blockingUserComponent) && TryComp(user, out var physicsComponent)) { if (xform.Anchored) _transformSystem.Unanchor(user, xform); @@ -264,12 +249,7 @@ public sealed partial class BlockingSystem : EntitySystem _actionsSystem.SetToggled(component.BlockingToggleActionEntity, false); _fixtureSystem.DestroyFixture(user, BlockingComponent.BlockFixtureID, body: physicsComponent); _physics.SetBodyType(user, blockingUserComponent.OriginalBodyType, body: physicsComponent); - if (_gameTiming.IsFirstTimePredicted) - { - _popupSystem.PopupEntity(msgOther, user, Filter.PvsExcept(user), true); - if(_gameTiming.InPrediction) - _popupSystem.PopupEntity(msgUser, user, user); - } + _popupSystem.PopupPredicted(msgUser, msgOther, user, user); } component.IsBlocking = false; @@ -313,7 +293,7 @@ public sealed partial class BlockingSystem : EntitySystem private void OnVerbExamine(EntityUid uid, BlockingComponent component, GetVerbsEvent args) { - if (!args.CanInteract || !args.CanAccess || !_net.IsServer) + if (!args.CanInteract || !args.CanAccess) return; var fraction = component.IsBlocking ? component.ActiveBlockFraction : component.PassiveBlockFraction; diff --git a/Content.Shared/Blocking/Components/BlockingComponent.cs b/Content.Shared/Blocking/Components/BlockingComponent.cs index f869c20679..126b64a459 100644 --- a/Content.Shared/Blocking/Components/BlockingComponent.cs +++ b/Content.Shared/Blocking/Components/BlockingComponent.cs @@ -16,13 +16,13 @@ public sealed partial class BlockingComponent : Component /// /// The entity that's blocking /// - [ViewVariables, AutoNetworkedField] + [DataField, AutoNetworkedField] public EntityUid? User; /// /// Is it currently blocking? /// - [ViewVariables, AutoNetworkedField] + [DataField, AutoNetworkedField] public bool IsBlocking; /// @@ -33,7 +33,7 @@ public sealed partial class BlockingComponent : Component /// /// The shape of the blocking fixture that will be dynamically spawned /// - [DataField("shape"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public IPhysShape Shape = new PhysShapeCircle(0.5f); /// @@ -48,8 +48,8 @@ public sealed partial class BlockingComponent : Component [DataField("activeBlockModifier", required: true)] public DamageModifierSet ActiveBlockDamageModifier = default!; - [DataField("blockingToggleAction", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string BlockingToggleAction = "ActionToggleBlock"; + [DataField] + public EntProtoId BlockingToggleAction = "ActionToggleBlock"; [DataField, AutoNetworkedField] public EntityUid? BlockingToggleActionEntity; @@ -57,7 +57,7 @@ public sealed partial class BlockingComponent : Component /// /// The sound to be played when you get hit while actively blocking /// - [DataField("blockSound")] public SoundSpecifier BlockSound = + [DataField] public SoundSpecifier BlockSound = new SoundPathSpecifier("/Audio/Weapons/block_metal1.ogg") { Params = AudioParams.Default.WithVariation(0.25f) @@ -67,13 +67,13 @@ public sealed partial class BlockingComponent : Component /// Fraction of original damage shield will take instead of user /// when not blocking /// - [DataField("passiveBlockFraction"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public float PassiveBlockFraction = 0.5f; /// /// Fraction of original damage shield will take instead of user /// when blocking /// - [DataField("activeBlockFraction"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public float ActiveBlockFraction = 1.0f; } diff --git a/Content.Shared/Body/Prototypes/BodyPrototypeSerializer.cs b/Content.Shared/Body/Prototypes/BodyPrototypeSerializer.cs index ae09976704..338e6c8ab8 100644 --- a/Content.Shared/Body/Prototypes/BodyPrototypeSerializer.cs +++ b/Content.Shared/Body/Prototypes/BodyPrototypeSerializer.cs @@ -40,12 +40,6 @@ public sealed class BodyPrototypeSerializer : ITypeReader("slots"); var allConnections = new Dictionary? Connections, Dictionary? Organs)>(); - foreach (var (keyNode, valueNode) in slotNodes) + foreach (var (slotId, valueNode) in slotNodes) { - var slotId = ((ValueDataNode) keyNode).Value; - var slot = ((MappingDataNode) valueNode); + var slot = (MappingDataNode) valueNode; string? part = null; if (slot.TryGet("part", out var value)) @@ -155,9 +142,9 @@ public sealed class BodyPrototypeSerializer : ITypeReader(); - foreach (var (organKeyNode, organValueNode) in slotOrgansNode) + foreach (var (organKey, organValueNode) in slotOrgansNode) { - organs.Add(((ValueDataNode) organKeyNode).Value, ((ValueDataNode) organValueNode).Value); + organs.Add(organKey, ((ValueDataNode) organValueNode).Value); } } diff --git a/Content.Shared/CCVar/CCVars.Cargo.cs b/Content.Shared/CCVar/CCVars.Cargo.cs new file mode 100644 index 0000000000..dd47bfbb76 --- /dev/null +++ b/Content.Shared/CCVar/CCVars.Cargo.cs @@ -0,0 +1,26 @@ +using Robust.Shared.Configuration; + +namespace Content.Shared.CCVar; + +public sealed partial class CCVars +{ + /// + /// Whether or not the primary account of a bank should be listed + /// in the funding allocation console + /// + public static readonly CVarDef AllowPrimaryAccountAllocation = + CVarDef.Create("cargo.allow_primary_account_allocation", false, CVar.REPLICATED); + + /// + /// Whether or not the primary cut of a bank should be manipulable + /// in the funding allocation console + /// + public static readonly CVarDef AllowPrimaryCutAdjustment = + CVarDef.Create("cargo.allow_primary_cut_adjustment", true, CVar.REPLICATED); + + /// + /// Whether or not the separate lockbox cut is enabled + /// + public static readonly CVarDef LockboxCutEnabled = + CVarDef.Create("cargo.enable_lockbox_cut", true, CVar.REPLICATED); +} diff --git a/Content.Shared/CCVar/CCVars.Interface.cs b/Content.Shared/CCVar/CCVars.Interface.cs index 85e06def61..fadf7a4862 100644 --- a/Content.Shared/CCVar/CCVars.Interface.cs +++ b/Content.Shared/CCVar/CCVars.Interface.cs @@ -38,10 +38,13 @@ public sealed partial class CCVars CVarDef.Create("outline.enabled", true, CVar.CLIENTONLY); /// - /// If true, the admin overlay will be displayed in the old style (showing only "ANTAG") + /// Determines how antagonist status/roletype is displayed. Based on AdminOverlayAntagFormats enum + /// Binary: Roletypes of interest get an "ANTAG" label + /// Roletype: Roletypes of interest will have their roletype name displayed in their specific color + /// Subtype: Roletypes of interest will have their subtype displayed. if subtype is not set, roletype will be shown. /// - public static readonly CVarDef AdminOverlayClassic = - CVarDef.Create("ui.admin_overlay_classic", false, CVar.CLIENTONLY | CVar.ARCHIVE); + public static readonly CVarDef AdminOverlayAntagFormat = + CVarDef.Create("ui.admin_overlay_antag_format", "Subtype", CVar.CLIENTONLY | CVar.ARCHIVE); /// /// If true, the admin overlay will display the total time of the players @@ -50,34 +53,48 @@ public sealed partial class CCVars CVarDef.Create("ui.admin_overlay_playtime", true, CVar.CLIENTONLY | CVar.ARCHIVE); /// - /// If true, the admin overlay will display the players starting position. + /// If true, the admin overlay will display the player's starting role. /// public static readonly CVarDef AdminOverlayStartingJob = CVarDef.Create("ui.admin_overlay_starting_job", true, CVar.CLIENTONLY | CVar.ARCHIVE); /// - /// If true, the admin window player tab will show different antag symbols for each role type + /// Determines how antagonist status/roletype is displayed Before character names on the Player Tab + /// Off: No symbol is shown. + /// Basic: The same antag symbol is shown for anyone marked as antag. + /// Specific: The roletype-specific symbol is shown for anyone marked as antag. /// - public static readonly CVarDef AdminPlayerlistSeparateSymbols = - CVarDef.Create("ui.admin_playerlist_separate_symbols", false, CVar.CLIENTONLY | CVar.ARCHIVE); + public static readonly CVarDef AdminPlayerTabSymbolSetting = + CVarDef.Create("ui.admin_player_tab_symbols", "Specific", CVar.CLIENTONLY | CVar.ARCHIVE); /// - /// If true, characters with antag role types will have their names colored by their role type + /// Determines what columns are colorized + /// Off: None. + /// Character: The character names of "roletypes-of-interest" have their role type's color. + /// Roletype: Role types are shown in their respective colors. + /// Both: Both characters and role types are colorized. /// - public static readonly CVarDef AdminPlayerlistHighlightedCharacterColor = - CVarDef.Create("ui.admin_playerlist_highlighted_character_color", true, CVar.CLIENTONLY | CVar.ARCHIVE); + public static readonly CVarDef AdminPlayerTabColorSetting = + CVarDef.Create("ui.admin_player_tab_color", "Both", CVar.CLIENTONLY | CVar.ARCHIVE); /// - /// If true, the Role Types column will be colored + /// Determines what's displayed in the Role column - role type, subtype, or both. + /// RoleType + /// SubType + /// RoleTypeSubtype + /// SubtypeRoleType /// - public static readonly CVarDef AdminPlayerlistRoleTypeColor = - CVarDef.Create("ui.admin_playerlist_role_type_color", true, CVar.CLIENTONLY | CVar.ARCHIVE); + public static readonly CVarDef AdminPlayerTabRoleSetting = + CVarDef.Create("ui.admin_player_tab_role", "Subtype", CVar.CLIENTONLY | CVar.ARCHIVE); /// - /// If true, the admin overlay will show antag symbols + /// Determines how antagonist status/roletype is displayed. Based on AdminOverlayAntagSymbolStyles enum + /// Off: No symbol is shown. + /// Basic: The same antag symbol is shown for anyone marked as antag. + /// Specific: The roletype-specific symbol is shown for anyone marked as antag. /// - public static readonly CVarDef AdminOverlaySymbols = - CVarDef.Create("ui.admin_overlay_symbols", true, CVar.CLIENTONLY | CVar.ARCHIVE); + public static readonly CVarDef AdminOverlaySymbolStyle = + CVarDef.Create("ui.admin_overlay_symbol_style", "Specific", CVar.CLIENTONLY | CVar.ARCHIVE); /// /// The range (in tiles) around the cursor within which the admin overlays of ghosts start to fade out diff --git a/Content.Shared/CCVar/CCVars.Shuttle.cs b/Content.Shared/CCVar/CCVars.Shuttle.cs index 3f0f99bf4e..640a440626 100644 --- a/Content.Shared/CCVar/CCVars.Shuttle.cs +++ b/Content.Shared/CCVar/CCVars.Shuttle.cs @@ -182,4 +182,16 @@ public sealed partial class CCVars /// public static readonly CVarDef EmergencyShuttleAutoCallExtensionTime = CVarDef.Create("shuttle.auto_call_extension_time", 45, CVar.SERVERONLY); + + /// + /// Impulse multiplier for player interactions that move grids (other than shuttle thrusters, gyroscopes and grid collisons). + /// At the moment this only affects the pushback in SpraySystem. + /// A higher value means grids have a lower effective mass and therefore will get pushed stronger. + /// A value of 0 will disable pushback. + /// The default has been chosen such that a one tile grid roughly equals 2/3 Urist masses. + /// TODO: Make grid mass a sane number so we can get rid of this. + /// At the moment they have a very low mass of roughly 0.48 kg per tile independent of any walls or anchored objects on them. + /// + public static readonly CVarDef GridImpulseMultiplier = + CVarDef.Create("shuttle.grid_impulse_multiplier", 0.01f, CVar.SERVERONLY); } diff --git a/Content.Shared/Cargo/BUI/CargoConsoleInterfaceState.cs b/Content.Shared/Cargo/BUI/CargoConsoleInterfaceState.cs index a1e61772cd..7084477f24 100644 --- a/Content.Shared/Cargo/BUI/CargoConsoleInterfaceState.cs +++ b/Content.Shared/Cargo/BUI/CargoConsoleInterfaceState.cs @@ -8,15 +8,15 @@ public sealed class CargoConsoleInterfaceState : BoundUserInterfaceState public string Name; public int Count; public int Capacity; - public int Balance; + public NetEntity Station; public List Orders; - public CargoConsoleInterfaceState(string name, int count, int capacity, int balance, List orders) + public CargoConsoleInterfaceState(string name, int count, int capacity, NetEntity station, List orders) { Name = name; Count = count; Capacity = capacity; - Balance = balance; + Station = station; Orders = orders; } -} \ No newline at end of file +} diff --git a/Content.Shared/Cargo/Components/BankClientComponent.cs b/Content.Shared/Cargo/Components/BankClientComponent.cs deleted file mode 100644 index a2bf804570..0000000000 --- a/Content.Shared/Cargo/Components/BankClientComponent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared.Cargo.Components; - -/// -/// Makes an entity a client of the station's bank account. -/// When its balance changes it will have raised on it. -/// Other systems can then use this for logic or to update ui states. -/// -[RegisterComponent, NetworkedComponent, Access(typeof(SharedCargoSystem))] -[AutoGenerateComponentState] -public sealed partial class BankClientComponent : Component -{ - /// - /// The balance updated for the last station this entity was a part of. - /// - [DataField, AutoNetworkedField] - public int Balance; -} - -/// -/// Raised on an entity with when the bank's balance is updated. -/// -[ByRefEvent] -public readonly record struct BankBalanceUpdatedEvent(EntityUid Station, int Balance); diff --git a/Content.Shared/Cargo/Components/CargoOrderConsoleComponent.cs b/Content.Shared/Cargo/Components/CargoOrderConsoleComponent.cs index 873e9bb7b9..90abfe8bfa 100644 --- a/Content.Shared/Cargo/Components/CargoOrderConsoleComponent.cs +++ b/Content.Shared/Cargo/Components/CargoOrderConsoleComponent.cs @@ -1,33 +1,121 @@ +using Content.Shared.Access; using Content.Shared.Cargo.Prototypes; using Robust.Shared.Audio; using Robust.Shared.GameStates; using Content.Shared.Radio; +using Content.Shared.Stacks; using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Cargo.Components; /// /// Handles sending order requests to cargo. Doesn't handle orders themselves via shuttle or telepads. /// -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] +[Access(typeof(SharedCargoSystem))] public sealed partial class CargoOrderConsoleComponent : Component { - [DataField("soundError")] public SoundSpecifier ErrorSound = - new SoundPathSpecifier("/Audio/Effects/Cargo/buzz_sigh.ogg"); + /// + /// The account that this console pulls from for ordering. + /// + [DataField] + public ProtoId Account = "Cargo"; - [DataField("soundConfirm")] - public SoundSpecifier ConfirmSound = new SoundPathSpecifier("/Audio/Effects/Cargo/ping.ogg"); + [DataField] + public SoundSpecifier ErrorSound = new SoundCollectionSpecifier("CargoError"); + + /// + /// Sound made when is toggled. + /// + [DataField] + public SoundSpecifier ToggleLimitSound = new SoundCollectionSpecifier("CargoToggleLimit"); + + /// + /// If true, account transfers have no limit and a lower cooldown. + /// + [DataField, AutoNetworkedField] + public bool TransferUnbounded; + + [ViewVariables] + public float TransferLimit => TransferUnbounded ? 1 : BaseTransferLimit; + + /// + /// The maximum percent of total funds that can be transferred or withdrawn in one action. + /// + [DataField, AutoNetworkedField] + public float BaseTransferLimit = 0.20f; + + /// + /// The time at which account actions can be performed again. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField, AutoPausedField] + public TimeSpan NextAccountActionTime; + + [ViewVariables] + public TimeSpan AccountActionDelay => TransferUnbounded ? UnboundedAccountActionDelay : BaseAccountActionDelay; + + /// + /// The minimum time between account actions when is false + /// + [DataField] + public TimeSpan BaseAccountActionDelay = TimeSpan.FromMinutes(1); + + /// + /// The minimum time between account actions when is true + /// + [DataField] + public TimeSpan UnboundedAccountActionDelay = TimeSpan.FromSeconds(10); + + /// + /// The stack representing cash dispensed on withdrawals. + /// + [DataField] + public ProtoId CashType = "Credit"; /// /// All of the s that are supported. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField, AutoNetworkedField] public List AllowedGroups = new() { "market" }; + /// + /// Access needed to toggle the limit on this console. + /// + [DataField] + public HashSet> RemoveLimitAccess = new(); + /// /// Radio channel on which order approval announcements are transmitted /// [DataField, ViewVariables(VVAccess.ReadWrite)] public ProtoId AnnouncementChannel = "Supply"; + + /// + /// Secondary radio channel which always receives order announcements. + /// + public static readonly ProtoId BaseAnnouncementChannel = "Supply"; } +/// +/// Withdraw funds from an account +/// +[Serializable, NetSerializable] +public sealed class CargoConsoleWithdrawFundsMessage : BoundUserInterfaceMessage +{ + public ProtoId? Account; + public int Amount; + + public CargoConsoleWithdrawFundsMessage(ProtoId? account, int amount) + { + Account = account; + Amount = amount; + } +} + +/// +/// Toggle the limit on withdrawals and transfers. +/// +[Serializable, NetSerializable] +public sealed class CargoConsoleToggleLimitMessage : BoundUserInterfaceMessage; diff --git a/Content.Shared/Cargo/Components/FundingAllocationConsoleComponent.cs b/Content.Shared/Cargo/Components/FundingAllocationConsoleComponent.cs new file mode 100644 index 0000000000..d4afd72309 --- /dev/null +++ b/Content.Shared/Cargo/Components/FundingAllocationConsoleComponent.cs @@ -0,0 +1,53 @@ +using Content.Shared.Cargo.Prototypes; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.Cargo.Components; + +/// +/// A console that manipulates the distribution of revenue on the station. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(SharedCargoSystem))] +public sealed partial class FundingAllocationConsoleComponent : Component +{ + /// + /// Sound played when the budget distribution is set. + /// + [DataField] + public SoundSpecifier SetDistributionSound = new SoundCollectionSpecifier("CargoPing"); +} + +[Serializable, NetSerializable] +public sealed class SetFundingAllocationBuiMessage : BoundUserInterfaceMessage +{ + public Dictionary, int> Percents; + public double PrimaryCut; + public double LockboxCut; + + public SetFundingAllocationBuiMessage(Dictionary, int> percents, double primaryCut, double lockboxCut) + { + Percents = percents; + PrimaryCut = primaryCut; + LockboxCut = lockboxCut; + } +} + +[Serializable, NetSerializable] +public sealed class FundingAllocationConsoleBuiState : BoundUserInterfaceState +{ + public NetEntity Station; + + public FundingAllocationConsoleBuiState(NetEntity station) + { + Station = station; + } +} + +[Serializable, NetSerializable] +public enum FundingAllocationConsoleUiKey : byte +{ + Key +} diff --git a/Content.Shared/Cargo/Components/OverrideSellComponent.cs b/Content.Shared/Cargo/Components/OverrideSellComponent.cs new file mode 100644 index 0000000000..7d798c9ad1 --- /dev/null +++ b/Content.Shared/Cargo/Components/OverrideSellComponent.cs @@ -0,0 +1,17 @@ +using Content.Shared.Cargo.Prototypes; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Cargo.Components; + +/// +/// Makes a sellable object portion out its value to a specified department rather than the station default +/// +[RegisterComponent] +public sealed partial class OverrideSellComponent : Component +{ + /// + /// The account that will receive the primary funds from this being sold. + /// + [DataField(required: true)] + public ProtoId OverrideAccount; +} diff --git a/Content.Shared/Cargo/Components/StationBankAccountComponent.cs b/Content.Shared/Cargo/Components/StationBankAccountComponent.cs new file mode 100644 index 0000000000..944f03cd72 --- /dev/null +++ b/Content.Shared/Cargo/Components/StationBankAccountComponent.cs @@ -0,0 +1,83 @@ +using Content.Shared.Cargo.Prototypes; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.Cargo.Components; + +/// +/// Added to the abstract representation of a station to track its money. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedCargoSystem)), AutoGenerateComponentPause, AutoGenerateComponentState] +public sealed partial class StationBankAccountComponent : Component +{ + /// + /// The account that receives funds by default + /// + [DataField, AutoNetworkedField] + public ProtoId PrimaryAccount = "Cargo"; + + /// + /// When giving funds to a particular account, the proportion of funds they should receive compared to remaining accounts. + /// + [DataField, AutoNetworkedField] + public double PrimaryCut = 0.50; + + /// + /// When giving funds to a particular account from an override sell, the proportion of funds they should receive compared to remaining accounts. + /// + [DataField, AutoNetworkedField] + public double LockboxCut = 0.75; + + /// + /// A dictionary corresponding to the money held by each cargo account. + /// + [DataField, AutoNetworkedField] + public Dictionary, int> Accounts = new() + { + { "Cargo", 2000 }, + { "Engineering", 1000 }, + { "Medical", 1000 }, + { "Science", 1000 }, + { "Security", 1000 }, + { "Service", 1000 }, + }; + + /// + /// A baseline distribution used for income and dispersing leftovers after sale. + /// + [DataField, AutoNetworkedField] + public Dictionary, double> RevenueDistribution = new() + { + { "Cargo", 0.00 }, + { "Engineering", 0.20 }, + { "Medical", 0.20 }, + { "Science", 0.20 }, + { "Security", 0.20 }, + { "Service", 0.20 }, + }; + + /// + /// How much the bank balance goes up per second, every Delay period. Rounded down when multiplied. + /// + [DataField] + public int IncreasePerSecond = 2; + + /// + /// The time at which the station will receive its next deposit of passive income + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField] + public TimeSpan NextIncomeTime; + + /// + /// How much time to wait (in seconds) before increasing bank accounts balance. + /// + [DataField] + public TimeSpan IncomeDelay = TimeSpan.FromSeconds(50); +} + +/// +/// Broadcast and raised on station ent whenever its balance is updated. +/// +[ByRefEvent] +public readonly record struct BankBalanceUpdatedEvent(EntityUid Station, Dictionary, int> Balance); diff --git a/Content.Shared/Cargo/Prototypes/CargoAccountPrototype.cs b/Content.Shared/Cargo/Prototypes/CargoAccountPrototype.cs new file mode 100644 index 0000000000..185c8f909a --- /dev/null +++ b/Content.Shared/Cargo/Prototypes/CargoAccountPrototype.cs @@ -0,0 +1,39 @@ +using Content.Shared.Radio; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Cargo.Prototypes; + +/// +/// This is a prototype for a single account that stores money on StationBankAccountComponent +/// +[Prototype] +public sealed partial class CargoAccountPrototype : IPrototype +{ + /// + [IdDataField] + public string ID { get; } = default!; + + /// + /// Full IC name of the account. + /// + [DataField] + public LocId Name; + + /// + /// A shortened code used to refer to the account in UIs + /// + [DataField] + public LocId Code; + + /// + /// Color corresponding to the account. + /// + [DataField] + public Color Color; + + /// + /// Channel used for announcing transactions. + /// + [DataField] + public ProtoId RadioChannel; +} diff --git a/Content.Shared/Cargo/SharedCargoSystem.cs b/Content.Shared/Cargo/SharedCargoSystem.cs index 5351932cdf..8925ce0de1 100644 --- a/Content.Shared/Cargo/SharedCargoSystem.cs +++ b/Content.Shared/Cargo/SharedCargoSystem.cs @@ -1,7 +1,62 @@ +using Content.Shared.Cargo.Components; +using Content.Shared.Cargo.Prototypes; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; +using Robust.Shared.Timing; +using Robust.Shared.Utility; namespace Content.Shared.Cargo; +public abstract class SharedCargoSystem : EntitySystem +{ + [Dependency] protected readonly IGameTiming Timing = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + ent.Comp.NextIncomeTime = Timing.CurTime + ent.Comp.IncomeDelay; + Dirty(ent); + } + + /// + /// For a given station, retrieves the balance in a specific account. + /// + public int GetBalanceFromAccount(Entity station, ProtoId account) + { + if (!Resolve(station, ref station.Comp)) + return 0; + + return station.Comp.Accounts.GetValueOrDefault(account); + } + + /// + /// For a station, creates a distribution between one the bank's account and the other accounts. + /// The primary account receives the majority percentage listed on the bank account, with the remaining + /// funds distributed to all accounts based on + /// + public Dictionary, double> CreateAccountDistribution(Entity stationBank) + { + var distribution = new Dictionary, double> + { + { stationBank.Comp.PrimaryAccount, stationBank.Comp.PrimaryCut } + }; + var remaining = 1.0 - stationBank.Comp.PrimaryCut; + + foreach (var (account, percentage) in stationBank.Comp.RevenueDistribution) + { + var existing = distribution.GetOrNew(account); + distribution[account] = existing + remaining * percentage; + } + return distribution; + } +} + [NetSerializable, Serializable] public enum CargoConsoleUiKey : byte { @@ -17,8 +72,6 @@ public enum CargoPalletConsoleUiKey : byte Sale } -public abstract class SharedCargoSystem : EntitySystem {} - [Serializable, NetSerializable] public enum CargoTelepadState : byte { diff --git a/Content.Shared/Charges/Components/AutoRechargeComponent.cs b/Content.Shared/Charges/Components/AutoRechargeComponent.cs new file mode 100644 index 0000000000..704783056c --- /dev/null +++ b/Content.Shared/Charges/Components/AutoRechargeComponent.cs @@ -0,0 +1,19 @@ +using Content.Shared.Charges.Systems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Charges.Components; + +/// +/// Something with limited charges that can be recharged automatically. +/// Requires LimitedChargesComponent to function. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedChargesSystem))] +public sealed partial class AutoRechargeComponent : Component +{ + /// + /// The time it takes to regain a single charge + /// + [DataField, AutoNetworkedField] + public TimeSpan RechargeDuration = TimeSpan.FromSeconds(90); +} diff --git a/Content.Shared/Charges/Components/LimitedChargesComponent.cs b/Content.Shared/Charges/Components/LimitedChargesComponent.cs index 6973ffbe72..e879e0f1df 100644 --- a/Content.Shared/Charges/Components/LimitedChargesComponent.cs +++ b/Content.Shared/Charges/Components/LimitedChargesComponent.cs @@ -1,24 +1,27 @@ using Content.Shared.Charges.Systems; using Robust.Shared.GameStates; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Charges.Components; -[RegisterComponent, NetworkedComponent] -[Access(typeof(SharedChargesSystem))] -[AutoGenerateComponentState] +/// +/// Specifies the attached action has discrete charges, separate to a cooldown. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(SharedChargesSystem))] public sealed partial class LimitedChargesComponent : Component { + [DataField, AutoNetworkedField] + public int LastCharges; + /// - /// The maximum number of charges + /// The max charges this action has. /// - [DataField("maxCharges"), ViewVariables(VVAccess.ReadWrite)] - [AutoNetworkedField] + [DataField, AutoNetworkedField, Access(Other = AccessPermissions.Read)] public int MaxCharges = 3; /// - /// The current number of charges + /// Last time charges was changed. Used to derive current charges. /// - [DataField("charges"), ViewVariables(VVAccess.ReadWrite)] - [AutoNetworkedField] - public int Charges = 3; + [DataField(customTypeSerializer:typeof(TimeOffsetSerializer)), AutoNetworkedField] + public TimeSpan LastUpdate; } diff --git a/Content.Shared/Charges/Systems/SharedChargesSystem.cs b/Content.Shared/Charges/Systems/SharedChargesSystem.cs index 7f95ef184e..e915580bae 100644 --- a/Content.Shared/Charges/Systems/SharedChargesSystem.cs +++ b/Content.Shared/Charges/Systems/SharedChargesSystem.cs @@ -1,103 +1,238 @@ +using Content.Shared.Actions.Events; using Content.Shared.Charges.Components; using Content.Shared.Examine; +using JetBrains.Annotations; +using Robust.Shared.Timing; namespace Content.Shared.Charges.Systems; public abstract class SharedChargesSystem : EntitySystem { - protected EntityQuery Query; + [Dependency] protected readonly IGameTiming _timing = default!; + + /* + * Despite what a bunch of systems do you don't need to continuously tick linear number updates and can just derive it easily. + */ public override void Initialize() { base.Initialize(); - Query = GetEntityQuery(); - SubscribeLocalEvent(OnExamine); + + SubscribeLocalEvent(OnChargesAttempt); + SubscribeLocalEvent(OnChargesMapInit); + SubscribeLocalEvent(OnChargesPerformed); } - protected virtual void OnExamine(EntityUid uid, LimitedChargesComponent comp, ExaminedEvent args) + private void OnExamine(EntityUid uid, LimitedChargesComponent comp, ExaminedEvent args) { if (!args.IsInDetailsRange) return; - using (args.PushGroup(nameof(LimitedChargesComponent))) + var rechargeEnt = new Entity(uid, comp, null); + var charges = GetCurrentCharges(rechargeEnt); + using var _ = args.PushGroup(nameof(LimitedChargesComponent)); + + args.PushMarkup(Loc.GetString("limited-charges-charges-remaining", ("charges", charges))); + if (charges == comp.MaxCharges) { - args.PushMarkup(Loc.GetString("limited-charges-charges-remaining", ("charges", comp.Charges))); - if (comp.Charges == comp.MaxCharges) - { - args.PushMarkup(Loc.GetString("limited-charges-max-charges")); - } + args.PushMarkup(Loc.GetString("limited-charges-max-charges")); + } + + // only show the recharging info if it's not full + if (charges == comp.MaxCharges || !Resolve(uid, ref rechargeEnt.Comp2, false)) + return; + + var timeRemaining = GetNextRechargeTime(rechargeEnt); + args.PushMarkup(Loc.GetString("limited-charges-recharging", ("seconds", timeRemaining.TotalSeconds.ToString("F1")))); + } + + private void OnChargesAttempt(Entity ent, ref ActionAttemptEvent args) + { + if (args.Cancelled) + return; + + var charges = GetCurrentCharges((ent.Owner, ent.Comp, null)); + + if (charges <= 0) + { + args.Cancelled = true; } } - /// - /// Tries to add a number of charges. If it over or underflows it will be clamped, wasting the extra charges. - /// - public virtual void AddCharges(EntityUid uid, int change, LimitedChargesComponent? comp = null) + private void OnChargesPerformed(Entity ent, ref ActionPerformedEvent args) { - if (!Query.Resolve(uid, ref comp, false)) + AddCharges((ent.Owner, ent.Comp), -1); + } + + private void OnChargesMapInit(Entity ent, ref MapInitEvent args) + { + // If nothing specified use max. + if (ent.Comp.LastCharges == 0) + { + ent.Comp.LastCharges = ent.Comp.MaxCharges; + } + // If -1 used then we don't want any. + else if (ent.Comp.LastCharges < 0) + { + ent.Comp.LastCharges = 0; + } + + ent.Comp.LastUpdate = _timing.CurTime; + Dirty(ent); + } + + [Pure] + public bool HasCharges(Entity action, int charges) + { + var current = GetCurrentCharges(action); + + return current >= charges; + } + + /// + /// Adds the specified charges. Does not reset the accumulator. + /// + public void AddCharges(Entity action, int addCharges) + { + if (addCharges == 0) return; - var old = comp.Charges; - comp.Charges = Math.Clamp(comp.Charges + change, 0, comp.MaxCharges); - if (comp.Charges != old) - Dirty(uid, comp); + action.Comp1 ??= EnsureComp(action.Owner); + + var lastCharges = GetCurrentCharges(action); + var charges = lastCharges + addCharges; + + if (lastCharges == charges) + return; + + // If we were at max then need to reset the timer. + if (charges == action.Comp1.MaxCharges || lastCharges == action.Comp1.MaxCharges) + { + action.Comp1.LastUpdate = _timing.CurTime; + action.Comp1.LastCharges = action.Comp1.MaxCharges; + } + // If it has auto-recharge then make up the difference. + else if (Resolve(action.Owner, ref action.Comp2, false)) + { + var duration = action.Comp2.RechargeDuration; + var diff = (_timing.CurTime - action.Comp1.LastUpdate); + var remainder = (int) (diff / duration); + + action.Comp1.LastCharges += remainder; + action.Comp1.LastUpdate += (remainder * duration); + } + + action.Comp1.LastCharges = Math.Clamp(action.Comp1.LastCharges + addCharges, 0, action.Comp1.MaxCharges); + Dirty(action.Owner, action.Comp1); } - /// - /// Gets the limited charges component and returns true if there are no charges. Will return false if there is no limited charges component. - /// - public bool IsEmpty(EntityUid uid, LimitedChargesComponent? comp = null) + public bool TryUseCharge(Entity entity) { - // can't be empty if there are no limited charges - if (!Query.Resolve(uid, ref comp, false)) + return TryUseCharges(entity, 1); + } + + public bool TryUseCharges(Entity entity, int amount) + { + var current = GetCurrentCharges(entity); + + if (current < amount) + { return false; + } - return comp.Charges <= 0; - } - - /// - /// Uses a single charge. Must check IsEmpty beforehand to prevent using with 0 charge. - /// - public void UseCharge(EntityUid uid, LimitedChargesComponent? comp = null) - { - AddCharges(uid, -1, comp); - } - - /// - /// Checks IsEmpty and uses a charge if it isn't empty. - /// - public bool TryUseCharge(Entity ent) - { - if (!Query.Resolve(ent, ref ent.Comp, false)) - return true; - - if (IsEmpty(ent, ent.Comp)) - return false; - - UseCharge(ent, ent.Comp); + AddCharges(entity, -amount); return true; } - /// - /// Gets the limited charges component and returns true if the number of charges remaining is less than the specified value. - /// Will return false if there is no limited charges component. - /// - public bool HasInsufficientCharges(EntityUid uid, int requiredCharges, LimitedChargesComponent? comp = null) + [Pure] + public bool IsEmpty(Entity entity) { - // can't be empty if there are no limited charges - if (!Resolve(uid, ref comp, false)) - return false; - - return comp.Charges < requiredCharges; + return GetCurrentCharges(entity) == 0; } /// - /// Uses up a specified number of charges. Must check HasInsufficentCharges beforehand to prevent using with insufficient remaining charges. + /// Resets action charges to MaxCharges. /// - public virtual void UseCharges(EntityUid uid, int chargesUsed, LimitedChargesComponent? comp = null) + public void ResetCharges(Entity action) { - AddCharges(uid, -chargesUsed, comp); + if (!Resolve(action.Owner, ref action.Comp, false)) + return; + + var charges = GetCurrentCharges((action.Owner, action.Comp, null)); + + if (charges == action.Comp.MaxCharges) + return; + + action.Comp.LastCharges = action.Comp.MaxCharges; + action.Comp.LastUpdate = _timing.CurTime; + Dirty(action); + } + + public void SetCharges(Entity action, int value) + { + action.Comp ??= EnsureComp(action.Owner); + + var adjusted = Math.Clamp(value, 0, action.Comp.MaxCharges); + + if (action.Comp.LastCharges == adjusted) + { + return; + } + + action.Comp.LastCharges = adjusted; + action.Comp.LastUpdate = _timing.CurTime; + Dirty(action); + } + + /// + /// The next time a charge will be considered to be filled. + /// + /// 0 timespan if invalid or no charges to generate. + [Pure] + public TimeSpan GetNextRechargeTime(Entity entity) + { + if (!Resolve(entity.Owner, ref entity.Comp1, ref entity.Comp2, false)) + { + return TimeSpan.Zero; + } + + // Okay so essentially we need to get recharge time to full, then modulus that by the recharge timer which should be the next tick. + var fullTime = ((entity.Comp1.MaxCharges - entity.Comp1.LastCharges) * entity.Comp2.RechargeDuration) + entity.Comp1.LastUpdate; + var timeRemaining = fullTime - _timing.CurTime; + + if (timeRemaining < TimeSpan.Zero) + { + return TimeSpan.Zero; + } + + var nextChargeTime = timeRemaining.TotalSeconds % entity.Comp2.RechargeDuration.TotalSeconds; + return TimeSpan.FromSeconds(nextChargeTime); + } + + /// + /// Derives the current charges of an entity. + /// + [Pure] + public int GetCurrentCharges(Entity entity) + { + if (!Resolve(entity.Owner, ref entity.Comp1, false)) + { + // I'm all in favor of nullable ints however null-checking return args against comp nullability is dodgy + // so we get this. + return -1; + } + + var calculated = 0; + + if (Resolve(entity.Owner, ref entity.Comp2, false) && entity.Comp2.RechargeDuration.TotalSeconds != 0.0) + { + calculated = (int)((_timing.CurTime - entity.Comp1.LastUpdate).TotalSeconds / entity.Comp2.RechargeDuration.TotalSeconds); + } + + return Math.Clamp(entity.Comp1.LastCharges + calculated, + 0, + entity.Comp1.MaxCharges); } } diff --git a/Content.Shared/Chemistry/Reaction/ChemicalReactionSystem.cs b/Content.Shared/Chemistry/Reaction/ChemicalReactionSystem.cs index f76b0a42d1..f75cce762b 100644 --- a/Content.Shared/Chemistry/Reaction/ChemicalReactionSystem.cs +++ b/Content.Shared/Chemistry/Reaction/ChemicalReactionSystem.cs @@ -15,6 +15,11 @@ namespace Content.Shared.Chemistry.Reaction { public sealed class ChemicalReactionSystem : EntitySystem { + /// + /// Foam reaction protoId. + /// + public static readonly ProtoId FoamReaction = "Foam"; + /// /// The maximum number of reactions that may occur when a solution is changed. /// diff --git a/Content.Shared/Chemistry/ReactiveSystem.cs b/Content.Shared/Chemistry/ReactiveSystem.cs index edd75bb0b4..6306537324 100644 --- a/Content.Shared/Chemistry/ReactiveSystem.cs +++ b/Content.Shared/Chemistry/ReactiveSystem.cs @@ -38,6 +38,10 @@ public sealed class ReactiveSystem : EntitySystem if (!TryComp(uid, out ReactiveComponent? reactive)) return; + // custom event for bypassing reactivecomponent stuff + var ev = new ReactionEntityEvent(method, proto, reagentQuantity, source); + RaiseLocalEvent(uid, ref ev); + // If we have a source solution, use the reagent quantity we have left. Otherwise, use the reaction volume specified. var args = new EntityEffectReagentArgs(uid, EntityManager, null, source, source?.GetReagentQuantity(reagentQuantity.Reagent) ?? reagentQuantity.Quantity, proto, method, 1f); @@ -107,3 +111,11 @@ Touch, Injection, Ingestion, } + +[ByRefEvent] +public readonly record struct ReactionEntityEvent( + ReactionMethod Method, + ReagentPrototype Reagent, + ReagentQuantity ReagentQuantity, + Solution? Source +); diff --git a/Content.Shared/Chemistry/Reagent/ReagentPrototype.cs b/Content.Shared/Chemistry/Reagent/ReagentPrototype.cs index 84cdb47494..b4fed5fc03 100644 --- a/Content.Shared/Chemistry/Reagent/ReagentPrototype.cs +++ b/Content.Shared/Chemistry/Reagent/ReagentPrototype.cs @@ -1,5 +1,6 @@ using System.Collections.Frozen; using System.Linq; +using Content.Shared.FixedPoint; using System.Text.Json.Serialization; using Content.Shared.Administration.Logs; using Content.Shared.Body.Prototypes; @@ -7,14 +8,14 @@ using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reaction; using Content.Shared.EntityEffects; using Content.Shared.Database; -using Content.Shared.FixedPoint; using Content.Shared.Nutrition; +using Content.Shared.Prototypes; +using Content.Shared.Slippery; using Robust.Shared.Audio; using Robust.Shared.Map; using Robust.Shared.Prototypes; using Robust.Shared.Random; using Robust.Shared.Serialization; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Array; using Robust.Shared.Utility; @@ -99,11 +100,24 @@ namespace Content.Shared.Chemistry.Reagent [DataField] public bool MetamorphicChangeColor { get; private set; } = true; + /// - /// If this reagent is part of a puddle is it slippery. + /// If not null, makes something slippery. Also defines slippery interactions like stun time and launch mult. /// [DataField] - public bool Slippery; + public SlipperyEffectEntry? SlipData; + + /// + /// The speed at which the reagent evaporates over time. + /// + [DataField] + public FixedPoint2 EvaporationSpeed = FixedPoint2.Zero; + + /// + /// If this reagent can be used to mop up other reagents. + /// + [DataField] + public bool Absorbent = false; /// /// How easily this reagent becomes fizzy when aggitated. @@ -119,6 +133,13 @@ namespace Content.Shared.Chemistry.Reagent [DataField] public float Viscosity; + /// + /// Linear Friction Multiplier for a reagent + /// 0 - frictionless, 1 - no effect on friction + /// + [DataField] + public float Friction = 1.0f; + /// /// Should this reagent work on the dead? /// @@ -206,7 +227,7 @@ namespace Content.Shared.Chemistry.Reagent .ToDictionary(x => x.Key, x => x.Item2); if (proto.PlantMetabolisms.Count > 0) { - PlantMetabolisms = new List (proto.PlantMetabolisms + PlantMetabolisms = new List(proto.PlantMetabolisms .Select(x => x.GuidebookEffectDescription(prototype, entSys)) .Where(x => x is not null) .Select(x => x!) diff --git a/Content.Shared/Climbing/Components/ClimbableComponent.cs b/Content.Shared/Climbing/Components/ClimbableComponent.cs index 1a924e5c30..22a42dea78 100644 --- a/Content.Shared/Climbing/Components/ClimbableComponent.cs +++ b/Content.Shared/Climbing/Components/ClimbableComponent.cs @@ -13,7 +13,13 @@ namespace Content.Shared.Climbing.Components /// /// The range from which this entity can be climbed. /// - [DataField("range")] public float Range = SharedInteractionSystem.InteractionRange / 1.4f; + [DataField] public float Range = SharedInteractionSystem.InteractionRange; + + /// + /// Can drag-drop / verb vaulting be done? Set to false if climbing is being handled manually. + /// + [DataField] + public bool Vaultable = true; /// /// The time it takes to climb onto the entity. diff --git a/Content.Shared/Climbing/Components/ClimbingComponent.cs b/Content.Shared/Climbing/Components/ClimbingComponent.cs index 1ab861b1f7..df4632d8f7 100644 --- a/Content.Shared/Climbing/Components/ClimbingComponent.cs +++ b/Content.Shared/Climbing/Components/ClimbingComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.DoAfter; using System.Numerics; using Robust.Shared.GameStates; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; @@ -25,6 +26,12 @@ public sealed partial class ClimbingComponent : Component [AutoNetworkedField, DataField] public bool IsClimbing; + /// + /// The Climbing DoAfter. + /// + [DataField] + public DoAfterId? DoAfter; + /// /// Whether the owner is being moved onto the climbed entity. /// diff --git a/Content.Shared/Climbing/Systems/ClimbSystem.cs b/Content.Shared/Climbing/Systems/ClimbSystem.cs index 467d96187e..d7d9df7fdd 100644 --- a/Content.Shared/Climbing/Systems/ClimbSystem.cs +++ b/Content.Shared/Climbing/Systems/ClimbSystem.cs @@ -62,6 +62,7 @@ public sealed partial class ClimbSystem : VirtualController SubscribeLocalEvent(OnDoAfter); SubscribeLocalEvent(OnClimbEndCollide); SubscribeLocalEvent(OnBuckled); + SubscribeLocalEvent(OnStored); SubscribeLocalEvent(OnCanDragDropOn); SubscribeLocalEvent>(AddClimbableVerb); @@ -148,7 +149,7 @@ public sealed partial class ClimbSystem : VirtualController private void OnCanDragDropOn(EntityUid uid, ClimbableComponent component, ref CanDropTargetEvent args) { - if (args.Handled) + if (args.Handled || !component.Vaultable) return; // If already climbing then don't show outlines. @@ -234,19 +235,33 @@ public sealed partial class ClimbSystem : VirtualController }; _audio.PlayPredicted(comp.StartClimbSound, climbable, user); - return _doAfterSystem.TryStartDoAfter(args, out id); + var success = _doAfterSystem.TryStartDoAfter(args, out id); + + if (success) + climbing.DoAfter = id; + + return success; + } private void OnDoAfter(EntityUid uid, ClimbingComponent component, ClimbDoAfterEvent args) { + component.DoAfter = null; + if (args.Handled || args.Cancelled || args.Args.Target == null || args.Args.Used == null) return; + if (_containers.IsEntityInContainer(uid)) + { + args.Handled = true; + 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, + public 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)) @@ -441,6 +456,12 @@ public sealed partial class ClimbSystem : VirtualController /// The reason why it cant be dropped public bool CanVault(ClimbableComponent component, EntityUid user, EntityUid target, out string reason) { + if (!component.Vaultable) + { + reason = string.Empty; + return false; + } + if (!_actionBlockerSystem.CanInteract(user, target)) { reason = Loc.GetString("comp-climbable-cant-interact"); @@ -520,7 +541,27 @@ public sealed partial class ClimbSystem : VirtualController private void OnBuckled(EntityUid uid, ClimbingComponent component, ref BuckledEvent args) { - StopClimb(uid, component); + StopOrCancelClimb(uid, component); + } + + private void OnStored(EntityUid uid, ClimbingComponent component, ref EntGotInsertedIntoContainerMessage args) + { + StopOrCancelClimb(uid, component); + } + + private void StopOrCancelClimb(EntityUid uid, ClimbingComponent component) + { + if (component.IsClimbing) + { + StopClimb(uid, component); + return; + } + + if (component.DoAfter != null) + { + _doAfterSystem.Cancel(component.DoAfter); + component.DoAfter = null; + } } private void OnGlassClimbed(EntityUid uid, GlassTableComponent component, ref ClimbedOnEvent args) diff --git a/Content.Shared/Clothing/Components/ToggleClothingPrefixComponent.cs b/Content.Shared/Clothing/Components/ToggleClothingPrefixComponent.cs new file mode 100644 index 0000000000..23f4a620fe --- /dev/null +++ b/Content.Shared/Clothing/Components/ToggleClothingPrefixComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Clothing.Components; + +/// +/// Handles the changes to ClothingComponent.EquippedPrefix when toggled. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ToggleClothingPrefixComponent : Component +{ + /// + /// Clothing's EquippedPrefix when activated. + /// + [DataField] + public string? PrefixOn = "on"; + + /// + /// Clothing's EquippedPrefix when deactivated. + /// + [DataField] + public string? PrefixOff; +} diff --git a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs index f8ab79ec78..a7e52180cd 100644 --- a/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ClothingSystem.cs @@ -1,13 +1,11 @@ using Content.Shared.Clothing.Components; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; -using Content.Shared.Humanoid; using Content.Shared.Interaction.Events; using Content.Shared.Inventory; using Content.Shared.Inventory.Events; using Content.Shared.Item; using Content.Shared.Strip.Components; -using Robust.Shared.Containers; using Robust.Shared.GameStates; namespace Content.Shared.Clothing.EntitySystems; @@ -15,10 +13,8 @@ namespace Content.Shared.Clothing.EntitySystems; public abstract class ClothingSystem : EntitySystem { [Dependency] private readonly SharedItemSystem _itemSys = default!; - [Dependency] private readonly SharedContainerSystem _containerSys = default!; [Dependency] private readonly InventorySystem _invSystem = default!; [Dependency] private readonly SharedHandsSystem _handsSystem = default!; - [Dependency] private readonly HideLayerClothingSystem _hideLayer = default!; public override void Initialize() { @@ -69,14 +65,14 @@ public abstract class ClothingSystem : EntitySystem if (!_invSystem.TryUnequip(userEnt, slotDef.Name, true, inventory: userEnt, checkDoafter: true)) continue; - if (!_invSystem.TryEquip(userEnt, toEquipEnt, slotDef.Name, true, inventory: userEnt, clothing: toEquipEnt, checkDoafter: true)) + if (!_invSystem.TryEquip(userEnt, toEquipEnt, slotDef.Name, true, inventory: userEnt, clothing: toEquipEnt, checkDoafter: true, triggerHandContact: true)) continue; _handsSystem.PickupOrDrop(userEnt, slotEntity.Value, handsComp: userEnt); } else { - if (!_invSystem.TryEquip(userEnt, toEquipEnt, slotDef.Name, true, inventory: userEnt, clothing: toEquipEnt, checkDoafter: true)) + if (!_invSystem.TryEquip(userEnt, toEquipEnt, slotDef.Name, true, inventory: userEnt, clothing: toEquipEnt, checkDoafter: true, triggerHandContact: true)) continue; } @@ -138,7 +134,7 @@ public abstract class ClothingSystem : EntitySystem { if (args.Handled || args.Cancelled || args.Target is not { } target) return; - args.Handled = _invSystem.TryUnequip(args.User, target, args.Slot, clothing: ent.Comp, predicted: true, checkDoafter: false); + args.Handled = _invSystem.TryUnequip(args.User, target, args.Slot, clothing: ent.Comp, predicted: true, checkDoafter: false, triggerHandContact: true); if (args.Handled) _handsSystem.TryPickup(args.User, ent); } diff --git a/Content.Shared/Clothing/EntitySystems/HideLayerClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/HideLayerClothingSystem.cs index 323884ab36..44d72b248b 100644 --- a/Content.Shared/Clothing/EntitySystems/HideLayerClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/HideLayerClothingSystem.cs @@ -45,7 +45,8 @@ public sealed class HideLayerClothingSystem : EntitySystem if (!Resolve(clothing.Owner, ref clothing.Comp1, ref clothing.Comp2)) return; - if (!Resolve(user.Owner, ref user.Comp)) + // logMissing: false, as this clothing might be getting equipped by a non-human. + if (!Resolve(user.Owner, ref user.Comp, false)) return; hideLayers &= IsEnabled(clothing!); diff --git a/Content.Shared/Clothing/EntitySystems/ToggleClothingPrefixSystem.cs b/Content.Shared/Clothing/EntitySystems/ToggleClothingPrefixSystem.cs new file mode 100644 index 0000000000..129db30938 --- /dev/null +++ b/Content.Shared/Clothing/EntitySystems/ToggleClothingPrefixSystem.cs @@ -0,0 +1,25 @@ +using Content.Shared.Clothing.Components; +using Content.Shared.Item.ItemToggle.Components; + +namespace Content.Shared.Clothing.EntitySystems; + +/// +/// On toggle handles the changes to ItemComponent.HeldPrefix. . +/// +public sealed class ToggleClothingPrefixSystem : EntitySystem +{ + [Dependency] private readonly ClothingSystem _clothing = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnToggled); + } + + private void OnToggled(Entity ent, ref ItemToggledEvent args) + { + _clothing.SetEquippedPrefix(ent, args.Activated ? ent.Comp.PrefixOn : ent.Comp.PrefixOff); + } +} diff --git a/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs b/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs index c63dfb5901..4c8de4def1 100644 --- a/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs +++ b/Content.Shared/Clothing/EntitySystems/ToggleableClothingSystem.cs @@ -160,7 +160,7 @@ public sealed class ToggleableClothingSystem : EntitySystem // This should maybe double check that the entity currently in the slot is actually the attached clothing, but // if its not, then something else has gone wrong already... if (component.Container != null && component.Container.ContainedEntity == null && component.ClothingUid != null) - _inventorySystem.TryUnequip(args.Equipee, component.Slot, force: true); + _inventorySystem.TryUnequip(args.Equipee, component.Slot, force: true, triggerHandContact: true); } private void OnRemoveToggleable(EntityUid uid, ToggleableClothingComponent component, ComponentRemove args) @@ -248,7 +248,7 @@ public sealed class ToggleableClothingSystem : EntitySystem user, user); } else - _inventorySystem.TryEquip(user, parent, component.ClothingUid.Value, component.Slot); + _inventorySystem.TryEquip(user, parent, component.ClothingUid.Value, component.Slot, triggerHandContact: true); } private void OnGetActions(EntityUid uid, ToggleableClothingComponent component, GetItemActionsEvent args) diff --git a/Content.Shared/Clothing/MagbootsSystem.cs b/Content.Shared/Clothing/MagbootsSystem.cs index d41f27fefb..fd5a2cc336 100644 --- a/Content.Shared/Clothing/MagbootsSystem.cs +++ b/Content.Shared/Clothing/MagbootsSystem.cs @@ -14,12 +14,10 @@ namespace Content.Shared.Clothing; public sealed class SharedMagbootsSystem : EntitySystem { [Dependency] private readonly AlertsSystem _alerts = default!; - [Dependency] private readonly ClothingSystem _clothing = default!; [Dependency] private readonly InventorySystem _inventory = default!; [Dependency] private readonly ItemToggleSystem _toggle = default!; [Dependency] private readonly SharedContainerSystem _container = default!; [Dependency] private readonly SharedGravitySystem _gravity = default!; - [Dependency] private readonly SharedItemSystem _item = default!; public override void Initialize() { @@ -42,10 +40,6 @@ public sealed class SharedMagbootsSystem : EntitySystem { UpdateMagbootEffects(container.Owner, ent, args.Activated); } - - var prefix = args.Activated ? "on" : null; - _item.SetHeldPrefix(ent, prefix); - _clothing.SetEquippedPrefix(ent, prefix); } private void OnGotUnequipped(Entity ent, ref ClothingGotUnequippedEvent args) diff --git a/Content.Shared/Clumsy/ClumsySystem.cs b/Content.Shared/Clumsy/ClumsySystem.cs index 4804b6b723..348d99182a 100644 --- a/Content.Shared/Clumsy/ClumsySystem.cs +++ b/Content.Shared/Clumsy/ClumsySystem.cs @@ -38,7 +38,7 @@ public sealed class ClumsySystem : EntitySystem private void BeforeHyposprayEvent(Entity ent, ref SelfBeforeHyposprayInjectsEvent args) { // Clumsy people sometimes inject themselves! Apparently syringes are clumsy proof... - + // checks if ClumsyHypo is false, if so, skips. if (!ent.Comp.ClumsyHypo) return; @@ -54,7 +54,7 @@ public sealed class ClumsySystem : EntitySystem private void BeforeDefibrillatorZapsEvent(Entity ent, ref SelfBeforeDefibrillatorZapsEvent args) { // Clumsy people sometimes defib themselves! - + // checks if ClumsyDefib is false, if so, skips. if (!ent.Comp.ClumsyDefib) return; @@ -103,8 +103,7 @@ public sealed class ClumsySystem : EntitySystem // This event is called in shared, thats why it has all the extra prediction stuff. var rand = new System.Random((int)_timing.CurTick.Value); - // If someone is putting you on the table, always get past the guard. - if (!_cfg.GetCVar(CCVars.GameTableBonk) && args.PuttingOnTable == ent.Owner && !rand.Prob(ent.Comp.ClumsyDefaultCheck)) + if (!_cfg.GetCVar(CCVars.GameTableBonk) && !rand.Prob(ent.Comp.ClumsyDefaultCheck)) return; HitHeadClumsy(ent, args.BeingClimbedOn); diff --git a/Content.Shared/CombatMode/DisarmMalusComponent.cs b/Content.Shared/CombatMode/DisarmMalusComponent.cs new file mode 100644 index 0000000000..2a89eb1cf2 --- /dev/null +++ b/Content.Shared/CombatMode/DisarmMalusComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.CombatMode; + +/// +/// Applies a malus to disarm attempts against this item. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class DisarmMalusComponent : Component +{ + /// + /// So, disarm chances are a % chance represented as a value between 0 and 1. + /// This default would be a 30% penalty to that. + /// + [DataField] + public float Malus = 0.3f; +} diff --git a/Content.Shared/CombatMode/DisarmedEvent.cs b/Content.Shared/CombatMode/DisarmedEvent.cs index 884ae36628..3f8e5c81d1 100644 --- a/Content.Shared/CombatMode/DisarmedEvent.cs +++ b/Content.Shared/CombatMode/DisarmedEvent.cs @@ -1,31 +1,33 @@ -namespace Content.Shared.CombatMode +namespace Content.Shared.CombatMode; + +[ByRefEvent] +public record struct DisarmedEvent(EntityUid Target, EntityUid Source, float PushProb) { - public sealed class DisarmedEvent : HandledEntityEventArgs - { - /// - /// The entity being disarmed. - /// - public EntityUid Target { get; init; } + /// + /// The entity being disarmed. + /// + public readonly EntityUid Target = Target; - /// - /// The entity performing the disarm. - /// - public EntityUid Source { get; init; } + /// + /// The entity performing the disarm. + /// + public readonly EntityUid Source = Source; - /// - /// Probability for push/knockdown. - /// - public float PushProbability { get; init; } + /// + /// Probability for push/knockdown. + /// + public readonly float PushProbability = PushProb; - /// - /// Prefix for the popup message that will be displayed on a successful push. - /// Should be set before returning. - /// - public string PopupPrefix { get; set; } = ""; + /// + /// Prefix for the popup message that will be displayed on a successful push. + /// Should be set before returning. + /// + public string PopupPrefix = ""; - /// - /// Whether the entity was successfully stunned from a shove. - /// - public bool IsStunned { get; set; } - } + /// + /// Whether the entity was successfully stunned from a shove. + /// + public bool IsStunned; + + public bool Handled; } diff --git a/Content.Shared/CombatMode/SharedCombatModeSystem.cs b/Content.Shared/CombatMode/SharedCombatModeSystem.cs index 5eed8ee242..af7bb9fefe 100644 --- a/Content.Shared/CombatMode/SharedCombatModeSystem.cs +++ b/Content.Shared/CombatMode/SharedCombatModeSystem.cs @@ -11,7 +11,6 @@ namespace Content.Shared.CombatMode; public abstract class SharedCombatModeSystem : EntitySystem { [Dependency] protected readonly IGameTiming Timing = default!; - [Dependency] private readonly INetManager _netMan = default!; [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedMindSystem _mind = default!; @@ -46,14 +45,8 @@ public abstract class SharedCombatModeSystem : EntitySystem args.Handled = true; SetInCombatMode(uid, !component.IsInCombatMode, component); - // TODO better handling of predicted pop-ups. - // This probably breaks if the client has prediction disabled. - - if (!_netMan.IsClient || !Timing.IsFirstTimePredicted) - return; - var msg = component.IsInCombatMode ? "action-popup-combat-enabled" : "action-popup-combat-disabled"; - _popup.PopupEntity(Loc.GetString(msg), args.Performer, args.Performer); + _popup.PopupClient(Loc.GetString(msg), args.Performer, args.Performer); } public void SetCanDisarm(EntityUid entity, bool canDisarm, CombatModeComponent? component = null) diff --git a/Content.Shared/Configurable/ConfigurationComponent.cs b/Content.Shared/Configurable/ConfigurationComponent.cs index 621871af3c..63c0845083 100644 --- a/Content.Shared/Configurable/ConfigurationComponent.cs +++ b/Content.Shared/Configurable/ConfigurationComponent.cs @@ -2,34 +2,38 @@ using System.Text.RegularExpressions; using Content.Shared.Tools; using Content.Shared.Tools.Systems; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; namespace Content.Shared.Configurable { - [RegisterComponent, NetworkedComponent] + /// + /// Configuration for mailing units. + /// + /// + /// If you want a more detailed description ask the original coder. + /// + [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class ConfigurationComponent : Component { - [DataField("config")] + /// + /// Tags for mail unit routing. + /// + [DataField, AutoNetworkedField] public Dictionary Config = new(); - [DataField("qualityNeeded", customTypeSerializer: typeof(PrototypeIdSerializer))] - public string QualityNeeded = SharedToolSystem.PulseQuality; + /// + /// Quality to open up the configuration UI. + /// + [DataField] + public ProtoId QualityNeeded = SharedToolSystem.PulseQuality; - [DataField("validation")] + /// + /// Validate tags in . + /// + [DataField] public Regex Validation = new("^[a-zA-Z0-9 ]*$", RegexOptions.Compiled); - [Serializable, NetSerializable] - public sealed class ConfigurationBoundUserInterfaceState : BoundUserInterfaceState - { - public Dictionary Config { get; } - - public ConfigurationBoundUserInterfaceState(Dictionary config) - { - Config = config; - } - } - /// /// Message data sent from client to server when the device configuration is updated. /// diff --git a/Content.Shared/Configurable/SharedConfigurationSystem.cs b/Content.Shared/Configurable/SharedConfigurationSystem.cs new file mode 100644 index 0000000000..704965188e --- /dev/null +++ b/Content.Shared/Configurable/SharedConfigurationSystem.cs @@ -0,0 +1,77 @@ +using Content.Shared.Interaction; +using Content.Shared.Tools.Systems; +using Robust.Shared.Containers; +using static Content.Shared.Configurable.ConfigurationComponent; + +namespace Content.Shared.Configurable; + +/// +/// +/// +public abstract class SharedConfigurationSystem : EntitySystem +{ + [Dependency] private readonly SharedUserInterfaceSystem _uiSystem = default!; + [Dependency] private readonly SharedToolSystem _toolSystem = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnUpdate); + SubscribeLocalEvent(OnInteractUsing); + SubscribeLocalEvent(OnInsert); + } + + private void OnInteractUsing(EntityUid uid, ConfigurationComponent component, InteractUsingEvent args) + { + // TODO use activatable ui system + if (args.Handled) + return; + + if (!_toolSystem.HasQuality(args.Used, component.QualityNeeded)) + return; + + args.Handled = _uiSystem.TryOpenUi(uid, ConfigurationUiKey.Key, args.User); + } + + private void OnUpdate(EntityUid uid, ConfigurationComponent component, ConfigurationUpdatedMessage args) + { + foreach (var key in component.Config.Keys) + { + var value = args.Config.GetValueOrDefault(key); + + if (string.IsNullOrWhiteSpace(value) || component.Validation != null && !component.Validation.IsMatch(value)) + continue; + + component.Config[key] = value; + } + + Dirty(uid, component); + var updatedEvent = new ConfigurationUpdatedEvent(component); + RaiseLocalEvent(uid, updatedEvent); + + // TODO support float (spinbox) and enum (drop-down) configurations + // TODO support verbs. + } + + private void OnInsert(EntityUid uid, ConfigurationComponent component, ContainerIsInsertingAttemptEvent args) + { + if (!_toolSystem.HasQuality(args.EntityUid, component.QualityNeeded)) + return; + + args.Cancel(); + } +} + +/// +/// Sent when configuration values got changes +/// +public sealed class ConfigurationUpdatedEvent : EntityEventArgs +{ + public ConfigurationComponent Configuration; + + public ConfigurationUpdatedEvent(ConfigurationComponent configuration) + { + Configuration = configuration; + } +} diff --git a/Content.Shared/Construction/Conditions/EmptyOrWindowValidInTile.cs b/Content.Shared/Construction/Conditions/EmptyOrWindowValidInTile.cs index c6c7c47c70..5a70e145f6 100644 --- a/Content.Shared/Construction/Conditions/EmptyOrWindowValidInTile.cs +++ b/Content.Shared/Construction/Conditions/EmptyOrWindowValidInTile.cs @@ -13,9 +13,13 @@ namespace Content.Shared.Construction.Conditions public bool Condition(EntityUid user, EntityCoordinates location, Direction direction) { + var entManager = IoCManager.Resolve(); + var lookupSys = entManager.System(); + var result = false; - foreach (var entity in location.GetEntitiesInTile(LookupFlags.Approximate | LookupFlags.Static)) + + foreach (var entity in lookupSys.GetEntitiesIntersecting(location, LookupFlags.Approximate | LookupFlags.Static)) { if (IoCManager.Resolve().HasComponent(entity)) result = true; diff --git a/Content.Shared/Construction/Conditions/NoWindowsInTile.cs b/Content.Shared/Construction/Conditions/NoWindowsInTile.cs index 2d37ecebe6..e241a1eea6 100644 --- a/Content.Shared/Construction/Conditions/NoWindowsInTile.cs +++ b/Content.Shared/Construction/Conditions/NoWindowsInTile.cs @@ -17,8 +17,9 @@ namespace Content.Shared.Construction.Conditions var entManager = IoCManager.Resolve(); var sysMan = entManager.EntitySysManager; var tagSystem = sysMan.GetEntitySystem(); + var lookupSys = sysMan.GetEntitySystem(); - foreach (var entity in location.GetEntitiesInTile(LookupFlags.Static)) + foreach (var entity in lookupSys.GetEntitiesIntersecting(location, LookupFlags.Static)) { if (tagSystem.HasTag(entity, WindowTag)) return false; diff --git a/Content.Shared/Construction/Conditions/WallmountCondition.cs b/Content.Shared/Construction/Conditions/WallmountCondition.cs index f32cc19eea..65fc6f59fa 100644 --- a/Content.Shared/Construction/Conditions/WallmountCondition.cs +++ b/Content.Shared/Construction/Conditions/WallmountCondition.cs @@ -24,7 +24,7 @@ namespace Content.Shared.Construction.Conditions // get blueprint and user position var transformSystem = entManager.System(); var userWorldPosition = transformSystem.GetWorldPosition(user); - var objWorldPosition = location.ToMap(entManager, transformSystem).Position; + var objWorldPosition = transformSystem.ToMapCoordinates(location).Position; // find direction from user to blueprint var userToObject = (objWorldPosition - userWorldPosition); diff --git a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs index 9c3d6fc9fb..ec8edea474 100644 --- a/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs +++ b/Content.Shared/Construction/EntitySystems/AnchorableSystem.cs @@ -277,10 +277,13 @@ public sealed partial class AnchorableSystem : EntitySystem return !attempt.Cancelled; } - private bool TileFree(EntityCoordinates coordinates, PhysicsComponent anchorBody) + /// + /// Returns true if no hard anchored entities exist on the coordinate tile that would collide with the provided physics body. + /// + public bool TileFree(EntityCoordinates coordinates, PhysicsComponent anchorBody) { // Probably ignore CanCollide on the anchoring body? - var gridUid = coordinates.GetGridUid(EntityManager); + var gridUid = _transformSystem.GetGrid(coordinates); if (!TryComp(gridUid, out var grid)) return false; @@ -329,7 +332,7 @@ public sealed partial class AnchorableSystem : EntitySystem public bool AnyUnstackablesAnchoredAt(EntityCoordinates location) { - var gridUid = location.GetGridUid(EntityManager); + var gridUid = _transformSystem.GetGrid(location); if (!TryComp(gridUid, out var grid)) return false; diff --git a/Content.Shared/Containers/ContainerFillComponent.cs b/Content.Shared/Containers/ContainerFillComponent.cs index 7ce5fa8850..aa8c98fd1f 100644 --- a/Content.Shared/Containers/ContainerFillComponent.cs +++ b/Content.Shared/Containers/ContainerFillComponent.cs @@ -49,13 +49,11 @@ public sealed class ContainerFillSerializer : ITypeValidator(key, context); - var listVal = (val is SequenceDataNode seq) ? ListSerializer.Validate(serializationManager, seq, dependencies, context) : new ErrorNode(val, "ContainerFillComponent prototypes must be a sequence/list"); - mapping.Add(keyVal, listVal); + mapping.Add(new ValidatedValueNode(node.GetKeyNode(key)), listVal); } return new ValidatedMappingNode(mapping); diff --git a/Content.Shared/Containers/SharedThrowInsertContainerSystem.cs b/Content.Shared/Containers/SharedThrowInsertContainerSystem.cs new file mode 100644 index 0000000000..a5c300c284 --- /dev/null +++ b/Content.Shared/Containers/SharedThrowInsertContainerSystem.cs @@ -0,0 +1,8 @@ +namespace Content.Shared.Containers; + +/// +/// Sent before the insertion is made. +/// Allows preventing the insertion if any system on the entity should need to. +/// +[ByRefEvent] +public record struct BeforeThrowInsertEvent(EntityUid ThrownEntity, bool Cancelled = false); diff --git a/Content.Shared/Contraband/ContrabandSystem.cs b/Content.Shared/Contraband/ContrabandSystem.cs index bfd7100289..c998875c87 100644 --- a/Content.Shared/Contraband/ContrabandSystem.cs +++ b/Content.Shared/Contraband/ContrabandSystem.cs @@ -84,26 +84,21 @@ public sealed class ContrabandSystem : EntitySystem } } - String carryingMessage; - // either its fully restricted, you have no departments, or your departments dont intersect with the restricted departments + // if it is fully restricted, you're department-less, or your department isn't in the allowed list, you cannot carry it. Otherwise, you can. + var carryingMessage = Loc.GetString("contraband-examine-text-avoid-carrying-around"); + var iconTexture = "/Textures/Interface/VerbIcons/lock-red.svg.192dpi.png"; if (departments.Intersect(component.AllowedDepartments).Any() || jobs.Contains(jobId)) { carryingMessage = Loc.GetString("contraband-examine-text-in-the-clear"); + iconTexture = "/Textures/Interface/VerbIcons/unlock-green.svg.192dpi.png"; } - else - { - // otherwise fine to use :tm: - carryingMessage = Loc.GetString("contraband-examine-text-avoid-carrying-around"); - } - var examineMarkup = GetContrabandExamine(departmentExamineMessage, carryingMessage); - _examine.AddDetailedExamineVerb(args, + _examine.AddHoverExamineVerb(args, component, - examineMarkup, Loc.GetString("contraband-examinable-verb-text"), - "/Textures/Interface/VerbIcons/lock.svg.192dpi.png", - Loc.GetString("contraband-examinable-verb-message")); + examineMarkup.ToMarkup(), + iconTexture); } private FormattedMessage GetContrabandExamine(String deptMessage, String carryMessage) diff --git a/Content.Shared/Cuffs/SharedCuffableSystem.cs b/Content.Shared/Cuffs/SharedCuffableSystem.cs index bdb3a50454..9c38667399 100644 --- a/Content.Shared/Cuffs/SharedCuffableSystem.cs +++ b/Content.Shared/Cuffs/SharedCuffableSystem.cs @@ -381,7 +381,8 @@ namespace Content.Shared.Cuffs _popup.PopupClient(Loc.GetString("handcuff-component-cuff-interrupt-message", ("targetName", Identity.Name(target, EntityManager, user))), user, user); _popup.PopupClient(Loc.GetString("handcuff-component-cuff-interrupt-other-message", - ("otherName", Identity.Name(user, EntityManager, target))), target, target); + ("otherName", Identity.Name(user, EntityManager, target)), + ("otherEnt", user)), target, target); } } } @@ -723,8 +724,8 @@ namespace Content.Shared.Cuffs // if combat mode is on, shove the person. if (_combatMode.IsInCombatMode(user) && target != user && user != null) { - var eventArgs = new DisarmedEvent { Target = target, Source = user.Value, PushProbability = 1}; - RaiseLocalEvent(target, eventArgs); + var eventArgs = new DisarmedEvent(target, user.Value, 1f); + RaiseLocalEvent(target, ref eventArgs); shoved = true; } diff --git a/Content.Shared/Damage/Components/DamagePopupComponent.cs b/Content.Shared/Damage/Components/DamagePopupComponent.cs new file mode 100644 index 0000000000..917763fb7d --- /dev/null +++ b/Content.Shared/Damage/Components/DamagePopupComponent.cs @@ -0,0 +1,33 @@ +using Content.Shared.Damage.Systems; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Damage.Components; + +/// +/// An entity with this component will show a popup indicating the amount of damage taken. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(DamagePopupSystem))] +public sealed partial class DamagePopupComponent : Component +{ + /// + /// Bool that will be used to determine if the popup type can be changed with a left click. + /// + [DataField, AutoNetworkedField] + public bool AllowTypeChange; + + /// + /// Enum that will be used to determine the type of damage popup displayed. + /// + [DataField("damagePopupType"), AutoNetworkedField] + public DamagePopupType Type = DamagePopupType.Combined; +} + +[Serializable, NetSerializable] +public enum DamagePopupType : byte +{ + Combined, + Total, + Delta, + Hit, +}; diff --git a/Content.Shared/Damage/Components/StaminaResistanceComponent.cs b/Content.Shared/Damage/Components/StaminaResistanceComponent.cs new file mode 100644 index 0000000000..1a0db54492 --- /dev/null +++ b/Content.Shared/Damage/Components/StaminaResistanceComponent.cs @@ -0,0 +1,38 @@ +using Content.Shared.Damage.Systems; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; +using Robust.Shared.GameStates; + +namespace Content.Shared.Damage.Components; + +/// +/// Component that provides entities with stamina resistance. +/// By default this is applied when worn, but to solely protect the entity itself and +/// not the wearer use worn: false. +/// +/// +/// This is desirable over just using damage modifier sets, given that equipment like bomb-suits need to +/// significantly reduce the damage, but shouldn't be silly overpowered in regular combat. +/// +[NetworkedComponent, RegisterComponent, AutoGenerateComponentState] +public sealed partial class StaminaResistanceComponent : Component +{ + /// + /// The stamina resistance coefficient, This fraction is multiplied into the total resistance. + /// + [DataField, AutoNetworkedField] + public float DamageCoefficient = 1; + + /// + /// When true, resistances will be applied to the entity wearing this item. + /// When false, only this entity will get the resistance. + /// + [DataField] + public bool Worn = true; + + /// + /// Examine string for stamina resistance. + /// Passed value from 0 to 100. + /// + [DataField] + public LocId Examine = "stamina-resistance-coefficient-value"; +} diff --git a/Content.Shared/Damage/Events/BeforeStaminaDamageEvent.cs b/Content.Shared/Damage/Events/BeforeStaminaDamageEvent.cs new file mode 100644 index 0000000000..6992ad83a5 --- /dev/null +++ b/Content.Shared/Damage/Events/BeforeStaminaDamageEvent.cs @@ -0,0 +1,12 @@ +using Content.Shared.Inventory; + +namespace Content.Shared.Damage.Events; + +/// +/// Raised before stamina damage is dealt to allow other systems to cancel or modify it. +/// +[ByRefEvent] +public record struct BeforeStaminaDamageEvent(float Value, bool Cancelled = false) : IInventoryRelayEvent +{ + SlotFlags IInventoryRelayEvent.TargetSlots => ~SlotFlags.POCKET; +} diff --git a/Content.Shared/Damage/Systems/DamagePopupSystem.cs b/Content.Shared/Damage/Systems/DamagePopupSystem.cs new file mode 100644 index 0000000000..83cd551279 --- /dev/null +++ b/Content.Shared/Damage/Systems/DamagePopupSystem.cs @@ -0,0 +1,48 @@ +using Content.Shared.Damage.Components; +using Content.Shared.Interaction; +using Content.Shared.Popups; + +namespace Content.Shared.Damage.Systems; + +public sealed class DamagePopupSystem : EntitySystem +{ + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + + public override void Initialize() + { + base.Initialize(); + SubscribeLocalEvent(OnDamageChange); + SubscribeLocalEvent(OnInteractHand); + } + + private void OnDamageChange(Entity ent, ref DamageChangedEvent args) + { + if (args.DamageDelta != null) + { + var damageTotal = args.Damageable.TotalDamage; + var damageDelta = args.DamageDelta.GetTotal(); + + var msg = ent.Comp.Type switch + { + DamagePopupType.Delta => damageDelta.ToString(), + DamagePopupType.Total => damageTotal.ToString(), + DamagePopupType.Combined => damageDelta + " | " + damageTotal, + DamagePopupType.Hit => "!", + _ => "Invalid type", + }; + + _popupSystem.PopupPredicted(msg, ent.Owner, args.Origin); + } + } + + private void OnInteractHand(Entity ent, ref InteractHandEvent args) + { + if (ent.Comp.AllowTypeChange) + { + var next = (DamagePopupType)(((int)ent.Comp.Type + 1) % Enum.GetValues().Length); + ent.Comp.Type = next; + Dirty(ent); + _popupSystem.PopupPredicted(Loc.GetString("damage-popup-component-switched", ("setting", ent.Comp.Type)), ent.Owner, args.User); + } + } +} diff --git a/Content.Shared/Damage/Systems/DamageableSystem.cs b/Content.Shared/Damage/Systems/DamageableSystem.cs index fb55a6184e..31426f6bd0 100644 --- a/Content.Shared/Damage/Systems/DamageableSystem.cs +++ b/Content.Shared/Damage/Systems/DamageableSystem.cs @@ -329,7 +329,7 @@ namespace Content.Shared.Damage damage.DamageDict.Add(typeId, damageValue); } - TryChangeDamage(uid, damage, interruptsDoAfters: false); + TryChangeDamage(uid, damage, interruptsDoAfters: false, origin: args.Origin); } private void OnRejuvenate(EntityUid uid, DamageableComponent component, RejuvenateEvent args) diff --git a/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs b/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs index 20e29ef434..4ccc56dcb8 100644 --- a/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs +++ b/Content.Shared/Damage/Systems/SharedGodmodeSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Damage.Components; +using Content.Shared.Damage.Events; using Content.Shared.Rejuvenate; using Content.Shared.Slippery; using Content.Shared.StatusEffect; diff --git a/Content.Shared/Damage/Systems/StaminaSystem.Resistance.cs b/Content.Shared/Damage/Systems/StaminaSystem.Resistance.cs new file mode 100644 index 0000000000..9ad09b8f2f --- /dev/null +++ b/Content.Shared/Damage/Systems/StaminaSystem.Resistance.cs @@ -0,0 +1,38 @@ +using Content.Shared.Armor; +using Content.Shared.Damage.Components; +using Content.Shared.Damage.Events; +using Content.Shared.Inventory; + +namespace Content.Shared.Damage.Systems; + +public sealed partial class StaminaSystem +{ + private void InitializeResistance() + { + SubscribeLocalEvent(OnGetResistance); + SubscribeLocalEvent>(RelayedResistance); + SubscribeLocalEvent(OnArmorExamine); + } + + private void OnGetResistance(Entity ent, ref BeforeStaminaDamageEvent args) + { + args.Value *= ent.Comp.DamageCoefficient; + } + + private void RelayedResistance(Entity ent, ref InventoryRelayedEvent args) + { + if (ent.Comp.Worn) + OnGetResistance(ent, ref args.Args); + } + + private void OnArmorExamine(Entity ent, ref ArmorExamineEvent args) + { + var value = MathF.Round((1f - ent.Comp.DamageCoefficient) * 100, 1); + + if (value == 0) + return; + + args.Msg.PushNewline(); + args.Msg.AddMarkupOrThrow(Loc.GetString(ent.Comp.Examine, ("value", value))); + } +} diff --git a/Content.Shared/Damage/Systems/StaminaSystem.cs b/Content.Shared/Damage/Systems/StaminaSystem.cs index d9174d606b..84e8a20e1e 100644 --- a/Content.Shared/Damage/Systems/StaminaSystem.cs +++ b/Content.Shared/Damage/Systems/StaminaSystem.cs @@ -50,6 +50,7 @@ public sealed partial class StaminaSystem : EntitySystem base.Initialize(); InitializeModifier(); + InitializeResistance(); SubscribeLocalEvent(OnStartup); SubscribeLocalEvent(OnShutdown); @@ -118,7 +119,7 @@ public sealed partial class StaminaSystem : EntitySystem Dirty(uid, component); } - private void OnDisarmed(EntityUid uid, StaminaComponent component, DisarmedEvent args) + private void OnDisarmed(EntityUid uid, StaminaComponent component, ref DisarmedEvent args) { if (args.Handled) return; @@ -240,7 +241,7 @@ public sealed partial class StaminaSystem : EntitySystem } public void TakeStaminaDamage(EntityUid uid, float value, StaminaComponent? component = null, - EntityUid? source = null, EntityUid? with = null, bool visual = true, SoundSpecifier? sound = null) + EntityUid? source = null, EntityUid? with = null, bool visual = true, SoundSpecifier? sound = null, bool ignoreResist = false) { if (!Resolve(uid, ref component, false)) return; @@ -250,6 +251,12 @@ public sealed partial class StaminaSystem : EntitySystem if (ev.Cancelled) return; + // Allow stamina resistance to be applied. + if (!ignoreResist) + { + value = ev.Value; + } + value = UniversalStaminaDamageModifier * value; // Have we already reached the point of max stamina damage? @@ -402,9 +409,3 @@ public sealed partial class StaminaSystem : EntitySystem _adminLogger.Add(LogType.Stamina, LogImpact.Low, $"{ToPrettyString(uid):user} recovered from stamina crit"); } } - -/// -/// Raised before stamina damage is dealt to allow other systems to cancel it. -/// -[ByRefEvent] -public record struct BeforeStaminaDamageEvent(float Value, bool Cancelled = false); diff --git a/Content.Shared/Decals/DecalGridChunkCollectionTypeSerializer.cs b/Content.Shared/Decals/DecalGridChunkCollectionTypeSerializer.cs index ae4c89c970..f2f9e89603 100644 --- a/Content.Shared/Decals/DecalGridChunkCollectionTypeSerializer.cs +++ b/Content.Shared/Decals/DecalGridChunkCollectionTypeSerializer.cs @@ -29,7 +29,7 @@ namespace Content.Shared.Decals IDependencyCollection dependencies, SerializationHookContext hookCtx, ISerializationContext? context = null, ISerializationManager.InstantiationDelegate? _ = default) { - node.TryGetValue(new ValueDataNode("version"), out var versionNode); + node.TryGetValue("version", out var versionNode); var version = ((ValueDataNode?) versionNode)?.AsInt() ?? 1; Dictionary dictionary; uint nextIndex = 0; @@ -49,7 +49,7 @@ namespace Content.Shared.Decals foreach (var (decalUidNode, decalData) in deckNodes) { - var dUid = serializationManager.Read(decalUidNode, hookCtx, context); + var dUid = uint.Parse(decalUidNode, CultureInfo.InvariantCulture); var coords = serializationManager.Read(decalData, hookCtx, context); var chunkOrigin = SharedMapSystem.GetChunkIndices(coords, SharedDecalSystem.ChunkSize); @@ -132,7 +132,7 @@ namespace Content.Shared.Decals { var decal = decalLookup[uid]; // Inline coordinates - decks.Add(serializationManager.WriteValue(uid, alwaysWrite, context), serializationManager.WriteValue(decal.Coordinates, alwaysWrite, context)); + decks.Add(uid.ToString(), serializationManager.WriteValue(decal.Coordinates, alwaysWrite, context)); } lookupNode.Add("decals", decks); diff --git a/Content.Shared/Delivery/DeliveryComponent.cs b/Content.Shared/Delivery/DeliveryComponent.cs index 19effcd211..3eabb5165c 100644 --- a/Content.Shared/Delivery/DeliveryComponent.cs +++ b/Content.Shared/Delivery/DeliveryComponent.cs @@ -1,5 +1,7 @@ +using Content.Shared.Cargo.Prototypes; using Robust.Shared.Audio; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; namespace Content.Shared.Delivery; @@ -23,10 +25,16 @@ public sealed partial class DeliveryComponent : Component public bool IsLocked = true; /// - /// The amount of spesos that gets added to the station bank account on unlock. + /// The base amount of spesos that gets added to the station bank account on unlock. /// [DataField, AutoNetworkedField] - public int SpesoReward = 500; + public int BaseSpesoReward = 500; + + /// + /// The base amount of spesos that will be removed from the station bank account on a penalized delivery + /// + [DataField, AutoNetworkedField] + public int BaseSpesoPenalty = 250; /// /// The name of the recipient of this delivery. @@ -48,6 +56,19 @@ public sealed partial class DeliveryComponent : Component [DataField, AutoNetworkedField] public EntityUid? RecipientStation; + /// + /// The bank account ID of the account to subtract funds from in case of penalization + /// + [DataField, AutoNetworkedField] + public ProtoId PenaltyBankAccount = "Cargo"; + + /// + /// Whether this delivery has already received a penalty. + /// Used to avoid getting penalized several times. + /// + [DataField, AutoNetworkedField] + public bool WasPenalized; + /// /// The sound to play when the delivery is unlocked. /// diff --git a/Content.Shared/Delivery/DeliverySpawnerComponent.cs b/Content.Shared/Delivery/DeliverySpawnerComponent.cs index 4491509cb3..81e8c97cf5 100644 --- a/Content.Shared/Delivery/DeliverySpawnerComponent.cs +++ b/Content.Shared/Delivery/DeliverySpawnerComponent.cs @@ -1,15 +1,13 @@ using Content.Shared.EntityTable.EntitySelectors; using Robust.Shared.Audio; using Robust.Shared.GameStates; -using Robust.Shared.Prototypes; - namespace Content.Shared.Delivery; /// /// Used to mark entities that are valid for spawning deliveries on. /// If this requires power, it needs to be powered to count as a valid spawner. /// -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class DeliverySpawnerComponent : Component { /// @@ -18,9 +16,28 @@ public sealed partial class DeliverySpawnerComponent : Component [DataField(required: true)] public EntityTableSelector Table = default!; + /// + /// The max amount of deliveries this spawner can hold at a time. + /// + [DataField] + public int MaxContainedDeliveryAmount = 20; + + /// + /// The currently held amount of deliveries. + /// They are stored as an int and only spawned on use, as to not create additional entities without the need to. + /// + [DataField, AutoNetworkedField] + public int ContainedDeliveryAmount; + /// /// The sound to play when the spawner spawns a delivery. /// [DataField] public SoundSpecifier? SpawnSound = new SoundCollectionSpecifier("DeliverySpawnSounds", AudioParams.Default.WithVolume(-7)); + + /// + /// The sound to play when a spawner is opened, and spills all the deliveries out. + /// + [DataField] + public SoundSpecifier? OpenSound = new SoundCollectionSpecifier("storageRustle"); } diff --git a/Content.Shared/Delivery/DeliveryVisuals.cs b/Content.Shared/Delivery/DeliveryVisuals.cs index 6da45b6277..69eb5fda9e 100644 --- a/Content.Shared/Delivery/DeliveryVisuals.cs +++ b/Content.Shared/Delivery/DeliveryVisuals.cs @@ -13,3 +13,9 @@ public enum DeliveryVisuals : byte IsPriorityInactive, JobIcon, } + +[Serializable, NetSerializable] +public enum DeliverySpawnerVisuals : byte +{ + Contents, +} diff --git a/Content.Shared/Delivery/SharedDeliverySystem.cs b/Content.Shared/Delivery/SharedDeliverySystem.cs index 319bf41fce..53c5224940 100644 --- a/Content.Shared/Delivery/SharedDeliverySystem.cs +++ b/Content.Shared/Delivery/SharedDeliverySystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Interaction.Events; using Content.Shared.NameModifier.EntitySystems; using Content.Shared.Objectives.Components; using Content.Shared.Popups; +using Content.Shared.Tools.Components; using Content.Shared.Tag; using Content.Shared.Verbs; using Robust.Shared.Audio.Systems; @@ -38,12 +39,17 @@ public abstract class SharedDeliverySystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnDeliveryExamine); SubscribeLocalEvent(OnUseInHand); - SubscribeLocalEvent>(OnGetVerbs); + SubscribeLocalEvent>(OnGetDeliveryVerbs); + SubscribeLocalEvent(OnAttemptSimpleToolUse); + SubscribeLocalEvent(OnSimpleToolUse); + + SubscribeLocalEvent(OnSpawnerExamine); + SubscribeLocalEvent>(OnGetSpawnerVerbs); } - private void OnExamine(Entity ent, ref ExaminedEvent args) + private void OnDeliveryExamine(Entity ent, ref ExaminedEvent args) { var jobTitle = ent.Comp.RecipientJobTitle ?? Loc.GetString("delivery-recipient-no-job"); var recipientName = ent.Comp.RecipientName ?? Loc.GetString("delivery-recipient-no-name"); @@ -56,6 +62,11 @@ public abstract class SharedDeliverySystem : EntitySystem args.PushText(Loc.GetString("delivery-recipient-examine", ("recipient", recipientName), ("job", jobTitle))); } + private void OnSpawnerExamine(Entity ent, ref ExaminedEvent args) + { + args.PushMarkup(Loc.GetString("delivery-teleporter-amount-examine", ("amount", ent.Comp.ContainedDeliveryAmount)), 50); + } + private void OnUseInHand(Entity ent, ref UseInHandEvent args) { args.Handled = true; @@ -69,7 +80,7 @@ public abstract class SharedDeliverySystem : EntitySystem OpenDelivery(ent, args.User); } - private void OnGetVerbs(Entity ent, ref GetVerbsEvent args) + private void OnGetDeliveryVerbs(Entity ent, ref GetVerbsEvent args) { if (!args.CanAccess || !args.CanInteract || args.Hands == null || ent.Comp.IsOpened) return; @@ -92,33 +103,83 @@ public abstract class SharedDeliverySystem : EntitySystem }); } - private bool TryUnlockDelivery(Entity ent, EntityUid user, bool rewardMoney = true) + + private void OnAttemptSimpleToolUse(Entity ent, ref AttemptSimpleToolUseEvent args) + { + if (ent.Comp.IsOpened || !ent.Comp.IsLocked) + args.Cancelled = true; + } + + private void OnSimpleToolUse(Entity ent, ref SimpleToolDoAfterEvent args) + { + if (ent.Comp.IsOpened || args.Cancelled) + return; + + HandlePenalty(ent); + + TryUnlockDelivery(ent, args.User, false, true); + OpenDelivery(ent, args.User, false, true); + } + + private void OnGetSpawnerVerbs(Entity ent, ref GetVerbsEvent args) + { + if (!args.CanAccess || !args.CanInteract || args.Hands == null) + return; + + var user = args.User; + + args.Verbs.Add(new AlternativeVerb() + { + Act = () => + { + _audio.PlayPredicted(ent.Comp.OpenSound, ent.Owner, user); + + if(ent.Comp.ContainedDeliveryAmount == 0) + { + _popup.PopupPredicted(Loc.GetString("delivery-teleporter-empty", ("entity", ent)), null, ent, user); + return; + } + + SpawnDeliveries(ent.Owner); + + UpdateDeliverySpawnerVisuals(ent, ent.Comp.ContainedDeliveryAmount); + }, + Text = Loc.GetString("delivery-teleporter-empty-verb"), + }); + } + + private bool TryUnlockDelivery(Entity ent, EntityUid user, bool rewardMoney = true, bool force = false) { // Check fingerprint access if there is a reader on the mail - if (TryComp(ent, out var reader) && !_fingerprintReader.IsAllowed((ent, reader), user)) + if (!force && TryComp(ent, out var reader) && !_fingerprintReader.IsAllowed((ent, reader), user)) return false; var deliveryName = _nameModifier.GetBaseName(ent.Owner); - _audio.PlayPredicted(ent.Comp.UnlockSound, user, user); + if (!force) + _audio.PlayPredicted(ent.Comp.UnlockSound, user, user); ent.Comp.IsLocked = false; UpdateAntiTamperVisuals(ent, ent.Comp.IsLocked); DirtyField(ent, ent.Comp, nameof(DeliveryComponent.IsLocked)); + RemCompDeferred(ent); // we don't want unlocked mail to still be cuttable + var ev = new DeliveryUnlockedEvent(user); RaiseLocalEvent(ent, ref ev); if (rewardMoney) GrantSpesoReward(ent.AsNullable()); - _popup.PopupPredicted(Loc.GetString("delivery-unlocked-self", ("delivery", deliveryName)), - Loc.GetString("delivery-unlocked-others", ("delivery", deliveryName), ("recipient", Identity.Name(user, EntityManager)), ("possadj", user)), user, user); + if (!force) + _popup.PopupPredicted(Loc.GetString("delivery-unlocked-self", ("delivery", deliveryName)), + Loc.GetString("delivery-unlocked-others", ("delivery", deliveryName), ("recipient", Identity.Name(user, EntityManager)), ("possadj", user)), user, user); + return true; } - private void OpenDelivery(Entity ent, EntityUid user, bool attemptPickup = true) + private void OpenDelivery(Entity ent, EntityUid user, bool attemptPickup = true, bool force = false) { var deliveryName = _nameModifier.GetBaseName(ent.Owner); @@ -135,12 +196,13 @@ public abstract class SharedDeliverySystem : EntitySystem _tag.AddTags(ent, TrashTag, RecyclableTag); EnsureComp(ent); - RemComp(ent); // opened mail should not count for the objective + RemCompDeferred(ent); // opened mail should not count for the objective DirtyField(ent.Owner, ent.Comp, nameof(DeliveryComponent.IsOpened)); - _popup.PopupPredicted(Loc.GetString("delivery-opened-self", ("delivery", deliveryName)), - Loc.GetString("delivery-opened-others", ("delivery", deliveryName), ("recipient", Identity.Name(user, EntityManager)), ("possadj", user)), user, user); + if (!force) + _popup.PopupPredicted(Loc.GetString("delivery-opened-self", ("delivery", deliveryName)), + Loc.GetString("delivery-opened-others", ("delivery", deliveryName), ("recipient", Identity.Name(user, EntityManager)), ("possadj", user)), user, user); if (!_container.TryGetContainer(ent, ent.Comp.Container, out var container)) return; @@ -154,7 +216,7 @@ public abstract class SharedDeliverySystem : EntitySystem } else { - _container.EmptyContainer(container, true, Transform(ent.Owner).Coordinates); + _container.EmptyContainer(container, true); } } @@ -168,7 +230,26 @@ public abstract class SharedDeliverySystem : EntitySystem _appearance.SetData(uid, DeliveryVisuals.IsPriority, false); } + protected void UpdateDeliverySpawnerVisuals(EntityUid uid, int contents) + { + _appearance.SetData(uid, DeliverySpawnerVisuals.Contents, contents > 0); + } + protected virtual void GrantSpesoReward(Entity ent) { } + + protected virtual void HandlePenalty(Entity ent, string? reason = null) { } + + protected virtual void SpawnDeliveries(Entity ent) { } +} + +/// +/// Used to gather the multiplier from all different delivery components. +/// +[ByRefEvent] +public record struct GetDeliveryMultiplierEvent(float Multiplier) +{ + // we can't use an optional parameter because the default parameterless constructor defaults everything + public GetDeliveryMultiplierEvent() : this(1.0f) { } } /// diff --git a/Content.Server/DeviceNetwork/Components/DeviceNetworkComponent.cs b/Content.Shared/DeviceNetwork/Components/DeviceNetworkComponent.cs similarity index 93% rename from Content.Server/DeviceNetwork/Components/DeviceNetworkComponent.cs rename to Content.Shared/DeviceNetwork/Components/DeviceNetworkComponent.cs index 186da57e5d..37a86e7161 100644 --- a/Content.Server/DeviceNetwork/Components/DeviceNetworkComponent.cs +++ b/Content.Shared/DeviceNetwork/Components/DeviceNetworkComponent.cs @@ -1,11 +1,10 @@ -using Content.Server.DeviceNetwork.Systems; -using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Systems; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; -namespace Content.Server.DeviceNetwork.Components +namespace Content.Shared.DeviceNetwork.Components { [RegisterComponent] - [Access(typeof(DeviceNetworkSystem), typeof(DeviceNet))] + [Access(typeof(SharedDeviceNetworkSystem), typeof(DeviceNet))] public sealed partial class DeviceNetworkComponent : Component { public enum DeviceNetIdDefaults @@ -113,14 +112,14 @@ namespace Content.Server.DeviceNetwork.Components /// A list of device-lists that this device is on. /// [DataField] - [Access(typeof(DeviceListSystem))] + [Access(typeof(SharedDeviceListSystem))] public HashSet DeviceLists = new(); /// /// A list of configurators that this device is on. /// [DataField] - [Access(typeof(NetworkConfiguratorSystem))] + [Access(typeof(SharedNetworkConfiguratorSystem))] public HashSet Configurators = new(); } } diff --git a/Content.Server/DeviceNetwork/DeviceNet.cs b/Content.Shared/DeviceNetwork/DeviceNet.cs similarity index 97% rename from Content.Server/DeviceNetwork/DeviceNet.cs rename to Content.Shared/DeviceNetwork/DeviceNet.cs index c77d45c061..4234b30385 100644 --- a/Content.Server/DeviceNetwork/DeviceNet.cs +++ b/Content.Shared/DeviceNetwork/DeviceNet.cs @@ -1,8 +1,7 @@ -using Content.Server.DeviceNetwork.Components; using Robust.Shared.Random; -using static Content.Server.DeviceNetwork.Components.DeviceNetworkComponent; +using Content.Shared.DeviceNetwork.Components; -namespace Content.Server.DeviceNetwork; +namespace Content.Shared.DeviceNetwork; /// /// Data class for storing and retrieving information about devices connected to a device network. diff --git a/Content.Server/DeviceNetwork/DeviceNetworkConstants.cs b/Content.Shared/DeviceNetwork/DeviceNetworkConstants.cs similarity index 96% rename from Content.Server/DeviceNetwork/DeviceNetworkConstants.cs rename to Content.Shared/DeviceNetwork/DeviceNetworkConstants.cs index 6cbad603b4..7fec72bb69 100644 --- a/Content.Server/DeviceNetwork/DeviceNetworkConstants.cs +++ b/Content.Shared/DeviceNetwork/DeviceNetworkConstants.cs @@ -1,7 +1,7 @@ -using Content.Server.DeviceNetwork.Components; using Robust.Shared.Utility; +using Content.Shared.DeviceNetwork.Components; -namespace Content.Server.DeviceNetwork +namespace Content.Shared.DeviceNetwork { /// /// A collection of constants to help with using device networks diff --git a/Content.Shared/DeviceNetwork/Events/BeforeBroadcastAttemptEvent.cs b/Content.Shared/DeviceNetwork/Events/BeforeBroadcastAttemptEvent.cs new file mode 100644 index 0000000000..f495847482 --- /dev/null +++ b/Content.Shared/DeviceNetwork/Events/BeforeBroadcastAttemptEvent.cs @@ -0,0 +1,17 @@ +using Content.Shared.DeviceNetwork.Components; + +namespace Content.Shared.DeviceNetwork.Events; + +/// +/// Sent to the sending entity before broadcasting network packets to recipients +/// +public sealed class BeforeBroadcastAttemptEvent : CancellableEntityEventArgs +{ + public readonly IReadOnlySet Recipients; + public HashSet? ModifiedRecipients; + + public BeforeBroadcastAttemptEvent(IReadOnlySet recipients) + { + Recipients = recipients; + } +} diff --git a/Content.Shared/DeviceNetwork/Events/BeforePacketSentEvent.cs b/Content.Shared/DeviceNetwork/Events/BeforePacketSentEvent.cs new file mode 100644 index 0000000000..5d5c038dbf --- /dev/null +++ b/Content.Shared/DeviceNetwork/Events/BeforePacketSentEvent.cs @@ -0,0 +1,35 @@ +using System.Numerics; + +namespace Content.Shared.DeviceNetwork.Events; + +/// +/// Event raised before a device network packet is send. +/// Subscribed to by other systems to prevent the packet from being sent. +/// +public sealed class BeforePacketSentEvent : CancellableEntityEventArgs +{ + /// + /// The EntityUid of the entity the packet was sent from. + /// + public readonly EntityUid Sender; + + public readonly TransformComponent SenderTransform; + + /// + /// The senders current position in world coordinates. + /// + public readonly Vector2 SenderPosition; + + /// + /// The network the packet will be sent to. + /// + public readonly string NetworkId; + + public BeforePacketSentEvent(EntityUid sender, TransformComponent xform, Vector2 senderPosition, string networkId) + { + Sender = sender; + SenderTransform = xform; + SenderPosition = senderPosition; + NetworkId = networkId; + } +} \ No newline at end of file diff --git a/Content.Shared/DeviceNetwork/Events/DeviceNetworkPacketEvent.cs b/Content.Shared/DeviceNetwork/Events/DeviceNetworkPacketEvent.cs new file mode 100644 index 0000000000..4ae6afeef7 --- /dev/null +++ b/Content.Shared/DeviceNetwork/Events/DeviceNetworkPacketEvent.cs @@ -0,0 +1,47 @@ +namespace Content.Shared.DeviceNetwork.Events; + +/// +/// Event raised when a device network packet gets sent. +/// +public sealed class DeviceNetworkPacketEvent : EntityEventArgs +{ + /// + /// The id of the network that this packet is being sent on. + /// + public int NetId; + + /// + /// The frequency the packet is sent on. + /// + public readonly uint Frequency; + + /// + /// Address of the intended recipient. Null if the message was broadcast. + /// + public string? Address; + + /// + /// The device network address of the sending entity. + /// + public readonly string SenderAddress; + + /// + /// The entity that sent the packet. + /// + public EntityUid Sender; + + /// + /// The data that is being sent. + /// + public readonly NetworkPayload Data; + + public DeviceNetworkPacketEvent(int netId, string? address, uint frequency, string senderAddress, EntityUid sender, NetworkPayload data) + { + NetId = netId; + Address = address; + Frequency = frequency; + SenderAddress = senderAddress; + Sender = sender; + Data = data; + } +} \ No newline at end of file diff --git a/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkSystem.cs b/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkSystem.cs new file mode 100644 index 0000000000..5992c40413 --- /dev/null +++ b/Content.Shared/DeviceNetwork/Systems/SharedDeviceNetworkSystem.cs @@ -0,0 +1,25 @@ +using Content.Shared.DeviceNetwork.Components; + +namespace Content.Shared.DeviceNetwork.Systems; + +public abstract class SharedDeviceNetworkSystem : EntitySystem +{ + /// + /// Sends the given payload as a device network packet to the entity with the given address and frequency. + /// Addresses are given to the DeviceNetworkComponent of an entity when connecting. + /// + /// The EntityUid of the sending entity + /// The address of the entity that the packet gets sent to. If null, the message is broadcast to all devices on that frequency (except the sender) + /// The frequency to send on + /// The data to be sent + /// Returns true when the packet was successfully enqueued. + public virtual bool QueuePacket(EntityUid uid, + string? address, + NetworkPayload data, + uint? frequency = null, + int? network = null, + DeviceNetworkComponent? device = null) + { + return false; + } +} diff --git a/Content.Server/Disposal/Mailing/MailingUnitComponent.cs b/Content.Shared/Disposal/Mailing/MailingUnitComponent.cs similarity index 57% rename from Content.Server/Disposal/Mailing/MailingUnitComponent.cs rename to Content.Shared/Disposal/Mailing/MailingUnitComponent.cs index be5eca99c4..255d6cdf01 100644 --- a/Content.Server/Disposal/Mailing/MailingUnitComponent.cs +++ b/Content.Shared/Disposal/Mailing/MailingUnitComponent.cs @@ -1,30 +1,28 @@ -using Content.Shared.Disposal.Components; +using Content.Shared.Disposal.Mailing; +using Robust.Shared.GameStates; -namespace Content.Server.Disposal.Mailing; +namespace Content.Shared.Disposal.Components; -[Access(typeof(MailingUnitSystem))] -[RegisterComponent] +[Access(typeof(SharedMailingUnitSystem))] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] public sealed partial class MailingUnitComponent : Component { /// /// List of targets the mailing unit can send to. /// Each target is just a disposal routing tag /// - [DataField("targetList")] + [DataField, AutoNetworkedField] public List TargetList = new(); /// /// The target that gets attached to the disposal holders tag list on flush /// - [DataField("target")] + [DataField, AutoNetworkedField] public string? Target; /// /// The tag for this mailing unit /// - [ViewVariables(VVAccess.ReadWrite)] - [DataField("tag")] + [DataField, AutoNetworkedField] public string? Tag; - - public SharedDisposalUnitComponent.DisposalUnitBoundUserInterfaceState? DisposalUnitInterfaceState; } diff --git a/Content.Shared/Disposal/MailingUnitUiMessages.cs b/Content.Shared/Disposal/Mailing/MailingUnitUiMessages.cs similarity index 100% rename from Content.Shared/Disposal/MailingUnitUiMessages.cs rename to Content.Shared/Disposal/Mailing/MailingUnitUiMessages.cs diff --git a/Content.Shared/Disposal/Components/SharedDisposalRouterComponent.cs b/Content.Shared/Disposal/Mailing/SharedDisposalRouterComponent.cs similarity index 100% rename from Content.Shared/Disposal/Components/SharedDisposalRouterComponent.cs rename to Content.Shared/Disposal/Mailing/SharedDisposalRouterComponent.cs diff --git a/Content.Shared/Disposal/Components/SharedDisposalTaggerComponent.cs b/Content.Shared/Disposal/Mailing/SharedDisposalTaggerComponent.cs similarity index 100% rename from Content.Shared/Disposal/Components/SharedDisposalTaggerComponent.cs rename to Content.Shared/Disposal/Mailing/SharedDisposalTaggerComponent.cs diff --git a/Content.Shared/Disposal/Mailing/SharedMailingUnitSystem.cs b/Content.Shared/Disposal/Mailing/SharedMailingUnitSystem.cs new file mode 100644 index 0000000000..cb7a8c46c8 --- /dev/null +++ b/Content.Shared/Disposal/Mailing/SharedMailingUnitSystem.cs @@ -0,0 +1,174 @@ +using Content.Shared.Configurable; +using Content.Shared.DeviceNetwork; +using Content.Shared.DeviceNetwork.Components; +using Content.Shared.DeviceNetwork.Events; +using Content.Shared.DeviceNetwork.Systems; +using Content.Shared.Disposal.Components; +using Content.Shared.Disposal.Unit; +using Content.Shared.Disposal.Unit.Events; +using Content.Shared.Interaction; +using Content.Shared.Power.EntitySystems; +using Robust.Shared.Player; + +namespace Content.Shared.Disposal.Mailing; + +public abstract class SharedMailingUnitSystem : EntitySystem +{ + [Dependency] private readonly SharedDeviceNetworkSystem _deviceNetworkSystem = default!; + [Dependency] private readonly SharedPowerReceiverSystem _power = default!; + [Dependency] protected readonly SharedUserInterfaceSystem UserInterfaceSystem = default!; + + private const string MailTag = "mail"; + + private const string TagConfigurationKey = "tag"; + + private const string NetTag = "tag"; + private const string NetSrc = "src"; + private const string NetTarget = "target"; + private const string NetCmdSent = "mail_sent"; + private const string NetCmdRequest = "get_mailer_tag"; + private const string NetCmdResponse = "mailer_tag"; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnPacketReceived); + SubscribeLocalEvent(OnBeforeFlush); + SubscribeLocalEvent(OnConfigurationUpdated); + SubscribeLocalEvent(HandleActivate, before: new[] { typeof(SharedDisposalUnitSystem) }); + SubscribeLocalEvent(OnTargetSelected); + } + + private void OnComponentInit(EntityUid uid, MailingUnitComponent component, ComponentInit args) + { + UpdateTargetList(uid, component); + } + + private void OnPacketReceived(EntityUid uid, MailingUnitComponent component, DeviceNetworkPacketEvent args) + { + if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string? command) || !_power.IsPowered(uid)) + return; + + switch (command) + { + case NetCmdRequest: + SendTagRequestResponse(uid, args, component.Tag); + break; + case NetCmdResponse when args.Data.TryGetValue(NetTag, out string? tag): + //Add the received tag request response to the list of targets + component.TargetList.Add(tag); + Dirty(uid, component); + break; + } + } + + /// + /// Sends the given tag as a response to a if it's not null + /// + private void SendTagRequestResponse(EntityUid uid, DeviceNetworkPacketEvent args, string? tag) + { + if (tag == null) + return; + + var payload = new NetworkPayload + { + [DeviceNetworkConstants.Command] = NetCmdResponse, + [NetTag] = tag + }; + + _deviceNetworkSystem.QueuePacket(uid, args.Address, payload, args.Frequency); + } + + /// + /// Prevents the unit from flushing if no target is selected + /// + private void OnBeforeFlush(EntityUid uid, MailingUnitComponent component, BeforeDisposalFlushEvent args) + { + if (string.IsNullOrEmpty(component.Target)) + { + args.Cancel(); + return; + } + + Dirty(uid, component); + args.Tags.Add(MailTag); + args.Tags.Add(component.Target); + + BroadcastSentMessage(uid, component); + } + + /// + /// Broadcast that a mail was sent including the src and target tags + /// + private void BroadcastSentMessage(EntityUid uid, MailingUnitComponent component, DeviceNetworkComponent? device = null) + { + if (string.IsNullOrEmpty(component.Tag) || string.IsNullOrEmpty(component.Target) || !Resolve(uid, ref device)) + return; + + var payload = new NetworkPayload + { + [DeviceNetworkConstants.Command] = NetCmdSent, + [NetSrc] = component.Tag, + [NetTarget] = component.Target + }; + + _deviceNetworkSystem.QueuePacket(uid, null, payload, null, null, device); + } + + /// + /// Clears the units target list and broadcasts a . + /// The target list will then get populated with responses from all active mailing units on the same grid + /// + private void UpdateTargetList(EntityUid uid, MailingUnitComponent component, DeviceNetworkComponent? device = null) + { + if (!Resolve(uid, ref device, false)) + return; + + var payload = new NetworkPayload + { + [DeviceNetworkConstants.Command] = NetCmdRequest + }; + + component.TargetList.Clear(); + _deviceNetworkSystem.QueuePacket(uid, null, payload, null, null, device); + } + + /// + /// Gets called when the units tag got updated + /// + private void OnConfigurationUpdated(EntityUid uid, MailingUnitComponent component, ConfigurationUpdatedEvent args) + { + var configuration = args.Configuration.Config; + if (!configuration.ContainsKey(TagConfigurationKey) || configuration[TagConfigurationKey] == string.Empty) + { + component.Tag = null; + return; + } + + component.Tag = configuration[TagConfigurationKey]; + Dirty(uid, component); + } + + private void HandleActivate(EntityUid uid, MailingUnitComponent component, ActivateInWorldEvent args) + { + if (args.Handled || !args.Complex) + return; + + if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) + { + return; + } + + args.Handled = true; + UpdateTargetList(uid, component); + UserInterfaceSystem.OpenUi(uid, MailingUnitUiKey.Key, actor.PlayerSession); + } + + private void OnTargetSelected(EntityUid uid, MailingUnitComponent component, TargetSelectedMessage args) + { + component.Target = args.Target; + Dirty(uid, component); + } +} diff --git a/Content.Shared/Disposal/MailingUnitBoundUserInterfaceState.cs b/Content.Shared/Disposal/MailingUnitBoundUserInterfaceState.cs deleted file mode 100644 index 65be092072..0000000000 --- a/Content.Shared/Disposal/MailingUnitBoundUserInterfaceState.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Content.Shared.Disposal.Components; -using Robust.Shared.Serialization; - -namespace Content.Shared.Disposal; - -[Serializable, NetSerializable] -public sealed class MailingUnitBoundUserInterfaceState : BoundUserInterfaceState, IEquatable -{ - public string? Target; - public List TargetList; - public string? Tag; - public SharedDisposalUnitComponent.DisposalUnitBoundUserInterfaceState DisposalState; - - public MailingUnitBoundUserInterfaceState(SharedDisposalUnitComponent.DisposalUnitBoundUserInterfaceState disposalState, string? target, List targetList, string? tag) - { - DisposalState = disposalState; - Target = target; - TargetList = targetList; - Tag = tag; - } - - public bool Equals(MailingUnitBoundUserInterfaceState? other) - { - if (other is null) - return false; - if (ReferenceEquals(this, other)) - return true; - return DisposalState.Equals(other.DisposalState) - && Target == other.Target - && TargetList.Equals(other.TargetList) - && Tag == other.Tag; - } - - public override bool Equals(object? other) - { - if (other is MailingUnitBoundUserInterfaceState otherState) - return Equals(otherState); - return false; - } - - public override int GetHashCode() - { - return base.GetHashCode(); - } -} diff --git a/Content.Shared/Disposal/SharedDisposalUnitSystem.cs b/Content.Shared/Disposal/SharedDisposalUnitSystem.cs deleted file mode 100644 index a650ef72f8..0000000000 --- a/Content.Shared/Disposal/SharedDisposalUnitSystem.cs +++ /dev/null @@ -1,162 +0,0 @@ -using System.Diagnostics.CodeAnalysis; -using Content.Shared.Body.Components; -using Content.Shared.Disposal.Components; -using Content.Shared.DoAfter; -using Content.Shared.DragDrop; -using Content.Shared.Emag.Systems; -using Content.Shared.Item; -using Content.Shared.Throwing; -using Content.Shared.Whitelist; -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; - -namespace Content.Shared.Disposal; - -[Serializable, NetSerializable] -public sealed partial class DisposalDoAfterEvent : SimpleDoAfterEvent -{ -} - -public abstract class SharedDisposalUnitSystem : EntitySystem -{ - [Dependency] protected readonly IGameTiming GameTiming = default!; - [Dependency] protected readonly EmagSystem _emag = default!; - [Dependency] protected readonly MetaDataSystem Metadata = default!; - [Dependency] protected readonly SharedJointSystem Joints = default!; - [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; - - protected static TimeSpan ExitAttemptDelay = TimeSpan.FromSeconds(0.5); - - // Percentage - public const float PressurePerSecond = 0.05f; - - public abstract bool HasDisposals([NotNullWhen(true)] EntityUid? uid); - - public abstract bool ResolveDisposals(EntityUid uid, [NotNullWhen(true)] ref SharedDisposalUnitComponent? component); - - /// - /// Gets the current pressure state of a disposals unit. - /// - /// - /// - /// - /// - public DisposalsPressureState GetState(EntityUid uid, SharedDisposalUnitComponent component, MetaDataComponent? metadata = null) - { - var nextPressure = Metadata.GetPauseTime(uid, metadata) + component.NextPressurized - GameTiming.CurTime; - var pressurizeTime = 1f / PressurePerSecond; - var pressurizeDuration = pressurizeTime - component.FlushDelay.TotalSeconds; - - if (nextPressure.TotalSeconds > pressurizeDuration) - { - return DisposalsPressureState.Flushed; - } - - if (nextPressure > TimeSpan.Zero) - { - return DisposalsPressureState.Pressurizing; - } - - return DisposalsPressureState.Ready; - } - - public float GetPressure(EntityUid uid, SharedDisposalUnitComponent component, MetaDataComponent? metadata = null) - { - if (!Resolve(uid, ref metadata)) - return 0f; - - var pauseTime = Metadata.GetPauseTime(uid, metadata); - return MathF.Min(1f, - (float) (GameTiming.CurTime - pauseTime - component.NextPressurized).TotalSeconds / PressurePerSecond); - } - - protected void OnPreventCollide(EntityUid uid, SharedDisposalUnitComponent component, - ref PreventCollideEvent args) - { - var otherBody = args.OtherEntity; - - // Items dropped shouldn't collide but items thrown should - if (HasComp(otherBody) && !HasComp(otherBody)) - { - args.Cancelled = true; - return; - } - - if (component.RecentlyEjected.Contains(otherBody)) - { - args.Cancelled = true; - } - } - - protected void OnCanDragDropOn(EntityUid uid, SharedDisposalUnitComponent component, ref CanDropTargetEvent args) - { - if (args.Handled) - return; - - args.CanDrop = CanInsert(uid, component, args.Dragged); - args.Handled = true; - } - - protected void OnEmagged(EntityUid uid, SharedDisposalUnitComponent component, ref GotEmaggedEvent args) - { - if (!_emag.CompareFlag(args.Type, EmagType.Interaction)) - return; - - if (component.DisablePressure == true) - return; - - component.DisablePressure = true; - args.Handled = true; - } - - public virtual bool CanInsert(EntityUid uid, SharedDisposalUnitComponent component, EntityUid entity) - { - if (!Transform(uid).Anchored) - return false; - - var storable = HasComp(entity); - if (!storable && !HasComp(entity)) - return false; - - if (_whitelistSystem.IsBlacklistPass(component.Blacklist, entity) || - _whitelistSystem.IsWhitelistFail(component.Whitelist, entity)) - return false; - - if (TryComp(entity, out var physics) && (physics.CanCollide) || storable) - return true; - else - return false; - - } - - public abstract void DoInsertDisposalUnit(EntityUid uid, EntityUid toInsert, EntityUid user, SharedDisposalUnitComponent? disposal = null); - - [Serializable, NetSerializable] - protected sealed class DisposalUnitComponentState : ComponentState - { - public SoundSpecifier? FlushSound; - public DisposalsPressureState State; - public TimeSpan NextPressurized; - public TimeSpan AutomaticEngageTime; - public TimeSpan? NextFlush; - public bool Powered; - public bool Engaged; - public List RecentlyEjected; - - public DisposalUnitComponentState(SoundSpecifier? flushSound, DisposalsPressureState state, TimeSpan nextPressurized, TimeSpan automaticEngageTime, TimeSpan? nextFlush, bool powered, bool engaged, List recentlyEjected) - { - FlushSound = flushSound; - State = state; - NextPressurized = nextPressurized; - AutomaticEngageTime = automaticEngageTime; - NextFlush = nextFlush; - Powered = powered; - Engaged = engaged; - RecentlyEjected = recentlyEjected; - } - } -} diff --git a/Content.Shared/Disposal/Tube/DisposalEntryComponent.cs b/Content.Shared/Disposal/Tube/DisposalEntryComponent.cs new file mode 100644 index 0000000000..066b16ad1f --- /dev/null +++ b/Content.Shared/Disposal/Tube/DisposalEntryComponent.cs @@ -0,0 +1,12 @@ +using Content.Shared.Disposal.Unit; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Disposal.Tube; + +[RegisterComponent] +[Access(typeof(SharedDisposalTubeSystem), typeof(SharedDisposalUnitSystem))] +public sealed partial class DisposalEntryComponent : Component +{ + [DataField] + public EntProtoId HolderPrototypeId = "DisposalHolder"; +} diff --git a/Content.Shared/Disposal/Components/SharedDisposalTubeComponent.cs b/Content.Shared/Disposal/Tube/SharedDisposalTubeComponent.cs similarity index 100% rename from Content.Shared/Disposal/Components/SharedDisposalTubeComponent.cs rename to Content.Shared/Disposal/Tube/SharedDisposalTubeComponent.cs diff --git a/Content.Shared/Disposal/Unit/BeforeDisposalFlushEvent.cs b/Content.Shared/Disposal/Unit/BeforeDisposalFlushEvent.cs new file mode 100644 index 0000000000..ee141d6c4d --- /dev/null +++ b/Content.Shared/Disposal/Unit/BeforeDisposalFlushEvent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.Disposal.Unit.Events; + +/// +/// Sent before the disposal unit flushes it's contents. +/// Allows adding tags for sorting and preventing the disposal unit from flushing. +/// +public sealed class BeforeDisposalFlushEvent : CancellableEntityEventArgs +{ + public readonly List Tags = new(); +} \ No newline at end of file diff --git a/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs b/Content.Shared/Disposal/Unit/DisposalUnitComponent.cs similarity index 68% rename from Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs rename to Content.Shared/Disposal/Unit/DisposalUnitComponent.cs index 36dd14f9b2..34fe223013 100644 --- a/Content.Shared/Disposal/Components/SharedDisposalUnitComponent.cs +++ b/Content.Shared/Disposal/Unit/DisposalUnitComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Atmos; using Robust.Shared.Audio; using Content.Shared.Whitelist; using Robust.Shared.Containers; @@ -7,15 +8,24 @@ using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; namespace Content.Shared.Disposal.Components; -[NetworkedComponent] -public abstract partial class SharedDisposalUnitComponent : Component +/// +/// Takes in entities and flushes them out to attached disposals tubes after a timer. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +public sealed partial class DisposalUnitComponent : Component { public const string ContainerId = "disposals"; + /// + /// Air contained in the disposal unit. + /// + [DataField] + public GasMixture Air = new(Atmospherics.CellVolume); + /// /// Sounds played upon the unit flushing. /// - [ViewVariables(VVAccess.ReadWrite), DataField("soundFlush")] + [DataField("soundFlush"), AutoNetworkedField] public SoundSpecifier? FlushSound = new SoundPathSpecifier("/Audio/Machines/disposalflush.ogg"); /// @@ -39,20 +49,13 @@ public abstract partial class SharedDisposalUnitComponent : Component /// /// State for this disposals unit. /// - [DataField] + [DataField, AutoNetworkedField] public DisposalsPressureState State; - // TODO: Just make this use vaulting. - /// - /// We'll track whatever just left disposals so we know what collision we need to ignore until they stop intersecting our BB. - /// - [ViewVariables, DataField] - public List RecentlyEjected = new(); - /// /// Next time the disposal unit will be pressurized. /// - [DataField(customTypeSerializer:typeof(TimeOffsetSerializer))] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField] public TimeSpan NextPressurized = TimeSpan.Zero; /// @@ -70,26 +73,24 @@ public abstract partial class SharedDisposalUnitComponent : Component /// /// Removes the pressure requirement for flushing. /// - [DataField, ViewVariables(VVAccess.ReadWrite)] + [DataField] public bool DisablePressure; /// /// Last time that an entity tried to exit this disposal unit. /// - [ViewVariables] + [DataField, AutoNetworkedField] public TimeSpan LastExitAttempt; [DataField] public bool AutomaticEngage = true; - [ViewVariables(VVAccess.ReadWrite)] - [DataField] + [DataField, AutoNetworkedField] public TimeSpan AutomaticEngageTime = TimeSpan.FromSeconds(30); /// /// Delay from trying to enter disposals ourselves. /// - [ViewVariables(VVAccess.ReadWrite)] [DataField] public float EntryDelay = 0.5f; @@ -104,20 +105,16 @@ public abstract partial class SharedDisposalUnitComponent : Component /// [ViewVariables] public Container Container = default!; - // TODO: Network power shit instead fam. - [ViewVariables, DataField] - public bool Powered; - /// /// Was the disposals unit engaged for a manual flush. /// - [ViewVariables(VVAccess.ReadWrite), DataField] + [DataField, AutoNetworkedField] public bool Engaged; /// /// Next time this unit will flush. Is the lesser of and /// - [ViewVariables, DataField(customTypeSerializer:typeof(TimeOffsetSerializer))] + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField] public TimeSpan? NextFlush; [Serializable, NetSerializable] @@ -162,37 +159,6 @@ public abstract partial class SharedDisposalUnitComponent : Component Power } - [Serializable, NetSerializable] - public sealed class DisposalUnitBoundUserInterfaceState : BoundUserInterfaceState, IEquatable - { - public readonly string UnitName; - public readonly string UnitState; - public readonly TimeSpan FullPressureTime; - public readonly bool Powered; - public readonly bool Engaged; - - public DisposalUnitBoundUserInterfaceState(string unitName, string unitState, TimeSpan fullPressureTime, bool powered, - bool engaged) - { - UnitName = unitName; - UnitState = unitState; - FullPressureTime = fullPressureTime; - Powered = powered; - Engaged = engaged; - } - - public bool Equals(DisposalUnitBoundUserInterfaceState? other) - { - if (ReferenceEquals(null, other)) return false; - if (ReferenceEquals(this, other)) return true; - return UnitName == other.UnitName && - UnitState == other.UnitState && - Powered == other.Powered && - Engaged == other.Engaged && - FullPressureTime.Equals(other.FullPressureTime); - } - } - /// /// Message data sent from client to server when a disposal unit ui button is pressed. /// diff --git a/Content.Shared/Disposal/Unit/SharedDisposalTubeSystem.cs b/Content.Shared/Disposal/Unit/SharedDisposalTubeSystem.cs new file mode 100644 index 0000000000..58d4da7eba --- /dev/null +++ b/Content.Shared/Disposal/Unit/SharedDisposalTubeSystem.cs @@ -0,0 +1,14 @@ +using Content.Shared.Disposal.Components; + +namespace Content.Shared.Disposal.Unit; + +public abstract class SharedDisposalTubeSystem : EntitySystem +{ + public virtual bool TryInsert(EntityUid uid, + DisposalUnitComponent from, + IEnumerable? tags = default, + Tube.DisposalEntryComponent? entry = null) + { + return false; + } +} diff --git a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs b/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.cs similarity index 53% rename from Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs rename to Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.cs index 136ac2c440..1db24c700d 100644 --- a/Content.Server/Disposal/Unit/EntitySystems/DisposalUnitSystem.cs +++ b/Content.Shared/Disposal/Unit/SharedDisposalUnitSystem.cs @@ -1,24 +1,15 @@ -using System.Diagnostics.CodeAnalysis; using System.Linq; -using Content.Server.Administration.Logs; -using Content.Server.Atmos.EntitySystems; -using Content.Server.Containers; -using Content.Server.Disposal.Tube; -using Content.Server.Disposal.Tube.Components; -using Content.Server.Disposal.Unit.Components; -using Content.Server.Popups; -using Content.Server.Power.Components; -using Content.Server.Power.EntitySystems; using Content.Shared.ActionBlocker; -using Content.Shared.Atmos; +using Content.Shared.Administration.Logs; +using Content.Shared.Body.Components; +using Content.Shared.Climbing.Systems; +using Content.Shared.Containers; using Content.Shared.Database; -using Content.Shared.Destructible; -using Content.Shared.Disposal; using Content.Shared.Disposal.Components; +using Content.Shared.Disposal.Unit.Events; using Content.Shared.DoAfter; using Content.Shared.DragDrop; using Content.Shared.Emag.Systems; -using Content.Shared.Explosion; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.IdentityManagement; @@ -27,59 +18,59 @@ using Content.Shared.Item; using Content.Shared.Movement.Events; using Content.Shared.Popups; using Content.Shared.Power; +using Content.Shared.Power.EntitySystems; +using Content.Shared.Throwing; using Content.Shared.Verbs; -using Robust.Server.Audio; -using Robust.Server.GameObjects; +using Content.Shared.Whitelist; +using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; -using Robust.Shared.GameStates; using Robust.Shared.Map.Components; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Events; -using Robust.Shared.Player; +using Robust.Shared.Physics.Systems; +using Robust.Shared.Serialization; +using Robust.Shared.Timing; using Robust.Shared.Utility; -namespace Content.Server.Disposal.Unit.EntitySystems; +namespace Content.Shared.Disposal.Unit; -public sealed class DisposalUnitSystem : SharedDisposalUnitSystem +[Serializable, NetSerializable] +public sealed partial class DisposalDoAfterEvent : SimpleDoAfterEvent { - [Dependency] private readonly IAdminLogManager _adminLogger = default!; - [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; - [Dependency] private readonly AppearanceSystem _appearance = default!; - [Dependency] private readonly AtmosphereSystem _atmosSystem = default!; - [Dependency] private readonly AudioSystem _audioSystem = default!; - [Dependency] private readonly DisposalTubeSystem _disposalTubeSystem = default!; - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly PopupSystem _popupSystem = default!; - [Dependency] private readonly PowerReceiverSystem _power = default!; - [Dependency] private readonly SharedContainerSystem _containerSystem = default!; - [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; - [Dependency] private readonly SharedHandsSystem _handsSystem = default!; - [Dependency] private readonly TransformSystem _transformSystem = default!; - [Dependency] private readonly UserInterfaceSystem _ui = default!; - [Dependency] private readonly SharedMapSystem _map = default!; +} + +public abstract class SharedDisposalUnitSystem : EntitySystem +{ + [Dependency] protected readonly ActionBlockerSystem ActionBlockerSystem = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] protected readonly MetaDataSystem Metadata = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + [Dependency] protected readonly SharedAudioSystem Audio = default!; + [Dependency] protected readonly IGameTiming GameTiming = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLog = default!; + [Dependency] private readonly ClimbSystem _climb = default!; + [Dependency] protected readonly SharedContainerSystem Containers = default!; + [Dependency] protected readonly SharedJointSystem Joints = default!; + [Dependency] private readonly SharedPowerReceiverSystem _power = default!; + [Dependency] private readonly SharedDisposalTubeSystem _disposalTubeSystem = default!; + [Dependency] private readonly SharedPopupSystem _popupSystem = default!; + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedHandsSystem _handsSystem = default!; + [Dependency] protected readonly SharedTransformSystem TransformSystem = default!; + [Dependency] private readonly SharedUserInterfaceSystem _ui = default!; + [Dependency] private readonly SharedMapSystem _map = default!; + + protected static TimeSpan ExitAttemptDelay = TimeSpan.FromSeconds(0.5); + + // Percentage + public const float PressurePerSecond = 0.05f; public override void Initialize() { base.Initialize(); - SubscribeLocalEvent(OnGetState); SubscribeLocalEvent(OnPreventCollide); SubscribeLocalEvent(OnCanDragDropOn); - SubscribeLocalEvent(OnEmagged); - - // Shouldn't need re-anchoring. - SubscribeLocalEvent(OnAnchorChanged); - // TODO: Predict me when hands predicted - SubscribeLocalEvent(OnMovement); - SubscribeLocalEvent(OnPowerChange); - SubscribeLocalEvent(OnDisposalInit); - - SubscribeLocalEvent(OnActivate); - SubscribeLocalEvent(OnAfterInteractUsing); - SubscribeLocalEvent(OnDragDropOn); - SubscribeLocalEvent(OnDestruction); - SubscribeLocalEvent(OnExploded); - SubscribeLocalEvent>(AddInsertVerb); SubscribeLocalEvent>(AddDisposalAltVerbs); SubscribeLocalEvent>(AddClimbInsideVerb); @@ -88,27 +79,27 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem SubscribeLocalEvent(OnThrowInsert); - SubscribeLocalEvent(OnUiButtonPressed); + SubscribeLocalEvent(OnUiButtonPressed); + + SubscribeLocalEvent(OnEmagged); + SubscribeLocalEvent(OnAnchorChanged); + SubscribeLocalEvent(OnPowerChange); + SubscribeLocalEvent(OnDisposalInit); + + SubscribeLocalEvent(OnActivate); + SubscribeLocalEvent(OnAfterInteractUsing); + SubscribeLocalEvent(OnDragDropOn); + SubscribeLocalEvent(OnMovement); } - private void OnGetState(EntityUid uid, DisposalUnitComponent component, ref ComponentGetState args) - { - args.State = new DisposalUnitComponentState( - component.FlushSound, - component.State, - component.NextPressurized, - component.AutomaticEngageTime, - component.NextFlush, - component.Powered, - component.Engaged, - GetNetEntityList(component.RecentlyEjected)); - } - - private void AddDisposalAltVerbs(EntityUid uid, SharedDisposalUnitComponent component, GetVerbsEvent args) + private void AddDisposalAltVerbs(Entity ent, ref GetVerbsEvent args) { if (!args.CanAccess || !args.CanInteract) return; + var uid = ent.Owner; + var component = ent.Comp; + // Behavior for if the disposals bin has items in it if (component.Container.ContainedEntities.Count > 0) { @@ -133,41 +124,12 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem } } - private void AddClimbInsideVerb(EntityUid uid, SharedDisposalUnitComponent component, GetVerbsEvent args) - { - // This is not an interaction, activation, or alternative verb type because unfortunately most users are - // unwilling to accept that this is where they belong and don't want to accidentally climb inside. - if (!args.CanAccess || - !args.CanInteract || - component.Container.ContainedEntities.Contains(args.User) || - !_actionBlockerSystem.CanMove(args.User)) - { - return; - } - - if (!CanInsert(uid, component, args.User)) - return; - - // Add verb to climb inside of the unit, - Verb verb = new() - { - Act = () => TryInsert(uid, args.User, args.User), - DoContactInteraction = true, - Text = Loc.GetString("disposal-self-insert-verb-get-data-text") - }; - // TODO VERB ICON - // TODO VERB CATEGORY - // create a verb category for "enter"? - // See also, medical scanner. Also maybe add verbs for entering lockers/body bags? - args.Verbs.Add(verb); - } - - private void AddInsertVerb(EntityUid uid, SharedDisposalUnitComponent component, GetVerbsEvent args) + private void AddInsertVerb(EntityUid uid, DisposalUnitComponent component, GetVerbsEvent args) { if (!args.CanAccess || !args.CanInteract || args.Hands == null || args.Using == null) return; - if (!_actionBlockerSystem.CanDrop(args.User)) + if (!ActionBlockerSystem.CanDrop(args.User)) return; if (!CanInsert(uid, component, args.Using.Value)) @@ -180,7 +142,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem Act = () => { _handsSystem.TryDropIntoContainer(args.User, args.Using.Value, component.Container, checkActionBlocker: false, args.Hands); - _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} inserted {ToPrettyString(args.Using.Value)} into {ToPrettyString(uid)}"); + _adminLog.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} inserted {ToPrettyString(args.Using.Value)} into {ToPrettyString(uid)}"); AfterInsert(uid, component, args.Using.Value, args.User); } }; @@ -188,7 +150,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem args.Verbs.Add(insertVerb); } - private void OnDoAfter(EntityUid uid, SharedDisposalUnitComponent component, DoAfterEvent args) + private void OnDoAfter(EntityUid uid, DisposalUnitComponent component, DoAfterEvent args) { if (args.Handled || args.Cancelled || args.Args.Target == null || args.Args.Used == null) return; @@ -204,89 +166,46 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem args.Cancelled = true; } - public override void DoInsertDisposalUnit(EntityUid uid, EntityUid toInsert, EntityUid user, SharedDisposalUnitComponent? disposal = null) - { - if (!ResolveDisposals(uid, ref disposal)) - return; - - if (!_containerSystem.Insert(toInsert, disposal.Container)) - return; - - _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(user):player} inserted {ToPrettyString(toInsert)} into {ToPrettyString(uid)}"); - AfterInsert(uid, disposal, toInsert, user); - } - public override void Update(float frameTime) { base.Update(frameTime); - var query = AllEntityQuery(); + var query = EntityQueryEnumerator(); while (query.MoveNext(out var uid, out var unit, out var metadata)) { - if (!metadata.EntityPaused) - Update(uid, unit, metadata, frameTime); + Update(uid, unit, metadata); } } - #region UI Handlers - private void OnUiButtonPressed(EntityUid uid, SharedDisposalUnitComponent component, SharedDisposalUnitComponent.UiButtonPressedMessage args) + // TODO: This should just use the same thing as entity storage? + private void OnMovement(EntityUid uid, DisposalUnitComponent component, ref ContainerRelayMovementEntityEvent args) { - if (args.Actor is not { Valid: true } player) - { + var currentTime = GameTiming.CurTime; + + if (!ActionBlockerSystem.CanMove(args.Entity)) return; - } - switch (args.Button) - { - case SharedDisposalUnitComponent.UiButton.Eject: - TryEjectContents(uid, component); - _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(player):player} hit eject button on {ToPrettyString(uid)}"); - break; - case SharedDisposalUnitComponent.UiButton.Engage: - ToggleEngage(uid, component); - _adminLogger.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(player):player} hit flush button on {ToPrettyString(uid)}, it's now {(component.Engaged ? "on" : "off")}"); - break; - case SharedDisposalUnitComponent.UiButton.Power: - _power.TogglePower(uid, user: args.Actor); - break; - default: - throw new ArgumentOutOfRangeException($"{ToPrettyString(player):player} attempted to hit a nonexistant button on {ToPrettyString(uid)}"); - } + if (!TryComp(args.Entity, out HandsComponent? hands) || + hands.Count == 0 || + currentTime < component.LastExitAttempt + ExitAttemptDelay) + return; + + Dirty(uid, component); + component.LastExitAttempt = currentTime; + Remove(uid, component, args.Entity); + UpdateUI((uid, component)); } - public void ToggleEngage(EntityUid uid, SharedDisposalUnitComponent component) - { - component.Engaged ^= true; - - if (component.Engaged) - { - ManualEngage(uid, component); - } - else - { - Disengage(uid, component); - } - } - - #endregion - - #region Eventbus Handlers - - private void OnActivate(EntityUid uid, SharedDisposalUnitComponent component, ActivateInWorldEvent args) + private void OnActivate(EntityUid uid, DisposalUnitComponent component, ActivateInWorldEvent args) { if (args.Handled || !args.Complex) return; - if (!TryComp(args.User, out ActorComponent? actor)) - { - return; - } - args.Handled = true; - _ui.OpenUi(uid, SharedDisposalUnitComponent.DisposalUnitUiKey.Key, actor.PlayerSession); + _ui.TryToggleUi(uid, DisposalUnitComponent.DisposalUnitUiKey.Key, args.User); } - private void OnAfterInteractUsing(EntityUid uid, SharedDisposalUnitComponent component, AfterInteractUsingEvent args) + private void OnAfterInteractUsing(EntityUid uid, DisposalUnitComponent component, AfterInteractUsingEvent args) { if (args.Handled || !args.CanReach) return; @@ -301,26 +220,23 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem return; } - _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} inserted {ToPrettyString(args.Used)} into {ToPrettyString(uid)}"); + _adminLog.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(args.User):player} inserted {ToPrettyString(args.Used)} into {ToPrettyString(uid)}"); AfterInsert(uid, component, args.Used, args.User); args.Handled = true; } - private void OnDisposalInit(EntityUid uid, SharedDisposalUnitComponent component, ComponentInit args) + protected virtual void OnDisposalInit(Entity ent, ref ComponentInit args) { - component.Container = _containerSystem.EnsureContainer(uid, SharedDisposalUnitComponent.ContainerId); - - UpdateInterface(uid, component, component.Powered); + ent.Comp.Container = Containers.EnsureContainer(ent, DisposalUnitComponent.ContainerId); } - private void OnPowerChange(EntityUid uid, SharedDisposalUnitComponent component, ref PowerChangedEvent args) + private void OnPowerChange(EntityUid uid, DisposalUnitComponent component, ref PowerChangedEvent args) { - if (!component.Running || args.Powered == component.Powered) + if (!component.Running) return; - component.Powered = args.Powered; + UpdateUI((uid, component)); UpdateVisualState(uid, component); - UpdateInterface(uid, component, args.Powered); if (!args.Powered) { @@ -336,24 +252,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem } } - // TODO: This should just use the same thing as entity storage? - private void OnMovement(EntityUid uid, SharedDisposalUnitComponent component, ref ContainerRelayMovementEntityEvent args) - { - var currentTime = GameTiming.CurTime; - - if (!_actionBlockerSystem.CanMove(args.Entity)) - return; - - if (!TryComp(args.Entity, out HandsComponent? hands) || - hands.Count == 0 || - currentTime < component.LastExitAttempt + ExitAttemptDelay) - return; - - component.LastExitAttempt = currentTime; - Remove(uid, component, args.Entity); - } - - private void OnAnchorChanged(EntityUid uid, SharedDisposalUnitComponent component, ref AnchorStateChangedEvent args) + private void OnAnchorChanged(EntityUid uid, DisposalUnitComponent component, ref AnchorStateChangedEvent args) { if (Terminating(uid)) return; @@ -363,108 +262,238 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem TryEjectContents(uid, component); } - private void OnDestruction(EntityUid uid, SharedDisposalUnitComponent component, DestructionEventArgs args) - { - TryEjectContents(uid, component); - } - - private void OnDragDropOn(EntityUid uid, SharedDisposalUnitComponent component, ref DragDropTargetEvent args) + private void OnDragDropOn(EntityUid uid, DisposalUnitComponent component, ref DragDropTargetEvent args) { args.Handled = TryInsert(uid, args.Dragged, args.User); } - #endregion - - private void UpdateState(EntityUid uid, DisposalsPressureState state, SharedDisposalUnitComponent component, MetaDataComponent metadata) + protected virtual void UpdateUI(Entity entity) { - if (component.State == state) - return; - component.State = state; - UpdateVisualState(uid, component); - UpdateInterface(uid, component, component.Powered); - Dirty(uid, component, metadata); - - if (state == DisposalsPressureState.Ready) - { - component.NextPressurized = TimeSpan.Zero; - - // Manually engaged - if (component.Engaged) - { - component.NextFlush = GameTiming.CurTime + component.ManualFlushTime; - } - else if (component.Container.ContainedEntities.Count > 0) - { - component.NextFlush = GameTiming.CurTime + component.AutomaticEngageTime; - } - else - { - component.NextFlush = null; - } - } } /// - /// Work out if we can stop updating this disposals component i.e. full pressure and nothing colliding. + /// Returns the estimated time when the disposal unit will be back to full pressure. /// - private void Update(EntityUid uid, SharedDisposalUnitComponent component, MetaDataComponent metadata, float frameTime) + public TimeSpan EstimatedFullPressure(EntityUid uid, DisposalUnitComponent component) { - var state = GetState(uid, component, metadata); + if (component.NextPressurized < GameTiming.CurTime) + return TimeSpan.Zero; - // Pressurizing, just check if we need a state update. - if (component.NextPressurized > GameTiming.CurTime) + return component.NextPressurized; + } + + public bool CanFlush(EntityUid unit, DisposalUnitComponent component) + { + return GetState(unit, component) == DisposalsPressureState.Ready + && _power.IsPowered(unit) + && Comp(unit).Anchored; + } + + public void Remove(EntityUid uid, DisposalUnitComponent component, EntityUid toRemove) + { + if (GameTiming.ApplyingState) + return; + + if (!Containers.Remove(toRemove, component.Container)) + return; + + if (component.Container.ContainedEntities.Count == 0) + { + // If not manually engaged then reset the flushing entirely. + if (!component.Engaged) + { + component.NextFlush = null; + Dirty(uid, component); + UpdateUI((uid, component)); + } + } + + _climb.Climb(toRemove, toRemove, uid, silent: true); + + UpdateVisualState(uid, component); + } + + public void UpdateVisualState(EntityUid uid, DisposalUnitComponent component, bool flush = false) + { + if (!TryComp(uid, out AppearanceComponent? appearance)) { - UpdateState(uid, state, component, metadata); return; } - if (component.NextFlush != null) + if (!Transform(uid).Anchored) { - if (component.NextFlush.Value < GameTiming.CurTime) - { - TryFlush(uid, component); - } + _appearance.SetData(uid, DisposalUnitComponent.Visuals.VisualState, DisposalUnitComponent.VisualState.UnAnchored, appearance); + _appearance.SetData(uid, DisposalUnitComponent.Visuals.Handle, DisposalUnitComponent.HandleState.Normal, appearance); + _appearance.SetData(uid, DisposalUnitComponent.Visuals.Light, DisposalUnitComponent.LightStates.Off, appearance); + return; } - UpdateState(uid, state, component, metadata); + var state = GetState(uid, component); - Box2? disposalsBounds = null; - var count = component.RecentlyEjected.Count; - - if (count > 0) + switch (state) { - if (!HasComp(uid)) - { - component.RecentlyEjected.Clear(); - } - else - { - disposalsBounds = _lookup.GetWorldAABB(uid); - } + case DisposalsPressureState.Flushed: + _appearance.SetData(uid, DisposalUnitComponent.Visuals.VisualState, DisposalUnitComponent.VisualState.OverlayFlushing, appearance); + break; + case DisposalsPressureState.Pressurizing: + _appearance.SetData(uid, DisposalUnitComponent.Visuals.VisualState, DisposalUnitComponent.VisualState.OverlayCharging, appearance); + break; + case DisposalsPressureState.Ready: + _appearance.SetData(uid, DisposalUnitComponent.Visuals.VisualState, DisposalUnitComponent.VisualState.Anchored, appearance); + break; } - for (var i = 0; i < component.RecentlyEjected.Count; i++) - { - var ejectedId = component.RecentlyEjected[i]; - if (HasComp(ejectedId)) - { - // TODO: We need to use a specific collision method (which sloth hasn't coded yet) for actual bounds overlaps. - // TODO: Come do this sloth :^) - // Check for itemcomp as we won't just block the disposal unit "sleeping" for something it can't collide with anyway. - if (!HasComp(ejectedId) - && _lookup.GetWorldAABB(ejectedId).Intersects(disposalsBounds!.Value)) - { - continue; - } + _appearance.SetData(uid, DisposalUnitComponent.Visuals.Handle, component.Engaged + ? DisposalUnitComponent.HandleState.Engaged + : DisposalUnitComponent.HandleState.Normal, appearance); - component.RecentlyEjected.RemoveAt(i); - i--; - } + if (!_power.IsPowered(uid)) + { + _appearance.SetData(uid, DisposalUnitComponent.Visuals.Light, DisposalUnitComponent.LightStates.Off, appearance); + return; } - if (count != component.RecentlyEjected.Count) - Dirty(uid, component, metadata); + var lightState = DisposalUnitComponent.LightStates.Off; + + if (component.Container.ContainedEntities.Count > 0) + { + lightState |= DisposalUnitComponent.LightStates.Full; + } + + if (state is DisposalsPressureState.Pressurizing or DisposalsPressureState.Flushed) + { + lightState |= DisposalUnitComponent.LightStates.Charging; + } + else + { + lightState |= DisposalUnitComponent.LightStates.Ready; + } + + _appearance.SetData(uid, DisposalUnitComponent.Visuals.Light, lightState, appearance); + } + + /// + /// Gets the current pressure state of a disposals unit. + /// + /// + /// + /// + /// + public DisposalsPressureState GetState(EntityUid uid, DisposalUnitComponent component, MetaDataComponent? metadata = null) + { + var nextPressure = Metadata.GetPauseTime(uid, metadata) + component.NextPressurized - GameTiming.CurTime; + var pressurizeTime = 1f / PressurePerSecond; + var pressurizeDuration = pressurizeTime - component.FlushDelay.TotalSeconds; + + if (nextPressure.TotalSeconds > pressurizeDuration) + { + return DisposalsPressureState.Flushed; + } + + if (nextPressure > TimeSpan.Zero) + { + return DisposalsPressureState.Pressurizing; + } + + return DisposalsPressureState.Ready; + } + + public float GetPressure(EntityUid uid, DisposalUnitComponent component, MetaDataComponent? metadata = null) + { + if (!Resolve(uid, ref metadata)) + return 0f; + + var pauseTime = Metadata.GetPauseTime(uid, metadata); + return MathF.Min(1f, + (float)(GameTiming.CurTime - pauseTime - component.NextPressurized).TotalSeconds / PressurePerSecond); + } + + protected void OnPreventCollide(EntityUid uid, DisposalUnitComponent component, + ref PreventCollideEvent args) + { + var otherBody = args.OtherEntity; + + // Items dropped shouldn't collide but items thrown should + if (HasComp(otherBody) && !HasComp(otherBody)) + { + args.Cancelled = true; + } + } + + protected void OnCanDragDropOn(EntityUid uid, DisposalUnitComponent component, ref CanDropTargetEvent args) + { + if (args.Handled) + return; + + args.CanDrop = CanInsert(uid, component, args.Dragged); + args.Handled = true; + } + + protected void OnEmagged(EntityUid uid, DisposalUnitComponent component, ref GotEmaggedEvent args) + { + component.DisablePressure = true; + args.Handled = true; + } + + public virtual bool CanInsert(EntityUid uid, DisposalUnitComponent component, EntityUid entity) + { + // TODO: All of the below should be using the EXISTING EVENT + if (!Containers.CanInsert(entity, component.Container)) + return false; + + if (!Transform(uid).Anchored) + return false; + + var storable = HasComp(entity); + if (!storable && !HasComp(entity)) + return false; + + if (_whitelistSystem.IsBlacklistPass(component.Blacklist, entity) || + _whitelistSystem.IsWhitelistFail(component.Whitelist, entity)) + return false; + + if (TryComp(entity, out var physics) && (physics.CanCollide) || storable) + return true; + else + return false; + } + + public void DoInsertDisposalUnit(EntityUid uid, + EntityUid toInsert, + EntityUid user, + DisposalUnitComponent? disposal = null) + { + if (!Resolve(uid, ref disposal)) + return; + + if (!Containers.Insert(toInsert, disposal.Container)) + return; + + _adminLog.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(user):player} inserted {ToPrettyString(toInsert)} into {ToPrettyString(uid)}"); + AfterInsert(uid, disposal, toInsert, user); + } + + public virtual void AfterInsert(EntityUid uid, + DisposalUnitComponent component, + EntityUid inserted, + EntityUid? user = null, + bool doInsert = false) + { + Audio.PlayPredicted(component.InsertSound, uid, user: user); + if (doInsert && !Containers.Insert(inserted, component.Container)) + return; + + if (user != inserted && user != null) + _adminLog.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(user.Value):player} inserted {ToPrettyString(inserted)} into {ToPrettyString(uid)}"); + + QueueAutomaticEngage(uid, component); + + _ui.CloseUi(uid, DisposalUnitComponent.DisposalUnitUiKey.Key, inserted); + + // Maybe do pullable instead? Eh still fine. + Joints.RecursiveClearJoints(inserted); + UpdateVisualState(uid, component); } public bool TryInsert(EntityUid unitId, EntityUid toInsertId, EntityUid? userId, DisposalUnitComponent? unit = null) @@ -507,8 +536,61 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem return true; } + private void UpdateState(EntityUid uid, DisposalsPressureState state, DisposalUnitComponent component, MetaDataComponent metadata) + { + if (component.State == state) + return; - public bool TryFlush(EntityUid uid, SharedDisposalUnitComponent component) + component.State = state; + UpdateVisualState(uid, component); + Dirty(uid, component, metadata); + + if (state == DisposalsPressureState.Ready) + { + component.NextPressurized = TimeSpan.Zero; + + // Manually engaged + if (component.Engaged) + { + component.NextFlush = GameTiming.CurTime + component.ManualFlushTime; + } + else if (component.Container.ContainedEntities.Count > 0) + { + component.NextFlush = GameTiming.CurTime + component.AutomaticEngageTime; + } + else + { + component.NextFlush = null; + } + } + } + + /// + /// Work out if we can stop updating this disposals component i.e. full pressure and nothing colliding. + /// + private void Update(EntityUid uid, DisposalUnitComponent component, MetaDataComponent metadata) + { + var state = GetState(uid, component, metadata); + + // Pressurizing, just check if we need a state update. + if (component.NextPressurized > GameTiming.CurTime) + { + UpdateState(uid, state, component, metadata); + return; + } + + if (component.NextFlush != null) + { + if (component.NextFlush.Value < GameTiming.CurTime) + { + TryFlush(uid, component); + } + } + + UpdateState(uid, state, component, metadata); + } + + public bool TryFlush(EntityUid uid, DisposalUnitComponent component) { if (!CanFlush(uid, component)) { @@ -533,11 +615,12 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem var coords = xform.Coordinates; var entry = _map.GetLocal(xform.GridUid.Value, grid, coords) - .FirstOrDefault(HasComp); + .FirstOrDefault(HasComp); if (entry == default || component is not DisposalUnitComponent sDisposals) { component.Engaged = false; + UpdateUI((uid, component)); Dirty(uid, component); return false; } @@ -555,140 +638,23 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem component.NextFlush = null; UpdateVisualState(uid, component, true); - UpdateInterface(uid, component, component.Powered); - Dirty(uid, component); + UpdateUI((uid, component)); return true; } - private void HandleAir(EntityUid uid, DisposalUnitComponent component, TransformComponent xform) + protected virtual void HandleAir(EntityUid uid, DisposalUnitComponent component, TransformComponent xform) { - var air = component.Air; - var indices = _transformSystem.GetGridTilePositionOrDefault((uid, xform)); - if (_atmosSystem.GetTileMixture(xform.GridUid, xform.MapUid, indices, true) is { Temperature: > 0f } environment) - { - var transferMoles = 0.1f * (0.25f * Atmospherics.OneAtmosphere * 1.01f - air.Pressure) * air.Volume / (environment.Temperature * Atmospherics.R); - - component.Air = environment.Remove(transferMoles); - } } - public void UpdateInterface(EntityUid uid, SharedDisposalUnitComponent component, bool powered) - { - var compState = GetState(uid, component); - var stateString = Loc.GetString($"disposal-unit-state-{compState}"); - var state = new SharedDisposalUnitComponent.DisposalUnitBoundUserInterfaceState(Name(uid), stateString, EstimatedFullPressure(uid, component), powered, component.Engaged); - _ui.SetUiState(uid, SharedDisposalUnitComponent.DisposalUnitUiKey.Key, state); - - var stateUpdatedEvent = new DisposalUnitUIStateUpdatedEvent(state); - RaiseLocalEvent(uid, stateUpdatedEvent); - } - - /// - /// Returns the estimated time when the disposal unit will be back to full pressure. - /// - private TimeSpan EstimatedFullPressure(EntityUid uid, SharedDisposalUnitComponent component) - { - if (component.NextPressurized < GameTiming.CurTime) - return TimeSpan.Zero; - - return component.NextPressurized; - } - - public void UpdateVisualState(EntityUid uid, SharedDisposalUnitComponent component, bool flush = false) - { - if (!TryComp(uid, out AppearanceComponent? appearance)) - { - return; - } - - if (!Transform(uid).Anchored) - { - _appearance.SetData(uid, SharedDisposalUnitComponent.Visuals.VisualState, SharedDisposalUnitComponent.VisualState.UnAnchored, appearance); - _appearance.SetData(uid, SharedDisposalUnitComponent.Visuals.Handle, SharedDisposalUnitComponent.HandleState.Normal, appearance); - _appearance.SetData(uid, SharedDisposalUnitComponent.Visuals.Light, SharedDisposalUnitComponent.LightStates.Off, appearance); - return; - } - - var state = GetState(uid, component); - - switch (state) - { - case DisposalsPressureState.Flushed: - _appearance.SetData(uid, SharedDisposalUnitComponent.Visuals.VisualState, SharedDisposalUnitComponent.VisualState.OverlayFlushing, appearance); - break; - case DisposalsPressureState.Pressurizing: - _appearance.SetData(uid, SharedDisposalUnitComponent.Visuals.VisualState, SharedDisposalUnitComponent.VisualState.OverlayCharging, appearance); - break; - case DisposalsPressureState.Ready: - _appearance.SetData(uid, SharedDisposalUnitComponent.Visuals.VisualState, SharedDisposalUnitComponent.VisualState.Anchored, appearance); - break; - } - - _appearance.SetData(uid, SharedDisposalUnitComponent.Visuals.Handle, component.Engaged - ? SharedDisposalUnitComponent.HandleState.Engaged - : SharedDisposalUnitComponent.HandleState.Normal, appearance); - - if (!component.Powered) - { - _appearance.SetData(uid, SharedDisposalUnitComponent.Visuals.Light, SharedDisposalUnitComponent.LightStates.Off, appearance); - return; - } - - var lightState = SharedDisposalUnitComponent.LightStates.Off; - - if (component.Container.ContainedEntities.Count > 0) - { - lightState |= SharedDisposalUnitComponent.LightStates.Full; - } - - if (state is DisposalsPressureState.Pressurizing or DisposalsPressureState.Flushed) - { - lightState |= SharedDisposalUnitComponent.LightStates.Charging; - } - else - { - lightState |= SharedDisposalUnitComponent.LightStates.Ready; - } - - _appearance.SetData(uid, SharedDisposalUnitComponent.Visuals.Light, lightState, appearance); - } - - public void Remove(EntityUid uid, SharedDisposalUnitComponent component, EntityUid toRemove) - { - _containerSystem.Remove(toRemove, component.Container); - - if (component.Container.ContainedEntities.Count == 0) - { - // If not manually engaged then reset the flushing entirely. - if (!component.Engaged) - { - component.NextFlush = null; - } - } - - if (!component.RecentlyEjected.Contains(toRemove)) - component.RecentlyEjected.Add(toRemove); - - UpdateVisualState(uid, component); - Dirty(uid, component); - } - - public bool CanFlush(EntityUid unit, SharedDisposalUnitComponent component) - { - return GetState(unit, component) == DisposalsPressureState.Ready - && component.Powered - && Comp(unit).Anchored; - } - - public void ManualEngage(EntityUid uid, SharedDisposalUnitComponent component, MetaDataComponent? metadata = null) + public void ManualEngage(EntityUid uid, DisposalUnitComponent component, MetaDataComponent? metadata = null) { component.Engaged = true; UpdateVisualState(uid, component); - UpdateInterface(uid, component, component.Powered); Dirty(uid, component); + UpdateUI((uid, component)); if (!CanFlush(uid, component)) return; @@ -701,7 +667,7 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem component.NextFlush = TimeSpan.FromSeconds(Math.Min((component.NextFlush ?? TimeSpan.MaxValue).TotalSeconds, nextEngage.TotalSeconds)); } - public void Disengage(EntityUid uid, SharedDisposalUnitComponent component) + public void Disengage(EntityUid uid, DisposalUnitComponent component) { component.Engaged = false; @@ -711,14 +677,14 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem } UpdateVisualState(uid, component); - UpdateInterface(uid, component, component.Powered); Dirty(uid, component); + UpdateUI((uid, component)); } /// /// Remove all entities currently in the disposal unit. /// - public void TryEjectContents(EntityUid uid, SharedDisposalUnitComponent component) + public void TryEjectContents(EntityUid uid, DisposalUnitComponent component) { foreach (var entity in component.Container.ContainedEntities.ToArray()) { @@ -729,38 +695,16 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem { component.NextFlush = null; Dirty(uid, component); + UpdateUI((uid, component)); } } - public override bool HasDisposals(EntityUid? uid) - { - return HasComp(uid); - } - - public override bool ResolveDisposals(EntityUid uid, [NotNullWhen(true)] ref SharedDisposalUnitComponent? component) - { - if (component != null) - return true; - - TryComp(uid, out var storage); - component = storage; - return component != null; - } - - public override bool CanInsert(EntityUid uid, SharedDisposalUnitComponent component, EntityUid entity) - { - if (!base.CanInsert(uid, component, entity)) - return false; - - return _containerSystem.CanInsert(entity, component.Container); - } - /// /// If something is inserted (or the likes) then we'll queue up an automatic flush in the future. /// - public void QueueAutomaticEngage(EntityUid uid, SharedDisposalUnitComponent component, MetaDataComponent? metadata = null) + public void QueueAutomaticEngage(EntityUid uid, DisposalUnitComponent component, MetaDataComponent? metadata = null) { - if (component.Deleted || !component.AutomaticEngage || !component.Powered && component.Container.ContainedEntities.Count == 0) + if (component.Deleted || !component.AutomaticEngage || !_power.IsPowered(uid) && component.Container.ContainedEntities.Count == 0) { return; } @@ -771,53 +715,74 @@ public sealed class DisposalUnitSystem : SharedDisposalUnitSystem component.NextFlush = flushTime; Dirty(uid, component); + UpdateUI((uid, component)); } - public void AfterInsert(EntityUid uid, SharedDisposalUnitComponent component, EntityUid inserted, EntityUid? user = null, bool doInsert = false) + private void OnUiButtonPressed(EntityUid uid, DisposalUnitComponent component, DisposalUnitComponent.UiButtonPressedMessage args) { - _audioSystem.PlayPvs(component.InsertSound, uid); + if (args.Actor is not { Valid: true } player) + { + return; + } - if (doInsert && !_containerSystem.Insert(inserted, component.Container)) + switch (args.Button) + { + case DisposalUnitComponent.UiButton.Eject: + TryEjectContents(uid, component); + _adminLog.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(player):player} hit eject button on {ToPrettyString(uid)}"); + break; + case DisposalUnitComponent.UiButton.Engage: + ToggleEngage(uid, component); + _adminLog.Add(LogType.Action, LogImpact.Low, $"{ToPrettyString(player):player} hit flush button on {ToPrettyString(uid)}, it's now {(component.Engaged ? "on" : "off")}"); + break; + case DisposalUnitComponent.UiButton.Power: + _power.TogglePower(uid, user: args.Actor); + break; + default: + throw new ArgumentOutOfRangeException($"{ToPrettyString(player):player} attempted to hit a nonexistant button on {ToPrettyString(uid)}"); + } + } + + public void ToggleEngage(EntityUid uid, DisposalUnitComponent component) + { + component.Engaged ^= true; + + if (component.Engaged) + { + ManualEngage(uid, component); + } + else + { + Disengage(uid, component); + } + } + + private void AddClimbInsideVerb(EntityUid uid, DisposalUnitComponent component, GetVerbsEvent args) + { + // This is not an interaction, activation, or alternative verb type because unfortunately most users are + // unwilling to accept that this is where they belong and don't want to accidentally climb inside. + if (!args.CanAccess || + !args.CanInteract || + component.Container.ContainedEntities.Contains(args.User) || + !ActionBlockerSystem.CanMove(args.User)) + { + return; + } + + if (!CanInsert(uid, component, args.User)) return; - if (user != inserted && user != null) - _adminLogger.Add(LogType.Action, LogImpact.Medium, $"{ToPrettyString(user.Value):player} inserted {ToPrettyString(inserted)} into {ToPrettyString(uid)}"); - - QueueAutomaticEngage(uid, component); - - _ui.CloseUi(uid, SharedDisposalUnitComponent.DisposalUnitUiKey.Key, inserted); - - // Maybe do pullable instead? Eh still fine. - Joints.RecursiveClearJoints(inserted); - UpdateVisualState(uid, component); - } - - private void OnExploded(Entity ent, ref BeforeExplodeEvent args) - { - args.Contents.AddRange(ent.Comp.Container.ContainedEntities); - } - -} - -/// -/// Sent before the disposal unit flushes it's contents. -/// Allows adding tags for sorting and preventing the disposal unit from flushing. -/// -public sealed class DisposalUnitUIStateUpdatedEvent : EntityEventArgs -{ - public SharedDisposalUnitComponent.DisposalUnitBoundUserInterfaceState State; - - public DisposalUnitUIStateUpdatedEvent(SharedDisposalUnitComponent.DisposalUnitBoundUserInterfaceState state) - { - State = state; + // Add verb to climb inside of the unit, + Verb verb = new() + { + Act = () => TryInsert(uid, args.User, args.User), + DoContactInteraction = true, + Text = Loc.GetString("disposal-self-insert-verb-get-data-text") + }; + // TODO VERB ICON + // TODO VERB CATEGORY + // create a verb category for "enter"? + // See also, medical scanner. Also maybe add verbs for entering lockers/body bags? + args.Verbs.Add(verb); } } - -/// -/// Sent before the disposal unit flushes it's contents. -/// Allows adding tags for sorting and preventing the disposal unit from flushing. -/// -public sealed class BeforeDisposalFlushEvent : CancellableEntityEventArgs -{ - public readonly List Tags = new(); -} diff --git a/Content.Shared/Doors/Components/FirelockComponent.cs b/Content.Shared/Doors/Components/FirelockComponent.cs index cc9278dfe7..027aa24fdf 100644 --- a/Content.Shared/Doors/Components/FirelockComponent.cs +++ b/Content.Shared/Doors/Components/FirelockComponent.cs @@ -84,5 +84,51 @@ namespace Content.Shared.Doors.Components public bool Powered; #endregion + + #region Client animation + + /// + /// The sprite state used to animate the airlock frame when the airlock opens. + /// + [DataField] + public string OpeningLightSpriteState = "opening_unlit"; + + /// + /// The sprite state used to animate the airlock frame when the airlock closes. + /// + [DataField] + public string ClosingLightSpriteState = "closing_unlit"; + + /// + /// The sprite state used to animate the airlock panel when the airlock opens. + /// + [DataField] + public string OpeningPanelSpriteState = "panel_opening"; + + /// + /// The sprite state used to animate the airlock panel when the airlock closes. + /// + [DataField] + public string ClosingPanelSpriteState = "panel_closing"; + + /// + /// The sprite state used for the open airlock lights. + /// + [DataField] + public string OpenLightSpriteState = "open_unlit"; + + /// + /// The sprite state used for the closed airlock lights. + /// + [DataField] + public string WarningLightSpriteState = "closed_unlit"; + + /// + /// The sprite state used for the 'access denied' lights animation. + /// + [DataField] + public string DenySpriteState = "deny_unlit"; + + #endregion } } diff --git a/Content.Shared/Doors/Components/TurnstileComponent.cs b/Content.Shared/Doors/Components/TurnstileComponent.cs new file mode 100644 index 0000000000..087cc3b13d --- /dev/null +++ b/Content.Shared/Doors/Components/TurnstileComponent.cs @@ -0,0 +1,77 @@ +using Content.Shared.Doors.Systems; +using Content.Shared.Whitelist; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.Doors.Components; + +/// +/// This is used for a condition door that allows entry only through a single side. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] +[Access(typeof(SharedTurnstileSystem))] +public sealed partial class TurnstileComponent : Component +{ + /// + /// A whitelist of the things this turnstile can choose to block or let through. + /// Things not in this whitelist will be ignored by default. + /// + [DataField] + public EntityWhitelist? ProcessWhitelist; + + /// + /// The next time at which the resist message can show. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField, AutoPausedField] + public TimeSpan NextResistTime; + + /// + /// Maintained hashset of entities currently passing through the turnstile. + /// + [DataField, AutoNetworkedField] + public HashSet CollideExceptions = new(); + + /// + /// default state of the turnstile sprite. + /// + [DataField] + public string DefaultState = "turnstile"; + + /// + /// animation state of the turnstile spinning. + /// + [DataField] + public string SpinState = "operate"; + + /// + /// animation state of the turnstile denying entry. + /// + [DataField] + public string DenyState = "deny"; + + /// + /// Sound to play when the turnstile admits a mob through. + /// + [DataField] + public SoundSpecifier? TurnSound = new SoundPathSpecifier("/Audio/Items/ratchet.ogg", AudioParams.Default.WithVolume(-6)); + + /// + /// Sound to play when the turnstile denies entry + /// + [DataField] + public SoundSpecifier? DenySound = new SoundPathSpecifier("/Audio/Machines/airlock_deny.ogg") + { + Params = new() + { + Volume = -7, + }, + }; +} + +[Serializable, NetSerializable] +public enum TurnstileVisualLayers : byte +{ + Base +} diff --git a/Content.Shared/Doors/Systems/SharedDoorSystem.cs b/Content.Shared/Doors/Systems/SharedDoorSystem.cs index 4d92cf9681..a0dba80bd9 100644 --- a/Content.Shared/Doors/Systems/SharedDoorSystem.cs +++ b/Content.Shared/Doors/Systems/SharedDoorSystem.cs @@ -768,10 +768,13 @@ public abstract partial class SharedDoorSystem : EntitySystem var door = ent.Comp; door.NextStateChange = null; - if (door.CurrentlyCrushing.Count > 0) + if (door.CurrentlyCrushing.Count > 0 && door.State != DoorState.Opening) + { // 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(ent, door); + return; + } switch (door.State) { diff --git a/Content.Shared/Doors/Systems/SharedFirelockSystem.cs b/Content.Shared/Doors/Systems/SharedFirelockSystem.cs index e613848c5c..ff72934590 100644 --- a/Content.Shared/Doors/Systems/SharedFirelockSystem.cs +++ b/Content.Shared/Doors/Systems/SharedFirelockSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Doors.Components; using Content.Shared.Examine; using Content.Shared.Popups; using Content.Shared.Prying.Components; +using Robust.Shared.Serialization; using Robust.Shared.Timing; namespace Content.Shared.Doors.Systems; @@ -27,7 +28,7 @@ public abstract class SharedFirelockSystem : EntitySystem // Visuals SubscribeLocalEvent(UpdateVisuals); - SubscribeLocalEvent(UpdateVisuals); + SubscribeLocalEvent(OnComponentStartup); SubscribeLocalEvent(OnExamined); } @@ -104,6 +105,11 @@ public abstract class SharedFirelockSystem : EntitySystem #region Visuals + protected virtual void OnComponentStartup(Entity ent, ref ComponentStartup args) + { + UpdateVisuals(ent.Owner,ent.Comp, args); + } + private void UpdateVisuals(EntityUid uid, FirelockComponent component, EntityEventArgs args) => UpdateVisuals(uid, component); private void UpdateVisuals(EntityUid uid, @@ -142,3 +148,22 @@ public abstract class SharedFirelockSystem : EntitySystem } } } + +[Serializable, NetSerializable] +public enum FirelockVisuals : byte +{ + PressureWarning, + TemperatureWarning, +} + +[Serializable, NetSerializable] +public enum FirelockVisualLayersPressure : byte +{ + Base +} + +[Serializable, NetSerializable] +public enum FirelockVisualLayersTemperature : byte +{ + Base +} diff --git a/Content.Shared/Doors/Systems/SharedTurnstileSystem.cs b/Content.Shared/Doors/Systems/SharedTurnstileSystem.cs new file mode 100644 index 0000000000..573c85ac00 --- /dev/null +++ b/Content.Shared/Doors/Systems/SharedTurnstileSystem.cs @@ -0,0 +1,135 @@ +using Content.Shared.Access.Systems; +using Content.Shared.Doors.Components; +using Content.Shared.Movement.Pulling.Systems; +using Content.Shared.Popups; +using Content.Shared.Whitelist; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Physics.Events; +using Robust.Shared.Timing; + +namespace Content.Shared.Doors.Systems; + +/// +/// This handles logic and interactions related to +/// +public abstract partial class SharedTurnstileSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly AccessReaderSystem _accessReader = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly EntityWhitelistSystem _entityWhitelist = default!; + [Dependency] private readonly PullingSystem _pulling = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnPreventCollide); + SubscribeLocalEvent(OnStartCollide); + SubscribeLocalEvent(OnEndCollide); + } + + private void OnPreventCollide(Entity ent, ref PreventCollideEvent args) + { + if (args.Cancelled || !args.OurFixture.Hard || !args.OtherFixture.Hard) + return; + + if (ent.Comp.CollideExceptions.Contains(args.OtherEntity)) + { + args.Cancelled = true; + return; + } + + // We need to add this in here too for chain pulls + if (_pulling.GetPuller(args.OtherEntity) is { } puller && ent.Comp.CollideExceptions.Contains(puller)) + { + ent.Comp.CollideExceptions.Add(args.OtherEntity); + Dirty(ent); + args.Cancelled = true; + return; + } + + // unblockables go through for free. + if (_entityWhitelist.IsWhitelistFail(ent.Comp.ProcessWhitelist, args.OtherEntity)) + { + args.Cancelled = true; + return; + } + + if (CanPassDirection(ent, args.OtherEntity)) + { + if (!_accessReader.IsAllowed(args.OtherEntity, ent)) + return; + + ent.Comp.CollideExceptions.Add(args.OtherEntity); + if (_pulling.GetPulling(args.OtherEntity) is { } uid) + ent.Comp.CollideExceptions.Add(uid); + + args.Cancelled = true; + Dirty(ent); + } + else + { + if (_timing.CurTime >= ent.Comp.NextResistTime) + { + _popup.PopupClient(Loc.GetString("turnstile-component-popup-resist", ("turnstile", ent.Owner)), ent, args.OtherEntity); + ent.Comp.NextResistTime = _timing.CurTime + TimeSpan.FromSeconds(0.1); + Dirty(ent); + } + } + } + + private void OnStartCollide(Entity ent, ref StartCollideEvent args) + { + if (!ent.Comp.CollideExceptions.Contains(args.OtherEntity)) + { + if (CanPassDirection(ent, args.OtherEntity)) + { + if (!_accessReader.IsAllowed(args.OtherEntity, ent)) + { + _audio.PlayPredicted(ent.Comp.DenySound, ent, args.OtherEntity); + PlayAnimation(ent, ent.Comp.DenyState); + } + } + + return; + } + // if they passed through: + PlayAnimation(ent, ent.Comp.SpinState); + _audio.PlayPredicted(ent.Comp.TurnSound, ent, args.OtherEntity); + } + + private void OnEndCollide(Entity ent, ref EndCollideEvent args) + { + if (!args.OurFixture.Hard) + { + ent.Comp.CollideExceptions.Remove(args.OtherEntity); + Dirty(ent); + } + } + + protected bool CanPassDirection(Entity ent, EntityUid other) + { + var xform = Transform(ent); + var otherXform = Transform(other); + + var (pos, rot) = _transform.GetWorldPositionRotation(xform); + var otherPos = _transform.GetWorldPosition(otherXform); + + var approachAngle = (pos - otherPos).ToAngle(); + var rotateAngle = rot.ToWorldVec().ToAngle(); + + var diff = Math.Abs(approachAngle - rotateAngle); + diff %= MathHelper.TwoPi; + if (diff > Math.PI) + diff = MathHelper.TwoPi - diff; + + return diff < Math.PI / 4; + } + + protected virtual void PlayAnimation(EntityUid uid, string stateId) + { + + } +} diff --git a/Content.Shared/Emag/Systems/EmagSystem.cs b/Content.Shared/Emag/Systems/EmagSystem.cs index 9626f17719..7aa4303471 100644 --- a/Content.Shared/Emag/Systems/EmagSystem.cs +++ b/Content.Shared/Emag/Systems/EmagSystem.cs @@ -21,7 +21,7 @@ namespace Content.Shared.Emag.Systems; public sealed class EmagSystem : EntitySystem { [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - [Dependency] private readonly SharedChargesSystem _charges = default!; + [Dependency] private readonly SharedChargesSystem _sharedCharges = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly TagSystem _tag = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; @@ -61,8 +61,8 @@ public sealed class EmagSystem : EntitySystem if (_tag.HasTag(target, ent.Comp.EmagImmuneTag)) return false; - TryComp(ent, out var charges); - if (_charges.IsEmpty(ent, charges)) + Entity chargesEnt = ent.Owner; + if (_sharedCharges.IsEmpty(chargesEnt)) { _popup.PopupClient(Loc.GetString("emag-no-charges"), user, user); return false; @@ -80,8 +80,8 @@ public sealed class EmagSystem : EntitySystem _adminLogger.Add(LogType.Emag, LogImpact.High, $"{ToPrettyString(user):player} emagged {ToPrettyString(target):target} with flag(s): {ent.Comp.EmagType}"); - if (charges != null && emaggedEvent.Handled) - _charges.UseCharge(ent, charges); + if (emaggedEvent.Handled) + _sharedCharges.TryUseCharge(chargesEnt); if (!emaggedEvent.Repeatable) { diff --git a/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs b/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs index dacb773470..d15e80a0e3 100644 --- a/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs +++ b/Content.Shared/Ensnaring/SharedEnsnareableSystem.cs @@ -1,7 +1,4 @@ -using System.Linq; using Content.Shared.Alert; -using Content.Shared.Body.Part; -using Content.Shared.Body.Systems; using Content.Shared.CombatMode.Pacification; using Content.Shared.Damage.Components; using Content.Shared.Damage.Systems; @@ -31,7 +28,6 @@ public abstract class SharedEnsnareableSystem : EntitySystem [Dependency] private readonly MovementSpeedModifierSystem _speedModifier = default!; [Dependency] protected readonly SharedAppearanceSystem Appearance = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly SharedBodySystem _body = default!; [Dependency] protected readonly SharedContainerSystem Container = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; diff --git a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs index eea4dd85a7..8443ec2c06 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntSelector.cs @@ -20,7 +20,7 @@ public sealed partial class EntSelector : EntityTableSelector IEntityManager entMan, IPrototypeManager proto) { - var num = (int) Math.Round(Amount.Get(rand, entMan, proto)); + var num = Amount.Get(rand); for (var i = 0; i < num; i++) { yield return Id; diff --git a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs index 2533f17dc5..d0a7a4d578 100644 --- a/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs +++ b/Content.Shared/EntityTable/EntitySelectors/EntityTableSelector.cs @@ -30,7 +30,7 @@ public abstract partial class EntityTableSelector IEntityManager entMan, IPrototypeManager proto) { - var rolls = Rolls.Get(rand, entMan, proto); + var rolls = Rolls.Get(rand); for (var i = 0; i < rolls; i++) { if (!rand.Prob(Prob)) diff --git a/Content.Shared/EntityTable/ValueSelector/BinomialNumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/BinomialNumberSelector.cs new file mode 100644 index 0000000000..b3ed076e70 --- /dev/null +++ b/Content.Shared/EntityTable/ValueSelector/BinomialNumberSelector.cs @@ -0,0 +1,38 @@ +using Robust.Shared.Random; + +namespace Content.Shared.EntityTable.ValueSelector; + +/// +/// Picks a value based on a Binomial Distribution of N Trials given P Chance +/// +public sealed partial class BinomialNumberSelector : NumberSelector +{ + /// + /// How many times to try including an entry. i.e. the Max. + /// + [DataField] + public int Trials = 1; + + /// + /// The odds a single trial succeeds + /// + /// + /// my preferred "Prob" was already used in other places for entity table stuff and I didnt want more confusing terminology + /// + [DataField] + public float Chance = .5f; + + public override int Get(System.Random rand) + { + var random = IoCManager.Resolve(); + int count = 0; + + for (int i = 0; i < Trials; i++) + { + if (random.Prob(Chance)) + count++; + } + return count; + // get binomialed motherfucker + } +} diff --git a/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs index 0baf6785f4..a1a7e4ac58 100644 --- a/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/ConstantNumberSelector.cs @@ -1,5 +1,3 @@ -using Robust.Shared.Prototypes; - namespace Content.Shared.EntityTable.ValueSelector; /// @@ -8,14 +6,14 @@ namespace Content.Shared.EntityTable.ValueSelector; public sealed partial class ConstantNumberSelector : NumberSelector { [DataField] - public float Value = 1; + public int Value = 1; - public ConstantNumberSelector(float value) + public ConstantNumberSelector(int value) { Value = value; } - public override float Get(System.Random rand, IEntityManager entMan, IPrototypeManager proto) + public override int Get(System.Random rand) { return Value; } diff --git a/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs index 8a7743c9dd..763578a384 100644 --- a/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/NumberSelector.cs @@ -1,6 +1,5 @@ using Content.Shared.EntityTable.EntitySelectors; using JetBrains.Annotations; -using Robust.Shared.Prototypes; namespace Content.Shared.EntityTable.ValueSelector; @@ -10,7 +9,5 @@ namespace Content.Shared.EntityTable.ValueSelector; [ImplicitDataDefinitionForInheritors, UsedImplicitly(ImplicitUseTargetFlags.WithInheritors)] public abstract partial class NumberSelector { - public abstract float Get(System.Random rand, - IEntityManager entMan, - IPrototypeManager proto); + public abstract int Get(System.Random rand); } diff --git a/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs b/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs index e8356fcbb7..b84736d1ee 100644 --- a/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs +++ b/Content.Shared/EntityTable/ValueSelector/RangeNumberSelector.cs @@ -1,7 +1,3 @@ -using System.Numerics; -using Robust.Shared.Prototypes; -using Robust.Shared.Random; - namespace Content.Shared.EntityTable.ValueSelector; /// @@ -10,10 +6,12 @@ namespace Content.Shared.EntityTable.ValueSelector; public sealed partial class RangeNumberSelector : NumberSelector { [DataField] - public Vector2 Range = new(1, 1); + public Vector2i Range = new(1, 1); - public override float Get(System.Random rand, IEntityManager entMan, IPrototypeManager proto) + public override int Get(System.Random rand) { - return rand.NextFloat(Range.X, Range.Y + 1); + // rand.Next() is inclusive on the first number and exclusive on the second number, + // so we add 1 to the second number. + return rand.Next(Range.X, Range.Y + 1); } } diff --git a/Content.Shared/Examine/ExamineSystemShared.Group.cs b/Content.Shared/Examine/ExamineSystemShared.Group.cs index 299d3c4af2..7dc7877eac 100644 --- a/Content.Shared/Examine/ExamineSystemShared.Group.cs +++ b/Content.Shared/Examine/ExamineSystemShared.Group.cs @@ -80,7 +80,7 @@ namespace Content.Shared.Examine } message.AddMessage(GetFormattedMessageFromExamineEntries(group.Entries)); - SendExamineTooltip(user, target, message, false, false); + SendExamineTooltip(user, target, message, getVerbs: false, centerAtCursor: false); } /// A FormattedMessage based on all , sorted. @@ -184,9 +184,9 @@ namespace Content.Shared.Examine /// /// Adds an icon aligned to the left of examine window that gives you info on hover. /// - public void AddHoverExamineVerb(GetVerbsEvent verbsEvent, Component component, string hoverMessage, string iconTexture = DefaultIconTexture) + public void AddHoverExamineVerb(GetVerbsEvent verbsEvent, Component component, string verbText, string hoverMessage, string iconTexture = DefaultIconTexture) { - AddDetailedExamineVerb(verbsEvent, component, FormattedMessage.Empty, "", iconTexture, hoverMessage, true); + AddDetailedExamineVerb(verbsEvent, component, FormattedMessage.Empty, verbText, iconTexture, hoverMessage, true); } } } diff --git a/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs b/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs index e259a17738..aa7d190c34 100644 --- a/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs +++ b/Content.Shared/FingerprintReader/FingerprintReaderSystem.cs @@ -19,7 +19,7 @@ public sealed class FingerprintReaderSystem : EntitySystem /// User trying to gain access. /// True if access was granted, otherwise false. [PublicAPI] - public bool IsAllowed(Entity target, EntityUid user) + public bool IsAllowed(Entity target, EntityUid user, bool showPopup = true) { if (!Resolve(target, ref target.Comp, false)) return true; @@ -30,7 +30,7 @@ public sealed class FingerprintReaderSystem : EntitySystem // Check for gloves first if (!target.Comp.IgnoreGloves && TryGetBlockingGloves(user, out var gloves)) { - if (target.Comp.FailGlovesPopup != null) + if (target.Comp.FailGlovesPopup != null && showPopup) _popup.PopupClient(Loc.GetString(target.Comp.FailGlovesPopup, ("blocker", gloves)), target, user); return false; } @@ -39,7 +39,7 @@ public sealed class FingerprintReaderSystem : EntitySystem if (!TryComp(user, out var fingerprint) || fingerprint.Fingerprint == null || !target.Comp.AllowedFingerprints.Contains(fingerprint.Fingerprint)) { - if (target.Comp.FailPopup != null) + if (target.Comp.FailPopup != null && showPopup) _popup.PopupClient(Loc.GetString(target.Comp.FailPopup), target, user); return false; diff --git a/Content.Shared/Fluids/Components/EvaporationComponent.cs b/Content.Shared/Fluids/Components/EvaporationComponent.cs index de271b1040..05569db85a 100644 --- a/Content.Shared/Fluids/Components/EvaporationComponent.cs +++ b/Content.Shared/Fluids/Components/EvaporationComponent.cs @@ -18,10 +18,10 @@ public sealed partial class EvaporationComponent : Component public TimeSpan NextTick = TimeSpan.Zero; /// - /// How much evaporation per second. + /// Evaporation factor. Multiplied by the evaporating speed of the reagent. /// [DataField("evaporationAmount")] - public FixedPoint2 EvaporationAmount = FixedPoint2.New(0.3); + public FixedPoint2 EvaporationAmount = FixedPoint2.New(1); /// /// forcibly vaporizes ALL the chemicals diff --git a/Content.Shared/Fluids/Components/PuddleComponent.cs b/Content.Shared/Fluids/Components/PuddleComponent.cs index 5434479fb7..105206fece 100644 --- a/Content.Shared/Fluids/Components/PuddleComponent.cs +++ b/Content.Shared/Fluids/Components/PuddleComponent.cs @@ -19,6 +19,12 @@ namespace Content.Shared.Fluids.Components [DataField("solution")] public string SolutionName = "puddle"; + /// + /// Default minimum speed someone must be moving to slip for all reagents. + /// + [DataField] + public float DefaultSlippery = 5.5f; + [ViewVariables] public Entity? Solution; } diff --git a/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs b/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs index 023d024a05..8b937ed1a7 100644 --- a/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs +++ b/Content.Shared/Fluids/SharedPuddleSystem.Evaporation.cs @@ -1,17 +1,52 @@ using Content.Shared.Chemistry.Components; using Content.Shared.Chemistry.Reagent; +using Content.Shared.FixedPoint; namespace Content.Shared.Fluids; public abstract partial class SharedPuddleSystem { - [ValidatePrototypeId] - private const string Water = "Water"; + public string[] GetEvaporatingReagents(Solution solution) + { + var evaporatingReagents = new List(); + foreach (ReagentPrototype solProto in solution.GetReagentPrototypes(_prototypeManager).Keys) + { + if (solProto.EvaporationSpeed > FixedPoint2.Zero) + evaporatingReagents.Add(solProto.ID); + } + return evaporatingReagents.ToArray(); + } - public static readonly string[] EvaporationReagents = [Water]; + public string[] GetAbsorbentReagents(Solution solution) + { + var absorbentReagents = new List(); + foreach (ReagentPrototype solProto in solution.GetReagentPrototypes(_prototypeManager).Keys) + { + if (solProto.Absorbent) + absorbentReagents.Add(solProto.ID); + } + return absorbentReagents.ToArray(); + } public bool CanFullyEvaporate(Solution solution) { - return solution.GetTotalPrototypeQuantity(EvaporationReagents) == solution.Volume; + return solution.GetTotalPrototypeQuantity(GetEvaporatingReagents(solution)) == solution.Volume; + } + + /// + /// Gets the evaporating speed of the reagents within a solution. + /// The speed at which a solution evaporates is the sum of the speed of all evaporating reagents in it. + /// + public Dictionary GetEvaporationSpeeds(Solution solution) + { + var evaporatingSpeeds = new Dictionary(); + foreach (ReagentPrototype solProto in solution.GetReagentPrototypes(_prototypeManager).Keys) + { + if (solProto.EvaporationSpeed > FixedPoint2.Zero) + { + evaporatingSpeeds.Add(solProto.ID, solProto.EvaporationSpeed); + } + } + return evaporatingSpeeds; } } diff --git a/Content.Shared/Fluids/SharedPuddleSystem.cs b/Content.Shared/Fluids/SharedPuddleSystem.cs index f573c042c5..34ba8ba803 100644 --- a/Content.Shared/Fluids/SharedPuddleSystem.cs +++ b/Content.Shared/Fluids/SharedPuddleSystem.cs @@ -100,7 +100,7 @@ public abstract partial class SharedPuddleSystem : EntitySystem { if (CanFullyEvaporate(solution)) args.PushMarkup(Loc.GetString("puddle-component-examine-evaporating")); - else if (solution.GetTotalPrototypeQuantity(EvaporationReagents) > FixedPoint2.Zero) + else if (solution.GetTotalPrototypeQuantity(GetEvaporatingReagents(solution)) > FixedPoint2.Zero) args.PushMarkup(Loc.GetString("puddle-component-examine-evaporating-partial")); else args.PushMarkup(Loc.GetString("puddle-component-examine-evaporating-no")); diff --git a/Content.Shared/Foldable/DeployFoldableSystem.cs b/Content.Shared/Foldable/DeployFoldableSystem.cs index 16315cde69..a83518dfa3 100644 --- a/Content.Shared/Foldable/DeployFoldableSystem.cs +++ b/Content.Shared/Foldable/DeployFoldableSystem.cs @@ -1,7 +1,10 @@ +using Content.Shared.Construction.EntitySystems; using Content.Shared.DragDrop; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; using Content.Shared.Interaction; +using Content.Shared.Popups; +using Robust.Shared.Physics.Components; namespace Content.Shared.Foldable; @@ -9,6 +12,8 @@ public sealed class DeployFoldableSystem : EntitySystem { [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly FoldableSystem _foldable = default!; + [Dependency] private readonly AnchorableSystem _anchorable = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; public override void Initialize() { @@ -57,6 +62,13 @@ public sealed class DeployFoldableSystem : EntitySystem if (!TryComp(ent, out var foldable)) return; + if (!TryComp(ent.Owner, out PhysicsComponent? anchorBody) + || !_anchorable.TileFree(args.ClickLocation, anchorBody)) + { + _popup.PopupPredicted(Loc.GetString("foldable-deploy-fail", ("object", ent)), ent, args.User); + return; + } + if (!TryComp(args.User, out HandsComponent? hands) || !_hands.TryDrop(args.User, args.Used, targetDropLocation: args.ClickLocation, handsComp: hands)) return; diff --git a/Content.Shared/Foldable/FoldableSystem.cs b/Content.Shared/Foldable/FoldableSystem.cs index 3ece56720a..73916f1c15 100644 --- a/Content.Shared/Foldable/FoldableSystem.cs +++ b/Content.Shared/Foldable/FoldableSystem.cs @@ -1,19 +1,24 @@ -using Content.Shared.Body.Components; using Content.Shared.Buckle; using Content.Shared.Buckle.Components; +using Content.Shared.Construction.EntitySystems; +using Content.Shared.Popups; using Content.Shared.Storage.Components; using Content.Shared.Verbs; using Robust.Shared.Containers; +using Robust.Shared.Physics.Components; using Robust.Shared.Serialization; using Robust.Shared.Utility; namespace Content.Shared.Foldable; +// TODO: This system could arguably be refactored into a general state system, as it is being utilized for a lot of different objects with various needs. public sealed class FoldableSystem : EntitySystem { [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedBuckleSystem _buckle = default!; [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly AnchorableSystem _anchorable = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; public override void Initialize() { @@ -24,7 +29,6 @@ public sealed class FoldableSystem : EntitySystem SubscribeLocalEvent(OnFoldableInit); SubscribeLocalEvent(OnInsertEvent); - SubscribeLocalEvent(OnStoreThisAttempt); SubscribeLocalEvent(OnFoldableOpenAttempt); SubscribeLocalEvent(OnStrapAttempt); @@ -46,12 +50,6 @@ public sealed class FoldableSystem : EntitySystem args.Cancelled = true; } - public void OnStoreThisAttempt(EntityUid uid, FoldableComponent comp, ref InsertIntoEntityStorageAttemptEvent args) - { - if (comp.IsFolded) - args.Cancelled = true; - } - public void OnStrapAttempt(EntityUid uid, FoldableComponent comp, ref StrapAttemptEvent args) { if (comp.IsFolded) @@ -89,9 +87,17 @@ public sealed class FoldableSystem : EntitySystem args.Cancel(); } - public bool TryToggleFold(EntityUid uid, FoldableComponent comp) + public bool TryToggleFold(EntityUid uid, FoldableComponent comp, EntityUid? folder = null) { - return TrySetFolded(uid, comp, !comp.IsFolded); + var result = TrySetFolded(uid, comp, !comp.IsFolded); + if (!result && folder != null) + { + if (comp.IsFolded) + _popup.PopupPredicted(Loc.GetString("foldable-unfold-fail", ("object", uid)), uid, folder.Value); + else + _popup.PopupPredicted(Loc.GetString("foldable-fold-fail", ("object", uid)), uid, folder.Value); + } + return result; } public bool CanToggleFold(EntityUid uid, FoldableComponent? fold = null) @@ -103,6 +109,10 @@ public sealed class FoldableSystem : EntitySystem if (_container.IsEntityInContainer(uid) && !fold.CanFoldInsideContainer) return false; + if (!TryComp(uid, out PhysicsComponent? body) || + !_anchorable.TileFree(Transform(uid).Coordinates, body)) + return false; + var ev = new FoldAttemptEvent(fold); RaiseLocalEvent(uid, ref ev); return !ev.Cancelled; @@ -127,12 +137,12 @@ public sealed class FoldableSystem : EntitySystem private void AddFoldVerb(EntityUid uid, FoldableComponent component, GetVerbsEvent args) { - if (!args.CanAccess || !args.CanInteract || args.Hands == null || !CanToggleFold(uid, component)) + if (!args.CanAccess || !args.CanInteract || args.Hands == null) return; AlternativeVerb verb = new() { - Act = () => TryToggleFold(uid, component), + Act = () => TryToggleFold(uid, component, args.User), Text = component.IsFolded ? Loc.GetString(component.UnfoldVerbText) : Loc.GetString(component.FoldVerbText), Icon = new SpriteSpecifier.Texture(new ("/Textures/Interface/VerbIcons/fold.svg.192dpi.png")), diff --git a/Content.Shared/Forensics/Events.cs b/Content.Shared/Forensics/Events.cs index 0506f48a3d..85494b37a0 100644 --- a/Content.Shared/Forensics/Events.cs +++ b/Content.Shared/Forensics/Events.cs @@ -1,4 +1,5 @@ using Content.Shared.DoAfter; +using Content.Shared.Inventory; using Robust.Shared.Serialization; namespace Content.Shared.Forensics; @@ -68,3 +69,16 @@ public record struct GenerateDnaEvent() /// public required string DNA; } + +/// +/// An event to check if the fingerprint is accessible. +/// +public sealed class TryAccessFingerprintEvent : CancellableEntityEventArgs, IInventoryRelayEvent +{ + SlotFlags IInventoryRelayEvent.TargetSlots => SlotFlags.WITHOUT_POCKET; + + /// + /// Entity that blocked access. + /// + public EntityUid? Blocker; +} diff --git a/Content.Shared/GPS/Systems/HandheldGpsSystem.cs b/Content.Shared/GPS/Systems/HandheldGpsSystem.cs new file mode 100644 index 0000000000..6a8e4c08db --- /dev/null +++ b/Content.Shared/GPS/Systems/HandheldGpsSystem.cs @@ -0,0 +1,37 @@ +using Content.Shared.GPS.Components; +using Content.Shared.Examine; +using Robust.Shared.Map; + +namespace Content.Shared.GPS.Systems; + +public sealed class HandheldGpsSystem : EntitySystem +{ + [Dependency] private readonly SharedTransformSystem _transform = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnExamine); + } + + /// + /// Handles showing the coordinates when a GPS is examined. + /// + private void OnExamine(Entity ent, ref ExaminedEvent args) + { + var posText = "Error"; + + var pos = _transform.GetMapCoordinates(ent); + + if (pos.MapId != MapId.Nullspace) + { + var x = (int) pos.Position.X; + var y = (int) pos.Position.Y; + posText = $"({x}, {y})"; + } + + args.PushMarkup(Loc.GetString("handheld-gps-coordinates-title", ("coordinates", posText))); + } +} diff --git a/Content.Shared/Ghost/GhostComponent.cs b/Content.Shared/Ghost/GhostComponent.cs index 279f5d4fda..3f8d7c9caa 100644 --- a/Content.Shared/Ghost/GhostComponent.cs +++ b/Content.Shared/Ghost/GhostComponent.cs @@ -4,6 +4,10 @@ using Robust.Shared.Prototypes; namespace Content.Shared.Ghost; +/// +/// Represents an observer ghost. +/// Handles limiting interactions, using ghost abilities, ghost visibility, and ghost warping. +/// [RegisterComponent, NetworkedComponent, Access(typeof(SharedGhostSystem))] [AutoGenerateComponentState(true), AutoGenerateComponentPause] public sealed partial class GhostComponent : Component @@ -61,46 +65,47 @@ public sealed partial class GhostComponent : Component // End actions - [ViewVariables(VVAccess.ReadWrite), DataField, AutoPausedField] + /// + /// Time at which the player died and created this ghost. + /// Used to determine votekick eligibility. + /// + /// + /// May not reflect actual time of death if this entity has been paused, + /// but will give an accurate length of time since death. + /// + [DataField, AutoPausedField] public TimeSpan TimeOfDeath = TimeSpan.Zero; - [DataField("booRadius"), ViewVariables(VVAccess.ReadWrite)] + /// + /// Range of the Boo action. + /// + [DataField] public float BooRadius = 3; - [DataField("booMaxTargets"), ViewVariables(VVAccess.ReadWrite)] + /// + /// Maximum number of entities that can affected by the Boo action. + /// + [DataField] public int BooMaxTargets = 3; - // TODO: instead of this funny stuff just give it access and update in system dirtying when needed - [ViewVariables(VVAccess.ReadWrite)] - public bool CanGhostInteract - { - get => _canGhostInteract; - set - { - if (_canGhostInteract == value) return; - _canGhostInteract = value; - Dirty(); - } - } - + /// + /// Is this ghost allowed to interact with entities? + /// + /// + /// Used to allow admins ghosts to interact with the world. + /// Changed by . + /// [DataField("canInteract"), AutoNetworkedField] - private bool _canGhostInteract; + public bool CanGhostInteract; /// - /// Changed by + /// Is this ghost player allowed to return to their original body? /// - // TODO MIRROR change this to use friend classes when thats merged - [ViewVariables(VVAccess.ReadWrite)] - public bool CanReturnToBody - { - get => _canReturnToBody; - set - { - if (_canReturnToBody == value) return; - _canReturnToBody = value; - Dirty(); - } - } + /// + /// Changed by . + /// + [DataField, AutoNetworkedField] + public bool CanReturnToBody; /// /// Ghost color @@ -108,9 +113,6 @@ public sealed partial class GhostComponent : Component /// Used to allow admins to change ghost colors. Should be removed if the capability to edit existing sprite colors is ever added back. [DataField, AutoNetworkedField] public Color Color = Color.White; - - [DataField("canReturnToBody"), AutoNetworkedField] - private bool _canReturnToBody; } public sealed partial class ToggleFoVActionEvent : InstantActionEvent { } diff --git a/Content.Shared/Ghost/SharedGhostSystem.cs b/Content.Shared/Ghost/SharedGhostSystem.cs index 6e62bee131..7d3561a79f 100644 --- a/Content.Shared/Ghost/SharedGhostSystem.cs +++ b/Content.Shared/Ghost/SharedGhostSystem.cs @@ -37,25 +37,68 @@ namespace Content.Shared.Ghost args.Cancel(); } + /// + /// Sets the ghost's time of death. + /// + public void SetTimeOfDeath(Entity entity, TimeSpan value) + { + if (!Resolve(entity, ref entity.Comp)) + return; + + if (entity.Comp.TimeOfDeath == value) + return; + + entity.Comp.TimeOfDeath = value; + Dirty(entity); + } + + [Obsolete("Use the Entity overload")] public void SetTimeOfDeath(EntityUid uid, TimeSpan value, GhostComponent? component) { - if (!Resolve(uid, ref component)) - return; - - component.TimeOfDeath = value; + SetTimeOfDeath((uid, component), value); } + /// + /// Sets whether or not the ghost player is allowed to return to their original body. + /// + public void SetCanReturnToBody(Entity entity, bool value) + { + if (!Resolve(entity, ref entity.Comp)) + return; + + if (entity.Comp.CanReturnToBody == value) + return; + + entity.Comp.CanReturnToBody = value; + Dirty(entity); + } + + [Obsolete("Use the Entity overload")] public void SetCanReturnToBody(EntityUid uid, bool value, GhostComponent? component = null) { - if (!Resolve(uid, ref component)) - return; - - component.CanReturnToBody = value; + SetCanReturnToBody((uid, component), value); } + [Obsolete("Use the Entity overload")] public void SetCanReturnToBody(GhostComponent component, bool value) { - component.CanReturnToBody = value; + SetCanReturnToBody((component.Owner, component), value); + } + + + /// + /// Sets whether the ghost is allowed to interact with other entities. + /// + public void SetCanGhostInteract(Entity entity, bool value) + { + if (!Resolve(entity, ref entity.Comp)) + return; + + if (entity.Comp.CanGhostInteract == value) + return; + + entity.Comp.CanGhostInteract = value; + Dirty(entity); } } diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs index 0fbf87f5af..5c95983631 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Pickup.cs @@ -242,6 +242,8 @@ public abstract partial class SharedHandsSystem : EntitySystem return; } + _interactionSystem.DoContactInteraction(uid, entity); //Possibly fires twice if manually picked up via interacting with the object + if (log) _adminLogger.Add(LogType.Pickup, LogImpact.Low, $"{ToPrettyString(uid):user} picked up {ToPrettyString(entity):entity}"); diff --git a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs index a0e02cf2e1..742e632501 100644 --- a/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs +++ b/Content.Shared/Hands/EntitySystems/SharedHandsSystem.Relay.cs @@ -1,3 +1,4 @@ +using Content.Shared.Atmos; using Content.Shared.Camera; using Content.Shared.Hands.Components; using Content.Shared.Movement.Systems; @@ -11,14 +12,31 @@ public abstract partial class SharedHandsSystem SubscribeLocalEvent(RelayEvent); SubscribeLocalEvent(RelayEvent); SubscribeLocalEvent(RelayEvent); + + // By-ref events. + SubscribeLocalEvent(RefRelayEvent); } private void RelayEvent(Entity entity, ref T args) where T : EntityEventArgs + { + CoreRelayEvent(entity, ref args); + } + + private void RefRelayEvent(Entity entity, ref T args) + { + var ev = CoreRelayEvent(entity, ref args); + args = ev.Args; + } + + private HeldRelayedEvent CoreRelayEvent(Entity entity, ref T args) { var ev = new HeldRelayedEvent(args); + foreach (var held in EnumerateHeld(entity, entity.Comp)) { RaiseLocalEvent(held, ref ev); } + + return ev; } } diff --git a/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs b/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs index 4a741074c9..aeb8d6716f 100644 --- a/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs +++ b/Content.Shared/Humanoid/HumanoidAppearanceComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.DisplacementMap; using Content.Shared.Humanoid.Markings; using Content.Shared.Humanoid.Prototypes; using Content.Shared.Inventory; @@ -99,6 +100,12 @@ public sealed partial class HumanoidAppearanceComponent : Component [DataField] public ProtoId? UndergarmentBottom = new ProtoId("UndergarmentBottomBoxers"); + + /// + /// The displacement maps that will be applied to specific layers of the humanoid. + /// + [DataField] + public Dictionary MarkingsDisplacement = new(); } [DataDefinition] diff --git a/Content.Shared/Humanoid/Markings/MarkingManager.cs b/Content.Shared/Humanoid/Markings/MarkingManager.cs index f45e6cf060..e844dc2280 100644 --- a/Content.Shared/Humanoid/Markings/MarkingManager.cs +++ b/Content.Shared/Humanoid/Markings/MarkingManager.cs @@ -62,12 +62,12 @@ namespace Content.Shared.Humanoid.Markings string species) { var speciesProto = _prototypeManager.Index(species); - var onlyWhitelisted = _prototypeManager.Index(speciesProto.MarkingPoints).OnlyWhitelisted; + var markingPoints = _prototypeManager.Index(speciesProto.MarkingPoints); var res = new Dictionary(); foreach (var (key, marking) in MarkingsByCategory(category)) { - if (onlyWhitelisted && marking.SpeciesRestrictions == null) + if ((markingPoints.OnlyWhitelisted || markingPoints.Points[category].OnlyWhitelisted) && marking.SpeciesRestrictions == null) { continue; } diff --git a/Content.Shared/Humanoid/Markings/MarkingPoints.cs b/Content.Shared/Humanoid/Markings/MarkingPoints.cs index a5bcca9706..6b1696849f 100644 --- a/Content.Shared/Humanoid/Markings/MarkingPoints.cs +++ b/Content.Shared/Humanoid/Markings/MarkingPoints.cs @@ -1,6 +1,5 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization; -using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List; namespace Content.Shared.Humanoid.Markings; @@ -8,13 +7,23 @@ namespace Content.Shared.Humanoid.Markings; [Serializable, NetSerializable] public sealed partial class MarkingPoints { - [DataField("points", required: true)] + [DataField(required: true)] public int Points = 0; - [DataField("required", required: true)] - public bool Required = false; + + [DataField(required: true)] + public bool Required; + + /// + /// If the user of this marking point set is only allowed to + /// use whitelisted markings, and not globally usable markings. + /// Only used for validation and profile construction. Ignored anywhere else. + /// + [DataField] + public bool OnlyWhitelisted; + // Default markings for this layer. - [DataField("defaultMarkings", customTypeSerializer:typeof(PrototypeIdListSerializer))] - public List DefaultMarkings = new(); + [DataField] + public List> DefaultMarkings = new(); public static Dictionary CloneMarkingPointDictionary(Dictionary self) { @@ -26,6 +35,7 @@ public sealed partial class MarkingPoints { Points = points.Points, Required = points.Required, + OnlyWhitelisted = points.OnlyWhitelisted, DefaultMarkings = points.DefaultMarkings }; } @@ -44,8 +54,9 @@ public sealed partial class MarkingPointsPrototype : IPrototype /// use whitelisted markings, and not globally usable markings. /// Only used for validation and profile construction. Ignored anywhere else. /// - [DataField("onlyWhitelisted")] public bool OnlyWhitelisted; + [DataField] + public bool OnlyWhitelisted; - [DataField("points", required: true)] + [DataField(required: true)] public Dictionary Points { get; private set; } = default!; } diff --git a/Content.Shared/Humanoid/Markings/MarkingPrototype.cs b/Content.Shared/Humanoid/Markings/MarkingPrototype.cs index ead061dd39..a6c578015a 100644 --- a/Content.Shared/Humanoid/Markings/MarkingPrototype.cs +++ b/Content.Shared/Humanoid/Markings/MarkingPrototype.cs @@ -32,6 +32,13 @@ namespace Content.Shared.Humanoid.Markings [DataField("coloring")] public MarkingColors Coloring { get; private set; } = new(); + /// + /// Do we need to apply any displacement maps to this marking? Set to false if your marking is incompatible + /// with a standard human doll, and is used for some special races with unusual shapes + /// + [DataField] + public bool CanBeDisplaced { get; private set; } = true; + [DataField("sprites", required: true)] public List Sprites { get; private set; } = default!; diff --git a/Content.Shared/Humanoid/Prototypes/RandomHumanoidSettingsPrototype.cs b/Content.Shared/Humanoid/Prototypes/RandomHumanoidSettingsPrototype.cs index e31289db1e..3c350de68f 100644 --- a/Content.Shared/Humanoid/Prototypes/RandomHumanoidSettingsPrototype.cs +++ b/Content.Shared/Humanoid/Prototypes/RandomHumanoidSettingsPrototype.cs @@ -21,7 +21,7 @@ public sealed partial class RandomHumanoidSettingsPrototype : IPrototype, IInher /// /// Whether the humanoid's name should take from the randomized profile or not. /// - [DataField("randomizeName")] + [DataField] public bool RandomizeName { get; private set; } = true; /// diff --git a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs index a3f62fefe8..f7884e97c4 100644 --- a/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs +++ b/Content.Shared/Humanoid/SharedHumanoidAppearanceSystem.cs @@ -38,6 +38,7 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem [Dependency] private readonly IPrototypeManager _proto = default!; [Dependency] private readonly ISerializationManager _serManager = default!; [Dependency] private readonly MarkingManager _markingManager = default!; + [Dependency] private readonly GrammarSystem _grammarSystem = default!; [ValidatePrototypeId] public const string DefaultSpecies = "Human"; @@ -156,8 +157,9 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem targetHumanoid.MarkingSet = new(sourceHumanoid.MarkingSet); targetHumanoid.Gender = sourceHumanoid.Gender; + if (TryComp(target, out var grammar)) - grammar.Gender = sourceHumanoid.Gender; + _grammarSystem.SetGender((target, grammar), sourceHumanoid.Gender); Dirty(target, targetHumanoid); } @@ -438,7 +440,7 @@ public abstract class SharedHumanoidAppearanceSystem : EntitySystem humanoid.Gender = profile.Gender; if (TryComp(uid, out var grammar)) { - grammar.Gender = profile.Gender; + _grammarSystem.SetGender((uid, grammar), profile.Gender); } humanoid.Age = profile.Age; diff --git a/Content.Shared/Input/ContentKeyFunctions.cs b/Content.Shared/Input/ContentKeyFunctions.cs index 5d3f014df8..8999632916 100644 --- a/Content.Shared/Input/ContentKeyFunctions.cs +++ b/Content.Shared/Input/ContentKeyFunctions.cs @@ -87,11 +87,22 @@ namespace Content.Shared.Input public static readonly BoundKeyFunction Hotbar7 = "Hotbar7"; public static readonly BoundKeyFunction Hotbar8 = "Hotbar8"; public static readonly BoundKeyFunction Hotbar9 = "Hotbar9"; + public static readonly BoundKeyFunction HotbarShift0 = "HotbarShift0"; + public static readonly BoundKeyFunction HotbarShift1 = "HotbarShift1"; + public static readonly BoundKeyFunction HotbarShift2 = "HotbarShift2"; + public static readonly BoundKeyFunction HotbarShift3 = "HotbarShift3"; + public static readonly BoundKeyFunction HotbarShift4 = "HotbarShift4"; + public static readonly BoundKeyFunction HotbarShift5 = "HotbarShift5"; + public static readonly BoundKeyFunction HotbarShift6 = "HotbarShift6"; + public static readonly BoundKeyFunction HotbarShift7 = "HotbarShift7"; + public static readonly BoundKeyFunction HotbarShift8 = "HotbarShift8"; + public static readonly BoundKeyFunction HotbarShift9 = "HotbarShift9"; public static BoundKeyFunction[] GetHotbarBoundKeys() => new[] { - Hotbar1, Hotbar2, Hotbar3, Hotbar4, Hotbar5, Hotbar6, Hotbar7, Hotbar8, Hotbar9, Hotbar0 + Hotbar1, Hotbar2, Hotbar3, Hotbar4, Hotbar5, Hotbar6, Hotbar7, Hotbar8, Hotbar9, Hotbar0, + HotbarShift1, HotbarShift2, HotbarShift3, HotbarShift4, HotbarShift5, HotbarShift6, HotbarShift7, HotbarShift8, HotbarShift9, HotbarShift0 }; public static readonly BoundKeyFunction Vote0 = "Vote0"; diff --git a/Content.Shared/Instruments/SharedInstrumentComponent.cs b/Content.Shared/Instruments/SharedInstrumentComponent.cs index 73500f3869..da64bf8cd7 100644 --- a/Content.Shared/Instruments/SharedInstrumentComponent.cs +++ b/Content.Shared/Instruments/SharedInstrumentComponent.cs @@ -34,6 +34,12 @@ public abstract partial class SharedInstrumentComponent : Component public BitArray FilteredChannels { get; set; } = new(RobustMidiEvent.MaxChannels, true); } +/// +/// Component that indicates that musical instrument was activated (ui opened). +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ActiveInstrumentComponent : Component; + [Serializable, NetSerializable] public sealed class InstrumentComponentState : ComponentState { diff --git a/Content.Shared/Interaction/SharedInteractionSystem.cs b/Content.Shared/Interaction/SharedInteractionSystem.cs index ff9f41e1f9..f2ae9fd68e 100644 --- a/Content.Shared/Interaction/SharedInteractionSystem.cs +++ b/Content.Shared/Interaction/SharedInteractionSystem.cs @@ -51,7 +51,6 @@ namespace Content.Shared.Interaction public abstract partial class SharedInteractionSystem : EntitySystem { [Dependency] private readonly IGameTiming _gameTiming = default!; - [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly ActionBlockerSystem _actionBlockerSystem = default!; @@ -106,7 +105,9 @@ namespace Content.Shared.Interaction _uiQuery = GetEntityQuery(); SubscribeLocalEvent(HandleUserInterfaceRangeCheck); - SubscribeLocalEvent(OnBoundInterfaceInteractAttempt); + + // TODO make this a broadcast event subscription again when engine has updated. + SubscribeLocalEvent(OnBoundInterfaceInteractAttempt); SubscribeAllEvent(HandleInteractInventorySlotEvent); @@ -151,13 +152,15 @@ namespace Content.Shared.Interaction /// /// Check that the user that is interacting with the BUI is capable of interacting and can access the entity. /// - private void OnBoundInterfaceInteractAttempt(BoundUserInterfaceMessageAttempt ev) + private void OnBoundInterfaceInteractAttempt(Entity ent, ref BoundUserInterfaceMessageAttempt ev) { - _uiQuery.TryComp(ev.Target, out var uiComp); + _uiQuery.TryComp(ev.Target, out var aUiComp); if (!_actionBlockerSystem.CanInteract(ev.Actor, ev.Target)) { // We permit ghosts to open uis unless explicitly blocked - if (ev.Message is not OpenBoundInterfaceMessage || !HasComp(ev.Actor) || uiComp?.BlockSpectators == true) + if (ev.Message is not OpenBoundInterfaceMessage + || !HasComp(ev.Actor) + || aUiComp?.BlockSpectators == true) { ev.Cancel(); return; @@ -175,16 +178,16 @@ namespace Content.Shared.Interaction return; } - if (uiComp == null) + if (aUiComp == null) return; - if (uiComp.SingleUser && uiComp.CurrentSingleUser != null && uiComp.CurrentSingleUser != ev.Actor) + if (aUiComp.SingleUser && aUiComp.CurrentSingleUser != null && aUiComp.CurrentSingleUser != ev.Actor) { ev.Cancel(); return; } - if (uiComp.RequiresComplex && !_actionBlockerSystem.CanComplexInteract(ev.Actor)) + if (aUiComp.RequiresComplex && !_actionBlockerSystem.CanComplexInteract(ev.Actor)) ev.Cancel(); } @@ -219,24 +222,24 @@ namespace Content.Shared.Interaction { if (!item.DeleteOnDrop) RemCompDeferred(uid); - else if (_net.IsServer) - QueueDel(uid); + else + PredictedQueueDel(uid); } private void OnUnequipHand(EntityUid uid, UnremoveableComponent item, GotUnequippedHandEvent args) { if (!item.DeleteOnDrop) RemCompDeferred(uid); - else if (_net.IsServer) - QueueDel(uid); + else + PredictedQueueDel(uid); } private void OnDropped(EntityUid uid, UnremoveableComponent item, DroppedEvent args) { if (!item.DeleteOnDrop) RemCompDeferred(uid); - else if (_net.IsServer) - QueueDel(uid); + else + PredictedQueueDel(uid); } private bool HandleTryPullObject(ICommonSession? session, EntityCoordinates coords, EntityUid uid) @@ -851,7 +854,7 @@ namespace Content.Shared.Interaction { // If the target is an item, we ignore any colliding entities. Currently done so that if items get stuck // inside of walls, users can still pick them up. - ignored.UnionWith(_broadphase.GetEntitiesIntersectingBody(target, (int) collisionMask, false, physics)); + ignored.UnionWith(_broadphase.GetEntitiesIntersectingBody(target, (int) collisionMask, false, physics)); // Note: This also bypasses items underneath doors, which may be problematic if it'd cause undesirable behavior. } else if (_wallMountQuery.TryComp(target, out var wallMount)) { @@ -1316,7 +1319,7 @@ namespace Content.Shared.Interaction if (Deleted(target)) return false; - if (!_containerSystem.TryGetContainingContainer((target, null, null), out var container)) + if (!_containerSystem.TryGetContainingContainer(target, out var container)) return false; var wearer = container.Owner; diff --git a/Content.Shared/Inventory/InventorySystem.Equip.cs b/Content.Shared/Inventory/InventorySystem.Equip.cs index 87409336b0..ce5af5ad5e 100644 --- a/Content.Shared/Inventory/InventorySystem.Equip.cs +++ b/Content.Shared/Inventory/InventorySystem.Equip.cs @@ -97,7 +97,7 @@ public abstract partial class InventorySystem // unequip the item. if (itemUid != null) { - if (!TryUnequip(actor, ev.Slot, out var item, predicted: true, inventory: inventory, checkDoafter: true)) + if (!TryUnequip(actor, ev.Slot, out var item, predicted: true, inventory: inventory, checkDoafter: true, triggerHandContact: true)) return; _handsSystem.PickupOrDrop(actor, item.Value); @@ -120,15 +120,15 @@ public abstract partial class InventorySystem RaiseLocalEvent(held.Value, new HandDeselectedEvent(actor)); - TryEquip(actor, actor, held.Value, ev.Slot, predicted: true, inventory: inventory, force: true, checkDoafter: true); + TryEquip(actor, actor, held.Value, ev.Slot, predicted: true, inventory: inventory, force: true, checkDoafter: true, triggerHandContact: true); } public bool TryEquip(EntityUid uid, EntityUid itemUid, string slot, bool silent = false, bool force = false, bool predicted = false, - InventoryComponent? inventory = null, ClothingComponent? clothing = null, bool checkDoafter = false) => - TryEquip(uid, uid, itemUid, slot, silent, force, predicted, inventory, clothing, checkDoafter); + InventoryComponent? inventory = null, ClothingComponent? clothing = null, bool checkDoafter = false, bool triggerHandContact = false) => + TryEquip(uid, uid, itemUid, slot, silent, force, predicted, inventory, clothing, checkDoafter, triggerHandContact); public bool TryEquip(EntityUid actor, EntityUid target, EntityUid itemUid, string slot, bool silent = false, bool force = false, bool predicted = false, - InventoryComponent? inventory = null, ClothingComponent? clothing = null, bool checkDoafter = false) + InventoryComponent? inventory = null, ClothingComponent? clothing = null, bool checkDoafter = false, bool triggerHandContact = false) { if (!Resolve(target, ref inventory, false)) { @@ -190,6 +190,10 @@ public abstract partial class InventorySystem _audio.PlayPredicted(clothing.EquipSound, target, actor); } + // If new gloves are equipped, trigger OnContactInteraction for held items + if (triggerHandContact && !((slotDefinition.SlotFlags & SlotFlags.GLOVES) == 0)) + TriggerHandContactInteraction(target); + Dirty(target, inventory); _movementSpeed.RefreshMovementSpeedModifiers(target); @@ -320,9 +324,10 @@ public abstract partial class InventorySystem InventoryComponent? inventory = null, ClothingComponent? clothing = null, bool reparent = true, - bool checkDoafter = false) + bool checkDoafter = false, + bool triggerHandContact = false) { - return TryUnequip(uid, uid, slot, silent, force, predicted, inventory, clothing, reparent, checkDoafter); + return TryUnequip(uid, uid, slot, silent, force, predicted, inventory, clothing, reparent, checkDoafter, triggerHandContact); } public bool TryUnequip( @@ -335,9 +340,10 @@ public abstract partial class InventorySystem InventoryComponent? inventory = null, ClothingComponent? clothing = null, bool reparent = true, - bool checkDoafter = false) + bool checkDoafter = false, + bool triggerHandContact = false) { - return TryUnequip(actor, target, slot, out _, silent, force, predicted, inventory, clothing, reparent, checkDoafter); + return TryUnequip(actor, target, slot, out _, silent, force, predicted, inventory, clothing, reparent, checkDoafter, triggerHandContact); } public bool TryUnequip( @@ -350,9 +356,10 @@ public abstract partial class InventorySystem InventoryComponent? inventory = null, ClothingComponent? clothing = null, bool reparent = true, - bool checkDoafter = false) + bool checkDoafter = false, + bool triggerHandContact = false) { - return TryUnequip(uid, uid, slot, out removedItem, silent, force, predicted, inventory, clothing, reparent, checkDoafter); + return TryUnequip(uid, uid, slot, out removedItem, silent, force, predicted, inventory, clothing, reparent, checkDoafter, triggerHandContact); } public bool TryUnequip( @@ -366,7 +373,8 @@ public abstract partial class InventorySystem InventoryComponent? inventory = null, ClothingComponent? clothing = null, bool reparent = true, - bool checkDoafter = false) + bool checkDoafter = false, + bool triggerHandContact = false) { var itemsDropped = 0; return TryUnequip(actor, target, slot, out removedItem, ref itemsDropped, @@ -385,7 +393,8 @@ public abstract partial class InventorySystem InventoryComponent? inventory = null, ClothingComponent? clothing = null, bool reparent = true, - bool checkDoafter = false) + bool checkDoafter = false, + bool triggerHandContact = false) { removedItem = null; @@ -476,6 +485,10 @@ public abstract partial class InventorySystem _audio.PlayPredicted(clothing.UnequipSound, target, actor); } + // If gloves are unequipped, OnContactInteraction should trigger for held items + if (triggerHandContact && !((slotDefinition.SlotFlags & SlotFlags.GLOVES) == 0)) + TriggerHandContactInteraction(target); + Dirty(target, inventory); _movementSpeed.RefreshMovementSpeedModifiers(target); @@ -551,4 +564,12 @@ public abstract partial class InventorySystem entityUid = container.ContainedEntity; return entityUid != null; } + + public void TriggerHandContactInteraction(EntityUid uid) + { + foreach (var item in _handsSystem.EnumerateHeld(uid)) + { + _interactionSystem.DoContactInteraction(uid, item); + } + } } diff --git a/Content.Shared/Inventory/InventorySystem.Relay.cs b/Content.Shared/Inventory/InventorySystem.Relay.cs index 82f6cde2d6..0fca5f25db 100644 --- a/Content.Shared/Inventory/InventorySystem.Relay.cs +++ b/Content.Shared/Inventory/InventorySystem.Relay.cs @@ -1,11 +1,13 @@ using Content.Shared._CP14.MagicEssence; using Content.Shared._CP14.MagicSpell.Events; using Content.Shared.Armor; +using Content.Shared.Atmos; using Content.Shared.Chat; using Content.Shared.Chemistry; using Content.Shared.Chemistry.Hypospray.Events; using Content.Shared.Climbing.Events; using Content.Shared.Damage; +using Content.Shared.Damage.Events; using Content.Shared.Electrocution; using Content.Shared.Explosion; using Content.Shared.Eye.Blinding.Systems; @@ -22,6 +24,7 @@ using Content.Shared.Strip.Components; using Content.Shared.Temperature; using Content.Shared.Verbs; using Content.Shared.Weapons.Ranged.Events; +using Content.Shared.Zombies; namespace Content.Shared.Inventory; @@ -49,13 +52,16 @@ public partial class InventorySystem SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); SubscribeLocalEvent(RelayInventoryEvent); + SubscribeLocalEvent(RelayInventoryEvent); // by-ref events + SubscribeLocalEvent(RefRelayInventoryEvent); SubscribeLocalEvent(RefRelayInventoryEvent); SubscribeLocalEvent(RefRelayInventoryEvent); SubscribeLocalEvent(RefRelayInventoryEvent); SubscribeLocalEvent(RefRelayInventoryEvent); SubscribeLocalEvent(RefRelayInventoryEvent); + SubscribeLocalEvent(RefRelayInventoryEvent); // Eye/vision events SubscribeLocalEvent(RelayInventoryEvent); diff --git a/Content.Shared/Inventory/RelaySubscriptionHelpers.cs b/Content.Shared/Inventory/RelaySubscriptionHelpers.cs new file mode 100644 index 0000000000..e905231539 --- /dev/null +++ b/Content.Shared/Inventory/RelaySubscriptionHelpers.cs @@ -0,0 +1,123 @@ +using Content.Shared.Hands; + +namespace Content.Shared.Inventory; + +/// +/// Helper functions for subscribing to component events that are also relayed via hands/inventory. +/// +public static class RelaySubscriptionHelpers +{ + /// + /// Subscribe to an event, along with different relayed event wrappers, in one call. + /// + /// Subscriptions for the entity system we're subscribing on. + /// The event handler to be called for the event. + /// Whether to subscribe the base event type. + /// Whether to subscribe for . + /// Whether to subscribe for . + /// + public static void SubscribeWithRelay( + this EntitySystem.Subscriptions subs, + EntityEventRefHandler handler, + bool baseEvent = true, + bool inventory = true, + bool held = true) + where TEvent : notnull + where TComp : IComponent + { + if (baseEvent) + subs.SubscribeLocalEvent(handler); + + if (inventory) + { + subs.SubscribeLocalEvent((Entity ent, ref InventoryRelayedEvent ev) => + { + handler(ent, ref ev.Args); + }); + } + + if (held) + { + subs.SubscribeLocalEvent((Entity ent, ref HeldRelayedEvent ev) => + { + handler(ent, ref ev.Args); + }); + } + } + + /// + /// Subscribe to an event, along with different relayed event wrappers, in one call. + /// + /// Subscriptions for the entity system we're subscribing on. + /// The event handler to be called for the event. + /// Whether to subscribe the base event type. + /// Whether to subscribe for . + /// Whether to subscribe for . + /// + public static void SubscribeWithRelay( + this EntitySystem.Subscriptions subs, + ComponentEventHandler handler, + bool baseEvent = true, + bool inventory = true, + bool held = true) + where TEvent : notnull + where TComp : IComponent + { + if (baseEvent) + subs.SubscribeLocalEvent(handler); + + if (inventory) + { + subs.SubscribeLocalEvent((EntityUid uid, TComp component, InventoryRelayedEvent args) => + { + handler(uid, component, args.Args); + }); + } + + if (held) + { + subs.SubscribeLocalEvent((EntityUid uid, TComp component, HeldRelayedEvent args) => + { + handler(uid, component, args.Args); + }); + } + } + + /// + /// Subscribe to an event, along with different relayed event wrappers, in one call. + /// + /// Subscriptions for the entity system we're subscribing on. + /// The event handler to be called for the event. + /// Whether to subscribe the base event type. + /// Whether to subscribe for . + /// Whether to subscribe for . + /// + public static void SubscribeWithRelay( + this EntitySystem.Subscriptions subs, + ComponentEventRefHandler handler, + bool baseEvent = true, + bool inventory = true, + bool held = true) + where TEvent : notnull + where TComp : IComponent + { + if (baseEvent) + subs.SubscribeLocalEvent(handler); + + if (inventory) + { + subs.SubscribeLocalEvent((EntityUid uid, TComp component, ref InventoryRelayedEvent args) => + { + handler(uid, component, ref args.Args); + }); + } + + if (held) + { + subs.SubscribeLocalEvent((EntityUid uid, TComp component, ref HeldRelayedEvent args) => + { + handler(uid, component, ref args.Args); + }); + } + } +} diff --git a/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs b/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs index 9eac60adc4..779ad18789 100644 --- a/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs +++ b/Content.Shared/Inventory/VirtualItem/SharedVirtualItemSystem.cs @@ -26,8 +26,6 @@ namespace Content.Shared.Inventory.VirtualItem; /// public abstract class SharedVirtualItemSystem : EntitySystem { - [Dependency] private readonly INetManager _netManager = default!; - [Dependency] private readonly SharedTransformSystem _transformSystem = default!; [Dependency] private readonly SharedContainerSystem _containerSystem = default!; [Dependency] private readonly SharedItemSystem _itemSystem = default!; [Dependency] private readonly InventorySystem _inventorySystem = default!; @@ -157,11 +155,6 @@ public abstract class SharedVirtualItemSystem : EntitySystem /// public void DeleteInHandsMatching(EntityUid user, EntityUid matching) { - // Client can't currently predict deleting networked entities so we use this workaround, another - // problem can popup when the hands leave PVS for example and this avoids that too - if (_netManager.IsClient) - return; - foreach (var hand in _handsSystem.EnumerateHands(user)) { if (TryComp(hand.HeldEntity, out VirtualItemComponent? virt) && virt.BlockingEntity == matching) @@ -206,11 +199,6 @@ public abstract class SharedVirtualItemSystem : EntitySystem /// Set this param if you have the name of the slot, it avoids unnecessary queries public void DeleteInSlotMatching(EntityUid user, EntityUid matching, string? slotName = null) { - // Client can't currently predict deleting networked entities so we use this workaround, another - // problem can popup when the hands leave PVS for example and this avoids that too - if (_netManager.IsClient) - return; - if (slotName != null) { if (!_inventorySystem.TryGetSlotEntity(user, slotName, out var slotEnt)) @@ -244,14 +232,8 @@ public abstract class SharedVirtualItemSystem : EntitySystem /// The virtual item, if spawned public bool TrySpawnVirtualItem(EntityUid blockingEnt, EntityUid user, [NotNullWhen(true)] out EntityUid? virtualItem) { - if (_netManager.IsClient) - { - virtualItem = null; - return false; - } - var pos = Transform(user).Coordinates; - virtualItem = Spawn(VirtualItem, pos); + virtualItem = PredictedSpawnAttachedTo(VirtualItem, pos); var virtualItemComp = Comp(virtualItem.Value); virtualItemComp.BlockingEntity = blockingEnt; Dirty(virtualItem.Value, virtualItemComp); @@ -272,8 +254,6 @@ public abstract class SharedVirtualItemSystem : EntitySystem if (TerminatingOrDeleted(item)) return; - _transformSystem.DetachEntity(item, Transform(item)); - if (_netManager.IsServer) - QueueDel(item); + PredictedQueueDel(item.Owner); } } diff --git a/Content.Shared/Item/ItemSizeChangedEvent.cs b/Content.Shared/Item/ItemSizeChangedEvent.cs new file mode 100644 index 0000000000..b7c7d0b858 --- /dev/null +++ b/Content.Shared/Item/ItemSizeChangedEvent.cs @@ -0,0 +1,10 @@ +namespace Content.Shared.Item; + +/// +/// Raised directed on an entity when its item size / shape changes. +/// +[ByRefEvent] +public struct ItemSizeChangedEvent(EntityUid Entity) +{ + public EntityUid Entity = Entity; +} diff --git a/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs index 110ae80626..cb6470f5d6 100644 --- a/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs +++ b/Content.Shared/Item/ItemToggle/Components/ItemToggleComponent.cs @@ -78,13 +78,18 @@ public sealed partial class ItemToggleComponent : Component [ByRefEvent] public record struct ItemToggleActivateAttemptEvent(EntityUid? User) { + /// + /// Should we silently fail. + /// + public bool Silent = false; + public bool Cancelled = false; public readonly EntityUid? User = User; /// /// Pop-up that gets shown to users explaining why the attempt was cancelled. /// - public string? Popup { get; set; } + public string? Popup; } /// @@ -93,8 +98,18 @@ public record struct ItemToggleActivateAttemptEvent(EntityUid? User) [ByRefEvent] public record struct ItemToggleDeactivateAttemptEvent(EntityUid? User) { + /// + /// Should we silently fail. + /// + public bool Silent = false; + public bool Cancelled = false; public readonly EntityUid? User = User; + + /// + /// Pop-up that gets shown to users explaining why the attempt was cancelled. + /// + public string? Popup; } /// diff --git a/Content.Shared/Item/ItemToggle/Components/ItemTogglePrefixComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemTogglePrefixComponent.cs new file mode 100644 index 0000000000..e75d56d252 --- /dev/null +++ b/Content.Shared/Item/ItemToggle/Components/ItemTogglePrefixComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Item.ItemToggle.Components; + +/// +/// Handles the changes to ItemComponent.HeldPrefix when toggled. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class ItemTogglePrefixComponent : Component +{ + /// + /// Item's HeldPrefix when activated. + /// + [DataField] + public string? PrefixOn = "on"; + + /// + /// Item's HeldPrefix when deactivated. + /// + [DataField] + public string? PrefixOff; +} diff --git a/Content.Shared/Item/ItemToggle/Components/ItemToggleSizeComponent.cs b/Content.Shared/Item/ItemToggle/Components/ItemToggleSizeComponent.cs index b7b47a0732..2870f9ef01 100644 --- a/Content.Shared/Item/ItemToggle/Components/ItemToggleSizeComponent.cs +++ b/Content.Shared/Item/ItemToggle/Components/ItemToggleSizeComponent.cs @@ -15,24 +15,24 @@ public sealed partial class ItemToggleSizeComponent : Component /// /// Item's size when activated /// - [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField] + [DataField, AutoNetworkedField] public ProtoId? ActivatedSize = null; /// /// Item's shape when activated /// - [ViewVariables(VVAccess.ReadWrite), DataField] + [DataField, AutoNetworkedField] public List? ActivatedShape = null; /// /// Item's size when deactivated. If none is mentioned, it uses the item's default size instead. /// - [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField] + [DataField, AutoNetworkedField] public ProtoId? DeactivatedSize = null; /// /// Item's shape when deactivated. If none is mentioned, it uses the item's default shape instead. /// - [ViewVariables(VVAccess.ReadWrite), DataField] + [DataField, AutoNetworkedField] public List? DeactivatedShape = null; } diff --git a/Content.Shared/Item/ItemToggle/ItemTogglePrefixSystem.cs b/Content.Shared/Item/ItemToggle/ItemTogglePrefixSystem.cs new file mode 100644 index 0000000000..b401fefc44 --- /dev/null +++ b/Content.Shared/Item/ItemToggle/ItemTogglePrefixSystem.cs @@ -0,0 +1,24 @@ +using Content.Shared.Item.ItemToggle.Components; + +namespace Content.Shared.Item.ItemToggle; + +/// +/// On toggle handles the changes to ItemComponent.HeldPrefix. . +/// +public sealed class ItemTogglePrefixSystem : EntitySystem +{ + [Dependency] private readonly SharedItemSystem _item = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnToggled); + } + + private void OnToggled(Entity ent, ref ItemToggledEvent args) + { + _item.SetHeldPrefix(ent.Owner, args.Activated ? ent.Comp.PrefixOn : ent.Comp.PrefixOff); + } +} diff --git a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs index f6752a67f6..819975ecda 100644 --- a/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs +++ b/Content.Shared/Item/ItemToggle/ItemToggleSystem.cs @@ -76,6 +76,23 @@ public sealed class ItemToggleSystem : EntitySystem var user = args.User; + if (ent.Comp.Activated) + { + var ev = new ItemToggleActivateAttemptEvent(args.User); + RaiseLocalEvent(ent.Owner, ref ev); + + if (ev.Cancelled) + return; + } + else + { + var ev = new ItemToggleDeactivateAttemptEvent(args.User); + RaiseLocalEvent(ent.Owner, ref ev); + + if (ev.Cancelled) + return; + } + args.Verbs.Add(new ActivationVerb() { Text = !ent.Comp.Activated ? Loc.GetString(ent.Comp.VerbToggleOn) : Loc.GetString(ent.Comp.VerbToggleOff), @@ -133,15 +150,20 @@ public sealed class ItemToggleSystem : EntitySystem if (comp.Activated) return true; - if (!comp.Predictable && _netManager.IsClient) - return true; - var attempt = new ItemToggleActivateAttemptEvent(user); RaiseLocalEvent(uid, ref attempt); - if (!comp.Predictable) predicted = false; + if (!comp.Predictable) + predicted = false; + + if (!predicted && _netManager.IsClient) + return false; + if (attempt.Cancelled) { + if (attempt.Silent) + return false; + if (predicted) _audio.PlayPredicted(comp.SoundFailToActivate, uid, user); else @@ -159,7 +181,6 @@ public sealed class ItemToggleSystem : EntitySystem } Activate((uid, comp), predicted, user); - return true; } @@ -176,16 +197,31 @@ public sealed class ItemToggleSystem : EntitySystem if (!comp.Activated) return true; - if (!comp.Predictable && _netManager.IsClient) - return true; + if (!comp.Predictable) + predicted = false; var attempt = new ItemToggleDeactivateAttemptEvent(user); RaiseLocalEvent(uid, ref attempt); - if (attempt.Cancelled) + if (!predicted && _netManager.IsClient) return false; - if (!comp.Predictable) predicted = false; + if (attempt.Cancelled) + { + if (attempt.Silent) + return false; + + if (attempt.Popup != null && user != null) + { + if (predicted) + _popup.PopupClient(attempt.Popup, uid, user.Value); + else + _popup.PopupEntity(attempt.Popup, uid, user.Value); + } + + return false; + } + Deactivate((uid, comp), predicted, user); return true; } diff --git a/Content.Shared/Item/MultiHandedItemComponent.cs b/Content.Shared/Item/MultiHandedItemComponent.cs index 9a90d063ba..3a0ac23bcd 100644 --- a/Content.Shared/Item/MultiHandedItemComponent.cs +++ b/Content.Shared/Item/MultiHandedItemComponent.cs @@ -9,6 +9,6 @@ namespace Content.Shared.Item; [RegisterComponent, NetworkedComponent] public sealed partial class MultiHandedItemComponent : Component { - [DataField("handsNeeded"), ViewVariables(VVAccess.ReadWrite)] + [DataField] public int HandsNeeded = 2; } diff --git a/Content.Shared/Item/MultiHandedItemSystem.cs b/Content.Shared/Item/MultiHandedItemSystem.cs new file mode 100644 index 0000000000..da9d895dd2 --- /dev/null +++ b/Content.Shared/Item/MultiHandedItemSystem.cs @@ -0,0 +1,56 @@ +using Content.Shared.Hands; +using Content.Shared.Hands.Components; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Inventory.VirtualItem; +using Content.Shared.Popups; +using Robust.Shared.Timing; + +namespace Content.Shared.Item; + +public sealed class MultiHandedItemSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly SharedHandsSystem _hands = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SharedVirtualItemSystem _virtualItem = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnAttemptPickup); + SubscribeLocalEvent(OnVirtualItemDeleted); + SubscribeLocalEvent(OnEquipped); + SubscribeLocalEvent(OnUnequipped); + } + + private void OnEquipped(Entity ent, ref GotEquippedHandEvent args) + { + for (var i = 0; i < ent.Comp.HandsNeeded - 1; i++) + { + _virtualItem.TrySpawnVirtualItemInHand(ent.Owner, args.User); + } + } + + private void OnUnequipped(Entity ent, ref GotUnequippedHandEvent args) + { + _virtualItem.DeleteInHandsMatching(args.User, ent.Owner); + } + + private void OnAttemptPickup(Entity ent, ref GettingPickedUpAttemptEvent args) + { + if (TryComp(args.User, out var hands) && hands.CountFreeHands() >= ent.Comp.HandsNeeded) + return; + + args.Cancel(); + _popup.PopupPredictedCursor(Loc.GetString("multi-handed-item-pick-up-fail", + ("number", ent.Comp.HandsNeeded - 1), ("item", ent.Owner)), args.User); + } + + private void OnVirtualItemDeleted(Entity ent, ref VirtualItemDeletedEvent args) + { + if (args.BlockingEntity != ent.Owner || _timing.ApplyingState) + return; + + _hands.TryDrop(args.User, ent.Owner); + } +} diff --git a/Content.Shared/Item/SharedItemSystem.cs b/Content.Shared/Item/SharedItemSystem.cs index 5c1d44f2ce..18a98c7a0c 100644 --- a/Content.Shared/Item/SharedItemSystem.cs +++ b/Content.Shared/Item/SharedItemSystem.cs @@ -39,22 +39,31 @@ public abstract class SharedItemSystem : EntitySystem public void SetSize(EntityUid uid, ProtoId size, ItemComponent? component = null) { - if (!Resolve(uid, ref component, false)) + if (!Resolve(uid, ref component, false) || component.Size == size) return; component.Size = size; Dirty(uid, component); + var ev = new ItemSizeChangedEvent(uid); + RaiseLocalEvent(uid, ref ev, broadcast: true); } public void SetShape(EntityUid uid, List? shape, ItemComponent? component = null) { - if (!Resolve(uid, ref component, false)) + if (!Resolve(uid, ref component, false) || component.Shape == shape) return; component.Shape = shape; Dirty(uid, component); + var ev = new ItemSizeChangedEvent(uid); + RaiseLocalEvent(uid, ref ev, broadcast: true); } + /// + /// Sets the offset used for the item's sprite inside the storage UI. + /// Dirties. + /// + [PublicAPI] public void SetStoredOffset(EntityUid uid, Vector2i newOffset, ItemComponent? component = null) { if (!Resolve(uid, ref component, false)) @@ -231,6 +240,7 @@ public abstract class SharedItemSystem : EntitySystem { // Set the deactivated shape to the default item's shape before it gets changed. itemToggleSize.DeactivatedShape ??= new List(GetItemShape(item)); + Dirty(uid, itemToggleSize); SetShape(uid, itemToggleSize.ActivatedShape, item); } @@ -238,6 +248,7 @@ public abstract class SharedItemSystem : EntitySystem { // Set the deactivated size to the default item's size before it gets changed. itemToggleSize.DeactivatedSize ??= item.Size; + Dirty(uid, itemToggleSize); SetSize(uid, (ProtoId) itemToggleSize.ActivatedSize, item); } } @@ -253,7 +264,5 @@ public abstract class SharedItemSystem : EntitySystem SetSize(uid, (ProtoId) itemToggleSize.DeactivatedSize, item); } } - - Dirty(uid, item); } } diff --git a/Content.Shared/Item/SharedMultiHandedItemSystem.cs b/Content.Shared/Item/SharedMultiHandedItemSystem.cs deleted file mode 100644 index 0259b361b5..0000000000 --- a/Content.Shared/Item/SharedMultiHandedItemSystem.cs +++ /dev/null @@ -1,47 +0,0 @@ -using Content.Shared.Hands; -using Content.Shared.Hands.Components; -using Content.Shared.Hands.EntitySystems; -using Content.Shared.Popups; -using Robust.Shared.Timing; - -namespace Content.Shared.Item; - -public abstract class SharedMultiHandedItemSystem : EntitySystem -{ - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly SharedHandsSystem _hands = default!; - [Dependency] private readonly SharedPopupSystem _popup = default!; - - /// - public override void Initialize() - { - SubscribeLocalEvent(OnAttemptPickup); - SubscribeLocalEvent(OnVirtualItemDeleted); - SubscribeLocalEvent(OnEquipped); - SubscribeLocalEvent(OnUnequipped); - } - - protected abstract void OnEquipped(EntityUid uid, MultiHandedItemComponent component, GotEquippedHandEvent args); - protected abstract void OnUnequipped(EntityUid uid, MultiHandedItemComponent component, GotUnequippedHandEvent args); - - private void OnAttemptPickup(EntityUid uid, MultiHandedItemComponent component, GettingPickedUpAttemptEvent args) - { - if (TryComp(args.User, out var hands) && hands.CountFreeHands() >= component.HandsNeeded) - return; - - args.Cancel(); - if (_timing.IsFirstTimePredicted) - { - _popup.PopupCursor(Loc.GetString("multi-handed-item-pick-up-fail", - ("number", component.HandsNeeded - 1), ("item", uid)), args.User); - } - } - - private void OnVirtualItemDeleted(EntityUid uid, MultiHandedItemComponent component, VirtualItemDeletedEvent args) - { - if (args.BlockingEntity != uid) - return; - - _hands.TryDrop(args.User, uid); - } -} diff --git a/Content.Shared/Labels/Components/LabelComponent.cs b/Content.Shared/Labels/Components/LabelComponent.cs index ee508797ad..d126e3bd3a 100644 --- a/Content.Shared/Labels/Components/LabelComponent.cs +++ b/Content.Shared/Labels/Components/LabelComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Labels.EntitySystems; using Robust.Shared.GameStates; namespace Content.Shared.Labels.Components; @@ -6,6 +7,7 @@ namespace Content.Shared.Labels.Components; /// Makes entities have a label in their name. Labels are normally given by /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(LabelSystem))] public sealed partial class LabelComponent : Component { /// diff --git a/Content.Shared/Labels/Components/PaperLabelComponent.cs b/Content.Shared/Labels/Components/PaperLabelComponent.cs new file mode 100644 index 0000000000..e8dad61b87 --- /dev/null +++ b/Content.Shared/Labels/Components/PaperLabelComponent.cs @@ -0,0 +1,19 @@ +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Labels.EntitySystems; +using Robust.Shared.GameStates; + +namespace Content.Shared.Labels.Components; + +/// +/// This component allows you to attach and remove a piece of paper to an entity. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(LabelSystem))] +public sealed partial class PaperLabelComponent : Component +{ + /// + /// The slot where the label is stored. + /// + [DataField] + public ItemSlot LabelSlot = new(); +} diff --git a/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs b/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs index b045a6af3b..12cddad80f 100644 --- a/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs +++ b/Content.Shared/Labels/Components/PaperLabelTypeComponent.cs @@ -1,15 +1,17 @@ +using Content.Shared.Labels.EntitySystems; using Robust.Shared.GameStates; namespace Content.Shared.Labels.Components; -/// -/// Specifies the paper type (see textures/storage/crates/labels.rsi to see currently supported paper types) to show on crates this label is attached to. -/// +/// +/// Specifies the paper type (see textures/storage/crates/labels.rsi to see currently supported paper types) to show on crates this label is attached to. +/// [RegisterComponent, NetworkedComponent] +[Access(typeof(LabelSystem))] public sealed partial class PaperLabelTypeComponent : Component { - /// - /// The type of label to show. + /// + /// The type of label to show. /// [DataField] public string PaperType = "Paper"; diff --git a/Content.Shared/Labels/EntitySystems/LabelSystem.cs b/Content.Shared/Labels/EntitySystems/LabelSystem.cs new file mode 100644 index 0000000000..55a06fcab6 --- /dev/null +++ b/Content.Shared/Labels/EntitySystems/LabelSystem.cs @@ -0,0 +1,160 @@ +using Content.Shared.Containers.ItemSlots; +using Content.Shared.Examine; +using Content.Shared.Labels.Components; +using Content.Shared.NameModifier.EntitySystems; +using Content.Shared.Paper; +using Robust.Shared.Containers; +using Robust.Shared.Utility; + +namespace Content.Shared.Labels.EntitySystems; + +public sealed partial class LabelSystem : EntitySystem +{ + [Dependency] private readonly NameModifierSystem _nameModifier = default!; + [Dependency] private readonly ItemSlotsSystem _itemSlots = default!; + [Dependency] private readonly SharedAppearanceSystem _appearance = default!; + + public const string ContainerName = "paper_label"; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnLabelCompMapInit); + SubscribeLocalEvent(OnExamine); + SubscribeLocalEvent(OnRefreshNameModifiers); + + SubscribeLocalEvent(OnComponentInit); + SubscribeLocalEvent(OnComponentRemove); + SubscribeLocalEvent(OnContainerModified); + SubscribeLocalEvent(OnContainerModified); + SubscribeLocalEvent(OnExamined); + } + + private void OnLabelCompMapInit(Entity ent, ref MapInitEvent args) + { + if (!string.IsNullOrEmpty(ent.Comp.CurrentLabel)) + { + ent.Comp.CurrentLabel = Loc.GetString(ent.Comp.CurrentLabel); + Dirty(ent); + } + + _nameModifier.RefreshNameModifiers(ent.Owner); + } + + /// + /// Apply or remove a label on an entity. + /// + /// EntityUid to change label on + /// intended label text (null to remove) + /// label component for resolve + /// metadata component for resolve + public void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null) + { + label ??= EnsureComp(uid); + + label.CurrentLabel = text; + _nameModifier.RefreshNameModifiers(uid); + + //CP14 Events + var ev = new CP14LabeledEvent() + { + LabeledEntity = uid, + Text = text, + }; + RaiseLocalEvent(uid, ev); + //CP14 Events end + + Dirty(uid, label); + } + + private void OnExamine(Entity ent, ref ExaminedEvent args) + { + if (!ent.Comp.Examinable) + return; + + if (ent.Comp.CurrentLabel == null) + return; + + var message = new FormattedMessage(); + message.AddText(Loc.GetString("hand-labeler-has-label", ("label", ent.Comp.CurrentLabel))); + args.PushMessage(message); + } + + private void OnRefreshNameModifiers(Entity entity, ref RefreshNameModifiersEvent args) + { + if (!string.IsNullOrEmpty(entity.Comp.CurrentLabel)) + args.AddModifier("comp-label-format", extraArgs: ("label", entity.Comp.CurrentLabel)); + } + + private void OnComponentInit(Entity ent, ref ComponentInit args) + { + _itemSlots.AddItemSlot(ent, ContainerName, ent.Comp.LabelSlot); + + UpdateAppearance(ent); + } + + private void OnComponentRemove(Entity ent, ref ComponentRemove args) + { + _itemSlots.RemoveItemSlot(ent, ent.Comp.LabelSlot); + } + + private void OnExamined(Entity ent, ref ExaminedEvent args) + { + if (ent.Comp.LabelSlot.Item is not {Valid: true} item) + return; + + using (args.PushGroup(nameof(PaperLabelComponent))) + { + if (!args.IsInDetailsRange) + { + args.PushMarkup(Loc.GetString("comp-paper-label-has-label-cant-read")); + return; + } + + // Assuming yaml has the correct entity whitelist, this should not happen. + if (!TryComp(item, out var paper)) + return; + + if (string.IsNullOrWhiteSpace(paper.Content)) + { + args.PushMarkup(Loc.GetString("comp-paper-label-has-label-blank")); + return; + } + + args.PushMarkup(Loc.GetString("comp-paper-label-has-label")); + var text = paper.Content; + args.PushMarkup(text.TrimEnd()); + } + } + + // Not ref-sub due to being used for multiple subscriptions. + private void OnContainerModified(EntityUid uid, PaperLabelComponent label, ContainerModifiedMessage args) + { + if (!label.Initialized) + return; + + if (args.Container.ID != label.LabelSlot.ID) + return; + + UpdateAppearance((uid, label)); + } + + private void UpdateAppearance(Entity ent) + { + if (!Resolve(ent, ref ent.Comp2, false)) + return; + + var slot = ent.Comp1.LabelSlot; + _appearance.SetData(ent, PaperLabelVisuals.HasLabel, slot.HasItem, ent.Comp2); + if (TryComp(slot.Item, out var type)) + _appearance.SetData(ent, PaperLabelVisuals.LabelType, type.PaperType, ent.Comp2); + } +} + +//CP14 Labeling Event +public sealed class CP14LabeledEvent : EntityEventArgs +{ + public EntityUid? LabeledEntity; + public string? Text; +} diff --git a/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs index 0763bb101c..14abae70bb 100644 --- a/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs +++ b/Content.Shared/Labels/EntitySystems/SharedHandLabelerSystem.cs @@ -14,7 +14,7 @@ public abstract class SharedHandLabelerSystem : EntitySystem { [Dependency] protected readonly SharedUserInterfaceSystem UserInterfaceSystem = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; - [Dependency] private readonly SharedLabelSystem _labelSystem = default!; + [Dependency] private readonly LabelSystem _labelSystem = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; diff --git a/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs b/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs deleted file mode 100644 index 3bab47ac2e..0000000000 --- a/Content.Shared/Labels/EntitySystems/SharedLabelSystem.cs +++ /dev/null @@ -1,61 +0,0 @@ -using Content.Shared.Examine; -using Content.Shared.Labels.Components; -using Content.Shared.NameModifier.EntitySystems; -using Robust.Shared.Utility; - -namespace Content.Shared.Labels.EntitySystems; - -public abstract partial class SharedLabelSystem : EntitySystem -{ - [Dependency] protected readonly NameModifierSystem NameMod = default!; - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent(OnLabelCompMapInit); - SubscribeLocalEvent(OnExamine); - SubscribeLocalEvent(OnRefreshNameModifiers); - } - - private void OnLabelCompMapInit(EntityUid uid, LabelComponent component, MapInitEvent args) - { - if (!string.IsNullOrEmpty(component.CurrentLabel)) - { - component.CurrentLabel = Loc.GetString(component.CurrentLabel); - Dirty(uid, component); - } - - NameMod.RefreshNameModifiers(uid); - } - - public virtual void Label(EntityUid uid, string? text, MetaDataComponent? metadata = null, LabelComponent? label = null){} - - private void OnExamine(EntityUid uid, LabelComponent? label, ExaminedEvent args) - { - if (!Resolve(uid, ref label)) - return; - - if (!label.Examinable) - return; - - if (label.CurrentLabel == null) - return; - - var message = new FormattedMessage(); - message.AddText(Loc.GetString("hand-labeler-has-label", ("label", label.CurrentLabel))); - args.PushMessage(message); - } - - private void OnRefreshNameModifiers(Entity entity, ref RefreshNameModifiersEvent args) - { - if (!string.IsNullOrEmpty(entity.Comp.CurrentLabel)) - args.AddModifier("comp-label-format", extraArgs: ("label", entity.Comp.CurrentLabel)); - } -} - -//CP14 Labeling Event -public sealed class CP14LabeledEvent : EntityEventArgs -{ - public EntityUid? LabeledEntity; - public string? Text; -} diff --git a/Content.Shared/Lathe/LatheComponent.cs b/Content.Shared/Lathe/LatheComponent.cs index aaf273e0fe..80f4f62a31 100644 --- a/Content.Shared/Lathe/LatheComponent.cs +++ b/Content.Shared/Lathe/LatheComponent.cs @@ -21,6 +21,9 @@ namespace Content.Shared.Lathe /// [DataField] public List> DynamicPacks = new(); + // Note that this shouldn't be modified dynamically. + // I.e., this + the static recipies should represent all recipies that the lathe can ever make + // Otherwise the material arbitrage test and/or LatheSystem.GetAllBaseRecipes needs to be updated /// /// The lathe's construction queue @@ -81,15 +84,16 @@ namespace Content.Shared.Lathe public sealed class LatheGetRecipesEvent : EntityEventArgs { public readonly EntityUid Lathe; + public readonly LatheComponent Comp; - public bool getUnavailable; + public bool GetUnavailable; public HashSet> Recipes = new(); - public LatheGetRecipesEvent(EntityUid lathe, bool forced) + public LatheGetRecipesEvent(Entity lathe, bool forced) { - Lathe = lathe; - getUnavailable = forced; + (Lathe, Comp) = lathe; + GetUnavailable = forced; } } diff --git a/Content.Shared/Lathe/SharedLatheSystem.cs b/Content.Shared/Lathe/SharedLatheSystem.cs index ae5519d16c..524d83fd84 100644 --- a/Content.Shared/Lathe/SharedLatheSystem.cs +++ b/Content.Shared/Lathe/SharedLatheSystem.cs @@ -34,6 +34,25 @@ public abstract class SharedLatheSystem : EntitySystem BuildInverseRecipeDictionary(); } + /// + /// Get the set of all recipes that a lathe could possibly ever create (e.g., if all techs were unlocked). + /// + public HashSet> GetAllPossibleRecipes(LatheComponent component) + { + var recipes = new HashSet>(); + foreach (var pack in component.StaticPacks) + { + recipes.UnionWith(_proto.Index(pack).Recipes); + } + + foreach (var pack in component.DynamicPacks) + { + recipes.UnionWith(_proto.Index(pack).Recipes); + } + + return recipes; + } + /// /// Add every recipe in the list of recipe packs to a single hashset. /// diff --git a/Content.Shared/Light/Components/SharedExpendableLightComponent.cs b/Content.Shared/Light/Components/SharedExpendableLightComponent.cs index 001794880a..ad7a0edc4e 100644 --- a/Content.Shared/Light/Components/SharedExpendableLightComponent.cs +++ b/Content.Shared/Light/Components/SharedExpendableLightComponent.cs @@ -1,5 +1,7 @@ +using Content.Shared.Stacks; using Robust.Shared.Audio; using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; using Robust.Shared.Serialization; namespace Content.Shared.Light.Components; @@ -9,34 +11,37 @@ public abstract partial class SharedExpendableLightComponent : Component { [ViewVariables(VVAccess.ReadOnly)] - public ExpendableLightState CurrentState { get; set; } + public ExpendableLightState CurrentState; - [DataField("turnOnBehaviourID")] - public string TurnOnBehaviourID { get; set; } = string.Empty; + [DataField] + public string TurnOnBehaviourID = string.Empty; - [DataField("fadeOutBehaviourID")] - public string FadeOutBehaviourID { get; set; } = string.Empty; + [DataField] + public string FadeOutBehaviourID = string.Empty; - [DataField("glowDuration")] - public float GlowDuration { get; set; } = 60 * 15f; + [DataField] + public TimeSpan GlowDuration = TimeSpan.FromSeconds(60 * 15f); - [DataField("fadeOutDuration")] - public float FadeOutDuration { get; set; } = 60 * 5f; + [DataField] + public TimeSpan FadeOutDuration = TimeSpan.FromSeconds(60 * 5f); - [DataField("spentDesc")] - public string SpentDesc { get; set; } = string.Empty; + [DataField] + public ProtoId? RefuelMaterialID; - [DataField("spentName")] - public string SpentName { get; set; } = string.Empty; + [DataField] + public TimeSpan RefuelMaterialTime = TimeSpan.FromSeconds(15f); - [DataField("litSound")] - public SoundSpecifier? LitSound { get; set; } + [DataField] + public TimeSpan RefuelMaximumDuration = TimeSpan.FromSeconds(60 * 15f * 2); - [DataField("loopedSound")] - public SoundSpecifier? LoopedSound { get; set; } + [DataField] + public SoundSpecifier? LitSound; - [DataField("dieSound")] - public SoundSpecifier? DieSound { get; set; } = null; + [DataField] + public SoundSpecifier? LoopedSound; + + [DataField] + public SoundSpecifier? DieSound; } [Serializable, NetSerializable] diff --git a/Content.Shared/Light/EntitySystems/SharedLightCycleSystem.cs b/Content.Shared/Light/EntitySystems/SharedLightCycleSystem.cs index 3b3d6d702c..3bd0d5b5fb 100644 --- a/Content.Shared/Light/EntitySystems/SharedLightCycleSystem.cs +++ b/Content.Shared/Light/EntitySystems/SharedLightCycleSystem.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.DayCycle; using Content.Shared.Light.Components; using Robust.Shared.Map.Components; @@ -14,6 +15,10 @@ public abstract class SharedLightCycleSystem : EntitySystem protected virtual void OnCycleMapInit(Entity ent, ref MapInitEvent args) { + //CP14DayCycleSystem + EnsureComp(ent); + //CP14DayCycleSystem end + if (TryComp(ent.Owner, out MapLightComponent? mapLight)) { ent.Comp.OriginalColor = mapLight.AmbientLightColor; diff --git a/Content.Shared/Lock/LockComponent.cs b/Content.Shared/Lock/LockComponent.cs index 0c7b8e318d..6d16670ed2 100644 --- a/Content.Shared/Lock/LockComponent.cs +++ b/Content.Shared/Lock/LockComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared.Access.Components; using Content.Shared.DoAfter; using Robust.Shared.Audio; using Robust.Shared.GameStates; @@ -33,6 +34,12 @@ public sealed partial class LockComponent : Component [DataField, AutoNetworkedField] public bool UnlockOnClick = true; + /// + /// Whether the lock requires access validation through + /// + [DataField, AutoNetworkedField] + public bool UseAccess = true; + /// /// The sound played when unlocked. /// diff --git a/Content.Shared/Lock/LockSystem.cs b/Content.Shared/Lock/LockSystem.cs index 99051233a6..2c48041c64 100644 --- a/Content.Shared/Lock/LockSystem.cs +++ b/Content.Shared/Lock/LockSystem.cs @@ -132,7 +132,7 @@ public sealed class LockSystem : EntitySystem if (!CanToggleLock(uid, user, quiet: false)) return false; - if (!HasUserAccess(uid, user, quiet: false)) + if (lockComp.UseAccess && !HasUserAccess(uid, user, quiet: false)) return false; if (!skipDoAfter && lockComp.LockTime != TimeSpan.Zero) @@ -159,6 +159,9 @@ public sealed class LockSystem : EntitySystem if (!Resolve(uid, ref lockComp)) return; + if (lockComp.Locked) + return; + if (user is { Valid: true }) { _sharedPopupSystem.PopupClient(Loc.GetString("lock-comp-do-lock-success", @@ -189,6 +192,9 @@ public sealed class LockSystem : EntitySystem if (!Resolve(uid, ref lockComp)) return; + if (!lockComp.Locked) + return; + if (user is { Valid: true }) { _sharedPopupSystem.PopupClient(Loc.GetString("lock-comp-do-unlock-success", @@ -225,7 +231,7 @@ public sealed class LockSystem : EntitySystem if (!CanToggleLock(uid, user, quiet: false)) return false; - if (!HasUserAccess(uid, user, quiet: false)) + if (lockComp.UseAccess && !HasUserAccess(uid, user, quiet: false)) return false; if (!skipDoAfter && lockComp.UnlockTime != TimeSpan.Zero) diff --git a/Content.Shared/Magic/SharedMagicSystem.cs b/Content.Shared/Magic/SharedMagicSystem.cs index 9a44407e91..5bf1fee090 100644 --- a/Content.Shared/Magic/SharedMagicSystem.cs +++ b/Content.Shared/Magic/SharedMagicSystem.cs @@ -279,14 +279,14 @@ public abstract class SharedMagicSystem : EntitySystem var userVelocity = _physics.GetMapLinearVelocity(ev.Performer); // If applicable, this ensures the projectile is parented to grid on spawn, instead of the map. - var fromMap = fromCoords.ToMap(EntityManager, _transform); + var fromMap = _transform.ToMapCoordinates(fromCoords); var spawnCoords = _mapManager.TryFindGridAt(fromMap, out var gridUid, out _) - ? fromCoords.WithEntityId(gridUid, EntityManager) + ? _transform.WithEntityId(fromCoords, gridUid) : new(_mapManager.GetMapEntityId(fromMap.MapId), fromMap.Position); var ent = Spawn(ev.Prototype, spawnCoords); - var direction = toCoords.ToMapPos(EntityManager, _transform) - - spawnCoords.ToMapPos(EntityManager, _transform); + var direction = _transform.ToMapCoordinates(toCoords).Position - + _transform.ToMapCoordinates(spawnCoords).Position; _gunSystem.ShootProjectile(ent, direction, userVelocity, ev.Performer, ev.Performer); } // End Projectile Spells diff --git a/Content.Shared/Magic/SpellbookSystem.cs b/Content.Shared/Magic/SpellbookSystem.cs index ce1628bacb..39fa16f622 100644 --- a/Content.Shared/Magic/SpellbookSystem.cs +++ b/Content.Shared/Magic/SpellbookSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Actions; +using Content.Shared.Charges.Systems; using Content.Shared.DoAfter; using Content.Shared.Interaction.Events; using Content.Shared.Magic.Components; @@ -9,6 +10,7 @@ namespace Content.Shared.Magic; public sealed class SpellbookSystem : EntitySystem { + [Dependency] private readonly SharedChargesSystem _sharedCharges = default!; [Dependency] private readonly SharedMindSystem _mind = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; @@ -30,11 +32,7 @@ public sealed class SpellbookSystem : EntitySystem if (spell == null) continue; - int? charge = charges; - if (_actions.GetCharges(spell) != null) - charge = _actions.GetCharges(spell); - - _actions.SetCharges(spell, charge < 0 ? null : charge); + _sharedCharges.SetCharges(spell.Value, charges); ent.Comp.Spells.Add(spell.Value); } } @@ -75,7 +73,7 @@ public sealed class SpellbookSystem : EntitySystem { EntityUid? actionId = null; if (_actions.AddAction(args.Args.User, ref actionId, id)) - _actions.SetCharges(actionId, charges < 0 ? null : charges); + _sharedCharges.SetCharges(actionId.Value, charges); } } diff --git a/Content.Shared/Magic/Systems/AnimateSpellSystem.cs b/Content.Shared/Magic/Systems/AnimateSpellSystem.cs index 458336dea1..202605a338 100644 --- a/Content.Shared/Magic/Systems/AnimateSpellSystem.cs +++ b/Content.Shared/Magic/Systems/AnimateSpellSystem.cs @@ -40,7 +40,7 @@ public sealed class AnimateSpellSystem : EntitySystem _container.AttachParentToContainerOrGrid((ent, xform)); // Items animated inside inventory now exit, they can't be picked up and so can't escape otherwise var ev = new AnimateSpellEvent(); - RaiseLocalEvent(ref ev); + RaiseLocalEvent(ent, ref ev); } } diff --git a/Content.Shared/Materials/MaterialStorageComponent.cs b/Content.Shared/Materials/MaterialStorageComponent.cs index 7d8dd5c749..1911b3de6f 100644 --- a/Content.Shared/Materials/MaterialStorageComponent.cs +++ b/Content.Shared/Materials/MaterialStorageComponent.cs @@ -75,6 +75,24 @@ public enum MaterialStorageVisuals : byte Inserting } +/// +/// Collects all the materials stored on a +/// +/// The entity holding all these materials +/// A dictionary of all materials held +/// An optional specifier. Non-local sources (silo, etc.) should not add materials when this is false. +[ByRefEvent] +public readonly record struct GetStoredMaterialsEvent(Entity Entity, Dictionary, int> Materials, bool LocalOnly); + +/// +/// After using materials, removes them from storage. +/// +/// The entity that held the materials and is being used up +/// A dictionary of the difference of materials left. +/// An optional specifier. Non-local sources (silo, etc.) should not consume materials when this is false. +[ByRefEvent] +public readonly record struct ConsumeStoredMaterialsEvent(Entity Entity, Dictionary, int> Materials, bool LocalOnly); + /// /// event raised on the materialStorage when a material entity is inserted into it. /// diff --git a/Content.Shared/Materials/OreSilo/OreSiloClientComponent.cs b/Content.Shared/Materials/OreSilo/OreSiloClientComponent.cs new file mode 100644 index 0000000000..ff43c9c05a --- /dev/null +++ b/Content.Shared/Materials/OreSilo/OreSiloClientComponent.cs @@ -0,0 +1,18 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Materials.OreSilo; + +/// +/// An entity with that interfaces with an . +/// Used for tracking the connected silo. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedOreSiloSystem))] +public sealed partial class OreSiloClientComponent : Component +{ + /// + /// The silo that this client pulls materials from. + /// + [DataField, AutoNetworkedField] + public EntityUid? Silo; +} diff --git a/Content.Shared/Materials/OreSilo/OreSiloComponent.cs b/Content.Shared/Materials/OreSilo/OreSiloComponent.cs new file mode 100644 index 0000000000..45c86b1845 --- /dev/null +++ b/Content.Shared/Materials/OreSilo/OreSiloComponent.cs @@ -0,0 +1,55 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Materials.OreSilo; + +/// +/// Provides additional materials to linked clients across long distances. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +[Access(typeof(SharedOreSiloSystem))] +public sealed partial class OreSiloComponent : Component +{ + /// + /// The that are connected to this silo. + /// + [DataField, AutoNetworkedField] + public HashSet Clients = new(); + + /// + /// The maximum distance you can be to the silo and still receive transmission. + /// + /// + /// Default value should be big enough to span a single large department. + /// + [DataField, AutoNetworkedField] + public float Range = 20f; +} + +[Serializable, NetSerializable] +public sealed class OreSiloBuiState : BoundUserInterfaceState +{ + public readonly HashSet<(NetEntity, string, string)> Clients; + + public OreSiloBuiState(HashSet<(NetEntity, string, string)> clients) + { + Clients = clients; + } +} + +[Serializable, NetSerializable] +public sealed class ToggleOreSiloClientMessage : BoundUserInterfaceMessage +{ + public readonly NetEntity Client; + + public ToggleOreSiloClientMessage(NetEntity client) + { + Client = client; + } +} + +[Serializable, NetSerializable] +public enum OreSiloUiKey : byte +{ + Key +} diff --git a/Content.Shared/Materials/OreSilo/SharedOreSiloSystem.cs b/Content.Shared/Materials/OreSilo/SharedOreSiloSystem.cs new file mode 100644 index 0000000000..33168db1db --- /dev/null +++ b/Content.Shared/Materials/OreSilo/SharedOreSiloSystem.cs @@ -0,0 +1,168 @@ +using Content.Shared.Power.EntitySystems; +using JetBrains.Annotations; +using Robust.Shared.Utility; + +namespace Content.Shared.Materials.OreSilo; + +public abstract class SharedOreSiloSystem : EntitySystem +{ + [Dependency] private readonly SharedMaterialStorageSystem _materialStorage = default!; + [Dependency] private readonly SharedPowerReceiverSystem _powerReceiver = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + + private EntityQuery _clientQuery; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnToggleOreSiloClient); + SubscribeLocalEvent(OnSiloShutdown); + Subs.BuiEvents(OreSiloUiKey.Key, + subs => + { + subs.Event(OnBoundUIOpened); + }); + + + SubscribeLocalEvent(OnGetStoredMaterials); + SubscribeLocalEvent(OnConsumeStoredMaterials); + SubscribeLocalEvent(OnClientShutdown); + + _clientQuery = GetEntityQuery(); + } + + private void OnToggleOreSiloClient(Entity ent, ref ToggleOreSiloClientMessage args) + { + var client = GetEntity(args.Client); + + if (!_clientQuery.TryComp(client, out var clientComp)) + return; + + if (ent.Comp.Clients.Contains(client)) // remove client + { + clientComp.Silo = null; + Dirty(client, clientComp); + ent.Comp.Clients.Remove(client); + Dirty(ent); + + UpdateOreSiloUi(ent); + } + else // add client + { + if (!CanTransmitMaterials((ent, ent), client)) + return; + + var clientMats = _materialStorage.GetStoredMaterials(client, true); + var inverseMats = new Dictionary(); + foreach (var (mat, amount) in clientMats) + { + inverseMats.Add(mat, -amount); + } + _materialStorage.TryChangeMaterialAmount(client, inverseMats, localOnly: true); + _materialStorage.TryChangeMaterialAmount(ent.Owner, clientMats); + + ent.Comp.Clients.Add(client); + Dirty(ent); + clientComp.Silo = ent; + Dirty(client, clientComp); + + UpdateOreSiloUi(ent); + } + } + + private void OnBoundUIOpened(Entity ent, ref BoundUIOpenedEvent args) + { + UpdateOreSiloUi(ent); + } + + private void OnSiloShutdown(Entity ent, ref ComponentShutdown args) + { + foreach (var client in ent.Comp.Clients) + { + if (!_clientQuery.TryComp(client, out var comp)) + continue; + + comp.Silo = null; + Dirty(client, comp); + } + } + + protected virtual void UpdateOreSiloUi(Entity ent) + { + + } + + private void OnGetStoredMaterials(Entity ent, ref GetStoredMaterialsEvent args) + { + if (args.LocalOnly) + return; + + if (ent.Comp.Silo is not { } silo) + return; + + if (!CanTransmitMaterials(silo, ent)) + return; + + var materials = _materialStorage.GetStoredMaterials(silo); + + foreach (var (mat, amount) in materials) + { + // Don't supply materials that they don't usually have access to. + if (!_materialStorage.IsMaterialWhitelisted((args.Entity, args.Entity), mat)) + continue; + + var existing = args.Materials.GetOrNew(mat); + args.Materials[mat] = existing + amount; + } + } + + private void OnConsumeStoredMaterials(Entity ent, ref ConsumeStoredMaterialsEvent args) + { + if (args.LocalOnly) + return; + + if (ent.Comp.Silo is not { } silo || !TryComp(silo, out var materialStorage)) + return; + + if (!CanTransmitMaterials(silo, ent)) + return; + + foreach (var (mat, amount) in args.Materials) + { + if (!_materialStorage.TryChangeMaterialAmount(silo, mat, amount, materialStorage)) + continue; + args.Materials[mat] = 0; + } + } + + private void OnClientShutdown(Entity ent, ref ComponentShutdown args) + { + if (!TryComp(ent.Comp.Silo, out var silo)) + return; + + silo.Clients.Remove(ent); + Dirty(ent.Comp.Silo.Value, silo); + UpdateOreSiloUi((ent.Comp.Silo.Value, silo)); + } + + /// + /// Checks if a given client fulfills the criteria to link/receive materials from an ore silo. + /// + [PublicAPI] + public bool CanTransmitMaterials(Entity silo, EntityUid client) + { + if (!Resolve(silo, ref silo.Comp1, ref silo.Comp2)) + return false; + + if (!_powerReceiver.IsPowered(silo.Owner)) + return false; + + if (_transform.GetGrid(client) != _transform.GetGrid(silo.Owner)) + return false; + + if (!_transform.InRange((silo.Owner, silo.Comp2), client, silo.Comp1.Range)) + return false; + + return true; + } +} diff --git a/Content.Shared/Materials/SharedMaterialStorageSystem.cs b/Content.Shared/Materials/SharedMaterialStorageSystem.cs index 2544aacadd..2fc03dd997 100644 --- a/Content.Shared/Materials/SharedMaterialStorageSystem.cs +++ b/Content.Shared/Materials/SharedMaterialStorageSystem.cs @@ -1,7 +1,6 @@ using System.Linq; using Content.Shared.Interaction; using Content.Shared.Interaction.Components; -using Content.Shared.Mobs; using Content.Shared.Stacks; using Content.Shared.Whitelist; using JetBrains.Annotations; @@ -58,16 +57,22 @@ public abstract class SharedMaterialStorageSystem : EntitySystem } /// - /// Gets the volume of a specified material contained in this storage. + /// Gets all the materials stored on this entity /// - /// - /// - /// - /// The volume of the material - [PublicAPI] - public int GetMaterialAmount(EntityUid uid, MaterialPrototype material, MaterialStorageComponent? component = null) + /// + /// Include only materials held "locally", as determined by event subscribers + /// + public Dictionary, int> GetStoredMaterials(Entity ent, bool localOnly = false) { - return GetMaterialAmount(uid, material.ID, component); + if (!Resolve(ent, ref ent.Comp, false)) + return new(); + + // clone so we don't modify by accident. + var mats = new Dictionary, int>(ent.Comp.Storage); + var ev = new GetStoredMaterialsEvent((ent, ent.Comp), mats, localOnly); + RaiseLocalEvent(ent, ref ev, true); + + return ev.Materials; } /// @@ -76,12 +81,27 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// /// /// + /// /// The volume of the material - public int GetMaterialAmount(EntityUid uid, string material, MaterialStorageComponent? component = null) + [PublicAPI] + public int GetMaterialAmount(EntityUid uid, MaterialPrototype material, MaterialStorageComponent? component = null, bool localOnly = false) + { + return GetMaterialAmount(uid, material.ID, component, localOnly); + } + + /// + /// Gets the volume of a specified material contained in this storage. + /// + /// + /// + /// + /// + /// The volume of the material + public int GetMaterialAmount(EntityUid uid, string material, MaterialStorageComponent? component = null, bool localOnly = false) { if (!Resolve(uid, ref component)) return 0; //you have nothing - return component.Storage.GetValueOrDefault(material, 0); + return GetStoredMaterials((uid, component), localOnly).GetValueOrDefault(material, 0); } /// @@ -89,26 +109,43 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// /// /// + /// /// The volume of all materials in the storage - public int GetTotalMaterialAmount(EntityUid uid, MaterialStorageComponent? component = null) + public int GetTotalMaterialAmount(EntityUid uid, MaterialStorageComponent? component = null, bool localOnly = false) { if (!Resolve(uid, ref component)) return 0; - return component.Storage.Values.Sum(); + return GetStoredMaterials((uid, component), localOnly).Values.Sum(); } + // TODO: Revisit this if we ever decide to do things with storage limits. As it stands, the feature is unused. /// /// Tests if a specific amount of volume will fit in the storage. /// /// /// /// + /// /// If the specified volume will fit - public bool CanTakeVolume(EntityUid uid, int volume, MaterialStorageComponent? component = null) + public bool CanTakeVolume(EntityUid uid, int volume, MaterialStorageComponent? component = null, bool localOnly = false) { if (!Resolve(uid, ref component)) return false; - return component.StorageLimit == null || GetTotalMaterialAmount(uid, component) + volume <= component.StorageLimit; + return component.StorageLimit == null || GetTotalMaterialAmount(uid, component, true) + volume <= component.StorageLimit; + } + + /// + /// Checks if a certain material prototype is supported by this entity. + /// + public bool IsMaterialWhitelisted(Entity ent, ProtoId material) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + if (ent.Comp.MaterialWhiteList == null) + return true; + + return ent.Comp.MaterialWhiteList.Contains(material); } /// @@ -118,8 +155,9 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// /// /// + /// /// If the amount can be changed - public bool CanChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component = null) + public bool CanChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component = null, bool localOnly = false) { if (!Resolve(uid, ref component)) return false; @@ -127,10 +165,10 @@ public abstract class SharedMaterialStorageSystem : EntitySystem if (!CanTakeVolume(uid, volume, component)) return false; - if (component.MaterialWhiteList == null ? false : !component.MaterialWhiteList.Contains(materialId)) + if (!IsMaterialWhitelisted((uid, component), materialId)) return false; - var amount = component.Storage.GetValueOrDefault(materialId); + var amount = GetMaterialAmount(uid, materialId, component, localOnly); return amount + volume >= 0; } @@ -140,14 +178,24 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// /// /// If the amount can be changed - public bool CanChangeMaterialAmount(Entity entity, Dictionary materials) + /// + public bool CanChangeMaterialAmount(Entity entity, Dictionary materials, bool localOnly = false) { if (!Resolve(entity, ref entity.Comp)) return false; + var inVolume = materials.Values.Sum(); + var stored = GetStoredMaterials((entity, entity.Comp), localOnly); + + if (!CanTakeVolume(entity, inVolume, entity.Comp)) + return false; + foreach (var (material, amount) in materials) { - if (!CanChangeMaterialAmount(entity, material, amount, entity.Comp)) + if (!IsMaterialWhitelisted(entity, material)) + return false; + + if (stored.GetValueOrDefault(material) + amount < 0) return false; } @@ -163,16 +211,27 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// /// /// + /// /// If it was successful - public bool TryChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component = null, bool dirty = true) + public bool TryChangeMaterialAmount(EntityUid uid, string materialId, int volume, MaterialStorageComponent? component = null, bool dirty = true, bool localOnly = false) { if (!Resolve(uid, ref component)) return false; - if (!CanChangeMaterialAmount(uid, materialId, volume, component)) + + if (!CanChangeMaterialAmount(uid, materialId, volume, component, localOnly)) return false; + var changeEv = new ConsumeStoredMaterialsEvent((uid, component), new() {{materialId, volume}}, localOnly); + RaiseLocalEvent(uid, ref changeEv); + var remaining = changeEv.Materials.Values.First(); + var existing = component.Storage.GetOrNew(materialId); - existing += volume; + + var localUpperLimit = component.StorageLimit == null ? int.MaxValue : component.StorageLimit.Value - existing; + var localLowerLimit = -existing; + var localChange = Math.Clamp(remaining, localLowerLimit, localUpperLimit); + + existing += localChange; if (existing == 0) component.Storage.Remove(materialId); @@ -191,23 +250,54 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// Changes the amount of a specific material in the storage. /// Still respects the filters in place. /// - /// - /// /// If the amount can be changed - public bool TryChangeMaterialAmount(Entity entity, Dictionary materials) + public bool TryChangeMaterialAmount(Entity entity, Dictionary materials, bool localOnly = false) + { + return TryChangeMaterialAmount(entity, materials.Select(p => (new ProtoId(p.Key), p.Value)).ToDictionary(), localOnly); + } + + /// + /// Changes the amount of a specific material in the storage. + /// Still respects the filters in place. + /// + /// If the amount can be changed + public bool TryChangeMaterialAmount( + Entity entity, + Dictionary, int> materials, + bool localOnly = false) { if (!Resolve(entity, ref entity.Comp)) return false; - if (!CanChangeMaterialAmount(entity, materials)) - return false; - foreach (var (material, amount) in materials) { - if (!TryChangeMaterialAmount(entity, material, amount, entity.Comp, false)) + if (!CanChangeMaterialAmount(entity, material, amount, entity)) return false; } + var changeEv = new ConsumeStoredMaterialsEvent((entity, entity.Comp), materials, localOnly); + RaiseLocalEvent(entity, ref changeEv); + + foreach (var (material, remaining) in changeEv.Materials) + { + var existing = entity.Comp.Storage.GetOrNew(material); + + var localUpperLimit = entity.Comp.StorageLimit == null ? int.MaxValue : entity.Comp.StorageLimit.Value - existing; + var localLowerLimit = -existing; + var localChange = Math.Clamp(remaining, localLowerLimit, localUpperLimit); + + existing += localChange; + + if (existing == 0) + entity.Comp.Storage.Remove(material); + else + entity.Comp.Storage[material] = existing; + + } + + var ev = new MaterialAmountChangedEvent(); + RaiseLocalEvent(entity, ref ev); + Dirty(entity, entity.Comp); return true; } @@ -221,6 +311,7 @@ public abstract class SharedMaterialStorageSystem : EntitySystem /// The stored material volume to set the storage to. /// The storage component on . Resolved automatically if not given. /// True if it was successful (enough space etc). + [PublicAPI] public bool TrySetMaterialAmount( EntityUid uid, string materialId, @@ -268,7 +359,7 @@ public abstract class SharedMaterialStorageSystem : EntitySystem totalVolume += vol * multiplier; } - if (!CanTakeVolume(receiver, totalVolume, storage)) + if (!CanTakeVolume(receiver, totalVolume, storage, localOnly: true)) return false; foreach (var (mat, vol) in composition.MaterialComposition) diff --git a/Content.Shared/Medical/SuitSensor/SharedSuitSensor.cs b/Content.Shared/Medical/SuitSensor/SharedSuitSensor.cs index f48e31756d..f0a552c7ec 100644 --- a/Content.Shared/Medical/SuitSensor/SharedSuitSensor.cs +++ b/Content.Shared/Medical/SuitSensor/SharedSuitSensor.cs @@ -7,8 +7,9 @@ namespace Content.Shared.Medical.SuitSensor; [Serializable, NetSerializable] public sealed class SuitSensorStatus { - public SuitSensorStatus(NetEntity suitSensorUid, string name, string job, string jobIcon, List jobDepartments) + public SuitSensorStatus(NetEntity ownerUid, NetEntity suitSensorUid, string name, string job, string jobIcon, List jobDepartments) { + OwnerUid = ownerUid; SuitSensorUid = suitSensorUid; Name = name; Job = job; @@ -18,6 +19,7 @@ public sealed class SuitSensorStatus public TimeSpan Timestamp; public NetEntity SuitSensorUid; + public NetEntity OwnerUid; public string Name; public string Job; public string JobIcon; @@ -55,6 +57,7 @@ public enum SuitSensorMode : byte public static class SuitSensorConstants { + public const string NET_OWNER_UID = "ownerUid"; public const string NET_NAME = "name"; public const string NET_JOB = "job"; public const string NET_JOB_ICON = "jobIcon"; diff --git a/Content.Shared/Mind/MindComponent.cs b/Content.Shared/Mind/MindComponent.cs index fa48511a2a..7864d61a8c 100644 --- a/Content.Shared/Mind/MindComponent.cs +++ b/Content.Shared/Mind/MindComponent.cs @@ -109,10 +109,8 @@ public sealed partial class MindComponent : Component public ProtoId RoleType = "Neutral"; /// - /// The session of the player owning this mind. - /// Can be null, in which case the player is currently not logged in. + /// The role's subtype, shown only to admins to help with antag categorization /// - [ViewVariables, Access(typeof(SharedMindSystem), typeof(SharedGameTicker))] - // TODO remove this after moving IPlayerManager functions to shared - public ICommonSession? Session { get; set; } + [DataField] + public LocId? Subtype; } diff --git a/Content.Shared/Mind/RoleTypePrototype.cs b/Content.Shared/Mind/RoleTypePrototype.cs index 8a4253a733..03f88ba751 100644 --- a/Content.Shared/Mind/RoleTypePrototype.cs +++ b/Content.Shared/Mind/RoleTypePrototype.cs @@ -21,7 +21,7 @@ public sealed partial class RoleTypePrototype : IPrototype /// The role's displayed color. /// [DataField] - public Color Color { get; private set; } = Color.FromHex("#eeeeee"); + public Color Color = Color.FromHex("#eeeeee"); /// /// A symbol used to represent the role type. diff --git a/Content.Shared/Mind/SharedMindSystem.cs b/Content.Shared/Mind/SharedMindSystem.cs index 69207b803e..8978f10d4d 100644 --- a/Content.Shared/Mind/SharedMindSystem.cs +++ b/Content.Shared/Mind/SharedMindSystem.cs @@ -26,6 +26,7 @@ public abstract partial class SharedMindSystem : EntitySystem [Dependency] private readonly MobStateSystem _mobState = default!; [Dependency] private readonly SharedObjectivesSystem _objectives = default!; [Dependency] private readonly SharedPlayerSystem _player = default!; + [Dependency] private readonly ISharedPlayerManager _playerManager = default!; [Dependency] private readonly MetaDataSystem _metadata = default!; [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; @@ -153,23 +154,31 @@ public abstract partial class SharedMindSystem : EntitySystem if (!mindContainer.ShowExamineInfo || !args.IsInDetailsRange) return; - // TODO predict we can't right now because session stuff isnt networked + // TODO: Move this out of the SharedMindSystem into its own comp and predict it if (_net.IsClient) return; var dead = _mobState.IsDead(uid); - var hasUserId = CompOrNull(mindContainer.Mind)?.UserId; - var hasSession = CompOrNull(mindContainer.Mind)?.Session; + var mind = CompOrNull(mindContainer.Mind); + var hasUserId = mind?.UserId; + var hasActiveSession = hasUserId != null && _playerManager.ValidSessionId(hasUserId.Value); + + // Scenarios: + // 1. Dead + No User ID: Entity is permanently dead with no player ever attached + // 2. Dead + Has User ID + No Session: Player died and disconnected + // 3. Dead + Has Session: Player is dead but still connected + // 4. Alive + No User ID: Entity was never controlled by a player + // 5. Alive + No Session: Player disconnected while alive (SSD) if (dead && hasUserId == null) args.PushMarkup($"[color=mediumpurple]{Loc.GetString("comp-mind-examined-dead-and-irrecoverable", ("ent", uid))}[/color]"); - else if (dead && hasSession == null) + else if (dead && !hasActiveSession) args.PushMarkup($"[color=yellow]{Loc.GetString("comp-mind-examined-dead-and-ssd", ("ent", uid))}[/color]"); else if (dead) args.PushMarkup($"[color=red]{Loc.GetString("comp-mind-examined-dead", ("ent", uid))}[/color]"); else if (hasUserId == null) args.PushMarkup($"[color=mediumpurple]{Loc.GetString("comp-mind-examined-catatonic", ("ent", uid))}[/color]"); - else if (hasSession == null) + else if (!hasActiveSession) args.PushMarkup($"[color=yellow]{Loc.GetString("comp-mind-examined-ssd", ("ent", uid))}[/color]"); } @@ -474,12 +483,6 @@ public abstract partial class SharedMindSystem : EntitySystem return false; } - public bool TryGetSession(EntityUid? mindId, [NotNullWhen(true)] out ICommonSession? session) - { - session = null; - return TryComp(mindId, out MindComponent? mind) && (session = mind.Session) != null; - } - /// /// Gets a mind from uid and/or MindContainerComponent. Used for null checks. /// diff --git a/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs b/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs index 02a8538531..6a39aa44b6 100644 --- a/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs +++ b/Content.Shared/Movement/Components/MovementSpeedModifierComponent.cs @@ -32,28 +32,6 @@ namespace Content.Shared.Movement.Components [AutoNetworkedField, ViewVariables] public float SprintSpeedModifier = 1.0f; - [ViewVariables(VVAccess.ReadWrite)] - private float _baseWalkSpeedVV - { - get => BaseWalkSpeed; - set - { - BaseWalkSpeed = value; - Dirty(); - } - } - - [ViewVariables(VVAccess.ReadWrite)] - private float _baseSprintSpeedVV - { - get => BaseSprintSpeed; - set - { - BaseSprintSpeed = value; - Dirty(); - } - } - /// /// Minimum speed a mob has to be moving before applying movement friction. /// diff --git a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs index b17e34f171..369225df2d 100644 --- a/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs +++ b/Content.Shared/Movement/Pulling/Systems/PullingSystem.cs @@ -64,7 +64,7 @@ public sealed class PullingSystem : EntitySystem SubscribeLocalEvent(OnModifyUncuffDuration); SubscribeLocalEvent(OnStopBeingPulledAlert); - SubscribeLocalEvent(OnStateChanged); + SubscribeLocalEvent(OnStateChanged, after: [typeof(MobThresholdSystem)]); SubscribeLocalEvent(OnAfterState); SubscribeLocalEvent(OnPullerContainerInsert); SubscribeLocalEvent(OnPullerUnpaused); @@ -341,6 +341,16 @@ public sealed class PullingSystem : EntitySystem return Resolve(puller, ref component, false) && component.Pulling != null; } + public EntityUid? GetPuller(EntityUid puller, PullableComponent? component = null) + { + return !Resolve(puller, ref component, false) ? null : component.Puller; + } + + public EntityUid? GetPulling(EntityUid puller, PullerComponent? component = null) + { + return !Resolve(puller, ref component, false) ? null : component.Pulling; + } + private void OnReleasePulledObject(ICommonSession? session) { if (session?.AttachedEntity is not { Valid: true } player) diff --git a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs index 14c8036287..87849e8f12 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.Input.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.Input.cs @@ -214,7 +214,7 @@ namespace Content.Shared.Movement.Systems } // If we went from grid -> grid OR grid -> map then snap the target to cardinal and lerp there. // OR just rotate to zero (depending on cvar) - else if (relative != null && _mapManager.IsGrid(relative.Value)) + else if (relative != null && MapGridQuery.HasComp(relative.Value)) { if (CameraRotationLocked) targetRotation = Angle.Zero; diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index a5c32b2992..a98fc633d0 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -35,7 +35,6 @@ public abstract partial class SharedMoverController : VirtualController { [Dependency] private readonly IConfigurationManager _configManager = default!; [Dependency] protected readonly IGameTiming Timing = default!; - [Dependency] private readonly IMapManager _mapManager = default!; [Dependency] private readonly ITileDefinitionManager _tileDefinitionManager = default!; [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly InventorySystem _inventory = default!; diff --git a/Content.Shared/Ninja/Systems/DashAbilitySystem.cs b/Content.Shared/Ninja/Systems/DashAbilitySystem.cs index 830b51d5ad..c02d6cfd9a 100644 --- a/Content.Shared/Ninja/Systems/DashAbilitySystem.cs +++ b/Content.Shared/Ninja/Systems/DashAbilitySystem.cs @@ -22,7 +22,7 @@ public sealed class DashAbilitySystem : EntitySystem { [Dependency] private readonly ActionContainerSystem _actionContainer = default!; [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly SharedChargesSystem _charges = default!; + [Dependency] private readonly SharedChargesSystem _sharedCharges = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly ExamineSystemShared _examine = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; @@ -71,7 +71,7 @@ public sealed class DashAbilitySystem : EntitySystem } var origin = _transform.GetMapCoordinates(user); - var target = args.Target.ToMap(EntityManager, _transform); + var target = _transform.ToMapCoordinates(args.Target); if (!_examine.InRangeUnOccluded(origin, target, SharedInteractionSystem.MaxRaycastRange, null)) { // can only dash if the destination is visible on screen @@ -79,7 +79,7 @@ public sealed class DashAbilitySystem : EntitySystem return; } - if (!_charges.TryUseCharge(uid)) + if (!_sharedCharges.TryUseCharge(uid)) { _popup.PopupClient(Loc.GetString("dash-ability-no-charges", ("item", uid)), user, user); return; diff --git a/Content.Shared/Ninja/Systems/EmagProviderSystem.cs b/Content.Shared/Ninja/Systems/EmagProviderSystem.cs index 3be2ae52e1..d17c4b32cc 100644 --- a/Content.Shared/Ninja/Systems/EmagProviderSystem.cs +++ b/Content.Shared/Ninja/Systems/EmagProviderSystem.cs @@ -15,7 +15,6 @@ namespace Content.Shared.Ninja.Systems; public sealed class EmagProviderSystem : EntitySystem { [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly EmagSystem _emag = default!; [Dependency] private readonly EntityWhitelistSystem _whitelist = default!; [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; [Dependency] private readonly SharedNinjaGlovesSystem _gloves = default!; diff --git a/Content.Shared/Ninja/Systems/EnergyKatanaSystem.cs b/Content.Shared/Ninja/Systems/EnergyKatanaSystem.cs index 281b97a648..c2425b9264 100644 --- a/Content.Shared/Ninja/Systems/EnergyKatanaSystem.cs +++ b/Content.Shared/Ninja/Systems/EnergyKatanaSystem.cs @@ -28,6 +28,7 @@ public sealed class EnergyKatanaSystem : EntitySystem private void OnCheckDash(Entity ent, ref CheckDashEvent args) { + // Just use a whitelist fam if (!_ninja.IsNinja(args.User)) args.Cancelled = true; } diff --git a/Content.Shared/Nutrition/Components/SmokableComponent.cs b/Content.Shared/Nutrition/Components/SmokableComponent.cs index e5cbd27242..28e84dc190 100644 --- a/Content.Shared/Nutrition/Components/SmokableComponent.cs +++ b/Content.Shared/Nutrition/Components/SmokableComponent.cs @@ -1,5 +1,6 @@ using Content.Shared.FixedPoint; using Content.Shared.Smoking; +using Robust.Shared.Audio; using Robust.Shared.GameStates; namespace Content.Shared.Nutrition.Components @@ -32,5 +33,17 @@ namespace Content.Shared.Nutrition.Components public string LitPrefix = "lit"; [DataField("unlitPrefix")] public string UnlitPrefix = "unlit"; + + /// + /// Sound played when lighting this smokable. + /// + [DataField] + public SoundSpecifier? LightSound = new SoundPathSpecifier("/Audio/Effects/cig_light.ogg"); + + /// + /// Sound played when this smokable is extinguished or runs out. + /// + [DataField] + public SoundSpecifier? SnuffSound = new SoundPathSpecifier("/Audio/Effects/cig_snuff.ogg"); } } diff --git a/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs b/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs index d70a67610c..5db20574cc 100644 --- a/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/HungerSystem.cs @@ -123,6 +123,7 @@ public sealed class HungerSystem : EntitySystem entity.Comp.LastAuthoritativeHungerChangeTime = _timing.CurTime; entity.Comp.LastAuthoritativeHungerValue = ClampHungerWithinThresholds(entity.Comp, value); DirtyField(entity.Owner, entity.Comp, nameof(HungerComponent.LastAuthoritativeHungerChangeTime)); + DirtyField(entity.Owner, entity.Comp, nameof(HungerComponent.LastAuthoritativeHungerValue)); } private void UpdateCurrentThreshold(EntityUid uid, HungerComponent? component = null) @@ -140,6 +141,7 @@ public sealed class HungerSystem : EntitySystem //CP14 Raise hunger event for vampire end component.CurrentThreshold = calculatedHungerThreshold; + DirtyField(uid, component, nameof(HungerComponent.CurrentThreshold)); DoHungerThresholdEffects(uid, component); } @@ -168,10 +170,12 @@ public sealed class HungerSystem : EntitySystem if (component.HungerThresholdDecayModifiers.TryGetValue(component.CurrentThreshold, out var modifier)) { component.ActualDecayRate = component.BaseDecayRate * modifier; + DirtyField(uid, component, nameof(HungerComponent.ActualDecayRate)); SetAuthoritativeHungerValue((uid, component), GetHunger(component)); } component.LastThreshold = component.CurrentThreshold; + DirtyField(uid, component, nameof(HungerComponent.LastThreshold)); } private void DoContinuousHungerEffects(EntityUid uid, HungerComponent? component = null) diff --git a/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs b/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs index 2937c48d48..052e73cd1b 100644 --- a/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs +++ b/Content.Shared/Nutrition/EntitySystems/ThirstSystem.cs @@ -49,6 +49,8 @@ public sealed class ThirstSystem : EntitySystem component.CurrentThirst = _random.Next( (int) component.ThirstThresholds[ThirstThreshold.Thirsty] + 10, (int) component.ThirstThresholds[ThirstThreshold.Okay] - 1); + + DirtyField(uid, component, nameof(ThirstComponent.CurrentThirst)); } component.NextUpdateTime = _timing.CurTime; component.CurrentThirstThreshold = GetThirstThreshold(component, component.CurrentThirst); @@ -56,6 +58,8 @@ public sealed class ThirstSystem : EntitySystem // TODO: Check all thresholds make sense and throw if they don't. UpdateEffects(uid, component); + DirtyFields(uid, component, null, nameof(ThirstComponent.NextUpdateTime), nameof(ThirstComponent.CurrentThirstThreshold), nameof(ThirstComponent.LastThirstThreshold)); + TryComp(uid, out MovementSpeedModifierComponent? moveMod); _movement.RefreshMovementSpeedModifiers(uid, moveMod); } @@ -103,7 +107,7 @@ public sealed class ThirstSystem : EntitySystem component.ThirstThresholds[ThirstThreshold.OverHydrated] ); - EntityManager.DirtyField(uid, component, nameof(ThirstComponent.CurrentThirst)); + DirtyField(uid, component, nameof(ThirstComponent.CurrentThirst)); } private bool IsMovementThreshold(ThirstThreshold threshold) @@ -164,6 +168,9 @@ public sealed class ThirstSystem : EntitySystem _alerts.ClearAlertCategory(uid, component.ThirstyCategory); } + DirtyField(uid, component, nameof(ThirstComponent.LastThirstThreshold)); + DirtyField(uid, component, nameof(ThirstComponent.ActualDecayRate)); + switch (component.CurrentThirstThreshold) { case ThirstThreshold.OverHydrated: diff --git a/Content.Shared/Nutrition/IngestionEvents.cs b/Content.Shared/Nutrition/IngestionEvents.cs index 488605522a..685b08b1bd 100644 --- a/Content.Shared/Nutrition/IngestionEvents.cs +++ b/Content.Shared/Nutrition/IngestionEvents.cs @@ -23,6 +23,18 @@ public sealed class BeforeFullyEatenEvent : CancellableEntityEventArgs public EntityUid User; } +/// +/// Raised directed at the food after finishing eating it and before it's deleted. +/// +[ByRefEvent] +public readonly record struct AfterFullyEatenEvent(EntityUid User) +{ + /// + /// The entity that ate the food. + /// + public readonly EntityUid User = User; +} + /// /// Raised directed at the food being sliced before it's deleted. /// Cancel this if you want to do something special before a food is deleted. diff --git a/Content.Shared/PAI/PAIComponent.cs b/Content.Shared/PAI/PAIComponent.cs index 9d5be30275..fb9d7150e3 100644 --- a/Content.Shared/PAI/PAIComponent.cs +++ b/Content.Shared/PAI/PAIComponent.cs @@ -1,3 +1,5 @@ +using Content.Shared.FixedPoint; +using Content.Shared.Store; using Robust.Shared.GameStates; using Robust.Shared.Prototypes; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype; @@ -24,17 +26,11 @@ public sealed partial class PAIComponent : Component [DataField, ViewVariables(VVAccess.ReadWrite)] public EntityUid? LastUser; - [DataField(serverOnly: true)] - public EntProtoId? MidiActionId = "ActionPAIPlayMidi"; - - [DataField(serverOnly: true)] // server only, as it uses a server-BUI event !type - public EntityUid? MidiAction; - [DataField] - public EntProtoId MapActionId = "ActionPAIOpenMap"; + public EntProtoId ShopActionId = "ActionPAIOpenShop"; [DataField, AutoNetworkedField] - public EntityUid? MapAction; + public EntityUid? ShopAction; /// /// When microwaved there is this chance to brick the pai, kicking out its player and preventing it from being used again. diff --git a/Content.Shared/PAI/SharedPAISystem.cs b/Content.Shared/PAI/SharedPAISystem.cs index d66365eb85..c100e38a76 100644 --- a/Content.Shared/PAI/SharedPAISystem.cs +++ b/Content.Shared/PAI/SharedPAISystem.cs @@ -1,39 +1,38 @@ using Content.Shared.Actions; -namespace Content.Shared.PAI +namespace Content.Shared.PAI; + +/// +/// pAIs, or Personal AIs, are essentially portable ghost role generators. +/// In their current implementation, they create a ghost role anyone can access, +/// and that a player can also "wipe" (reset/kick out player). +/// Theoretically speaking pAIs are supposed to use a dedicated "offer and select" system, +/// with the player holding the pAI being able to choose one of the ghosts in the round. +/// This seems too complicated for an initial implementation, though, +/// and there's not always enough players and ghost roles to justify it. +/// +public abstract class SharedPAISystem : EntitySystem { - /// - /// pAIs, or Personal AIs, are essentially portable ghost role generators. - /// In their current implementation, they create a ghost role anyone can access, - /// and that a player can also "wipe" (reset/kick out player). - /// Theoretically speaking pAIs are supposed to use a dedicated "offer and select" system, - /// with the player holding the pAI being able to choose one of the ghosts in the round. - /// This seems too complicated for an initial implementation, though, - /// and there's not always enough players and ghost roles to justify it. - /// - public abstract class SharedPAISystem : EntitySystem + [Dependency] private readonly SharedActionsSystem _actions = default!; + + public override void Initialize() { - [Dependency] private readonly SharedActionsSystem _actionsSystem = default!; + base.Initialize(); - public override void Initialize() - { - base.Initialize(); + SubscribeLocalEvent(OnMapInit); + SubscribeLocalEvent(OnShutdown); + } - SubscribeLocalEvent(OnMapInit); - SubscribeLocalEvent(OnShutdown); - } + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + _actions.AddAction(ent, ent.Comp.ShopActionId); + } - private void OnMapInit(EntityUid uid, PAIComponent component, MapInitEvent args) - { - _actionsSystem.AddAction(uid, ref component.MidiAction, component.MidiActionId); - _actionsSystem.AddAction(uid, ref component.MapAction, component.MapActionId); - } - - private void OnShutdown(EntityUid uid, PAIComponent component, ComponentShutdown args) - { - _actionsSystem.RemoveAction(uid, component.MidiAction); - _actionsSystem.RemoveAction(uid, component.MapAction); - } + private void OnShutdown(Entity ent, ref ComponentShutdown args) + { + _actions.RemoveAction(ent, ent.Comp.ShopAction); } } - +public sealed partial class PAIShopActionEvent : InstantActionEvent +{ +} diff --git a/Content.Shared/PDA/Ringer/RingerComponent.cs b/Content.Shared/PDA/Ringer/RingerComponent.cs new file mode 100644 index 0000000000..81cdb2522c --- /dev/null +++ b/Content.Shared/PDA/Ringer/RingerComponent.cs @@ -0,0 +1,57 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.PDA.Ringer; + +[RegisterComponent, NetworkedComponent, Access(typeof(SharedRingerSystem))] +[AutoGenerateComponentState(true, fieldDeltas: true), AutoGenerateComponentPause] +public sealed partial class RingerComponent : Component +{ + /// + /// The ringtone, represented as an array of notes. + /// + [DataField, AutoNetworkedField] + public Note[] Ringtone = new Note[SharedRingerSystem.RingtoneLength]; + + /// + /// The last time this ringer's ringtone was set. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField, AutoNetworkedField] + public TimeSpan NextRingtoneSetTime; + + /// + /// The time when the next note should play. + /// + [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoPausedField, AutoNetworkedField] + public TimeSpan? NextNoteTime; + + /// + /// The cooldown before the ringtone can be changed again. + /// + [DataField] + public TimeSpan Cooldown = TimeSpan.FromMilliseconds(250); + + /// + /// Keeps track of how many notes have elapsed if the ringer component is playing. + /// + [DataField, AutoNetworkedField] + public int NoteCount; + + /// + /// How far the sound projects in metres. + /// + [DataField, AutoNetworkedField] + public float Range = 3f; + + /// + /// The ringtone volume. + /// + [DataField, AutoNetworkedField] + public float Volume = -4f; + + /// + /// Whether the ringer is currently playing its ringtone. + /// + [DataField, AutoNetworkedField] + public bool Active; +} diff --git a/Content.Shared/PDA/Ringer/RingerMessagesUI.cs b/Content.Shared/PDA/Ringer/RingerMessagesUI.cs index 36867284b4..d737c7b3b4 100644 --- a/Content.Shared/PDA/Ringer/RingerMessagesUI.cs +++ b/Content.Shared/PDA/Ringer/RingerMessagesUI.cs @@ -1,26 +1,17 @@ using Robust.Shared.Serialization; -namespace Content.Shared.PDA.Ringer +namespace Content.Shared.PDA.Ringer; + +[Serializable, NetSerializable] +public sealed class RingerPlayRingtoneMessage : BoundUserInterfaceMessage; + +[Serializable, NetSerializable] +public sealed class RingerSetRingtoneMessage : BoundUserInterfaceMessage { + public Note[] Ringtone { get; } - [Serializable, NetSerializable] - public sealed class RingerRequestUpdateInterfaceMessage : BoundUserInterfaceMessage + public RingerSetRingtoneMessage(Note[] ringTone) { - } - - [Serializable, NetSerializable] - public sealed class RingerPlayRingtoneMessage : BoundUserInterfaceMessage - { - } - - [Serializable, NetSerializable] - public sealed class RingerSetRingtoneMessage : BoundUserInterfaceMessage - { - public Note[] Ringtone { get; } - - public RingerSetRingtoneMessage(Note[] ringTone) - { - Ringtone = ringTone; - } + Ringtone = ringTone; } } diff --git a/Content.Shared/PDA/Ringer/RingerUpdateState.cs b/Content.Shared/PDA/Ringer/RingerUpdateState.cs deleted file mode 100644 index 9d2eccd1a7..0000000000 --- a/Content.Shared/PDA/Ringer/RingerUpdateState.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Robust.Shared.Serialization; - -namespace Content.Shared.PDA.Ringer -{ - [Serializable, NetSerializable] - public sealed class RingerUpdateState : BoundUserInterfaceState - { - public bool IsPlaying; - public Note[] Ringtone; - - public RingerUpdateState(bool isPlay, Note[] ringtone) - { - IsPlaying = isPlay; - Ringtone = ringtone; - } - } - -} diff --git a/Content.Shared/PDA/Ringer/RingerUplinkComponent.cs b/Content.Shared/PDA/Ringer/RingerUplinkComponent.cs new file mode 100644 index 0000000000..2dbbfb5efc --- /dev/null +++ b/Content.Shared/PDA/Ringer/RingerUplinkComponent.cs @@ -0,0 +1,24 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.PDA.Ringer; + +/// +/// Opens the store UI when the ringstone is set to the secret code. +/// Traitors are told the code when greeted. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedRingerSystem))] +public sealed partial class RingerUplinkComponent : Component +{ + /// + /// Notes to set ringtone to in order to lock or unlock the uplink. + /// Set via GenerateUplinkCodeEvent. + /// + [DataField] + public Note[]? Code; + + /// + /// Whether to show the toggle uplink button in PDA settings. + /// + [DataField] + public bool Unlocked; +} diff --git a/Content.Shared/PDA/Ringer/RingerVisuals.cs b/Content.Shared/PDA/Ringer/RingerVisuals.cs index 44e5e818d3..32c9fb3a38 100644 --- a/Content.Shared/PDA/Ringer/RingerVisuals.cs +++ b/Content.Shared/PDA/Ringer/RingerVisuals.cs @@ -1,11 +1,9 @@ using Robust.Shared.Serialization; -namespace Content.Shared.PDA.Ringer -{ - [Serializable, NetSerializable] - public enum RingerUiKey - { - Key - } +namespace Content.Shared.PDA.Ringer; +[Serializable, NetSerializable] +public enum RingerUiKey : byte +{ + Key, } diff --git a/Content.Shared/PDA/SharedPdaSystem.cs b/Content.Shared/PDA/SharedPdaSystem.cs index bd291a3843..38a3899f7f 100644 --- a/Content.Shared/PDA/SharedPdaSystem.cs +++ b/Content.Shared/PDA/SharedPdaSystem.cs @@ -66,5 +66,11 @@ namespace Content.Shared.PDA { Appearance.SetData(uid, PdaVisuals.IdCardInserted, pda.ContainedId != null); } + + public virtual void UpdatePdaUi(EntityUid uid, PdaComponent? pda = null) + { + // This does nothing yet while I finish up PDA prediction + // Overriden by the server + } } } diff --git a/Content.Shared/PDA/SharedRingerSystem.cs b/Content.Shared/PDA/SharedRingerSystem.cs index 5652a60599..8a9d8156a3 100644 --- a/Content.Shared/PDA/SharedRingerSystem.cs +++ b/Content.Shared/PDA/SharedRingerSystem.cs @@ -1,14 +1,282 @@ +using Content.Shared.Mind; +using Content.Shared.PDA.Ringer; +using Content.Shared.Popups; +using Content.Shared.Roles; +using Content.Shared.Store; +using JetBrains.Annotations; +using Robust.Shared.Audio; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Network; +using Robust.Shared.Player; using Robust.Shared.Serialization; +using Robust.Shared.Timing; namespace Content.Shared.PDA; +/// +/// Handles the shared functionality for PDA ringtones. +/// public abstract class SharedRingerSystem : EntitySystem { public const int RingtoneLength = 6; public const int NoteTempo = 300; public const float NoteDelay = 60f / NoteTempo; + + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly SharedPdaSystem _pda = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SharedRoleSystem _role = default!; + [Dependency] private readonly SharedTransformSystem _xform = default!; + [Dependency] protected readonly SharedUserInterfaceSystem UI = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + // RingerBoundUserInterface Subscriptions + SubscribeLocalEvent(OnSetRingtone); + SubscribeLocalEvent(OnPlayRingtone); + } + + /// + public override void Update(float frameTime) + { + var ringerQuery = EntityQueryEnumerator(); + while (ringerQuery.MoveNext(out var uid, out var ringer, out var xform)) + { + if (!ringer.Active || !ringer.NextNoteTime.HasValue) + continue; + + var curTime = _timing.CurTime; + + // Check if it's time to play the next note + if (curTime < ringer.NextNoteTime.Value) + continue; + + // Play the note + // We only do this on the server because otherwise the sound either dupes or blends into a mess + // There's no easy way to figure out which player started it, so that we can exclude them from the list + // and play it separately with PlayLocal, so that it's actually predicted + if (_net.IsServer) + { + _audio.PlayEntity( + GetSound(ringer.Ringtone[ringer.NoteCount]), + Filter.Empty().AddInRange(_xform.GetMapCoordinates(uid, xform), ringer.Range), + uid, + true, + AudioParams.Default.WithMaxDistance(ringer.Range).WithVolume(ringer.Volume) + ); + } + + // Schedule next note + ringer.NextNoteTime = curTime + TimeSpan.FromSeconds(NoteDelay); + ringer.NoteCount++; + + // Dirty the fields we just changed + DirtyFields(uid, + ringer, + null, + nameof(RingerComponent.NextNoteTime), + nameof(RingerComponent.NoteCount)); + + // Check if we've finished playing all notes + if (ringer.NoteCount >= RingtoneLength) + { + ringer.Active = false; + ringer.NextNoteTime = null; + ringer.NoteCount = 0; + + DirtyFields(uid, + ringer, + null, + nameof(RingerComponent.Active), + nameof(RingerComponent.NextNoteTime), + nameof(RingerComponent.NoteCount)); + + UpdateRingerUi((uid, ringer)); + } + } + } + + #region Public API + + /// + /// Plays the ringtone on the device with the given RingerComponent. + /// + public void RingerPlayRingtone(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + StartRingtone((ent, ent.Comp)); + } + + /// + /// Toggles the ringer UI for the given entity. + /// + /// The entity containing the ringer UI. + /// The entity that's interacting with the UI. + /// True if the UI toggle was successful. + public bool TryToggleRingerUi(EntityUid uid, EntityUid actor) + { + UI.TryToggleUi(uid, RingerUiKey.Key, actor); + return true; + } + + /// + /// Locks the uplink and closes the window, if its open. + /// + /// + /// Will not update the PDA ui so you must do that yourself if needed. + /// + public void LockUplink(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + ent.Comp.Unlocked = false; + UI.CloseUi(ent.Owner, StoreUiKey.Key); + } + + /// + /// Attempts to unlock or lock the uplink by checking the provided ringtone against the uplink code. + /// On the client side, it does nothing since the client cannot know the code in advance. + /// On the server side, the code is verified. + /// + /// The entity with the RingerUplinkComponent. + /// The ringtone to check against the uplink code. + /// The entity attempting to toggle the uplink. + /// True if the uplink state was toggled, false otherwise. + [PublicAPI] + public virtual bool TryToggleUplink(EntityUid uid, Note[] ringtone, EntityUid? user = null) + { + return false; + } + + #endregion + + // UI Message event handlers + + /// + /// Handles the from the client UI. + /// + private void OnSetRingtone(Entity ent, ref RingerSetRingtoneMessage args) + { + // Prevent ringtone spam by checking the last time this ringtone was set + var curTime = _timing.CurTime; + if (ent.Comp.NextRingtoneSetTime > curTime) + return; + + ent.Comp.NextRingtoneSetTime = curTime + ent.Comp.Cooldown; + DirtyField(ent.AsNullable(), nameof(RingerComponent.NextRingtoneSetTime)); + + // Client sent us an updated ringtone so set it to that. + if (args.Ringtone.Length != RingtoneLength) + return; + + // Try to toggle the uplink first + if (TryToggleUplink(ent, args.Ringtone)) + return; // Don't save the uplink code as the ringtone + + UpdateRingerRingtone(ent, args.Ringtone); + } + + /// + /// Handles the from the client UI. + /// + private void OnPlayRingtone(Entity ent, ref RingerPlayRingtoneMessage args) + { + StartRingtone(ent); + } + + // Helper methods + + /// + /// Starts playing the ringtone on the device. + /// + private void StartRingtone(Entity ent) + { + // Already active? Don't start it again + if (ent.Comp.Active) + return; + + ent.Comp.Active = true; + ent.Comp.NoteCount = 0; + ent.Comp.NextNoteTime = _timing.CurTime; + + UpdateRingerUi(ent); + + _popup.PopupPredicted(Loc.GetString("comp-ringer-vibration-popup"), + ent, + ent.Owner, + Filter.Pvs(ent, 0.05f), + false, + PopupType.Medium); + + DirtyFields(ent.AsNullable(), + null, + nameof(RingerComponent.NextNoteTime), + nameof(RingerComponent.Active), + nameof(RingerComponent.NoteCount)); + } + + /// + /// Updates the ringer's ringtone and notifies clients. + /// + /// Entity with RingerComponent to update. + /// The new ringtone to set. + protected void UpdateRingerRingtone(Entity ent, Note[] ringtone) + { + // Assume validation has already happened. + ent.Comp.Ringtone = ringtone; + DirtyField(ent.AsNullable(), nameof(RingerComponent.Ringtone)); + UpdateRingerUi(ent); + } + + /// + /// Base implementation for toggle uplink processing after verification. + /// + protected bool ToggleUplinkInternal(Entity ent) + { + // Toggle the unlock state + ent.Comp.Unlocked = !ent.Comp.Unlocked; + + // Update PDA UI if needed + if (TryComp(ent, out var pda)) + _pda.UpdatePdaUi(ent, pda); + + // Close store UI if we're locking + if (!ent.Comp.Unlocked) + UI.CloseUi(ent.Owner, StoreUiKey.Key); + + return true; + } + + /// + /// Gets the sound path for a specific note. + /// + /// The note to get the sound for. + /// A SoundPathSpecifier pointing to the sound file for the note. + private static SoundPathSpecifier GetSound(Note note) + { + return new SoundPathSpecifier($"/Audio/Effects/RingtoneNotes/{note.ToString().ToLower()}.ogg"); + } + + /// + /// Updates the RingerBoundUserInterface. + /// + protected virtual void UpdateRingerUi(Entity ent) + { + } } +/// +/// Enum representing musical notes for ringtones. +/// [Serializable, NetSerializable] public enum Note : byte { diff --git a/Content.Shared/Paper/PaperSystem.cs b/Content.Shared/Paper/PaperSystem.cs index 6fda16b1f3..5e89e77682 100644 --- a/Content.Shared/Paper/PaperSystem.cs +++ b/Content.Shared/Paper/PaperSystem.cs @@ -4,18 +4,22 @@ using Content.Shared.UserInterface; using Content.Shared.Database; using Content.Shared.Examine; using Content.Shared.Interaction; +using Content.Shared.Random.Helpers; using Content.Shared.Popups; using Content.Shared.Tag; using Robust.Shared.Player; using Robust.Shared.Audio.Systems; using static Content.Shared.Paper.PaperComponent; using Robust.Shared.Prototypes; +using Robust.Shared.Random; namespace Content.Shared.Paper; public sealed class PaperSystem : EntitySystem { [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] private readonly IPrototypeManager _protoMan = default!; + [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedInteractionSystem _interaction = default!; [Dependency] private readonly SharedPopupSystem _popupSystem = default!; @@ -27,6 +31,8 @@ public sealed class PaperSystem : EntitySystem private static readonly ProtoId WriteIgnoreStampsTag = "WriteIgnoreStamps"; private static readonly ProtoId WriteTag = "Write"; + private EntityQuery _paperQuery; + public override void Initialize() { base.Initialize(); @@ -38,7 +44,11 @@ public sealed class PaperSystem : EntitySystem SubscribeLocalEvent(OnInteractUsing); SubscribeLocalEvent(OnInputTextMessage); + SubscribeLocalEvent(OnRandomPaperContentMapInit); + SubscribeLocalEvent(OnPaperWrite); + + _paperQuery = GetEntityQuery(); } private void OnMapInit(Entity entity, ref MapInitEvent args) @@ -203,6 +213,30 @@ public sealed class PaperSystem : EntitySystem UpdateUserInterface(entity); } + private void OnRandomPaperContentMapInit(Entity ent, ref MapInitEvent args) + { + if (!_paperQuery.TryComp(ent, out var paperComp)) + { + Log.Warning($"{EntityManager.ToPrettyString(ent)} has a {nameof(RandomPaperContentComponent)} but no {nameof(PaperComponent)}!"); + RemCompDeferred(ent, ent.Comp); + return; + } + var dataset = _protoMan.Index(ent.Comp.Dataset); + // Intentionally not using the Pick overload that directly takes a LocalizedDataset, + // because we want to get multiple attributes from the same pick. + var pick = _random.Pick(dataset.Values); + + // Name + _metaSystem.SetEntityName(ent, Loc.GetString(pick)); + // Description + _metaSystem.SetEntityDescription(ent, Loc.GetString($"{pick}.desc")); + // Content + SetContent((ent, paperComp), Loc.GetString($"{pick}.content")); + + // Our work here is done + RemCompDeferred(ent, ent.Comp); + } + private void OnPaperWrite(Entity entity, ref PaperWriteEvent args) { _interaction.UseInHandInteraction(args.User, entity); diff --git a/Content.Shared/Paper/RandomPaperContentComponent.cs b/Content.Shared/Paper/RandomPaperContentComponent.cs new file mode 100644 index 0000000000..2176c33fe8 --- /dev/null +++ b/Content.Shared/Paper/RandomPaperContentComponent.cs @@ -0,0 +1,17 @@ +using Content.Shared.Dataset; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Paper; + +/// +/// If added to an entity that has a , the name, +/// description and contents of the paper will be replaced with a random +/// entry from the specified . +/// Requires . +/// +[RegisterComponent] +public sealed partial class RandomPaperContentComponent : Component +{ + [DataField(required: true)] + public ProtoId Dataset; +} diff --git a/Content.Shared/Polymorph/PolymorphPrototype.cs b/Content.Shared/Polymorph/PolymorphPrototype.cs index 07901b1857..d731c4bfc5 100644 --- a/Content.Shared/Polymorph/PolymorphPrototype.cs +++ b/Content.Shared/Polymorph/PolymorphPrototype.cs @@ -40,6 +40,14 @@ public sealed partial record PolymorphConfiguration [DataField(required: true, serverOnly: true)] public EntProtoId Entity; + /// + /// Additional entity to spawn when polymorphing/reverting. + /// Gets parented to the entity polymorphed into. + /// Useful for visual effects. + /// + [DataField(serverOnly: true)] + public EntProtoId? EffectProto; + /// /// The delay between the polymorph's uses in seconds /// Slightly weird as of right now. diff --git a/Content.Shared/Popups/SharedPopupSystem.cs b/Content.Shared/Popups/SharedPopupSystem.cs index 66f901c59f..b57ed6659e 100644 --- a/Content.Shared/Popups/SharedPopupSystem.cs +++ b/Content.Shared/Popups/SharedPopupSystem.cs @@ -32,6 +32,18 @@ namespace Content.Shared.Popups /// Used to customize how this popup should appear visually. public abstract void PopupCursor(string? message, EntityUid recipient, PopupType type = PopupType.Small); + /// + /// Variant of for use with prediction. + /// The local client will show the popup to the recipient. Does nothing on the server. + /// + public abstract void PopupPredictedCursor(string? message, ICommonSession recipient, PopupType type = PopupType.Small); + + /// + /// Variant of for use with prediction. + /// The local client will show the popup to the recipient. Does nothing on the server. + /// + public abstract void PopupPredictedCursor(string? message, EntityUid recipient, PopupType type = PopupType.Small); + /// /// Shows a popup at a world location to every entity in PVS range. /// @@ -60,7 +72,7 @@ namespace Content.Shared.Popups /// /// Variant of for use with prediction. The local client will - /// the popup to the recipient, and the server will show it to every other player in PVS range. If recipient is null, the local + /// the popup to the recipient, and the server will show it to every other player in PVS range. If recipient is null, the local // client will do nothing and the server will show the message to every player in PVS range. /// public abstract void PopupPredictedCoordinates(string? message, EntityCoordinates coordinates, EntityUid? recipient, PopupType type = PopupType.Small); diff --git a/Content.Shared/Power/Components/SharedApcPowerReceiverComponent.cs b/Content.Shared/Power/Components/SharedApcPowerReceiverComponent.cs index 69c3bd790e..80bacd24bd 100644 --- a/Content.Shared/Power/Components/SharedApcPowerReceiverComponent.cs +++ b/Content.Shared/Power/Components/SharedApcPowerReceiverComponent.cs @@ -8,9 +8,15 @@ public abstract partial class SharedApcPowerReceiverComponent : Component [ViewVariables] public bool Powered; - [ViewVariables] - public virtual bool NeedsPower { get; set; } + /// + /// When false, causes this to appear powered even if not receiving power from an Apc. + /// + [ViewVariables(VVAccess.ReadWrite)] + public virtual bool NeedsPower { get; set;} - [ViewVariables] + /// + /// When true, causes this to never appear powered. + /// + [ViewVariables(VVAccess.ReadWrite)] public virtual bool PowerDisabled { get; set; } } diff --git a/Content.Shared/Power/EntitySystems/SharedPowerReceiverSystem.cs b/Content.Shared/Power/EntitySystems/SharedPowerReceiverSystem.cs index 2d152d8b45..d86273974b 100644 --- a/Content.Shared/Power/EntitySystems/SharedPowerReceiverSystem.cs +++ b/Content.Shared/Power/EntitySystems/SharedPowerReceiverSystem.cs @@ -62,8 +62,13 @@ public abstract class SharedPowerReceiverSystem : EntitySystem return !receiver.PowerDisabled; // i.e. PowerEnabled } - /// - /// Checks if entity is APC-powered device, and if it have power. + protected virtual void RaisePower(Entity entity) + { + // NOOP on server because client has 0 idea of load so we can't raise it properly in shared. + } + + /// + /// Checks if entity is APC-powered device, and if it have power. /// public bool IsPowered(Entity entity) { diff --git a/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs b/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs index 9aaef487b1..9961a2b911 100644 --- a/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs +++ b/Content.Shared/Preferences/Loadouts/LoadoutPrototype.cs @@ -48,14 +48,8 @@ public sealed partial class LoadoutPrototype : IPrototype, IEquipmentLoadout public Dictionary> Storage { get; set; } = new(); /// - /// CP14 - it is possible to give action spells or spells to players who have taken this loadout + /// CP14 - it is possible to give free skills to players /// [DataField] - public List Actions { get; set; } = new(); - - /// - /// CP14 - it is possible to give skill trees to players who have taken this loadout - /// - [DataField] - public Dictionary, FixedPoint2> SkillTree = new(); + public HashSet> Skills = new(); } diff --git a/Content.Shared/RCD/Components/RCDAmmoComponent.cs b/Content.Shared/RCD/Components/RCDAmmoComponent.cs index 4135b606e2..2c0c6bcabc 100644 --- a/Content.Shared/RCD/Components/RCDAmmoComponent.cs +++ b/Content.Shared/RCD/Components/RCDAmmoComponent.cs @@ -11,6 +11,6 @@ public sealed partial class RCDAmmoComponent : Component /// How many charges are contained in this ammo cartridge. /// Can be partially transferred into an RCD, until it is empty then it gets deleted. /// - [DataField("charges"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + [DataField, AutoNetworkedField] public int Charges = 30; } diff --git a/Content.Shared/RCD/Components/RCDComponent.cs b/Content.Shared/RCD/Components/RCDComponent.cs index 39bb6fd3e9..1ea3166531 100644 --- a/Content.Shared/RCD/Components/RCDComponent.cs +++ b/Content.Shared/RCD/Components/RCDComponent.cs @@ -33,25 +33,13 @@ public sealed partial class RCDComponent : Component [DataField, AutoNetworkedField] public ProtoId ProtoId { get; set; } = "Invalid"; - /// - /// A cached copy of currently selected RCD prototype - /// - /// - /// If the ProtoId is changed, make sure to update the CachedPrototype as well - /// - [ViewVariables(VVAccess.ReadOnly)] - public RCDPrototype CachedPrototype { get; set; } = default!; - /// /// The direction constructed entities will face upon spawning /// [DataField, AutoNetworkedField] public Direction ConstructionDirection { - get - { - return _constructionDirection; - } + get => _constructionDirection; set { _constructionDirection = value; @@ -68,5 +56,5 @@ public sealed partial class RCDComponent : Component /// Contains no position data /// [ViewVariables(VVAccess.ReadOnly)] - public Transform ConstructionTransform { get; private set; } = default!; + public Transform ConstructionTransform { get; private set; } } diff --git a/Content.Shared/RCD/RCDEvents.cs b/Content.Shared/RCD/RCDEvents.cs index a15a010277..6871ec178e 100644 --- a/Content.Shared/RCD/RCDEvents.cs +++ b/Content.Shared/RCD/RCDEvents.cs @@ -4,27 +4,16 @@ using Robust.Shared.Serialization; namespace Content.Shared.RCD; [Serializable, NetSerializable] -public sealed class RCDSystemMessage : BoundUserInterfaceMessage +public sealed class RCDSystemMessage(ProtoId protoId) : BoundUserInterfaceMessage { - public ProtoId ProtoId; - - public RCDSystemMessage(ProtoId protoId) - { - ProtoId = protoId; - } + public ProtoId ProtoId = protoId; } [Serializable, NetSerializable] -public sealed class RCDConstructionGhostRotationEvent : EntityEventArgs +public sealed class RCDConstructionGhostRotationEvent(NetEntity netEntity, Direction direction) : EntityEventArgs { - public readonly NetEntity NetEntity; - public readonly Direction Direction; - - public RCDConstructionGhostRotationEvent(NetEntity netEntity, Direction direction) - { - NetEntity = netEntity; - Direction = direction; - } + public readonly NetEntity NetEntity = netEntity; + public readonly Direction Direction = direction; } [Serializable, NetSerializable] diff --git a/Content.Shared/RCD/RCDPrototype.cs b/Content.Shared/RCD/RCDPrototype.cs index 58093bbe87..b00f59f049 100644 --- a/Content.Shared/RCD/RCDPrototype.cs +++ b/Content.Shared/RCD/RCDPrototype.cs @@ -6,10 +6,10 @@ using Robust.Shared.Utility; namespace Content.Shared.RCD; /// -/// Contains the parameters for a RCD construction / operation +/// Contains the parameters for an RCD construction / operation /// [Prototype("rcd")] -public sealed partial class RCDPrototype : IPrototype +public sealed class RCDPrototype : IPrototype { [IdDataField] public string ID { get; private set; } = default!; @@ -36,13 +36,13 @@ public sealed partial class RCDPrototype : IPrototype /// Texture path for this prototypes menu icon /// [DataField, ViewVariables(VVAccess.ReadOnly)] - public SpriteSpecifier? Sprite { get; private set; } = null; + public SpriteSpecifier? Sprite { get; private set; } /// /// The entity prototype that will be constructed (mode dependent) /// [DataField, ViewVariables(VVAccess.ReadOnly)] - public string? Prototype { get; private set; } = string.Empty; + public string? Prototype { get; private set; } /// /// Number of charges consumed when the operation is completed @@ -60,10 +60,10 @@ public sealed partial class RCDPrototype : IPrototype /// The visual effect that plays during this operation /// [DataField("fx"), ViewVariables(VVAccess.ReadOnly)] - public EntProtoId? Effect { get; private set; } = null; + public EntProtoId? Effect { get; private set; } /// - /// A list of rules that govern where the entity prototype can be contructed + /// A list of rules that govern where the entity prototype can be constructed /// [DataField("rules"), ViewVariables(VVAccess.ReadOnly)] public HashSet ConstructionRules { get; private set; } = new(); @@ -84,10 +84,7 @@ public sealed partial class RCDPrototype : IPrototype [DataField, ViewVariables(VVAccess.ReadOnly)] public Box2? CollisionBounds { - get - { - return _collisionBounds; - } + get => _collisionBounds; private set { @@ -103,13 +100,13 @@ public sealed partial class RCDPrototype : IPrototype } } - private Box2? _collisionBounds = null; + private Box2? _collisionBounds; /// /// The polygon shape associated with the prototype CollisionBounds (if set) /// [ViewVariables(VVAccess.ReadOnly)] - public PolygonShape? CollisionPolygon { get; private set; } = null; + public PolygonShape? CollisionPolygon { get; private set; } /// /// Governs how the local rotation of the constructed entity will be set diff --git a/Content.Shared/RCD/Systems/RCDAmmoSystem.cs b/Content.Shared/RCD/Systems/RCDAmmoSystem.cs index 9cb3c26485..eb770f2898 100644 --- a/Content.Shared/RCD/Systems/RCDAmmoSystem.cs +++ b/Content.Shared/RCD/Systems/RCDAmmoSystem.cs @@ -10,7 +10,7 @@ namespace Content.Shared.RCD.Systems; public sealed class RCDAmmoSystem : EntitySystem { - [Dependency] private readonly SharedChargesSystem _charges = default!; + [Dependency] private readonly SharedChargesSystem _sharedCharges = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly IGameTiming _timing = default!; @@ -41,9 +41,10 @@ public sealed class RCDAmmoSystem : EntitySystem !TryComp(target, out var charges)) return; + var current = _sharedCharges.GetCurrentCharges((target, charges)); var user = args.User; args.Handled = true; - var count = Math.Min(charges.MaxCharges - charges.Charges, comp.Charges); + var count = Math.Min(charges.MaxCharges - current, comp.Charges); if (count <= 0) { _popup.PopupClient(Loc.GetString("rcd-ammo-component-after-interact-full"), target, user); @@ -51,7 +52,7 @@ public sealed class RCDAmmoSystem : EntitySystem } _popup.PopupClient(Loc.GetString("rcd-ammo-component-after-interact-refilled"), target, user); - _charges.AddCharges(target, count, charges); + _sharedCharges.AddCharges(target, count); comp.Charges -= count; Dirty(uid, comp); diff --git a/Content.Shared/RCD/Systems/RCDSystem.cs b/Content.Shared/RCD/Systems/RCDSystem.cs index 9e5096c77c..2025f2f3cc 100644 --- a/Content.Shared/RCD/Systems/RCDSystem.cs +++ b/Content.Shared/RCD/Systems/RCDSystem.cs @@ -22,22 +22,18 @@ using Robust.Shared.Physics.Collision.Shapes; using Robust.Shared.Physics.Dynamics; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; -using Robust.Shared.Timing; -using System.Diagnostics.CodeAnalysis; using System.Linq; namespace Content.Shared.RCD.Systems; -[Virtual] -public class RCDSystem : EntitySystem +public sealed class RCDSystem : EntitySystem { - [Dependency] private readonly IGameTiming _timing = 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 SharedChargesSystem _sharedCharges = default!; [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; [Dependency] private readonly SharedInteractionSystem _interaction = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; @@ -45,6 +41,7 @@ public class RCDSystem : EntitySystem [Dependency] private readonly EntityLookupSystem _lookup = default!; [Dependency] private readonly IPrototypeManager _protoManager = default!; [Dependency] private readonly SharedMapSystem _mapSystem = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly TagSystem _tags = default!; private readonly int _instantConstructionDelay = 0; @@ -73,10 +70,9 @@ public class RCDSystem : EntitySystem private void OnMapInit(EntityUid uid, RCDComponent component, MapInitEvent args) { // On init, set the RCD to its first available recipe - if (component.AvailablePrototypes.Any()) + if (component.AvailablePrototypes.Count > 0) { - component.ProtoId = component.AvailablePrototypes.First(); - UpdateCachedPrototype(uid, component); + component.ProtoId = component.AvailablePrototypes.ElementAt(0); Dirty(uid, component); return; @@ -97,7 +93,6 @@ public class RCDSystem : EntitySystem // Set the current RCD prototype to the one supplied component.ProtoId = args.ProtoId; - UpdateCachedPrototype(uid, component); Dirty(uid, component); } @@ -106,17 +101,16 @@ public class RCDSystem : EntitySystem if (!args.IsInDetailsRange) return; - // Update cached prototype if required - UpdateCachedPrototype(uid, component); + var prototype = _protoManager.Index(component.ProtoId); - var msg = Loc.GetString("rcd-component-examine-mode-details", ("mode", Loc.GetString(component.CachedPrototype.SetName))); + var msg = Loc.GetString("rcd-component-examine-mode-details", ("mode", Loc.GetString(prototype.SetName))); - if (component.CachedPrototype.Mode == RcdMode.ConstructTile || component.CachedPrototype.Mode == RcdMode.ConstructObject) + if (prototype.Mode == RcdMode.ConstructTile || prototype.Mode == RcdMode.ConstructObject) { - var name = Loc.GetString(component.CachedPrototype.SetName); + var name = Loc.GetString(prototype.SetName); - if (component.CachedPrototype.Prototype != null && - _protoManager.TryIndex(component.CachedPrototype.Prototype, out var proto)) + if (prototype.Prototype != null && + _protoManager.TryIndex(prototype.Prototype, out var proto)) name = proto.Name; msg = Loc.GetString("rcd-component-examine-build-details", ("name", name)); @@ -132,32 +126,37 @@ public class RCDSystem : EntitySystem var user = args.User; var location = args.ClickLocation; + var prototype = _protoManager.Index(component.ProtoId); // Initial validity checks if (!location.IsValid(EntityManager)) return; - if (!TryGetMapGridData(location, out var mapGridData)) + var gridUid = _transform.GetGrid(location); + + if (!TryComp(gridUid, out var mapGrid)) { _popup.PopupClient(Loc.GetString("rcd-component-no-valid-grid"), uid, user); return; } + var tile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); + var position = _mapSystem.TileIndicesFor(gridUid.Value, mapGrid, location); - if (!IsRCDOperationStillValid(uid, component, mapGridData.Value, args.Target, args.User)) + if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Target, args.User)) return; if (!_net.IsServer) return; // Get the starting cost, delay, and effect from the prototype - var cost = component.CachedPrototype.Cost; - var delay = component.CachedPrototype.Delay; - var effectPrototype = component.CachedPrototype.Effect; + var cost = prototype.Cost; + var delay = prototype.Delay; + var effectPrototype = prototype.Effect; #region: Operation modifiers // Deconstruction modifiers - switch (component.CachedPrototype.Mode) + switch (prototype.Mode) { case RcdMode.Deconstruct: @@ -175,7 +174,7 @@ public class RCDSystem : EntitySystem // Deconstructing a tile else { - var deconstructedTile = _mapSystem.GetTileRef(mapGridData.Value.GridUid, mapGridData.Value.Component, mapGridData.Value.Location); + var deconstructedTile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); var protoName = !deconstructedTile.IsSpace() ? _deconstructTileProto : _deconstructLatticeProto; if (_protoManager.TryIndex(protoName, out var deconProto)) @@ -191,7 +190,7 @@ public class RCDSystem : EntitySystem case RcdMode.ConstructTile: // If replacing a tile, make the construction instant - var contructedTile = _mapSystem.GetTileRef(mapGridData.Value.GridUid, mapGridData.Value.Component, mapGridData.Value.Location); + var contructedTile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); if (!contructedTile.Tile.IsEmpty) { @@ -205,8 +204,8 @@ public class RCDSystem : EntitySystem #endregion // Try to start the do after - var effect = Spawn(effectPrototype, mapGridData.Value.Location); - var ev = new RCDDoAfterEvent(GetNetCoordinates(mapGridData.Value.Location), component.ConstructionDirection, component.ProtoId, cost, EntityManager.GetNetEntity(effect)); + var effect = Spawn(effectPrototype, location); + var ev = new RCDDoAfterEvent(GetNetCoordinates(location), component.ConstructionDirection, component.ProtoId, cost, EntityManager.GetNetEntity(effect)); var doAfterArgs = new DoAfterArgs(EntityManager, user, delay, ev, uid, target: args.Target, used: uid) { @@ -239,41 +238,57 @@ public class RCDSystem : EntitySystem // Ensure the RCD operation is still valid var location = GetCoordinates(args.Event.Location); - if (!TryGetMapGridData(location, out var mapGridData)) + var gridUid = _transform.GetGrid(location); + + if (!TryComp(gridUid, out var mapGrid)) { args.Cancel(); return; } - if (!IsRCDOperationStillValid(uid, component, mapGridData.Value, args.Event.Target, args.Event.User)) + + var tile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); + var position = _mapSystem.TileIndicesFor(gridUid.Value, mapGrid, location); + + if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Event.Target, args.Event.User)) args.Cancel(); } private void OnDoAfter(EntityUid uid, RCDComponent component, RCDDoAfterEvent args) { - if (args.Cancelled && _net.IsServer) - QueueDel(EntityManager.GetEntity(args.Effect)); + if (args.Cancelled) + { + // Delete the effect entity if the do-after was cancelled (server-side only) + if (_net.IsServer) + QueueDel(EntityManager.GetEntity(args.Effect)); + return; + } - if (args.Handled || args.Cancelled || !_timing.IsFirstTimePredicted) + if (args.Handled) return; args.Handled = true; var location = GetCoordinates(args.Location); - if (!TryGetMapGridData(location, out var mapGridData)) + var gridUid = _transform.GetGrid(location); + + if (!TryComp(gridUid, out var mapGrid)) return; + var tile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); + var position = _mapSystem.TileIndicesFor(gridUid.Value, mapGrid, location); + // Ensure the RCD operation is still valid - if (!IsRCDOperationStillValid(uid, component, mapGridData.Value, args.Target, args.User)) + if (!IsRCDOperationStillValid(uid, component, gridUid.Value, mapGrid, tile, position, args.Target, args.User)) return; - // Finalize the operation - FinalizeRCDOperation(uid, component, mapGridData.Value, args.Direction, args.Target, args.User); + // Finalize the operation (this should handle prediction properly) + FinalizeRCDOperation(uid, component, gridUid.Value, mapGrid, tile, position, args.Direction, args.Target, args.User); // Play audio and consume charges _audio.PlayPredicted(component.SuccessSound, uid, args.User); - _charges.UseCharges(uid, args.Cost); + _sharedCharges.AddCharges(uid, -args.Cost); } private void OnRCDconstructionGhostRotationEvent(RCDConstructionGhostRotationEvent ev, EntitySessionEventArgs session) @@ -300,16 +315,15 @@ public class RCDSystem : EntitySystem #region Entity construction/deconstruction rule checks - public bool IsRCDOperationStillValid(EntityUid uid, RCDComponent component, MapGridData mapGridData, EntityUid? target, EntityUid user, bool popMsgs = true) + public bool IsRCDOperationStillValid(EntityUid uid, RCDComponent component, EntityUid gridUid, MapGridComponent mapGrid, TileRef tile, Vector2i position, EntityUid? target, EntityUid user, bool popMsgs = true) { - // Update cached prototype if required - UpdateCachedPrototype(uid, component); + var prototype = _protoManager.Index(component.ProtoId); // Check that the RCD has enough ammo to get the job done - TryComp(uid, out var charges); + var charges = _sharedCharges.GetCurrentCharges(uid); // Both of these were messages were suppose to be predicted, but HasInsufficientCharges wasn't being checked on the client for some reason? - if (_charges.IsEmpty(uid, charges)) + if (charges == 0) { if (popMsgs) _popup.PopupClient(Loc.GetString("rcd-component-no-ammo-message"), uid, user); @@ -317,7 +331,7 @@ public class RCDSystem : EntitySystem return false; } - if (_charges.HasInsufficientCharges(uid, component.CachedPrototype.Cost, charges)) + if (prototype.Cost > charges) { if (popMsgs) _popup.PopupClient(Loc.GetString("rcd-component-insufficient-ammo-message"), uid, user); @@ -327,27 +341,31 @@ public class RCDSystem : EntitySystem // Exit if the target / target location is obstructed var unobstructed = (target == null) - ? _interaction.InRangeUnobstructed(user, _mapSystem.GridTileToWorld(mapGridData.GridUid, mapGridData.Component, mapGridData.Position), popup: popMsgs) + ? _interaction.InRangeUnobstructed(user, _mapSystem.GridTileToWorld(gridUid, mapGrid, position), popup: popMsgs) : _interaction.InRangeUnobstructed(user, target.Value, popup: popMsgs); if (!unobstructed) return false; // Return whether the operation location is valid - switch (component.CachedPrototype.Mode) + switch (prototype.Mode) { - case RcdMode.ConstructTile: return IsConstructionLocationValid(uid, component, mapGridData, user, popMsgs); - case RcdMode.ConstructObject: return IsConstructionLocationValid(uid, component, mapGridData, user, popMsgs); - case RcdMode.Deconstruct: return IsDeconstructionStillValid(uid, component, mapGridData, target, user, popMsgs); + case RcdMode.ConstructTile: + case RcdMode.ConstructObject: + return IsConstructionLocationValid(uid, component, gridUid, mapGrid, tile, position, user, popMsgs); + case RcdMode.Deconstruct: + return IsDeconstructionStillValid(uid, tile, target, user, popMsgs); } return false; } - private bool IsConstructionLocationValid(EntityUid uid, RCDComponent component, MapGridData mapGridData, EntityUid user, bool popMsgs = true) + private bool IsConstructionLocationValid(EntityUid uid, RCDComponent component, EntityUid gridUid, MapGridComponent mapGrid, TileRef tile, Vector2i position, EntityUid user, bool popMsgs = true) { + var prototype = _protoManager.Index(component.ProtoId); + // Check rule: Must build on empty tile - if (component.CachedPrototype.ConstructionRules.Contains(RcdConstructionRule.MustBuildOnEmptyTile) && !mapGridData.Tile.Tile.IsEmpty) + if (prototype.ConstructionRules.Contains(RcdConstructionRule.MustBuildOnEmptyTile) && !tile.Tile.IsEmpty) { if (popMsgs) _popup.PopupClient(Loc.GetString("rcd-component-must-build-on-empty-tile-message"), uid, user); @@ -356,7 +374,7 @@ public class RCDSystem : EntitySystem } // Check rule: Must build on non-empty tile - if (!component.CachedPrototype.ConstructionRules.Contains(RcdConstructionRule.CanBuildOnEmptyTile) && mapGridData.Tile.Tile.IsEmpty) + if (!prototype.ConstructionRules.Contains(RcdConstructionRule.CanBuildOnEmptyTile) && tile.Tile.IsEmpty) { if (popMsgs) _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-on-empty-tile-message"), uid, user); @@ -365,7 +383,7 @@ public class RCDSystem : EntitySystem } // Check rule: Must place on subfloor - if (component.CachedPrototype.ConstructionRules.Contains(RcdConstructionRule.MustBuildOnSubfloor) && !mapGridData.Tile.Tile.GetContentTileDefinition().IsSubFloor) + if (prototype.ConstructionRules.Contains(RcdConstructionRule.MustBuildOnSubfloor) && !tile.Tile.GetContentTileDefinition().IsSubFloor) { if (popMsgs) _popup.PopupClient(Loc.GetString("rcd-component-must-build-on-subfloor-message"), uid, user); @@ -374,10 +392,10 @@ public class RCDSystem : EntitySystem } // Tile specific rules - if (component.CachedPrototype.Mode == RcdMode.ConstructTile) + if (prototype.Mode == RcdMode.ConstructTile) { // Check rule: Tile placement is valid - if (!_floors.CanPlaceTile(mapGridData.GridUid, mapGridData.Component, out var reason)) + if (!_floors.CanPlaceTile(gridUid, mapGrid, out var reason)) { if (popMsgs) _popup.PopupClient(reason, uid, user); @@ -386,7 +404,7 @@ public class RCDSystem : EntitySystem } // Check rule: Tiles can't be identical - if (mapGridData.Tile.Tile.GetContentTileDefinition().ID == component.CachedPrototype.Prototype) + if (tile.Tile.GetContentTileDefinition().ID == prototype.Prototype) { if (popMsgs) _popup.PopupClient(Loc.GetString("rcd-component-cannot-build-identical-tile"), uid, user); @@ -401,11 +419,11 @@ public class RCDSystem : EntitySystem // Entity specific rules // Check rule: The tile is unoccupied - var isWindow = component.CachedPrototype.ConstructionRules.Contains(RcdConstructionRule.IsWindow); - var isCatwalk = component.CachedPrototype.ConstructionRules.Contains(RcdConstructionRule.IsCatwalk); + var isWindow = prototype.ConstructionRules.Contains(RcdConstructionRule.IsWindow); + var isCatwalk = prototype.ConstructionRules.Contains(RcdConstructionRule.IsCatwalk); _intersectingEntities.Clear(); - _lookup.GetLocalEntitiesIntersecting(mapGridData.GridUid, mapGridData.Position, _intersectingEntities, -0.05f, LookupFlags.Uncontained); + _lookup.GetLocalEntitiesIntersecting(gridUid, position, _intersectingEntities, -0.05f, LookupFlags.Uncontained); foreach (var ent in _intersectingEntities) { @@ -420,17 +438,17 @@ public class RCDSystem : EntitySystem return false; } - if (component.CachedPrototype.CollisionMask != CollisionGroup.None && TryComp(ent, out var fixtures)) + if (prototype.CollisionMask != CollisionGroup.None && TryComp(ent, out var fixtures)) { foreach (var fixture in fixtures.Fixtures.Values) { // Continue if no collision is possible - if (!fixture.Hard || fixture.CollisionLayer <= 0 || (fixture.CollisionLayer & (int) component.CachedPrototype.CollisionMask) == 0) + if (!fixture.Hard || fixture.CollisionLayer <= 0 || (fixture.CollisionLayer & (int) prototype.CollisionMask) == 0) continue; // Continue if our custom collision bounds are not intersected - if (component.CachedPrototype.CollisionPolygon != null && - !DoesCustomBoundsIntersectWithFixture(component.CachedPrototype.CollisionPolygon, component.ConstructionTransform, ent, fixture)) + if (prototype.CollisionPolygon != null && + !DoesCustomBoundsIntersectWithFixture(prototype.CollisionPolygon, component.ConstructionTransform, ent, fixture)) continue; // Collision was detected @@ -445,13 +463,13 @@ public class RCDSystem : EntitySystem return true; } - private bool IsDeconstructionStillValid(EntityUid uid, RCDComponent component, MapGridData mapGridData, EntityUid? target, EntityUid user, bool popMsgs = true) + private bool IsDeconstructionStillValid(EntityUid uid, TileRef tile, EntityUid? target, EntityUid user, bool popMsgs = true) { // Attempt to deconstruct a floor tile if (target == null) { // The tile is empty - if (mapGridData.Tile.Tile.IsEmpty) + if (tile.Tile.IsEmpty) { if (popMsgs) _popup.PopupClient(Loc.GetString("rcd-component-nothing-to-deconstruct-message"), uid, user); @@ -460,7 +478,7 @@ public class RCDSystem : EntitySystem } // The tile has a structure sitting on it - if (_turf.IsTileBlocked(mapGridData.Tile, CollisionGroup.MobMask)) + if (_turf.IsTileBlocked(tile, CollisionGroup.MobMask)) { if (popMsgs) _popup.PopupClient(Loc.GetString("rcd-component-tile-obstructed-message"), uid, user); @@ -469,7 +487,7 @@ public class RCDSystem : EntitySystem } // The tile cannot be destroyed - var tileDef = (ContentTileDefinition) _tileDefMan[mapGridData.Tile.Tile.TypeId]; + var tileDef = (ContentTileDefinition) _tileDefMan[tile.Tile.TypeId]; if (tileDef.Indestructible) { @@ -500,25 +518,27 @@ public class RCDSystem : EntitySystem #region Entity construction/deconstruction - private void FinalizeRCDOperation(EntityUid uid, RCDComponent component, MapGridData mapGridData, Direction direction, EntityUid? target, EntityUid user) + private void FinalizeRCDOperation(EntityUid uid, RCDComponent component, EntityUid gridUid, MapGridComponent mapGrid, TileRef tile, Vector2i position, Direction direction, EntityUid? target, EntityUid user) { if (!_net.IsServer) return; - if (component.CachedPrototype.Prototype == null) + var prototype = _protoManager.Index(component.ProtoId); + + if (prototype.Prototype == null) return; - switch (component.CachedPrototype.Mode) + switch (prototype.Mode) { case RcdMode.ConstructTile: - _mapSystem.SetTile(mapGridData.GridUid, mapGridData.Component, mapGridData.Position, new Tile(_tileDefMan[component.CachedPrototype.Prototype].TileId)); - _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to set grid: {mapGridData.GridUid} {mapGridData.Position} to {component.CachedPrototype.Prototype}"); + _mapSystem.SetTile(gridUid, mapGrid, position, new Tile(_tileDefMan[prototype.Prototype].TileId)); + _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to set grid: {gridUid} {position} to {prototype.Prototype}"); break; case RcdMode.ConstructObject: - var ent = Spawn(component.CachedPrototype.Prototype, _mapSystem.GridTileToLocal(mapGridData.GridUid, mapGridData.Component, mapGridData.Position)); + var ent = Spawn(prototype.Prototype, _mapSystem.GridTileToLocal(gridUid, mapGrid, position)); - switch (component.CachedPrototype.Rotation) + switch (prototype.Rotation) { case RcdRotation.Fixed: Transform(ent).LocalRotation = Angle.Zero; @@ -531,7 +551,7 @@ public class RCDSystem : EntitySystem break; } - _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to spawn {ToPrettyString(ent)} at {mapGridData.Position} on grid {mapGridData.GridUid}"); + _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to spawn {ToPrettyString(ent)} at {position} on grid {gridUid}"); break; case RcdMode.Deconstruct: @@ -539,9 +559,9 @@ public class RCDSystem : EntitySystem if (target == null) { // Deconstruct tile (either converts the tile to lattice, or removes lattice) - var tile = (mapGridData.Tile.Tile.GetContentTileDefinition().ID != "Lattice") ? new Tile(_tileDefMan["Lattice"].TileId) : Tile.Empty; - _mapSystem.SetTile(mapGridData.GridUid, mapGridData.Component, mapGridData.Position, tile); - _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to set grid: {mapGridData.GridUid} tile: {mapGridData.Position} open to space"); + var tileDef = (tile.Tile.GetContentTileDefinition().ID != "Lattice") ? new Tile(_tileDefMan["Lattice"].TileId) : Tile.Empty; + _mapSystem.SetTile(gridUid, mapGrid, position, tileDef); + _adminLogger.Add(LogType.RCD, LogImpact.High, $"{ToPrettyString(user):user} used RCD to set grid: {gridUid} tile: {position} open to space"); } else { @@ -558,28 +578,6 @@ public class RCDSystem : EntitySystem #region Utility functions - public bool TryGetMapGridData(EntityCoordinates location, [NotNullWhen(true)] out MapGridData? mapGridData) - { - mapGridData = null; - var gridUid = location.GetGridUid(EntityManager); - - if (!TryComp(gridUid, out var mapGrid)) - { - location = location.AlignWithClosestGridTile(1.75f, EntityManager); - gridUid = location.GetGridUid(EntityManager); - - // Check if we got a grid ID the second time round - if (!TryComp(gridUid, out mapGrid)) - return false; - } - - var tile = _mapSystem.GetTileRef(gridUid.Value, mapGrid, location); - var position = _mapSystem.TileIndicesFor(gridUid.Value, mapGrid, location); - mapGridData = new MapGridData(gridUid.Value, mapGrid, location, tile, position); - - return true; - } - private bool DoesCustomBoundsIntersectWithFixture(PolygonShape boundingPolygon, Transform boundingTransform, EntityUid fixtureOwner, Fixture fixture) { var entXformComp = Transform(fixtureOwner); @@ -588,50 +586,26 @@ public class RCDSystem : EntitySystem return boundingPolygon.ComputeAABB(boundingTransform, 0).Intersects(fixture.Shape.ComputeAABB(entXform, 0)); } - public void UpdateCachedPrototype(EntityUid uid, RCDComponent component) - { - if (component.ProtoId.Id != component.CachedPrototype?.Prototype) - component.CachedPrototype = _protoManager.Index(component.ProtoId); - } - #endregion } -public struct MapGridData -{ - public EntityUid GridUid; - public MapGridComponent Component; - public EntityCoordinates Location; - public TileRef Tile; - public Vector2i Position; - - public MapGridData(EntityUid gridUid, MapGridComponent component, EntityCoordinates location, TileRef tile, Vector2i position) - { - GridUid = gridUid; - Component = component; - Location = location; - Tile = tile; - Position = position; - } -} - [Serializable, NetSerializable] public sealed partial class RCDDoAfterEvent : DoAfterEvent { [DataField(required: true)] - public NetCoordinates Location { get; private set; } = default!; + public NetCoordinates Location { get; private set; } [DataField] - public Direction Direction { get; private set; } = default!; + public Direction Direction { get; private set; } [DataField] - public ProtoId StartingProtoId { get; private set; } = default!; + public ProtoId StartingProtoId { get; private set; } [DataField] public int Cost { get; private set; } = 1; [DataField("fx")] - public NetEntity? Effect { get; private set; } = null; + public NetEntity? Effect { get; private set; } private RCDDoAfterEvent() { } @@ -644,5 +618,8 @@ public sealed partial class RCDDoAfterEvent : DoAfterEvent Effect = effect; } - public override DoAfterEvent Clone() => this; + public override DoAfterEvent Clone() + { + return this; + } } diff --git a/Content.Shared/Radiation/Components/GeigerComponent.cs b/Content.Shared/Radiation/Components/GeigerComponent.cs index 71edb70b37..34a262e131 100644 --- a/Content.Shared/Radiation/Components/GeigerComponent.cs +++ b/Content.Shared/Radiation/Components/GeigerComponent.cs @@ -83,6 +83,24 @@ public sealed partial class GeigerComponent : Component /// Played only for current user. /// public EntityUid? Stream; + + /// + /// Mark true if the audio should be heard by everyone around the device + /// + [DataField] + public bool BroadcastAudio = false; + + /// + /// The distance within which the broadcast tone can be heard. + /// + [DataField] + public float BroadcastRange = 4f; + + /// + /// The volume of the warning tone. + /// + [DataField] + public float Volume = -4f; } [Serializable, NetSerializable] diff --git a/Content.Shared/Radiation/Events/OnIrradiatedEvent.cs b/Content.Shared/Radiation/Events/OnIrradiatedEvent.cs index 3112e1eb47..ec9988fffb 100644 --- a/Content.Shared/Radiation/Events/OnIrradiatedEvent.cs +++ b/Content.Shared/Radiation/Events/OnIrradiatedEvent.cs @@ -1,14 +1,16 @@ -namespace Content.Shared.Radiation.Events; +namespace Content.Shared.Radiation.Events; /// /// Raised on entity when it was irradiated /// by some radiation source. /// -public readonly record struct OnIrradiatedEvent(float FrameTime, float RadsPerSecond) +public readonly record struct OnIrradiatedEvent(float FrameTime, float RadsPerSecond, EntityUid Origin) { public readonly float FrameTime = FrameTime; public readonly float RadsPerSecond = RadsPerSecond; + public readonly EntityUid Origin = Origin; + public float TotalRads => RadsPerSecond * FrameTime; } diff --git a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs index 9ddcb423b4..b7ceba6ee9 100644 --- a/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs +++ b/Content.Shared/Radio/EntitySystems/EncryptionKeySystem.cs @@ -24,8 +24,6 @@ namespace Content.Shared.Radio.EntitySystems; public sealed partial class EncryptionKeySystem : EntitySystem { [Dependency] private readonly IPrototypeManager _protoManager = default!; - [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly SharedToolSystem _tool = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; [Dependency] private readonly SharedContainerSystem _container = default!; @@ -58,13 +56,7 @@ public sealed partial class EncryptionKeySystem : EntitySystem _hands.PickupOrDrop(args.User, ent, dropNear: true); } - if (!_timing.IsFirstTimePredicted) - return; - - // TODO add predicted pop-up overrides. - if (_net.IsServer) - _popup.PopupEntity(Loc.GetString("encryption-keys-all-extracted"), uid, args.User); - + _popup.PopupPredicted(Loc.GetString("encryption-keys-all-extracted"), uid, args.User); _audio.PlayPredicted(component.KeyExtractionSound, uid, args.User); } diff --git a/Content.Shared/Random/RandomHelperSystem.cs b/Content.Shared/Random/RandomHelperSystem.cs index 66ebcc3f78..145b47b045 100644 --- a/Content.Shared/Random/RandomHelperSystem.cs +++ b/Content.Shared/Random/RandomHelperSystem.cs @@ -1,4 +1,4 @@ -using System.Numerics; +using System.Numerics; using Content.Shared.Random.Helpers; using Robust.Shared.Random; using Robust.Shared.Utility; @@ -20,7 +20,7 @@ public sealed class RandomHelperSystem : EntitySystem var offset = new Vector2(randomX, randomY); var xform = Transform(entity); - _transform.SetLocalPosition(xform, xform.LocalPosition + offset); + _transform.SetLocalPosition(entity, xform.LocalPosition + offset, xform); } public void RandomOffset(EntityUid entity, float min, float max) diff --git a/Content.Shared/Research/Components/TechnologyDatabaseComponent.cs b/Content.Shared/Research/Components/TechnologyDatabaseComponent.cs index 4f976869f7..a69e4ee9dd 100644 --- a/Content.Shared/Research/Components/TechnologyDatabaseComponent.cs +++ b/Content.Shared/Research/Components/TechnologyDatabaseComponent.cs @@ -54,7 +54,7 @@ public sealed partial class TechnologyDatabaseComponent : Component /// server to all of it's clients. /// [ByRefEvent] -public readonly record struct TechnologyDatabaseModifiedEvent; +public readonly record struct TechnologyDatabaseModifiedEvent(List? NewlyUnlockedRecipes); /// /// Event raised on a database after being synchronized diff --git a/Content.Shared/Research/Systems/BlueprintSystem.cs b/Content.Shared/Research/Systems/BlueprintSystem.cs index 237ff70300..903e529089 100644 --- a/Content.Shared/Research/Systems/BlueprintSystem.cs +++ b/Content.Shared/Research/Systems/BlueprintSystem.cs @@ -7,6 +7,7 @@ using Content.Shared.Research.Prototypes; using Content.Shared.Whitelist; using Robust.Shared.Containers; using Robust.Shared.Prototypes; +using System.Linq; namespace Content.Shared.Research.Systems; @@ -64,7 +65,7 @@ public sealed class BlueprintSystem : EntitySystem _container.Insert(blueprint.Owner, _container.GetContainer(ent, ent.Comp.ContainerId)); - var ev = new TechnologyDatabaseModifiedEvent(); + var ev = new TechnologyDatabaseModifiedEvent(blueprint.Comp.ProvidedRecipes.Select(it => it.Id).ToList()); RaiseLocalEvent(ent, ref ev); return true; } diff --git a/Content.Shared/Research/Systems/SharedResearchSystem.cs b/Content.Shared/Research/Systems/SharedResearchSystem.cs index bca1ae4888..7ed33f7204 100644 --- a/Content.Shared/Research/Systems/SharedResearchSystem.cs +++ b/Content.Shared/Research/Systems/SharedResearchSystem.cs @@ -301,7 +301,7 @@ public abstract class SharedResearchSystem : EntitySystem component.UnlockedRecipes.Add(recipe); Dirty(uid, component); - var ev = new TechnologyDatabaseModifiedEvent(); + var ev = new TechnologyDatabaseModifiedEvent(new List { recipe }); RaiseLocalEvent(uid, ref ev); } } diff --git a/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs b/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs index 93c7c22471..d647b3c1e6 100644 --- a/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs +++ b/Content.Shared/Research/TechnologyDisk/Systems/TechnologyDiskSystem.cs @@ -15,7 +15,6 @@ namespace Content.Shared.Research.TechnologyDisk.Systems; public sealed class TechnologyDiskSystem : EntitySystem { - [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly IPrototypeManager _protoMan = default!; [Dependency] private readonly IRobustRandom _random = default!; [Dependency] private readonly SharedPopupSystem _popup = default!; @@ -74,8 +73,7 @@ public sealed class TechnologyDiskSystem : EntitySystem } } _popup.PopupClient(Loc.GetString("tech-disk-inserted"), target, args.User); - if (_net.IsServer) - QueueDel(ent); + PredictedQueueDel(ent.Owner); args.Handled = true; } diff --git a/Content.Shared/Roles/MindRoleComponent.cs b/Content.Shared/Roles/MindRoleComponent.cs index a52a3f5c02..09593c94cd 100644 --- a/Content.Shared/Roles/MindRoleComponent.cs +++ b/Content.Shared/Roles/MindRoleComponent.cs @@ -15,7 +15,7 @@ public sealed partial class MindRoleComponent : BaseMindRoleComponent /// A single antag Mind Role is enough to make the owner mind count as Antagonist. /// [DataField] - public bool Antag { get; set; } = false; + public bool Antag; /// /// The mind's current antagonist/special role, or lack thereof; @@ -23,11 +23,17 @@ public sealed partial class MindRoleComponent : BaseMindRoleComponent [DataField] public ProtoId? RoleType; + /// + /// The role's subtype, shown only to admins to help with antag categorization + /// + [DataField] + public LocId? Subtype; + /// /// True if this mindrole is an exclusive antagonist. Antag setting is not checked if this is True. /// [DataField] - public bool ExclusiveAntag { get; set; } = false; + public bool ExclusiveAntag; /// /// The Mind that this role belongs to diff --git a/Content.Shared/Roles/SharedRoleSystem.cs b/Content.Shared/Roles/SharedRoleSystem.cs index d6f108faaf..0407251414 100644 --- a/Content.Shared/Roles/SharedRoleSystem.cs +++ b/Content.Shared/Roles/SharedRoleSystem.cs @@ -6,11 +6,11 @@ using Content.Shared.Database; using Content.Shared.GameTicking; using Content.Shared.Mind; using Content.Shared.Roles.Jobs; -using Content.Shared.Silicons.Borgs.Components; using Robust.Shared.Audio; using Robust.Shared.Audio.Systems; using Robust.Shared.Configuration; using Robust.Shared.Map; +using Robust.Shared.Player; using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Utility; @@ -19,12 +19,13 @@ namespace Content.Shared.Roles; public abstract class SharedRoleSystem : EntitySystem { - [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; - [Dependency] private readonly SharedAudioSystem _audio = default!; - [Dependency] private readonly IConfigurationManager _cfg = default!; - [Dependency] private readonly IEntityManager _entityManager = default!; - [Dependency] private readonly SharedMindSystem _minds = default!; - [Dependency] private readonly IPrototypeManager _prototypes = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; + [Dependency] private readonly IEntityManager _entityManager = default!; + [Dependency] private readonly IPrototypeManager _prototypes = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + [Dependency] protected readonly ISharedPlayerManager Player = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] private readonly SharedMindSystem _minds = default!; private JobRequirementOverridePrototype? _requirementOverride; @@ -202,22 +203,22 @@ public abstract class SharedRoleSystem : EntitySystem return false; //get the most important/latest mind role - var roleType = GetRoleTypeByTime(ent.Comp); + var (roleType, subtype) = GetRoleTypeByTime(ent.Comp); - if (ent.Comp.RoleType == roleType) + if (ent.Comp.RoleType == roleType && ent.Comp.Subtype == subtype) return false; - SetRoleType(ent.Owner, roleType); + SetRoleType(ent.Owner, roleType, subtype); return true; } /// - /// Return the most recently specified role type, or Neutral + /// Return the most recently specified role type and subtype, or Neutral /// - private ProtoId GetRoleTypeByTime(MindComponent mind) + private (ProtoId, LocId?) GetRoleTypeByTime(MindComponent mind) { var role = GetRoleCompByTime(mind); - return role?.Comp?.RoleType ?? "Neutral"; + return (role?.Comp?.RoleType ?? "Neutral", role?.Comp?.Subtype); } /// @@ -238,25 +239,26 @@ public abstract class SharedRoleSystem : EntitySystem return (result); } - private void SetRoleType(EntityUid mind, ProtoId roleTypeId) + private void SetRoleType(EntityUid mind, ProtoId roleTypeId, LocId? subtype) { if (!TryComp(mind, out var comp)) { - Log.Error($"Failed to update Role Type of mind entity {ToPrettyString(mind)} to {roleTypeId}. MindComponent not found."); + Log.Error($"Failed to update Role Type of mind entity {ToPrettyString(mind)} to {roleTypeId}, {subtype}. MindComponent not found."); return; } if (!_prototypes.HasIndex(roleTypeId)) { - Log.Error($"Failed to change Role Type of {_minds.MindOwnerLoggingString(comp)} to {roleTypeId}. Invalid role"); + Log.Error($"Failed to change Role Type of {_minds.MindOwnerLoggingString(comp)} to {roleTypeId}, {subtype}. Invalid role"); return; } comp.RoleType = roleTypeId; + comp.Subtype = subtype; Dirty(mind, comp); // Update player character window - if (_minds.TryGetSession(mind, out var session)) + if (Player.TryGetSessionById(comp.UserId, out var session)) RaiseNetworkEvent(new MindRoleTypeChangedEvent(), session.Channel); else { @@ -269,13 +271,13 @@ public abstract class SharedRoleSystem : EntitySystem Log.Error($"{ToPrettyString(mind)} does not have an OwnedEntity!"); _adminLogger.Add(LogType.Mind, LogImpact.Medium, - $"Role Type of {ToPrettyString(mind)} changed to {roleTypeId}"); + $"Role Type of {ToPrettyString(mind)} changed to {roleTypeId}, {subtype}"); return; } _adminLogger.Add(LogType.Mind, LogImpact.High, - $"Role Type of {ToPrettyString(comp.OwnedEntity)} changed to {roleTypeId}"); + $"Role Type of {ToPrettyString(comp.OwnedEntity)} changed to {roleTypeId}, {subtype}"); } /// @@ -589,8 +591,11 @@ public abstract class SharedRoleSystem : EntitySystem /// public void MindPlaySound(EntityUid mindId, SoundSpecifier? sound, MindComponent? mind = null) { - if (Resolve(mindId, ref mind) && mind.Session != null) - _audio.PlayGlobal(sound, mind.Session); + if (!Resolve(mindId, ref mind)) + return; + + if (Player.TryGetSessionById(mind.UserId, out var session)) + _audio.PlayGlobal(sound, session); } // TODO ROLES Change to readonly. @@ -630,6 +635,14 @@ public abstract class SharedRoleSystem : EntitySystem return antag.Requirements; } + + /// + /// Returns the localized name of a role type's subtype. If the provided subtype parameter turns out to be empty, it returns the localized name of the role type instead. + /// + public string GetRoleSubtypeLabel(LocId roleType, LocId? subtype) + { + return string.IsNullOrEmpty(subtype) ? Loc.GetString(roleType) : Loc.GetString(subtype); + } } /// diff --git a/Content.Shared/Security/Components/GenpopIdCardComponent.cs b/Content.Shared/Security/Components/GenpopIdCardComponent.cs new file mode 100644 index 0000000000..bf10bbab90 --- /dev/null +++ b/Content.Shared/Security/Components/GenpopIdCardComponent.cs @@ -0,0 +1,22 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Security.Components; + +/// +/// This is used for storing information about a Genpop ID in order to correctly display it on examine. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] +public sealed partial class GenpopIdCardComponent : Component +{ + /// + /// The crime committed, as a string. + /// + [DataField, AutoNetworkedField] + public string Crime = string.Empty; + + /// + /// The length of the sentence + /// + [DataField, AutoNetworkedField, AutoPausedField] + public TimeSpan SentenceDuration; +} diff --git a/Content.Shared/Security/Components/GenpopLockerComponent.cs b/Content.Shared/Security/Components/GenpopLockerComponent.cs new file mode 100644 index 0000000000..cfeb581814 --- /dev/null +++ b/Content.Shared/Security/Components/GenpopLockerComponent.cs @@ -0,0 +1,47 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.Security.Components; + +/// +/// This is used for a locker that automatically sets up and handles a +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class GenpopLockerComponent : Component +{ + public const int MaxCrimeLength = 48; + + /// + /// The that this locker is currently associated with. + /// + [DataField, AutoNetworkedField] + public EntityUid? LinkedId; + + /// + /// The Prototype spawned. + /// + [DataField] + public EntProtoId IdCardProto = "PrisonerIDCard"; +} + +[Serializable, NetSerializable] +public sealed class GenpopLockerIdConfiguredMessage : BoundUserInterfaceMessage +{ + public string Name; + public float Sentence; + public string Crime; + + public GenpopLockerIdConfiguredMessage(string name, float sentence, string crime) + { + Name = name; + Sentence = sentence; + Crime = crime; + } +} + +[Serializable, NetSerializable] +public enum GenpopLockerUiKey : byte +{ + Key +} diff --git a/Content.Shared/Security/Systems/SharedGenpopSystem.cs b/Content.Shared/Security/Systems/SharedGenpopSystem.cs new file mode 100644 index 0000000000..39fc87f665 --- /dev/null +++ b/Content.Shared/Security/Systems/SharedGenpopSystem.cs @@ -0,0 +1,240 @@ +using Content.Shared.Access.Components; +using Content.Shared.Access.Systems; +using Content.Shared.Database; +using Content.Shared.Examine; +using Content.Shared.Lock; +using Content.Shared.Popups; +using Content.Shared.Security.Components; +using Content.Shared.Storage.Components; +using Content.Shared.Storage.EntitySystems; +using Content.Shared.Verbs; +using Robust.Shared.Timing; + +namespace Content.Shared.Security.Systems; + +public abstract class SharedGenpopSystem : EntitySystem +{ + [Dependency] protected readonly IGameTiming Timing = default!; + [Dependency] private readonly AccessReaderSystem _accessReader = default!; + [Dependency] private readonly SharedEntityStorageSystem _entityStorage = default!; + [Dependency] protected readonly SharedIdCardSystem IdCard = default!; + [Dependency] private readonly LockSystem _lock = default!; + [Dependency] protected readonly MetaDataSystem MetaDataSystem = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SharedUserInterfaceSystem _userInterface = default!; + + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnIdConfigured); + SubscribeLocalEvent(OnCloseAttempt); + SubscribeLocalEvent(OnLockToggleAttempt); + SubscribeLocalEvent(OnLockToggled); + SubscribeLocalEvent>(OnGetVerbs); + SubscribeLocalEvent(OnExamine); + } + + private void OnIdConfigured(Entity ent, ref GenpopLockerIdConfiguredMessage args) + { + // validation. + if (string.IsNullOrWhiteSpace(args.Name) || args.Name.Length > IdCardConsoleComponent.MaxFullNameLength || + args.Sentence < 0 || + string.IsNullOrWhiteSpace(args.Crime) || args.Crime.Length > GenpopLockerComponent.MaxCrimeLength) + { + return; + } + + if (!_accessReader.IsAllowed(args.Actor, ent)) + return; + + // We don't spawn the actual ID now because then the locker would eat it. + // Instead, we just fill in the spot temporarily til the checks pass. + ent.Comp.LinkedId = EntityUid.Invalid; + + _lock.Lock(ent.Owner, null); + _entityStorage.CloseStorage(ent); + + CreateId(ent, args.Name, args.Sentence, args.Crime); + } + + private void OnCloseAttempt(Entity ent, ref StorageCloseAttemptEvent args) + { + if (args.Cancelled) + return; + + // We cancel no matter what. Our second option is just opening the closet. + if (ent.Comp.LinkedId == null) + { + args.Cancelled = true; + } + + if (args.User is not { } user) + return; + + if (!_accessReader.IsAllowed(user, ent)) + { + _popup.PopupClient(Loc.GetString("lock-comp-has-user-access-fail"), user); + return; + } + + // my heart yearns for this to be predicted but for some reason opening an entitystorage via + // verb does not predict it properly. + _userInterface.TryOpenUi(ent.Owner, GenpopLockerUiKey.Key, user); + } + + private void OnLockToggleAttempt(Entity ent, ref LockToggleAttemptEvent args) + { + if (args.Cancelled) + return; + + if (ent.Comp.LinkedId == null) + { + args.Cancelled = true; + return; + } + + // Make sure that we both have the linked ID on our person AND the ID has actually expired. + // That way, even if someone escapes early, they can't get ahold of their things. + if (!_accessReader.FindPotentialAccessItems(args.User).Contains(ent.Comp.LinkedId.Value)) + { + if (!args.Silent) + _popup.PopupClient(Loc.GetString("lock-comp-has-user-access-fail"), ent, args.User); + args.Cancelled = true; + return; + } + + if (!TryComp(ent.Comp.LinkedId.Value, out var expireIdCard) || + !expireIdCard.Expired) + { + if (!args.Silent) + _popup.PopupClient(Loc.GetString("genpop-prisoner-id-popup-not-served"), ent, args.User); + args.Cancelled = true; + } + } + + private void OnLockToggled(Entity ent, ref LockToggledEvent args) + { + if (args.Locked) + return; + + // If we unlock the door, then we're gonna reset the ID. + CancelIdCard(ent); + } + + private void OnGetVerbs(Entity ent, ref GetVerbsEvent args) + { + if (ent.Comp.LinkedId == null) + return; + + if (!args.CanAccess || !args.CanComplexInteract || !args.CanInteract) + return; + + if (!TryComp(ent.Comp.LinkedId, out var expire) || + !TryComp(ent.Comp.LinkedId, out var genpopId)) + return; + + var user = args.User; + var hasAccess = _accessReader.IsAllowed(args.User, ent); + args.Verbs.Add(new Verb // End sentence early. + { + Act = () => + { + IdCard.ExpireId((ent.Comp.LinkedId.Value, expire)); + }, + Priority = 13, + Text = Loc.GetString("genpop-locker-action-end-early"), + Impact = LogImpact.Medium, + DoContactInteraction = true, + Disabled = !hasAccess, + }); + + args.Verbs.Add(new Verb // Cancel Sentence. + { + Act = () => + { + CancelIdCard(ent, user); + }, + Priority = 12, + Text = Loc.GetString("genpop-locker-action-clear-id"), + Impact = LogImpact.Medium, + DoContactInteraction = true, + Disabled = !hasAccess, + }); + + var servedTime = 1 - (expire.ExpireTime - Timing.CurTime).TotalSeconds / genpopId.SentenceDuration.TotalSeconds; + + // Can't reset it after its expired. + if (expire.Expired) + return; + + args.Verbs.Add(new Verb // Reset Sentence. + { + Act = () => + { + IdCard.SetExpireTime((ent.Comp.LinkedId.Value, expire), Timing.CurTime + genpopId.SentenceDuration); + }, + Priority = 11, + Text = Loc.GetString("genpop-locker-action-reset-sentence", ("percent", Math.Clamp(servedTime, 0, 1) * 100)), + Impact = LogImpact.Medium, + DoContactInteraction = true, + Disabled = !hasAccess, + }); + } + + private void CancelIdCard(Entity ent, EntityUid? user = null) + { + if (ent.Comp.LinkedId == null) + return; + + var metaData = MetaData(ent); + MetaDataSystem.SetEntityName(ent, Loc.GetString("genpop-locker-name-default"), metaData); + MetaDataSystem.SetEntityDescription(ent, Loc.GetString("genpop-locker-desc-default"), metaData); + + ent.Comp.LinkedId = null; + _lock.Unlock(ent.Owner, user); + _entityStorage.OpenStorage(ent.Owner); + + if (TryComp(ent.Comp.LinkedId, out var expire)) + IdCard.ExpireId((ent.Comp.LinkedId.Value, expire)); + + Dirty(ent); + } + + private void OnExamine(Entity ent, ref ExaminedEvent args) + { + // This component holds the contextual data for the sentence end time and other such things. + if (!TryComp(ent, out var expireIdCard)) + return; + + if (expireIdCard.Permanent) + { + args.PushText(Loc.GetString("genpop-prisoner-id-examine-wait-perm", + ("crime", ent.Comp.Crime))); + } + else + { + if (expireIdCard.Expired) + { + args.PushText(Loc.GetString("genpop-prisoner-id-examine-served", + ("crime", ent.Comp.Crime))); + } + else + { + var sentence = ent.Comp.SentenceDuration; + var served = ent.Comp.SentenceDuration - (expireIdCard.ExpireTime - Timing.CurTime); + + args.PushText(Loc.GetString("genpop-prisoner-id-examine-wait", + ("minutes", served.Minutes), + ("seconds", served.Seconds), + ("sentence", sentence.TotalMinutes), + ("crime", ent.Comp.Crime))); + } + } + } + + protected virtual void CreateId(Entity ent, string name, float sentence, string crime) + { + + } +} diff --git a/Content.Shared/Shuttles/Components/PreventFTLComponent.cs b/Content.Shared/Shuttles/Components/PreventFTLComponent.cs new file mode 100644 index 0000000000..343e1ffb06 --- /dev/null +++ b/Content.Shared/Shuttles/Components/PreventFTLComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Shuttles.Components; + +/// +/// Add to grids that you do not want to FTL, but still might want to pilot. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class PreventFTLComponent : Component; diff --git a/Content.Shared/Shuttles/Systems/SharedShuttleSystem.cs b/Content.Shared/Shuttles/Systems/SharedShuttleSystem.cs index b4034686d9..b9fc68330e 100644 --- a/Content.Shared/Shuttles/Systems/SharedShuttleSystem.cs +++ b/Content.Shared/Shuttles/Systems/SharedShuttleSystem.cs @@ -181,7 +181,7 @@ public abstract partial class SharedShuttleSystem : EntitySystem // Just checks if any grids inside of a buffer range at the target position. _grids.Clear(); - var mapCoordinates = coordinates.ToMap(EntityManager, XformSystem); + var mapCoordinates = XformSystem.ToMapCoordinates(coordinates); var ourPos = Maps.GetGridPosition((shuttleUid, shuttlePhysics, shuttleXform)); diff --git a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs index 374d9b8cbf..4b0fbdcf4b 100644 --- a/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs +++ b/Content.Shared/Silicons/StationAi/SharedStationAiSystem.Held.cs @@ -20,7 +20,7 @@ public abstract partial class SharedStationAiSystem private void InitializeHeld() { SubscribeLocalEvent(OnRadialMessage); - SubscribeLocalEvent(OnMessageAttempt); + SubscribeLocalEvent(OnMessageAttempt); SubscribeLocalEvent>(OnTargetVerbs); SubscribeLocalEvent(OnHeldInteraction); @@ -116,7 +116,7 @@ public abstract partial class SharedStationAiSystem RaiseLocalEvent(target.Value, (object) ev.Event); } - private void OnMessageAttempt(BoundUserInterfaceMessageAttempt ev) + private void OnMessageAttempt(Entity ent, ref BoundUserInterfaceMessageAttempt ev) { if (ev.Actor == ev.Target) return; diff --git a/Content.Shared/Slippery/SlidingSystem.cs b/Content.Shared/Slippery/SlidingSystem.cs index d44ddc883b..dde9bb6ab0 100644 --- a/Content.Shared/Slippery/SlidingSystem.cs +++ b/Content.Shared/Slippery/SlidingSystem.cs @@ -11,20 +11,11 @@ public sealed class SlidingSystem : EntitySystem { base.Initialize(); - SubscribeLocalEvent(OnSlideAttempt); SubscribeLocalEvent(OnStand); SubscribeLocalEvent(OnStartCollide); SubscribeLocalEvent(OnEndCollide); } - /// - /// Modify the friction by the frictionModifier stored on the component. - /// - private void OnSlideAttempt(EntityUid uid, SlidingComponent component, ref TileFrictionEvent args) - { - args.Modifier = component.FrictionModifier; - } - /// /// Remove the component when the entity stands up again. /// @@ -38,11 +29,10 @@ public sealed class SlidingSystem : EntitySystem /// private void OnStartCollide(EntityUid uid, SlidingComponent component, ref StartCollideEvent args) { - if (!TryComp(args.OtherEntity, out var slippery) || !slippery.SuperSlippery) + if (!TryComp(args.OtherEntity, out var slippery) || !slippery.SlipData.SuperSlippery) return; component.CollidingEntities.Add(args.OtherEntity); - component.FrictionModifier = 0; Dirty(uid, component); } @@ -55,7 +45,7 @@ public sealed class SlidingSystem : EntitySystem return; if (component.CollidingEntities.Count == 0) - component.FrictionModifier = SharedStunSystem.KnockDownModifier; + RemComp(uid); Dirty(uid, component); } diff --git a/Content.Shared/Slippery/SlipperyComponent.cs b/Content.Shared/Slippery/SlipperyComponent.cs index a6bf0fce91..f6b6dd0b35 100644 --- a/Content.Shared/Slippery/SlipperyComponent.cs +++ b/Content.Shared/Slippery/SlipperyComponent.cs @@ -1,6 +1,7 @@ using Content.Shared.StepTrigger.Components; using Robust.Shared.Audio; using Robust.Shared.GameStates; +using Robust.Shared.Serialization; namespace Content.Shared.Slippery { @@ -13,8 +14,6 @@ namespace Content.Shared.Slippery [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class SlipperyComponent : Component { - public const float DefaultParalyzeTime = 1.5f; - public const float DefaultLaunchForwardsMultiplier = 1.5f; /// /// Path to the sound to be played when a mob slips. /// @@ -23,25 +22,47 @@ namespace Content.Shared.Slippery public SoundSpecifier SlipSound = new SoundPathSpecifier("/Audio/Effects/slip.ogg"); /// - /// How many seconds the mob will be paralyzed for. + /// Loads the data needed to determine how slippery something is. /// [DataField, AutoNetworkedField] - [Access(Other = AccessPermissions.ReadWrite)] - public float ParalyzeTime = DefaultParalyzeTime; + public SlipperyEffectEntry SlipData = new(); + } + /// + /// Stores the data for slipperiness that way reagents and this component can use it. + /// + [DataDefinition, Serializable, NetSerializable] + public sealed partial class SlipperyEffectEntry + { + /// + /// How many seconds the mob will be paralyzed for. + /// + [DataField] + public TimeSpan ParalyzeTime = TimeSpan.FromSeconds(1.5); /// /// The entity's speed will be multiplied by this to slip it forwards. /// - [DataField, AutoNetworkedField] - [Access(Other = AccessPermissions.ReadWrite)] - public float LaunchForwardsMultiplier = DefaultLaunchForwardsMultiplier; + [DataField] + public float LaunchForwardsMultiplier = 1.5f; + + /// + /// Minimum speed entity must be moving to slip. + /// + [DataField] + public float RequiredSlipSpeed = 3.5f; /// /// If this is true, any slipping entity loses its friction until /// it's not colliding with any SuperSlippery entities anymore. + /// They also will fail any attempts to stand up unless they have no-slips. /// - [DataField, AutoNetworkedField] - [Access(Other = AccessPermissions.ReadWrite)] + [DataField] public bool SuperSlippery; + + /// + /// This is used to store the friction modifier that is used on a sliding entity. + /// + [DataField] + public float SlipFriction; } } diff --git a/Content.Shared/Slippery/SlipperySystem.cs b/Content.Shared/Slippery/SlipperySystem.cs index acf120ad1b..4da347acbd 100644 --- a/Content.Shared/Slippery/SlipperySystem.cs +++ b/Content.Shared/Slippery/SlipperySystem.cs @@ -39,7 +39,6 @@ public sealed class SlipperySystem : EntitySystem SubscribeLocalEvent(OnNoSlipAttempt); SubscribeLocalEvent(OnSlowedOverSlipAttempt); SubscribeLocalEvent(OnThrownSlipAttempt); - // as long as slip-resistant mice are never added, this should be fine (otherwise a mouse-hat will transfer it's power to the wearer). SubscribeLocalEvent>((e, c, ev) => OnNoSlipAttempt(e, c, ev.Args)); SubscribeLocalEvent>((e, c, ev) => OnSlowedOverSlipAttempt(e, c, ev.Args)); SubscribeLocalEvent>(OnGetSlowedOverSlipperyModifier); @@ -93,7 +92,7 @@ public sealed class SlipperySystem : EntitySystem public void TrySlip(EntityUid uid, SlipperyComponent component, EntityUid other, bool requiresContact = true) { - if (HasComp(other) && !component.SuperSlippery) + if (HasComp(other) && !component.SlipData.SuperSlippery) return; var attemptEv = new SlipAttemptEvent(); @@ -114,9 +113,9 @@ public sealed class SlipperySystem : EntitySystem if (TryComp(other, out PhysicsComponent? physics) && !HasComp(other)) { - _physics.SetLinearVelocity(other, physics.LinearVelocity * component.LaunchForwardsMultiplier, body: physics); + _physics.SetLinearVelocity(other, physics.LinearVelocity * component.SlipData.LaunchForwardsMultiplier, body: physics); - if (component.SuperSlippery && requiresContact) + if (component.SlipData.SuperSlippery && requiresContact) { var sliding = EnsureComp(other); sliding.CollidingEntities.Add(uid); @@ -126,7 +125,7 @@ public sealed class SlipperySystem : EntitySystem var playSound = !_statusEffects.HasStatusEffect(other, "KnockedDown"); - _stun.TryParalyze(other, TimeSpan.FromSeconds(component.ParalyzeTime), true); + _stun.TryParalyze(other, component.SlipData.ParalyzeTime, true); // Preventing from playing the slip sound when you are already knocked down. if (playSound) diff --git a/Content.Shared/Smoking/BurningComponent.cs b/Content.Shared/Smoking/BurningComponent.cs new file mode 100644 index 0000000000..bbb9765174 --- /dev/null +++ b/Content.Shared/Smoking/BurningComponent.cs @@ -0,0 +1,12 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Smoking; + +/// +/// Marker component used to track active burning objects. +/// +/// +/// Right now only smoking uses this, but flammable could use it as well in the future. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class BurningComponent : Component; diff --git a/Content.Shared/Spawning/EntitySystemExtensions.cs b/Content.Shared/Spawning/EntitySystemExtensions.cs index 507a0f4aa2..8ee0d3fc45 100644 --- a/Content.Shared/Spawning/EntitySystemExtensions.cs +++ b/Content.Shared/Spawning/EntitySystemExtensions.cs @@ -1,4 +1,4 @@ -using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.CodeAnalysis; using Content.Shared.Physics; using Robust.Shared.Map; using Robust.Shared.Physics.Systems; @@ -16,7 +16,7 @@ namespace Content.Shared.Spawning SharedPhysicsSystem? physicsManager = null) { physicsManager ??= entityManager.System(); - var mapCoordinates = coordinates.ToMap(entityManager, entityManager.System()); + var mapCoordinates = entityManager.System().ToMapCoordinates(coordinates); return entityManager.SpawnIfUnobstructed(prototypeName, mapCoordinates, collisionLayer, box, physicsManager); } diff --git a/Content.Shared/Station/SharedStationSpawningSystem.cs b/Content.Shared/Station/SharedStationSpawningSystem.cs index c57e727018..e4bf5802a5 100644 --- a/Content.Shared/Station/SharedStationSpawningSystem.cs +++ b/Content.Shared/Station/SharedStationSpawningSystem.cs @@ -97,14 +97,9 @@ public abstract class SharedStationSpawningSystem : EntitySystem private void CP14EquipStartingActions(EntityUid entity, LoadoutPrototype loadout) { - foreach (var action in loadout.Actions) + foreach (var skill in loadout.Skills) { - _action.AddAction(entity, action); - } - - foreach (var tree in loadout.SkillTree) - { - _skill.TryAddExperience(entity, tree.Key, tree.Value); + _skill.TryAddSkill(entity, skill, free: true); } } diff --git a/Content.Shared/StepTrigger/Components/StepTriggerComponent.cs b/Content.Shared/StepTrigger/Components/StepTriggerComponent.cs index 87d6d37a7f..b8483d021a 100644 --- a/Content.Shared/StepTrigger/Components/StepTriggerComponent.cs +++ b/Content.Shared/StepTrigger/Components/StepTriggerComponent.cs @@ -8,7 +8,6 @@ namespace Content.Shared.StepTrigger.Components; [Access(typeof(StepTriggerSystem))] public sealed partial class StepTriggerComponent : Component { - public const float DefaultRequiredTriggeredSpeed = 3.5f; /// /// List of entities that are currently colliding with the entity. /// @@ -38,7 +37,7 @@ public sealed partial class StepTriggerComponent : Component /// Entities will only be triggered if their speed exceeds this limit. /// [DataField, AutoNetworkedField] - public float RequiredTriggeredSpeed = DefaultRequiredTriggeredSpeed; + public float RequiredTriggeredSpeed = 3.5f; /// /// If any entities occupy the blacklist on the same tile then steptrigger won't work. diff --git a/Content.Shared/Storage/Components/SecretStashComponent.cs b/Content.Shared/Storage/Components/SecretStashComponent.cs index f8fff4c194..54350952a8 100644 --- a/Content.Shared/Storage/Components/SecretStashComponent.cs +++ b/Content.Shared/Storage/Components/SecretStashComponent.cs @@ -9,6 +9,7 @@ using Content.Shared.DoAfter; using Robust.Shared.Serialization; using Robust.Shared.Audio; using Content.Shared.Whitelist; +using Content.Shared.Damage; namespace Content.Shared.Storage.Components { @@ -60,6 +61,12 @@ namespace Content.Shared.Storage.Components [DataField] public string? SecretStashName; + /// + /// How much damage is delt to something after eating a secret stash that contains an item. + /// + [DataField] + public DamageSpecifier? DamageEatenItemInside; + /// /// Container used to keep secret stash item. /// diff --git a/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs b/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs index fe04d5e9ca..ceb9b1462b 100644 --- a/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs +++ b/Content.Shared/Storage/Components/SharedEntityStorageComponent.cs @@ -159,7 +159,7 @@ public readonly record struct StorageBeforeOpenEvent; public readonly record struct StorageAfterOpenEvent; [ByRefEvent] -public record struct StorageCloseAttemptEvent(bool Cancelled = false); +public record struct StorageCloseAttemptEvent(EntityUid? User, bool Cancelled = false); [ByRefEvent] public readonly record struct StorageBeforeCloseEvent(HashSet Contents, HashSet BypassChecks); diff --git a/Content.Shared/Storage/EntitySystems/DumpableSystem.cs b/Content.Shared/Storage/EntitySystems/DumpableSystem.cs index 93c4b69e4d..d0ad27eee5 100644 --- a/Content.Shared/Storage/EntitySystems/DumpableSystem.cs +++ b/Content.Shared/Storage/EntitySystems/DumpableSystem.cs @@ -1,5 +1,7 @@ using System.Linq; using Content.Shared.Disposal; +using Content.Shared.Disposal.Components; +using Content.Shared.Disposal.Unit; using Content.Shared.DoAfter; using Content.Shared.Interaction; using Content.Shared.Item; @@ -40,7 +42,7 @@ public sealed class DumpableSystem : EntitySystem if (!args.CanReach || args.Handled) return; - if (!_disposalUnitSystem.HasDisposals(args.Target) && !HasComp(args.Target)) + if (!HasComp(args.Target) && !HasComp(args.Target)) return; if (!TryComp(uid, out var storage)) @@ -81,7 +83,7 @@ public sealed class DumpableSystem : EntitySystem if (!TryComp(uid, out var storage) || !storage.Container.ContainedEntities.Any()) return; - if (_disposalUnitSystem.HasDisposals(args.Target)) + if (HasComp(args.Target)) { UtilityVerb verb = new() { @@ -146,7 +148,7 @@ public sealed class DumpableSystem : EntitySystem var dumped = false; - if (_disposalUnitSystem.HasDisposals(args.Args.Target)) + if (HasComp(args.Args.Target)) { dumped = true; diff --git a/Content.Shared/Storage/EntitySystems/SecretStashSystem.cs b/Content.Shared/Storage/EntitySystems/SecretStashSystem.cs index f13303d733..51615c5afa 100644 --- a/Content.Shared/Storage/EntitySystems/SecretStashSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SecretStashSystem.cs @@ -1,4 +1,5 @@ using Content.Shared.Construction.EntitySystems; +using Content.Shared.Damage; using Content.Shared.Destructible; using Content.Shared.Hands.Components; using Content.Shared.Hands.EntitySystems; @@ -6,6 +7,7 @@ using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Item; using Content.Shared.Materials; +using Content.Shared.Nutrition; using Content.Shared.Popups; using Content.Shared.Storage.Components; using Content.Shared.Tools.EntitySystems; @@ -30,6 +32,7 @@ public sealed class SecretStashSystem : EntitySystem [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly ToolOpenableSystem _toolOpenableSystem = default!; [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private readonly DamageableSystem _damageableSystem = default!; public override void Initialize() { @@ -38,6 +41,7 @@ public sealed class SecretStashSystem : EntitySystem SubscribeLocalEvent(OnDestroyed); SubscribeLocalEvent(OnReclaimed); SubscribeLocalEvent(OnInteractUsing, after: new[] { typeof(ToolOpenableSystem), typeof(AnchorableSystem) }); + SubscribeLocalEvent(OnEaten); SubscribeLocalEvent(OnInteractHand); SubscribeLocalEvent>(OnGetVerb); } @@ -57,6 +61,14 @@ public sealed class SecretStashSystem : EntitySystem DropContentsAndAlert(entity, args.ReclaimerCoordinates); } + private void OnEaten(Entity entity, ref AfterFullyEatenEvent args) + { + // TODO: When newmed is finished should do damage to teeth (Or something like that!) + var damage = entity.Comp.DamageEatenItemInside; + if (HasItemInside(entity) && damage != null) + _damageableSystem.TryChangeDamage(args.User, damage, true); + } + private void OnInteractUsing(Entity entity, ref InteractUsingEvent args) { if (args.Handled || !IsStashOpen(entity)) diff --git a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs index abd08c7459..75088bfeec 100644 --- a/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedEntityStorageSystem.cs @@ -181,7 +181,7 @@ public abstract class SharedEntityStorageSystem : EntitySystem if (component.Open) { - TryCloseStorage(target); + TryCloseStorage(target, user); } else { @@ -360,9 +360,9 @@ public abstract class SharedEntityStorageSystem : EntitySystem return true; } - public bool TryCloseStorage(EntityUid target) + public bool TryCloseStorage(EntityUid target, EntityUid? user = null) { - if (!CanClose(target)) + if (!CanClose(target, user)) { return false; } @@ -413,9 +413,9 @@ public abstract class SharedEntityStorageSystem : EntitySystem return !ev.Cancelled; } - public bool CanClose(EntityUid target, bool silent = false) + public bool CanClose(EntityUid target, EntityUid? user = null, bool silent = false) { - var ev = new StorageCloseAttemptEvent(); + var ev = new StorageCloseAttemptEvent(user); RaiseLocalEvent(target, ref ev, silent); return !ev.Cancelled; diff --git a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs index 9463d7b211..a3b0e13a6f 100644 --- a/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs +++ b/Content.Shared/Storage/EntitySystems/SharedStorageSystem.cs @@ -16,6 +16,7 @@ using Content.Shared.Interaction; using Content.Shared.Interaction.Components; using Content.Shared.Inventory; using Content.Shared.Item; +using Content.Shared.Item.ItemToggle.Components; using Content.Shared.Lock; using Content.Shared.Materials; using Content.Shared.Placeable; @@ -40,6 +41,7 @@ using Robust.Shared.Random; using Robust.Shared.Serialization; using Robust.Shared.Timing; using Robust.Shared.Utility; +using Content.Shared.Rounding; namespace Content.Shared.Storage.EntitySystems; @@ -142,16 +144,16 @@ public abstract class SharedStorageSystem : EntitySystem SubscribeLocalEvent(OnImplantActivate); SubscribeLocalEvent(AfterInteract); SubscribeLocalEvent(OnDestroy); - SubscribeLocalEvent(OnBoundUIAttempt); + SubscribeLocalEvent(OnBoundUIAttempt); SubscribeLocalEvent(OnBoundUIOpen); SubscribeLocalEvent(OnLockToggled); - SubscribeLocalEvent(OnStackCountChanged); - SubscribeLocalEvent(OnEntInserted); SubscribeLocalEvent(OnEntRemoved); SubscribeLocalEvent(OnInsertAttempt); - SubscribeLocalEvent(OnDoAfter); + SubscribeLocalEvent(OnReclaimed); + + SubscribeLocalEvent(OnStackCountChanged); SubscribeAllEvent(OnStorageNested); SubscribeAllEvent(OnStorageTransfer); @@ -160,7 +162,7 @@ public abstract class SharedStorageSystem : EntitySystem SubscribeAllEvent(OnInsertItemIntoLocation); SubscribeAllEvent(OnSaveItemLocation); - SubscribeLocalEvent(OnReclaimed); + SubscribeLocalEvent(OnItemSizeChanged); CommandBinds.Builder .Bind(ContentKeyFunctions.OpenBackpack, InputCmdHandler.FromDelegate(HandleOpenBackpack, handle: false)) @@ -172,6 +174,21 @@ public abstract class SharedStorageSystem : EntitySystem UpdatePrototypeCache(); } + private void OnItemSizeChanged(ref ItemSizeChangedEvent ev) + { + var itemEnt = new Entity(ev.Entity, null); + + if (!TryGetStorageLocation(itemEnt, out var container, out var storage, out var loc)) + { + return; + } + + if (!ItemFitsInGridLocation((itemEnt.Owner, itemEnt.Comp), (container.Owner, storage), loc)) + { + ContainerSystem.Remove(itemEnt.Owner, container, force: true); + } + } + private void OnNestedStorageCvar(bool obj) { NestedStorage = obj; @@ -321,6 +338,26 @@ public abstract class SharedStorageSystem : EntitySystem args.Verbs.Add(verb); } + /// + /// Tries to get the storage location of an item. + /// + public bool TryGetStorageLocation(Entity itemEnt, [NotNullWhen(true)] out BaseContainer? container, out StorageComponent? storage, out ItemStorageLocation loc) + { + loc = default; + storage = null; + + if (!ContainerSystem.TryGetContainingContainer(itemEnt, out container) || + container.ID != StorageComponent.ContainerId || + !TryComp(container.Owner, out storage) || + !_itemQuery.Resolve(itemEnt, ref itemEnt.Comp, false)) + { + return false; + } + + loc = storage.StoredItems[itemEnt]; + return true; + } + public void OpenStorageUI(EntityUid uid, EntityUid actor, StorageComponent? storageComp = null, bool silent = true) { // Handle recursively opening nested storages. @@ -721,14 +758,23 @@ public abstract class SharedStorageSystem : EntitySystem private void OnStorageTransfer(StorageTransferItemEvent msg, EntitySessionEventArgs args) { - if (!TryGetEntity(msg.ItemEnt, out var itemEnt)) + if (!TryGetEntity(msg.ItemEnt, out var itemUid) || !TryComp(itemUid, out ItemComponent? itemComp)) return; var localPlayer = args.SenderSession.AttachedEntity; + var itemEnt = new Entity(itemUid.Value, itemComp); - if (!TryComp(localPlayer, out HandsComponent? handsComp) || !_sharedHandsSystem.TryPickup(localPlayer.Value, itemEnt.Value, handsComp: handsComp, animate: false)) + // Validate the source storage + if (!TryGetStorageLocation(itemEnt, out var container, out _, out _) || + !ValidateInput(args, GetNetEntity(container.Owner), out _, out _)) + { + return; + } + + if (!TryComp(localPlayer, out HandsComponent? handsComp) || !_sharedHandsSystem.TryPickup(localPlayer.Value, itemEnt, handsComp: handsComp, animate: false)) return; + // Validate the target storage if (!ValidateInput(args, msg.StorageEnt, msg.ItemEnt, out var player, out var storage, out var item, held: true)) return; @@ -764,7 +810,7 @@ public abstract class SharedStorageSystem : EntitySystem UpdateAppearance((ent.Owner, ent.Comp, null)); } - private void OnBoundUIAttempt(BoundUserInterfaceMessageAttempt args) + private void OnBoundUIAttempt(Entity ent, ref BoundUserInterfaceMessageAttempt args) { if (args.UiKey is not StorageComponent.StorageUiKey.Key || _openStorageLimit == -1 || @@ -883,6 +929,12 @@ public abstract class SharedStorageSystem : EntitySystem _appearance.SetData(uid, StorageVisuals.Open, isOpen, appearance); _appearance.SetData(uid, SharedBagOpenVisuals.BagState, isOpen ? SharedBagState.Open : SharedBagState.Closed, appearance); + if (TryComp(uid, out var storageFillVisualizerComp)) + { + var level = ContentHelpers.RoundToLevels(used, capacity, storageFillVisualizerComp.MaxFillLevels); + _appearance.SetData(uid, StorageFillVisuals.FillLevel, level, appearance); + } + // HideClosedStackVisuals true sets the StackVisuals.Hide to the open state of the storage. // This is for containers that only show their contents when open. (e.g. donut boxes) if (storage.HideStackVisualsWhenClosed) @@ -1521,6 +1573,8 @@ public abstract class SharedStorageSystem : EntitySystem } } + + private void HandleOpenBackpack(ICommonSession? session) { HandleToggleSlotUI(session, "back"); diff --git a/Content.Shared/Strip/SharedStrippableSystem.cs b/Content.Shared/Strip/SharedStrippableSystem.cs index 3645b5a0b9..2b971ae7bb 100644 --- a/Content.Shared/Strip/SharedStrippableSystem.cs +++ b/Content.Shared/Strip/SharedStrippableSystem.cs @@ -23,6 +23,8 @@ namespace Content.Shared.Strip; public abstract class SharedStrippableSystem : EntitySystem { + [Dependency] private readonly SharedInteractionSystem _interactionSystem = default!; + [Dependency] private readonly SharedUserInterfaceSystem _ui = default!; [Dependency] private readonly InventorySystem _inventorySystem = default!; @@ -208,7 +210,10 @@ public abstract class SharedStrippableSystem : EntitySystem var (time, stealth) = GetStripTimeModifiers(user, target, held, slotDef.StripTime); if (!stealth) - _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner-insert", ("user", Identity.Entity(user, EntityManager)), ("item", user.Comp.ActiveHandEntity!.Value)), target, target, PopupType.Large); + _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner-insert", + ("user", Identity.Entity(user, EntityManager)), + ("item", user.Comp.ActiveHandEntity!.Value)), + target, target, PopupType.Large); var prefix = stealth ? "stealthily " : ""; _adminLogger.Add(LogType.Stripping, LogImpact.Low, $"{ToPrettyString(user):actor} is trying to {prefix}place the item {ToPrettyString(held):item} in {ToPrettyString(target):target}'s {slot} slot"); @@ -244,7 +249,7 @@ public abstract class SharedStrippableSystem : EntitySystem if (!_handsSystem.TryDrop(user, handsComp: user.Comp)) return; - _inventorySystem.TryEquip(user, target, held, slot); + _inventorySystem.TryEquip(user, target, held, slot, triggerHandContact: true); _adminLogger.Add(LogType.Stripping, LogImpact.Medium, $"{ToPrettyString(user):actor} has placed the item {ToPrettyString(held):item} in {ToPrettyString(target):target}'s {slot} slot"); } @@ -300,12 +305,17 @@ public abstract class SharedStrippableSystem : EntitySystem if (IsStripHidden(slotDef, user)) _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner-hidden", ("slot", slot)), target, target, PopupType.Large); else - _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner", ("user", Identity.Entity(user, EntityManager)), ("item", item)), target, target, PopupType.Large); + _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner", + ("user", Identity.Entity(user, EntityManager)), + ("item", item)), + target, target, PopupType.Large); } var prefix = stealth ? "stealthily " : ""; _adminLogger.Add(LogType.Stripping, LogImpact.Low, $"{ToPrettyString(user):actor} is trying to {prefix}strip the item {ToPrettyString(item):item} from {ToPrettyString(target):target}'s {slot} slot"); + _interactionSystem.DoContactInteraction(user, item); + var doAfterArgs = new DoAfterArgs(EntityManager, user, time, new StrippableDoAfterEvent(false, true, slot), user, target, item) { Hidden = stealth, @@ -333,7 +343,7 @@ public abstract class SharedStrippableSystem : EntitySystem if (!CanStripRemoveInventory(user, target, item, slot)) return; - if (!_inventorySystem.TryUnequip(user, target, slot)) + if (!_inventorySystem.TryUnequip(user, target, slot, triggerHandContact: true)) return; RaiseLocalEvent(item, new DroppedEvent(user), true); // Gas tank internals etc. @@ -404,7 +414,10 @@ public abstract class SharedStrippableSystem : EntitySystem var (time, stealth) = GetStripTimeModifiers(user, target, null, targetStrippable.HandStripDelay); if (!stealth) - _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner-insert-hand", ("user", Identity.Entity(user, EntityManager)), ("item", user.Comp.ActiveHandEntity!.Value)), target, target, PopupType.Large); + _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner-insert-hand", + ("user", Identity.Entity(user, EntityManager)), + ("item", user.Comp.ActiveHandEntity!.Value)), + target, target, PopupType.Large); var prefix = stealth ? "stealthily " : ""; _adminLogger.Add(LogType.Stripping, LogImpact.Low, $"{ToPrettyString(user):actor} is trying to {prefix}place the item {ToPrettyString(held):item} in {ToPrettyString(target):target}'s hands"); @@ -506,11 +519,16 @@ public abstract class SharedStrippableSystem : EntitySystem var (time, stealth) = GetStripTimeModifiers(user, target, null, targetStrippable.HandStripDelay); if (!stealth) - _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner", ("user", Identity.Entity(user, EntityManager)), ("item", item)), target, target); + _popupSystem.PopupEntity(Loc.GetString("strippable-component-alert-owner", + ("user", Identity.Entity(user, EntityManager)), + ("item", item)), + target, target); var prefix = stealth ? "stealthily " : ""; _adminLogger.Add(LogType.Stripping, LogImpact.Low, $"{ToPrettyString(user):actor} is trying to {prefix}strip the item {ToPrettyString(item):item} from {ToPrettyString(target):target}'s hands"); + _interactionSystem.DoContactInteraction(user, item); + var doAfterArgs = new DoAfterArgs(EntityManager, user, time, new StrippableDoAfterEvent(false, false, handName), user, target, item) { Hidden = stealth, diff --git a/Content.Shared/Tabletop/SharedTabletopSystem.cs b/Content.Shared/Tabletop/SharedTabletopSystem.cs index afa77a643a..7a2540b11d 100644 --- a/Content.Shared/Tabletop/SharedTabletopSystem.cs +++ b/Content.Shared/Tabletop/SharedTabletopSystem.cs @@ -42,7 +42,7 @@ namespace Content.Shared.Tabletop // Move the entity and dirty it (we use the map ID from the entity so noone can try to be funny and move the item to another map) var transform = EntityManager.GetComponent(moved); Transforms.SetParent(moved, transform, _mapMan.GetMapEntityId(transform.MapID)); - Transforms.SetLocalPositionNoLerp(transform, msg.Coordinates.Position); + Transforms.SetLocalPositionNoLerp(moved, msg.Coordinates.Position, transform); } private void OnDraggingPlayerChanged(TabletopDraggingPlayerChangedEvent msg, EntitySessionEventArgs args) diff --git a/Content.Shared/Tag/TagSystem.cs b/Content.Shared/Tag/TagSystem.cs index f1f620a694..b75e2a4af1 100644 --- a/Content.Shared/Tag/TagSystem.cs +++ b/Content.Shared/Tag/TagSystem.cs @@ -50,7 +50,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool AddTag(EntityUid entityUid, ProtoId tag) + public bool AddTag(EntityUid entityUid, [ForbidLiteral] ProtoId tag) { return AddTag((entityUid, EnsureComp(entityUid)), tag); } @@ -64,9 +64,9 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool AddTags(EntityUid entityUid, params ProtoId[] tags) + public bool AddTags(EntityUid entityUid, [ForbidLiteral] params ProtoId[] tags) { - return AddTags(entityUid, (IEnumerable>)tags); + return AddTags(entityUid, (IEnumerable>)tags); } /// @@ -78,7 +78,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool AddTags(EntityUid entityUid, IEnumerable> tags) + public bool AddTags(EntityUid entityUid, [ForbidLiteral] IEnumerable> tags) { return AddTags((entityUid, EnsureComp(entityUid)), tags); } @@ -93,7 +93,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool TryAddTag(EntityUid entityUid, ProtoId tag) + public bool TryAddTag(EntityUid entityUid, [ForbidLiteral] ProtoId tag) { return _tagQuery.TryComp(entityUid, out var component) && AddTag((entityUid, component), tag); @@ -109,7 +109,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool TryAddTags(EntityUid entityUid, params ProtoId[] tags) + public bool TryAddTags(EntityUid entityUid, [ForbidLiteral] params ProtoId[] tags) { return TryAddTags(entityUid, (IEnumerable>)tags); } @@ -124,7 +124,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool TryAddTags(EntityUid entityUid, IEnumerable> tags) + public bool TryAddTags(EntityUid entityUid, [ForbidLiteral] IEnumerable> tags) { return _tagQuery.TryComp(entityUid, out var component) && AddTags((entityUid, component), tags); @@ -139,7 +139,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool HasTag(EntityUid entityUid, ProtoId tag) + public bool HasTag(EntityUid entityUid, [ForbidLiteral] ProtoId tag) { return _tagQuery.TryComp(entityUid, out var component) && HasTag(component, tag); @@ -166,7 +166,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAllTags(EntityUid entityUid, params ProtoId[] tags) + public bool HasAllTags(EntityUid entityUid, [ForbidLiteral] params ProtoId[] tags) { return _tagQuery.TryComp(entityUid, out var component) && HasAllTags(component, tags); @@ -181,7 +181,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAllTags(EntityUid entityUid, HashSet> tags) + public bool HasAllTags(EntityUid entityUid, [ForbidLiteral] HashSet> tags) { return _tagQuery.TryComp(entityUid, out var component) && HasAllTags(component, tags); @@ -196,7 +196,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAllTags(EntityUid entityUid, List> tags) + public bool HasAllTags(EntityUid entityUid, [ForbidLiteral] List> tags) { return _tagQuery.TryComp(entityUid, out var component) && HasAllTags(component, tags); @@ -211,7 +211,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAllTags(EntityUid entityUid, IEnumerable> tags) + public bool HasAllTags(EntityUid entityUid, [ForbidLiteral] IEnumerable> tags) { return _tagQuery.TryComp(entityUid, out var component) && HasAllTags(component, tags); @@ -226,7 +226,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool HasAnyTag(EntityUid entityUid, ProtoId tag) => + public bool HasAnyTag(EntityUid entityUid, [ForbidLiteral] ProtoId tag) => HasTag(entityUid, tag); /// @@ -238,7 +238,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAnyTag(EntityUid entityUid, params ProtoId[] tags) + public bool HasAnyTag(EntityUid entityUid, [ForbidLiteral] params ProtoId[] tags) { return _tagQuery.TryComp(entityUid, out var component) && HasAnyTag(component, tags); @@ -253,7 +253,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAnyTag(EntityUid entityUid, HashSet> tags) + public bool HasAnyTag(EntityUid entityUid, [ForbidLiteral] HashSet> tags) { return _tagQuery.TryComp(entityUid, out var component) && HasAnyTag(component, tags); @@ -268,7 +268,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAnyTag(EntityUid entityUid, List> tags) + public bool HasAnyTag(EntityUid entityUid, [ForbidLiteral] List> tags) { return _tagQuery.TryComp(entityUid, out var component) && HasAnyTag(component, tags); @@ -283,7 +283,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAnyTag(EntityUid entityUid, IEnumerable> tags) + public bool HasAnyTag(EntityUid entityUid, [ForbidLiteral] IEnumerable> tags) { return _tagQuery.TryComp(entityUid, out var component) && HasAnyTag(component, tags); @@ -298,7 +298,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool HasTag(TagComponent component, ProtoId tag) + public bool HasTag(TagComponent component, [ForbidLiteral] ProtoId tag) { #if DEBUG AssertValidTag(tag); @@ -315,7 +315,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool HasAllTags(TagComponent component, ProtoId tag) => + public bool HasAllTags(TagComponent component, [ForbidLiteral] ProtoId tag) => HasTag(component, tag); /// @@ -327,7 +327,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAllTags(TagComponent component, params ProtoId[] tags) + public bool HasAllTags(TagComponent component, [ForbidLiteral] params ProtoId[] tags) { foreach (var tag in tags) { @@ -350,7 +350,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAllTagsArray(TagComponent component, ProtoId[] tags) + public bool HasAllTagsArray(TagComponent component, [ForbidLiteral] ProtoId[] tags) { foreach (var tag in tags) { @@ -373,7 +373,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAllTags(TagComponent component, List> tags) + public bool HasAllTags(TagComponent component, [ForbidLiteral] List> tags) { foreach (var tag in tags) { @@ -396,7 +396,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAllTags(TagComponent component, HashSet> tags) + public bool HasAllTags(TagComponent component, [ForbidLiteral] HashSet> tags) { foreach (var tag in tags) { @@ -419,7 +419,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAllTags(TagComponent component, IEnumerable> tags) + public bool HasAllTags(TagComponent component, [ForbidLiteral] IEnumerable> tags) { foreach (var tag in tags) { @@ -442,7 +442,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool HasAnyTag(TagComponent component, ProtoId tag) => + public bool HasAnyTag(TagComponent component, [ForbidLiteral] ProtoId tag) => HasTag(component, tag); /// @@ -454,7 +454,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAnyTag(TagComponent component, params ProtoId[] tags) + public bool HasAnyTag(TagComponent component, [ForbidLiteral] params ProtoId[] tags) { foreach (var tag in tags) { @@ -477,7 +477,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAnyTag(TagComponent component, HashSet> tags) + public bool HasAnyTag(TagComponent component, [ForbidLiteral] HashSet> tags) { foreach (var tag in tags) { @@ -500,7 +500,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAnyTag(TagComponent component, List> tags) + public bool HasAnyTag(TagComponent component, [ForbidLiteral] List> tags) { foreach (var tag in tags) { @@ -523,7 +523,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool HasAnyTag(TagComponent component, IEnumerable> tags) + public bool HasAnyTag(TagComponent component, [ForbidLiteral] IEnumerable> tags) { foreach (var tag in tags) { @@ -546,7 +546,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool RemoveTag(EntityUid entityUid, ProtoId tag) + public bool RemoveTag(EntityUid entityUid, [ForbidLiteral] ProtoId tag) { return _tagQuery.TryComp(entityUid, out var component) && RemoveTag((entityUid, component), tag); @@ -561,7 +561,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool RemoveTags(EntityUid entityUid, params ProtoId[] tags) + public bool RemoveTags(EntityUid entityUid, [ForbidLiteral] params ProtoId[] tags) { return RemoveTags(entityUid, (IEnumerable>)tags); } @@ -575,7 +575,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool RemoveTags(EntityUid entityUid, IEnumerable> tags) + public bool RemoveTags(EntityUid entityUid, [ForbidLiteral] IEnumerable> tags) { return _tagQuery.TryComp(entityUid, out var component) && RemoveTags((entityUid, component), tags); @@ -590,7 +590,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool AddTag(Entity entity, ProtoId tag) + public bool AddTag(Entity entity, [ForbidLiteral] ProtoId tag) { #if DEBUG AssertValidTag(tag); @@ -611,7 +611,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool AddTags(Entity entity, params ProtoId[] tags) + public bool AddTags(Entity entity, [ForbidLiteral] params ProtoId[] tags) { return AddTags(entity, (IEnumerable>)tags); } @@ -625,7 +625,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool AddTags(Entity entity, IEnumerable> tags) + public bool AddTags(Entity entity, [ForbidLiteral] IEnumerable> tags) { var update = false; foreach (var tag in tags) @@ -653,7 +653,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if no exists with the given id. /// - public bool RemoveTag(Entity entity, ProtoId tag) + public bool RemoveTag(Entity entity, [ForbidLiteral] ProtoId tag) { #if DEBUG AssertValidTag(tag); @@ -675,7 +675,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool RemoveTags(Entity entity, params ProtoId[] tags) + public bool RemoveTags(Entity entity, [ForbidLiteral] params ProtoId[] tags) { return RemoveTags(entity, (IEnumerable>)tags); } @@ -689,7 +689,7 @@ public sealed class TagSystem : EntitySystem /// /// Thrown if one of the ids represents an unregistered . /// - public bool RemoveTags(Entity entity, IEnumerable> tags) + public bool RemoveTags(Entity entity, [ForbidLiteral] IEnumerable> tags) { var update = false; foreach (var tag in tags) diff --git a/Content.Shared/Teleportation/Components/TeleportLocationsComponent.cs b/Content.Shared/Teleportation/Components/TeleportLocationsComponent.cs new file mode 100644 index 0000000000..ef5d6c5b2c --- /dev/null +++ b/Content.Shared/Teleportation/Components/TeleportLocationsComponent.cs @@ -0,0 +1,66 @@ +using Content.Shared.Teleportation.Systems; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.Teleportation.Components; + +// TODO: In the future assimilate ghost UI to use this. +/// +/// Used where you want an entity to display a list of player-safe teleport locations +/// They teleport to the location clicked +/// Looks for non Ghost-Only WarpPointComponents +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedTeleportLocationsSystem)), AutoGenerateComponentState] +public sealed partial class TeleportLocationsComponent : Component +{ + /// + /// List of available warp points + /// + [DataField, AutoNetworkedField] + public HashSet AvailableWarps = new(); + + /// + /// What should spawn as an effect when the user teleports? + /// + [DataField] + public EntProtoId? TeleportEffect; + + /// + /// Should this close the BUI after teleport? + /// + [DataField] + public bool CloseAfterTeleport; + + /// + /// Name of the Teleport Location menu + /// + [DataField] + public LocId Name; + + /// + /// Should the user have some speech if they teleport? + /// If enabled it will be prepended to the location name. + /// So something like "I am going to" would become "I am going to (Bridge)" + /// + [DataField] + public LocId? Speech; +} + +/// +/// A teleport point, which has a location (the destination) and the entity that it represents. +/// +[Serializable, NetSerializable, DataDefinition] +public partial record struct TeleportPoint +{ + [DataField] + public string Location; + [DataField] + public NetEntity TelePoint; + + public TeleportPoint(string Location, NetEntity TelePoint) + { + this.Location = Location; + this.TelePoint = TelePoint; + } +} diff --git a/Content.Shared/Teleportation/Systems/SharedPortalSystem.cs b/Content.Shared/Teleportation/Systems/SharedPortalSystem.cs index 091bd8808a..5ef7619ceb 100644 --- a/Content.Shared/Teleportation/Systems/SharedPortalSystem.cs +++ b/Content.Shared/Teleportation/Systems/SharedPortalSystem.cs @@ -1,4 +1,4 @@ -using System.Linq; +using System.Linq; using Content.Shared.Ghost; using Content.Shared.Movement.Pulling.Components; using Content.Shared.Movement.Pulling.Systems; @@ -112,7 +112,7 @@ public abstract class SharedPortalSystem : EntitySystem if (TryComp(uid, out var link)) { - if (!link.LinkedEntities.Any()) + if (link.LinkedEntities.Count == 0) return; // client can't predict outside of simple portal-to-portal interactions due to randomness involved @@ -150,7 +150,7 @@ public abstract class SharedPortalSystem : EntitySystem private void OnEndCollide(EntityUid uid, PortalComponent component, ref EndCollideEvent args) { - if (!ShouldCollide(args.OurFixtureId, args.OtherFixtureId,args.OurFixture, args.OtherFixture)) + if (!ShouldCollide(args.OurFixtureId, args.OtherFixtureId, args.OurFixture, args.OtherFixture)) return; var subject = args.OtherEntity; @@ -162,14 +162,14 @@ public abstract class SharedPortalSystem : EntitySystem } } - private void TeleportEntity(EntityUid portal, EntityUid subject, EntityCoordinates target, EntityUid? targetEntity=null, bool playSound=true, + private void TeleportEntity(EntityUid portal, EntityUid subject, EntityCoordinates target, EntityUid? targetEntity = null, bool playSound = true, PortalComponent? portalComponent = null) { if (!Resolve(portal, ref portalComponent)) return; var ourCoords = Transform(portal).Coordinates; - var onSameMap = ourCoords.GetMapId(EntityManager) == target.GetMapId(EntityManager); + var onSameMap = _transform.GetMapId(ourCoords) == _transform.GetMapId(target); var distanceInvalid = portalComponent.MaxTeleportRadius != null && ourCoords.TryDistance(EntityManager, target, out var distance) && distance > portalComponent.MaxTeleportRadius; @@ -228,7 +228,7 @@ public abstract class SharedPortalSystem : EntitySystem { var randVector = _random.NextVector2(component.MaxRandomRadius); newCoords = coords.Offset(randVector); - if (!_lookup.GetEntitiesIntersecting(newCoords.ToMap(EntityManager, _transform), LookupFlags.Static).Any()) + if (!_lookup.AnyEntitiesIntersecting(_transform.ToMapCoordinates(newCoords), LookupFlags.Static)) { break; } diff --git a/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs b/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs new file mode 100644 index 0000000000..eb4be36ced --- /dev/null +++ b/Content.Shared/Teleportation/Systems/SharedTeleportLocationsSystem.cs @@ -0,0 +1,59 @@ +using Content.Shared.Teleportation.Components; +using Content.Shared.Timing; +using Content.Shared.UserInterface; +using Content.Shared.Warps; + +namespace Content.Shared.Teleportation.Systems; + +/// +/// +/// +public abstract partial class SharedTeleportLocationsSystem : EntitySystem +{ + [Dependency] protected readonly UseDelaySystem Delay = default!; + + [Dependency] private readonly SharedUserInterfaceSystem _ui = default!; + [Dependency] private readonly SharedTransformSystem _xform = default!; + + protected const string TeleportDelay = "TeleportDelay"; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnUiOpenAttempt); + SubscribeLocalEvent(OnTeleportToLocationRequest); + } + + private void OnUiOpenAttempt(Entity ent, ref ActivatableUIOpenAttemptEvent args) + { + if (!Delay.IsDelayed(ent.Owner, TeleportDelay)) + return; + + args.Cancel(); + } + + protected virtual void OnTeleportToLocationRequest(Entity ent, ref TeleportLocationDestinationMessage args) + { + if (!TryGetEntity(args.NetEnt, out var telePointEnt) || TerminatingOrDeleted(telePointEnt) || !HasComp(telePointEnt) || Delay.IsDelayed(ent.Owner, TeleportDelay)) + return; + + var comp = ent.Comp; + var originEnt = args.Actor; + var telePointXForm = Transform(telePointEnt.Value); + + SpawnAtPosition(comp.TeleportEffect, Transform(originEnt).Coordinates); + + _xform.SetMapCoordinates(originEnt, _xform.GetMapCoordinates(telePointEnt.Value, telePointXForm)); + + SpawnAtPosition(comp.TeleportEffect, telePointXForm.Coordinates); + + Delay.TryResetDelay(ent.Owner, true, id: TeleportDelay); + + if (!ent.Comp.CloseAfterTeleport) + return; + + // Teleport's done, now tell the BUI to close if needed. + _ui.CloseUi(ent.Owner, TeleportLocationUiKey.Key); + } +} diff --git a/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs b/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs index 0fbaefc31b..69805fd585 100644 --- a/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs +++ b/Content.Shared/Teleportation/Systems/SwapTeleporterSystem.cs @@ -8,6 +8,7 @@ using Content.Shared.Whitelist; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Map.Components; +using Robust.Shared.Network; using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Timing; @@ -20,6 +21,7 @@ namespace Content.Shared.Teleportation.Systems; public sealed class SwapTeleporterSystem : EntitySystem { [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedContainerSystem _container = default!; @@ -145,19 +147,16 @@ public sealed class SwapTeleporterSystem : EntitySystem comp.TeleportTime = null; Dirty(uid, comp); - if (comp.LinkedEnt is not { } linkedEnt) - { + // We can't run the teleport logic on the client due to PVS range issues. + if (_net.IsClient || comp.LinkedEnt is not { } linkedEnt) return; - } var teleEnt = GetTeleportingEntity((uid, xform)); var otherTeleEnt = GetTeleportingEntity((linkedEnt, Transform(linkedEnt))); + var teleXform = Transform(teleEnt); + var otherTeleXform = Transform(otherTeleEnt); - _container.TryGetOuterContainer(teleEnt, Transform(teleEnt), out var cont); - _container.TryGetOuterContainer(otherTeleEnt, Transform(otherTeleEnt), out var otherCont); - - if (otherCont != null && !_container.CanInsert(teleEnt, otherCont) || - cont != null && !_container.CanInsert(otherTeleEnt, cont)) + if (!CanSwapTeleport((teleEnt, teleXform), (otherTeleEnt, otherTeleXform))) { _popup.PopupEntity(Loc.GetString("swap-teleporter-popup-teleport-fail", ("entity", Identity.Entity(linkedEnt, EntityManager))), @@ -175,6 +174,26 @@ public sealed class SwapTeleporterSystem : EntitySystem _transform.SwapPositions(teleEnt, otherTeleEnt); } + /// + /// Checks if two entities are able to swap positions via the teleporter. + /// + private bool CanSwapTeleport( + Entity entity1, + Entity entity2) + { + _container.TryGetOuterContainer(entity1, entity1, out var container1); + _container.TryGetOuterContainer(entity2, entity2, out var container2); + + if (container2 != null && !_container.CanInsert(entity1, container2) || + container1 != null && !_container.CanInsert(entity2, container1)) + return false; + + if (IsPaused(entity1) || IsPaused(entity2)) + return false; + + return true; + } + /// /// HYAH -link /// diff --git a/Content.Shared/Teleportation/TeleportLocationsUi.cs b/Content.Shared/Teleportation/TeleportLocationsUi.cs new file mode 100644 index 0000000000..f4ca97584a --- /dev/null +++ b/Content.Shared/Teleportation/TeleportLocationsUi.cs @@ -0,0 +1,19 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared.Teleportation; + +[Serializable, NetSerializable] +public enum TeleportLocationUiKey : byte +{ + Key +} + +/// +/// Sends message to request that the clicker teleports to the requested location +/// +[Serializable, NetSerializable] +public sealed class TeleportLocationDestinationMessage(NetEntity netEnt, string pointName) : BoundUserInterfaceMessage +{ + public NetEntity NetEnt = netEnt; + public string PointName = pointName; +} diff --git a/Content.Shared/Tiles/FloorTileSystem.cs b/Content.Shared/Tiles/FloorTileSystem.cs index e66b259388..2f7fd10b90 100644 --- a/Content.Shared/Tiles/FloorTileSystem.cs +++ b/Content.Shared/Tiles/FloorTileSystem.cs @@ -59,14 +59,14 @@ public sealed class FloorTileSystem : EntitySystem // this looks a bit sussy but it might be because it needs to be able to place off of grids and expand them var location = args.ClickLocation.AlignWithClosestGridTile(); - var locationMap = location.ToMap(EntityManager, _transform); + var locationMap = _transform.ToMapCoordinates(location); if (locationMap.MapId == MapId.Nullspace) return; var physicQuery = GetEntityQuery(); var transformQuery = GetEntityQuery(); - var map = location.ToMap(EntityManager, _transform); + var map = _transform.ToMapCoordinates(location); // Disallow placement close to grids. // FTLing close is okay but this makes alignment too finnicky. @@ -92,7 +92,7 @@ public sealed class FloorTileSystem : EntitySystem return; } - var userPos = transformQuery.GetComponent(args.User).Coordinates.ToMapPos(EntityManager, _transform); + var userPos = _transform.ToMapCoordinates(transformQuery.GetComponent(args.User).Coordinates).Position; var dir = userPos - map.Position; var canAccessCenter = false; if (dir.LengthSquared() > 0.01) diff --git a/Content.Shared/Tips/TippyEvent.cs b/Content.Shared/Tips/TippyEvent.cs index 4370e9c822..e5dc0b7f35 100644 --- a/Content.Shared/Tips/TippyEvent.cs +++ b/Content.Shared/Tips/TippyEvent.cs @@ -13,6 +13,8 @@ public sealed class TippyEvent : EntityEventArgs public string Msg; public string? Proto; + + // TODO: Why are these defaults even here, have the caller specify. This get overriden only most of the time. public float SpeakTime = 5; public float SlideTime = 3; public float WaddleInterval = 0.5f; diff --git a/Content.Shared/Tools/Components/SimpleToolUsageComponent.cs b/Content.Shared/Tools/Components/SimpleToolUsageComponent.cs new file mode 100644 index 0000000000..1f1e9c65f8 --- /dev/null +++ b/Content.Shared/Tools/Components/SimpleToolUsageComponent.cs @@ -0,0 +1,47 @@ +using Content.Shared.DoAfter; +using Content.Shared.Tools.Systems; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.Tools.Components; + +/// +/// Component responsible for simple tool interactions. +/// Using a tool with the correct quality on an entity with this component will start a doAfter and raise events. +/// +[RegisterComponent, NetworkedComponent] +[Access(typeof(SimpleToolUsageSystem))] +public sealed partial class SimpleToolUsageComponent : Component +{ + /// + /// Tool quality required to use a tool on this. + /// + [DataField] + public ProtoId Quality = "Slicing"; + + /// + /// The duration using a tool on this entity will take in seconds. + /// + [DataField] + public float DoAfter = 5; + + /// + /// What verb should display to allow you to use a tool on this entity. + /// If null, no verb will be shown. + /// + [DataField] + public LocId? UsageVerb; + + /// + /// The message to show when the verb is disabled. + /// + [DataField] + public LocId BlockedMessage = "simple-tool-usage-blocked-message"; +} + +[ByRefEvent] +public record struct AttemptSimpleToolUseEvent(EntityUid User, bool Cancelled = false); + +[Serializable, NetSerializable] +public sealed partial class SimpleToolDoAfterEvent : SimpleDoAfterEvent; diff --git a/Content.Shared/Tools/Components/ToolOpenableComponent.cs b/Content.Shared/Tools/Components/ToolOpenableComponent.cs index 82cdf611da..e48ba421c4 100644 --- a/Content.Shared/Tools/Components/ToolOpenableComponent.cs +++ b/Content.Shared/Tools/Components/ToolOpenableComponent.cs @@ -49,6 +49,12 @@ namespace Content.Shared.Tools.Components [DataField, AutoNetworkedField] public bool HasVerbs = true; + /// + /// If true, the only way to interact is with verbs. Clicking on the entity will not do anything. + /// + [DataField, AutoNetworkedField] + public bool VerbOnly; + /// /// The name of what is being open and closed. /// E.g toilet lid, pannel, compartment. diff --git a/Content.Shared/Tools/Systems/SimpleToolUsageSystem.cs b/Content.Shared/Tools/Systems/SimpleToolUsageSystem.cs new file mode 100644 index 0000000000..0f7da9af8a --- /dev/null +++ b/Content.Shared/Tools/Systems/SimpleToolUsageSystem.cs @@ -0,0 +1,79 @@ +using Content.Shared.DoAfter; +using Content.Shared.Interaction; +using Content.Shared.Tools.Components; +using Content.Shared.Verbs; +using Robust.Shared.Utility; + +namespace Content.Shared.Tools.Systems; + +public sealed partial class SimpleToolUsageSystem : EntitySystem +{ + [Dependency] private readonly SharedDoAfterSystem _doAfterSystem = default!; + [Dependency] private readonly SharedToolSystem _tools = default!; + + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent>(OnGetInteractionVerbs); + } + + private void OnAfterInteract(Entity ent, ref AfterInteractUsingEvent args) + { + if (!args.CanReach || args.Handled) + return; + + if (!_tools.HasQuality(args.Used, ent.Comp.Quality)) + return; + + AttemptToolUsage(ent, args.User, args.Used); + } + + public void OnGetInteractionVerbs(Entity ent, ref GetVerbsEvent args) + { + if (ent.Comp.UsageVerb == null) + return; + + if (!args.CanAccess || !args.CanInteract) + return; + + var disabled = args.Using == null || !_tools.HasQuality(args.Using.Value, ent.Comp.Quality); + + var used = args.Using; + var user = args.User; + + InteractionVerb verb = new() + { + Act = () => + { + if (used != null) + AttemptToolUsage(ent, user, used.Value); + }, + Disabled = disabled, + Message = disabled ? Loc.GetString(ent.Comp.BlockedMessage, ("quality", ent.Comp.Quality)) : null, + Text = Loc.GetString(ent.Comp.UsageVerb), + }; + + args.Verbs.Add(verb); + } + + private void AttemptToolUsage(Entity ent, EntityUid user, EntityUid tool) + { + var attemptEv = new AttemptSimpleToolUseEvent(user); + RaiseLocalEvent(ent, ref attemptEv); + + if (attemptEv.Cancelled) + return; + + var doAfterArgs = new DoAfterArgs(EntityManager, user, ent.Comp.DoAfter, new SimpleToolDoAfterEvent(), ent, tool) + { + BreakOnDamage = true, + BreakOnDropItem = true, + BreakOnMove = true, + BreakOnHandChange = true, + }; + + _doAfterSystem.TryStartDoAfter(doAfterArgs); + } +} diff --git a/Content.Shared/Tools/Systems/ToolOpenableSystem.cs b/Content.Shared/Tools/Systems/ToolOpenableSystem.cs index 4951040350..10e0dd6869 100644 --- a/Content.Shared/Tools/Systems/ToolOpenableSystem.cs +++ b/Content.Shared/Tools/Systems/ToolOpenableSystem.cs @@ -30,7 +30,7 @@ public sealed class ToolOpenableSystem : EntitySystem private void OnInteractUsing(Entity entity, ref InteractUsingEvent args) { - if (args.Handled) + if (args.Handled || entity.Comp.VerbOnly) return; if (TryOpenClose(entity, args.Used, args.User)) diff --git a/Content.Shared/Traits/Assorted/PermanentBlindnessComponent.cs b/Content.Shared/Traits/Assorted/PermanentBlindnessComponent.cs index c1b90b910e..9abbd46f66 100644 --- a/Content.Shared/Traits/Assorted/PermanentBlindnessComponent.cs +++ b/Content.Shared/Traits/Assorted/PermanentBlindnessComponent.cs @@ -5,10 +5,13 @@ namespace Content.Shared.Traits.Assorted; /// /// This is used for making something blind forever. /// -[RegisterComponent, NetworkedComponent] +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class PermanentBlindnessComponent : Component { - [ViewVariables(VVAccess.ReadWrite), DataField] - public int Blindness = 0; // How damaged should their eyes be. Set 0 for maximum damage. + /// + /// How damaged should their eyes be? Set 0 for maximum damage. + /// + [DataField, AutoNetworkedField] + public int Blindness = 0; } diff --git a/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs b/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs index 2ab17e2c5e..a99a12d0fd 100644 --- a/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs +++ b/Content.Shared/Traits/Assorted/PermanentBlindnessSystem.cs @@ -11,7 +11,6 @@ namespace Content.Shared.Traits.Assorted; /// public sealed class PermanentBlindnessSystem : EntitySystem { - [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly BlindableSystem _blinding = default!; /// @@ -24,7 +23,7 @@ public sealed class PermanentBlindnessSystem : EntitySystem private void OnExamined(Entity blindness, ref ExaminedEvent args) { - if (args.IsInDetailsRange && !_net.IsClient && blindness.Comp.Blindness == 0) + if (args.IsInDetailsRange && blindness.Comp.Blindness == 0) { args.PushMarkup(Loc.GetString("permanent-blindness-trait-examined", ("target", Identity.Entity(blindness, EntityManager)))); } diff --git a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs index de57189bc7..00355dedff 100644 --- a/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs +++ b/Content.Shared/VendingMachines/SharedVendingMachineSystem.Restock.cs @@ -1,4 +1,5 @@ using Content.Shared.DoAfter; +using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Popups; using Content.Shared.Wires; @@ -16,14 +17,11 @@ public abstract partial class SharedVendingMachineSystem { if (!TryComp(target, out var panel) || !panel.Open) { - if (_net.IsServer) - { - Popup.PopupCursor(Loc.GetString("vending-machine-restock-needs-panel-open", - ("this", uid), - ("user", user), - ("target", target)), - user); - } + Popup.PopupPredictedCursor(Loc.GetString("vending-machine-restock-needs-panel-open", + ("this", uid), + ("user", user), + ("target", target)), + user); return false; } @@ -39,11 +37,8 @@ public abstract partial class SharedVendingMachineSystem { if (!component.CanRestock.Contains(machineComponent.PackPrototypeId)) { - if (_net.IsServer) - { - Popup.PopupCursor(Loc.GetString("vending-machine-restock-invalid-inventory", ("this", uid), ("user", user), - ("target", target)), user); - } + Popup.PopupPredictedCursor(Loc.GetString("vending-machine-restock-invalid-inventory", ("this", uid), ("user", user), + ("target", target)), user); return false; } @@ -78,13 +73,13 @@ public abstract partial class SharedVendingMachineSystem if (!_doAfter.TryStartDoAfter(doAfterArgs)) return; - if (_net.IsServer) - { - Popup.PopupEntity(Loc.GetString("vending-machine-restock-start", ("this", uid), ("user", args.User), - ("target", target)), - args.User, - PopupType.Medium); - } + var selfMessage = Loc.GetString("vending-machine-restock-start-self", ("target", target)); + var othersMessage = Loc.GetString("vending-machine-restock-start-others", ("user", Identity.Entity(args.User, EntityManager)), ("target", target)); + Popup.PopupPredicted(selfMessage, + othersMessage, + uid, + args.User, + PopupType.Medium); Audio.PlayPredicted(component.SoundRestockStart, uid, args.User); } diff --git a/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs b/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs index d44e00c599..22b8d18674 100644 --- a/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs +++ b/Content.Shared/VendingMachines/SharedVendingMachineSystem.cs @@ -22,7 +22,6 @@ namespace Content.Shared.VendingMachines; public abstract partial class SharedVendingMachineSystem : EntitySystem { [Dependency] protected readonly IGameTiming Timing = default!; - [Dependency] private readonly INetManager _net = default!; [Dependency] protected readonly IPrototypeManager PrototypeManager = default!; [Dependency] private readonly AccessReaderSystem _accessReader = default!; [Dependency] private readonly SharedAppearanceSystem _appearanceSystem = default!; diff --git a/Content.Shared/Warps/WarpPointComponent.cs b/Content.Shared/Warps/WarpPointComponent.cs new file mode 100644 index 0000000000..61e84a660c --- /dev/null +++ b/Content.Shared/Warps/WarpPointComponent.cs @@ -0,0 +1,27 @@ +using Content.Shared.Whitelist; +using Robust.Shared.GameStates; + +namespace Content.Shared.Warps; + +/// +/// Allows ghosts etc to warp to this entity by name. +/// +[RegisterComponent, NetworkedComponent] +public sealed partial class WarpPointComponent : Component +{ + [ViewVariables(VVAccess.ReadWrite), DataField] + public string? Location; + + /// + /// If true, ghosts warping to this entity will begin following it. + /// + [DataField] + public bool Follow; + + /// + /// What points should be excluded? + /// Useful where you want things like a ghost to reach only like CentComm + /// + [DataField] + public EntityWhitelist? Blacklist; +} diff --git a/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs b/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs index bc95be926a..035432ef85 100644 --- a/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs +++ b/Content.Shared/Weapons/Melee/MeleeThrowOnHitSystem.cs @@ -1,12 +1,9 @@ -using Content.Shared.Construction.Components; using Content.Shared.Stunnable; using Content.Shared.Throwing; using Content.Shared.Timing; using Content.Shared.Weapons.Melee.Components; using Content.Shared.Weapons.Melee.Events; -using Robust.Shared.Physics; using Robust.Shared.Physics.Components; -using Robust.Shared.Physics.Systems; using System.Numerics; namespace Content.Shared.Weapons.Melee; @@ -17,7 +14,6 @@ namespace Content.Shared.Weapons.Melee; public sealed class MeleeThrowOnHitSystem : EntitySystem { [Dependency] private readonly SharedTransformSystem _transform = default!; - [Dependency] private readonly SharedPhysicsSystem _physics = default!; [Dependency] private readonly UseDelaySystem _delay = default!; [Dependency] private readonly SharedStunSystem _stun = default!; [Dependency] private readonly ThrowingSystem _throwing = default!; diff --git a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs index d39c030ad1..b3f2066ef0 100644 --- a/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs +++ b/Content.Shared/Weapons/Melee/SharedMeleeWeaponSystem.cs @@ -2,6 +2,8 @@ using System.Diagnostics.CodeAnalysis; using System.Linq; using System.Numerics; using Content.Shared.ActionBlocker; +using Content.Shared.Actions.Events; +using Content.Shared.Administration.Components; using Content.Shared.Administration.Logs; using Content.Shared.CombatMode; using Content.Shared.Damage; @@ -10,22 +12,30 @@ using Content.Shared.Database; using Content.Shared.FixedPoint; using Content.Shared.Hands; using Content.Shared.Hands.Components; +using Content.Shared.IdentityManagement; using Content.Shared.Interaction; using Content.Shared.Inventory; using Content.Shared.Inventory.VirtualItem; using Content.Shared.Item.ItemToggle.Components; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; using Content.Shared.Physics; using Content.Shared.Popups; +using Content.Shared.StatusEffect; using Content.Shared.Weapons.Melee.Components; using Content.Shared.Weapons.Melee.Events; using Content.Shared.Weapons.Ranged.Components; using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Systems; +using Robust.Shared.Audio; +using Robust.Shared.Audio.Systems; using Robust.Shared.Map; +using Robust.Shared.Network; using Robust.Shared.Physics; using Robust.Shared.Physics.Systems; using Robust.Shared.Player; using Robust.Shared.Prototypes; +using Robust.Shared.Random; using Robust.Shared.Timing; using ItemToggleMeleeWeaponComponent = Content.Shared.Item.ItemToggle.Components.ItemToggleMeleeWeaponComponent; @@ -33,20 +43,24 @@ namespace Content.Shared.Weapons.Melee; public abstract class SharedMeleeWeaponSystem : EntitySystem { - [Dependency] protected readonly ISharedAdminLogManager AdminLogger = default!; - [Dependency] protected readonly ActionBlockerSystem Blocker = default!; - [Dependency] protected readonly SharedCombatModeSystem CombatMode = default!; - [Dependency] protected readonly DamageableSystem Damageable = default!; - [Dependency] protected readonly SharedInteractionSystem Interaction = default!; - [Dependency] protected readonly IMapManager MapManager = default!; - [Dependency] protected readonly SharedPopupSystem PopupSystem = default!; - [Dependency] protected readonly IGameTiming Timing = default!; - [Dependency] protected readonly SharedTransformSystem TransformSystem = default!; - [Dependency] private readonly InventorySystem _inventory = default!; - [Dependency] private readonly MeleeSoundSystem _meleeSound = default!; - [Dependency] private readonly SharedPhysicsSystem _physics = default!; - [Dependency] private readonly IPrototypeManager _protoManager = default!; - [Dependency] private readonly StaminaSystem _stamina = default!; + [Dependency] protected readonly IGameTiming Timing = default!; + [Dependency] protected readonly IMapManager MapManager = default!; + [Dependency] private readonly INetManager _netMan = default!; + [Dependency] private readonly IPrototypeManager _protoManager = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] protected readonly ISharedAdminLogManager AdminLogger = default!; + [Dependency] protected readonly ActionBlockerSystem Blocker = default!; + [Dependency] protected readonly DamageableSystem Damageable = default!; + [Dependency] private readonly InventorySystem _inventory = default!; + [Dependency] private readonly MeleeSoundSystem _meleeSound = default!; + [Dependency] protected readonly MobStateSystem MobState = default!; + [Dependency] private readonly SharedAudioSystem _audio = default!; + [Dependency] protected readonly SharedCombatModeSystem CombatMode = default!; + [Dependency] protected readonly SharedInteractionSystem Interaction = default!; + [Dependency] private readonly SharedPhysicsSystem _physics = default!; + [Dependency] protected readonly SharedPopupSystem PopupSystem = default!; + [Dependency] protected readonly SharedTransformSystem TransformSystem = default!; + [Dependency] private readonly StaminaSystem _stamina = default!; private const int AttackMask = (int) (CollisionGroup.MobMask | CollisionGroup.Opaque); @@ -788,7 +802,25 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem return highestDamageType; } - protected virtual bool DoDisarm(EntityUid user, DisarmAttackEvent ev, EntityUid meleeUid, MeleeWeaponComponent component, ICommonSession? session) + private float CalculateDisarmChance(EntityUid disarmer, EntityUid disarmed, EntityUid? inTargetHand, CombatModeComponent disarmerComp) + { + if (HasComp(disarmer)) + return 1.0f; + + if (HasComp(disarmed)) + return 0.0f; + + var chance = disarmerComp.BaseDisarmFailChance; + + if (inTargetHand != null && TryComp(inTargetHand, out var malus)) + { + chance += malus.Malus; + } + + return Math.Clamp(chance, 0f, 1f); + } + + private bool DoDisarm(EntityUid user, DisarmAttackEvent ev, EntityUid meleeUid, MeleeWeaponComponent component, ICommonSession? session) { var target = GetEntity(ev.Target); @@ -798,8 +830,110 @@ public abstract class SharedMeleeWeaponSystem : EntitySystem return false; } - // Play a sound to give instant feedback; same with playing the animations - _meleeSound.PlaySwingSound(user, meleeUid, component); + + if (MobState.IsIncapacitated(target.Value)) + { + return false; + } + + if (!TryComp(user, out var combatMode) || + combatMode.CanDisarm != true) + { + return false; + } + + // Need hands or to be able to be shoved over. + if (!TryComp(target, out var targetHandsComponent)) + { + if (!TryComp(target, out var status) || + !status.AllowedEffects.Contains("KnockedDown")) + { + // Notify disarmable + if (HasComp(target.Value)) + PopupSystem.PopupClient(Loc.GetString("disarm-action-disarmable", ("targetName", target.Value)), target.Value); + + return false; + } + } + + if (!InRange(user, target.Value, component.Range, session)) + { + return false; + } + + EntityUid? inTargetHand = null; + + if (targetHandsComponent?.ActiveHand is { IsEmpty: false }) + { + inTargetHand = targetHandsComponent.ActiveHand.HeldEntity!.Value; + } + + var attemptEvent = new DisarmAttemptEvent(target.Value, user, inTargetHand); + + if (inTargetHand != null) + { + RaiseLocalEvent(inTargetHand.Value, ref attemptEvent); + } + + RaiseLocalEvent(target.Value, ref attemptEvent); + + if (attemptEvent.Cancelled) + return false; + + var chance = CalculateDisarmChance(user, target.Value, inTargetHand, combatMode); + + // At this point we diverge + if (_netMan.IsClient) + { + // Play a sound to give instant feedback; same with playing the animations + _meleeSound.PlaySwingSound(user, meleeUid, component); + return true; + } + + if (_random.Prob(chance)) + { + return false; + } + + var eventArgs = new DisarmedEvent(target.Value, user, 1 - chance); + RaiseLocalEvent(target.Value, ref eventArgs); + + // Nothing handled it so abort. + if (!eventArgs.Handled) + { + return false; + } + + Interaction.DoContactInteraction(user, target); + AdminLogger.Add(LogType.DisarmedAction, $"{ToPrettyString(user):user} used disarm on {ToPrettyString(target):target}"); + + AdminLogger.Add(LogType.DisarmedAction, $"{ToPrettyString(user):user} used disarm on {ToPrettyString(target):target}"); + + _audio.PlayPvs(combatMode.DisarmSuccessSound, target.Value, AudioParams.Default.WithVariation(0.025f).WithVolume(5f)); + var targetEnt = Identity.Entity(target.Value, EntityManager); + var userEnt = Identity.Entity(user, EntityManager); + + var msgOther = Loc.GetString( + eventArgs.PopupPrefix + "popup-message-other-clients", + ("performerName", userEnt), + ("targetName", targetEnt)); + + var msgUser = Loc.GetString(eventArgs.PopupPrefix + "popup-message-cursor", ("targetName", targetEnt)); + + var filterOther = Filter.PvsExcept(user, entityManager: EntityManager); + + PopupSystem.PopupEntity(msgOther, user, filterOther, true); + PopupSystem.PopupEntity(msgUser, target.Value, user); + + if (eventArgs.IsStunned) + { + + PopupSystem.PopupEntity(Loc.GetString("stunned-component-disarm-success-others", ("source", userEnt), ("target", targetEnt)), targetEnt, Filter.PvsExcept(user), true, PopupType.LargeCaution); + PopupSystem.PopupCursor(Loc.GetString("stunned-component-disarm-success", ("target", targetEnt)), user, PopupType.Large); + + AdminLogger.Add(LogType.DisarmedKnockdown, LogImpact.Medium, $"{ToPrettyString(user):user} knocked down {ToPrettyString(target):target}"); + } + return true; } diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs index 3060e2c1a9..39014d8248 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.ChamberMagazine.cs @@ -184,7 +184,7 @@ public abstract partial class SharedGunSystem // The problem is client will dump the cartridge on the ground and the new server state // won't correspond due to randomness so looks weird // but we also need to always take it from the chamber or else ammocount won't be correct. - TransformSystem.DetachParentToNull(chambered.Value, Transform(chambered.Value)); + TransformSystem.DetachEntity(chambered.Value, Transform(chambered.Value)); } UpdateAmmoCount(uid); diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs index 2c0204d946..38f427429f 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.Revolver.cs @@ -130,7 +130,7 @@ public partial class SharedGunSystem return false; } - for (var i = Math.Min(ev.Ammo.Count - 1, component.Capacity - 1); i >= 0; i--) + for (var i = 0; i < component.Capacity; i++) { var index = (component.CurrentIndex + i) % component.Capacity; diff --git a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs index ac6f27f7e9..8ed9e4949e 100644 --- a/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs +++ b/Content.Shared/Weapons/Ranged/Systems/SharedGunSystem.cs @@ -27,6 +27,7 @@ using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Robust.Shared.Map; using Robust.Shared.Network; +using Robust.Shared.Physics; using Robust.Shared.Physics.Components; using Robust.Shared.Physics.Systems; using Robust.Shared.Prototypes; @@ -462,7 +463,7 @@ public abstract partial class SharedGunSystem : EntitySystem var coordinates = xform.Coordinates; coordinates = coordinates.Offset(offsetPos); - TransformSystem.SetLocalRotation(xform, Random.NextAngle()); + TransformSystem.SetLocalRotation(entity, Random.NextAngle(), xform); TransformSystem.SetCoordinates(entity, xform, coordinates); // decides direction the casing ejects and only when not cycling @@ -510,8 +511,8 @@ public abstract partial class SharedGunSystem : EntitySystem public void CauseImpulse(EntityCoordinates fromCoordinates, EntityCoordinates toCoordinates, EntityUid user, PhysicsComponent userPhysics) { - var fromMap = fromCoordinates.ToMapPos(EntityManager, TransformSystem); - var toMap = toCoordinates.ToMapPos(EntityManager, TransformSystem); + var fromMap = TransformSystem.ToMapCoordinates(fromCoordinates).Position; + var toMap = TransformSystem.ToMapCoordinates(toCoordinates).Position; var shotDirection = (toMap - fromMap).Normalized(); const float impulseStrength = 25.0f; diff --git a/Content.Shared/Weapons/Reflect/ReflectComponent.cs b/Content.Shared/Weapons/Reflect/ReflectComponent.cs index 8418c1f3ef..703d8904dc 100644 --- a/Content.Shared/Weapons/Reflect/ReflectComponent.cs +++ b/Content.Shared/Weapons/Reflect/ReflectComponent.cs @@ -13,20 +13,20 @@ public sealed partial class ReflectComponent : Component /// /// What we reflect. /// - [ViewVariables(VVAccess.ReadWrite), DataField("reflects")] + [ViewVariables(VVAccess.ReadWrite), DataField] public ReflectType Reflects = ReflectType.Energy | ReflectType.NonEnergy; /// /// Probability for a projectile to be reflected. /// - [DataField("reflectProb"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public float ReflectProb = 0.25f; - [DataField("spread"), ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] + [DataField, ViewVariables(VVAccess.ReadWrite), AutoNetworkedField] public Angle Spread = Angle.FromDegrees(45); - [DataField("soundOnReflect")] - public SoundSpecifier? SoundOnReflect = new SoundPathSpecifier("/Audio/Weapons/Guns/Hits/laser_sear_wall.ogg"); + [DataField] + public SoundSpecifier? SoundOnReflect = new SoundPathSpecifier("/Audio/Weapons/Guns/Hits/laser_sear_wall.ogg", AudioParams.Default.WithVariation(0.05f)); } [Flags] diff --git a/Content.Shared/Weapons/Reflect/ReflectSystem.cs b/Content.Shared/Weapons/Reflect/ReflectSystem.cs index 881b547f27..3d3ded99ce 100644 --- a/Content.Shared/Weapons/Reflect/ReflectSystem.cs +++ b/Content.Shared/Weapons/Reflect/ReflectSystem.cs @@ -62,7 +62,7 @@ public sealed class ReflectSystem : EntitySystem foreach (var ent in _inventorySystem.GetHandOrInventoryEntities(uid, SlotFlags.All & ~SlotFlags.POCKET)) { - if (!TryReflectHitscan(uid, ent, args.Shooter, args.SourceItem, args.Direction, out var dir)) + if (!TryReflectHitscan(uid, ent, args.Shooter, args.SourceItem, args.Direction, args.Reflective, out var dir)) continue; args.Direction = dir.Value; @@ -95,9 +95,9 @@ public sealed class ReflectSystem : EntitySystem private bool TryReflectProjectile(EntityUid user, EntityUid reflector, EntityUid projectile, ProjectileComponent? projectileComp = null, ReflectComponent? reflect = null) { if (!Resolve(reflector, ref reflect, false) || - !_toggle.IsActivated(reflector) || !TryComp(projectile, out var reflective) || (reflect.Reflects & reflective.Reflective) == 0x0 || + !_toggle.IsActivated(reflector) || !_random.Prob(reflect.ReflectProb) || !TryComp(projectile, out var physics)) { @@ -118,11 +118,7 @@ public sealed class ReflectSystem : EntitySystem var newRot = rotation.RotateVec(locRot.ToVec()); _transform.SetLocalRotation(projectile, newRot.ToAngle()); - if (_netManager.IsServer) - { - _popup.PopupEntity(Loc.GetString("reflect-shot"), user); - _audio.PlayPvs(reflect.SoundOnReflect, user, AudioHelpers.WithVariation(0.05f, _random)); - } + PlayAudioAndPopup(reflect, user); if (Resolve(projectile, ref projectileComp, false)) { @@ -142,28 +138,39 @@ public sealed class ReflectSystem : EntitySystem private void OnReflectHitscan(EntityUid uid, ReflectComponent component, ref HitScanReflectAttemptEvent args) { - if (args.Reflected || - (component.Reflects & args.Reflective) == 0x0) + if (args.Reflected) { return; } - if (TryReflectHitscan(uid, uid, args.Shooter, args.SourceItem, args.Direction, out var dir)) + if (TryReflectHitscan(uid, uid, args.Shooter, args.SourceItem, args.Direction, args.Reflective, out var dir)) { args.Direction = dir.Value; args.Reflected = true; } } + private void PlayAudioAndPopup(ReflectComponent reflect, EntityUid user) + { + // Can probably be changed for prediction + if (_netManager.IsServer) + { + _popup.PopupEntity(Loc.GetString("reflect-shot"), user); + _audio.PlayPvs(reflect.SoundOnReflect, user); + } + } + private bool TryReflectHitscan( EntityUid user, EntityUid reflector, EntityUid? shooter, EntityUid shotSource, Vector2 direction, + ReflectType hitscanReflectType, [NotNullWhen(true)] out Vector2? newDirection) { if (!TryComp(reflector, out var reflect) || + (reflect.Reflects & hitscanReflectType) == 0x0 || !_toggle.IsActivated(reflector) || !_random.Prob(reflect.ReflectProb)) { @@ -171,11 +178,7 @@ public sealed class ReflectSystem : EntitySystem return false; } - if (_netManager.IsServer) - { - _popup.PopupEntity(Loc.GetString("reflect-shot"), user); - _audio.PlayPvs(reflect.SoundOnReflect, user, AudioHelpers.WithVariation(0.05f, _random)); - } + PlayAudioAndPopup(reflect, user); var spread = _random.NextAngle(-reflect.Spread / 2, reflect.Spread / 2); newDirection = -spread.RotateVec(direction); diff --git a/Content.Shared/Wieldable/SharedWieldableSystem.cs b/Content.Shared/Wieldable/SharedWieldableSystem.cs index b4a6144405..2e50c655fc 100644 --- a/Content.Shared/Wieldable/SharedWieldableSystem.cs +++ b/Content.Shared/Wieldable/SharedWieldableSystem.cs @@ -21,6 +21,7 @@ using Content.Shared.Weapons.Ranged.Events; using Content.Shared.Weapons.Ranged.Systems; using Content.Shared.Wieldable.Components; using Robust.Shared.Audio.Systems; +using Robust.Shared.Collections; using Robust.Shared.Network; using Robust.Shared.Timing; @@ -30,7 +31,6 @@ public abstract class SharedWieldableSystem : EntitySystem { [Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifier = default!; [Dependency] private readonly IGameTiming _timing = default!; - [Dependency] private readonly INetManager _netManager = default!; [Dependency] private readonly SharedAppearanceSystem _appearance = default!; [Dependency] private readonly SharedAudioSystem _audio = default!; [Dependency] private readonly SharedGunSystem _gun = default!; @@ -260,26 +260,21 @@ public abstract class SharedWieldableSystem : EntitySystem _audio.PlayPredicted(component.WieldSound, used, user); //This section handles spawning the virtual item(s) to occupy the required additional hand(s). - //Since the client can't currently predict entity spawning, only do this if this is running serverside. - //Remove this check if TrySpawnVirtualItem in SharedVirtualItemSystem is allowed to complete clientside. - if (_netManager.IsServer) + var virtuals = new ValueList(); + for (var i = 0; i < component.FreeHandsRequired; i++) { - var virtuals = new List(); - for (var i = 0; i < component.FreeHandsRequired; i++) + if (_virtualItem.TrySpawnVirtualItemInHand(used, user, out var virtualItem, true)) { - if (_virtualItem.TrySpawnVirtualItemInHand(used, user, out var virtualItem, true)) - { - virtuals.Add(virtualItem.Value); - continue; - } - - foreach (var existingVirtual in virtuals) - { - QueueDel(existingVirtual); - } - - return false; + virtuals.Add(virtualItem.Value); + continue; } + + foreach (var existingVirtual in virtuals) + { + QueueDel(existingVirtual); + } + + return false; } var selfMessage = Loc.GetString("wieldable-component-successful-wield", ("item", used)); diff --git a/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactComponent.cs new file mode 100644 index 0000000000..b01d3d34f6 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactComponent.cs @@ -0,0 +1,173 @@ +using Content.Shared.Actions; +using Content.Shared.Destructible.Thresholds; +using Content.Shared.EntityTable.EntitySelectors; +using Content.Shared.Xenoarchaeology.Artifact.Prototypes; +using Robust.Shared.Audio; +using Robust.Shared.Containers; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Shared.Xenoarchaeology.Artifact.Components; + +/// +/// This is used for handling interactions with artifacts as well as +/// storing data about artifact node graphs. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedXenoArtifactSystem)), AutoGenerateComponentState, AutoGenerateComponentPause] +public sealed partial class XenoArtifactComponent : Component +{ + public static string NodeContainerId = "node-container"; + + /// + /// Marker, if nodes graph should be generated for artifact. + /// + [DataField] + public bool IsGenerationRequired = true; + + /// + /// Container for artifact graph node entities. + /// + [ViewVariables] + public Container NodeContainer = default!; + + /// + /// The nodes in this artifact that are currently "active." + /// This is cached and updated when nodes are removed, added, or unlocked. + /// + [DataField, AutoNetworkedField] + public List CachedActiveNodes = new(); + + /// + /// Cache of interconnected node chunks - segments. + /// This is cached and updated when nodes are removed, added, or unlocked. + /// + [DataField, AutoNetworkedField] + public List> CachedSegments = new(); + + /// + /// Marker, if true - node activations should not happen. + /// + [DataField, AutoNetworkedField] + public bool Suppressed; + + /// + /// A multiplier applied to the calculated point value + /// to determine the monetary value of the artifact. + /// + [DataField] + public float PriceMultiplier = 0.10f; + + #region Unlocking + /// + /// How long does the unlocking state last by default. + /// + [DataField] + public TimeSpan UnlockStateDuration = TimeSpan.FromSeconds(6); + + /// + /// By how much unlocking state should be prolonged for each node that was unlocked. + /// + [DataField] + public TimeSpan UnlockStateIncrementPerNode = TimeSpan.FromSeconds(10); + + /// + /// Minimum waiting time between unlock states. + /// + [DataField] + public TimeSpan UnlockStateRefractory = TimeSpan.FromSeconds(5); + + /// + /// When next unlock session can be triggered. + /// + [DataField, AutoPausedField] + public TimeSpan NextUnlockTime; + #endregion + + // NOTE: you should not be accessing any of these values directly. Use the methods in SharedXenoArtifactSystem.Graph + #region Graph + /// + /// List of all nodes currently on this artifact. + /// Indexes are used as a lookup table for . + /// + [DataField, AutoNetworkedField] + public NetEntity?[] NodeVertices = []; + + /// + /// Adjacency matrix that stores connections between this artifact's nodes. + /// A value of "true" denotes an directed edge from node1 to node2, where the location of the vertex is (node1, node2) + /// A value of "false" denotes no edge. + /// + [DataField, AutoNetworkedField] + public List> NodeAdjacencyMatrix = new(); + + public int NodeAdjacencyMatrixRows => NodeAdjacencyMatrix.Count; + public int NodeAdjacencyMatrixColumns => NodeAdjacencyMatrix.TryGetValue(0, out var value) ? value.Count : 0; + #endregion + + #region GenerationInfo + + /// + /// The total number of nodes that make up this artifact. + /// + [DataField] + public MinMax NodeCount = new(10, 16); + + /// + /// The amount of nodes that go in each segment. + /// A segment is an interconnected series of nodes. + /// + [DataField] + public MinMax SegmentSize = new(5, 8); + + /// + /// For each "layer" in a segment (set of nodes with equal depth), how many will we generate? + /// + [DataField] + public MinMax NodesPerSegmentLayer = new(1, 3); + + /// + /// How man nodes can be randomly added on top of usual distribution (per layer). + /// + [DataField] + public MinMax ScatterPerLayer = new(0, 2); + + /// + /// Effects that can be used during this artifact generation. + /// + [DataField] + public EntityTableSelector EffectsTable = new NestedSelector + { + TableId = "XenoArtifactEffectsDefaultTable" + }; + + /// + /// Triggers that can be used during this artefact generation. + /// + [DataField] + public ProtoId TriggerWeights = "DefaultTriggers"; + #endregion + + /// + /// Sound effect to be played when artifact node is force-activated. + /// + [DataField] + public SoundSpecifier? ForceActivationSoundSpecifier = new SoundCollectionSpecifier("ArtifactForceActivation") + { + Params = new() + { + Variation = 0.1f + } + }; + + /// + /// Action that allows the artifact to self activate. + /// + [DataField] + public EntProtoId SelfActivateAction = "ActionArtifactActivate"; +} + +/// +/// Event raised by sentient artifact to activate itself at no durability cost. +/// +public sealed partial class ArtifactSelfActivateEvent : InstantActionEvent; diff --git a/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactNodeComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactNodeComponent.cs new file mode 100644 index 0000000000..4a8b8ec49f --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactNodeComponent.cs @@ -0,0 +1,81 @@ +using Content.Shared.Destructible.Thresholds; +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.Components; + +/// +/// Stores metadata about a particular artifact node +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedXenoArtifactSystem)), AutoGenerateComponentState] +public sealed partial class XenoArtifactNodeComponent : Component +{ + /// + /// Depth within the graph generation. + /// Used for sorting. + /// + [DataField, AutoNetworkedField] + public int Depth; + + /// + /// Denotes whether an artifact node has been activated at least once (through the required triggers). + /// + [DataField, AutoNetworkedField] + public bool Locked = true; + + /// + /// List of trigger descriptions that this node require for activation. + /// + [DataField, AutoNetworkedField] + public LocId? TriggerTip; + + /// + /// The entity whose graph this node is a part of. + /// + [DataField, AutoNetworkedField] + public NetEntity? Attached; + + #region Durability + /// + /// Marker, is durability of node degraded or not. + /// + public bool Degraded => Durability <= 0; + + /// + /// The amount of generic activations a node has left before becoming fully degraded and useless. + /// + [DataField, AutoNetworkedField] + public int Durability; + + /// + /// The maximum amount of times a node can be generically activated before becoming useless + /// + [DataField, AutoNetworkedField] + public int MaxDurability = 5; + + /// + /// The variance from MaxDurability present when a node is created. + /// + [DataField] + public MinMax MaxDurabilityCanDecreaseBy = new(0, 2); + #endregion + + #region Research + /// + /// The amount of points a node is worth with no scaling + /// + [DataField, AutoNetworkedField] + public float BasePointValue = 4000; + + /// + /// Amount of points available currently for extracting. + /// + [DataField, AutoNetworkedField] + public int ResearchValue; + + /// + /// Amount of points already extracted from node. + /// + [DataField, AutoNetworkedField] + public int ConsumedResearchValue; + #endregion +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactUnlockingComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactUnlockingComponent.cs new file mode 100644 index 0000000000..6b2351cc2f --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/Components/XenoArtifactUnlockingComponent.cs @@ -0,0 +1,54 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.Components; + +/// +/// This is used for tracking the nodes which have been triggered during a particular unlocking state. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, AutoGenerateComponentPause] +public sealed partial class XenoArtifactUnlockingComponent : Component +{ + /// + /// Indexes corresponding to all of the nodes that have been triggered + /// + [DataField, AutoNetworkedField] + public HashSet TriggeredNodeIndexes = new(); + + /// + /// The time at which the unlocking state ends. + /// + [DataField, AutoNetworkedField, AutoPausedField] + public TimeSpan EndTime; + + /// + /// Tracks if artifexium has been applied, which changes the unlock behavior slightly. + /// + [DataField, AutoNetworkedField] + public bool ArtifexiumApplied; + + /// + /// The sound that plays when an artifact finishes unlocking successfully (with node unlocked). + /// + [DataField] + public SoundSpecifier UnlockActivationSuccessfulSound = new SoundCollectionSpecifier("ArtifactUnlockingActivationSuccess") + { + Params = new() + { + Variation = 0.1f, + Volume = 3f + } + }; + + /// + /// The sound that plays when artifact finishes unlocking non-successfully. + /// + [DataField] + public SoundSpecifier? UnlockActivationFailedSound = new SoundCollectionSpecifier("ArtifactUnlockActivationFailure") + { + Params = new() + { + Variation = 0.1f + } + }; +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/Prototypes/XenoArchTriggerPrototype.cs b/Content.Shared/Xenoarchaeology/Artifact/Prototypes/XenoArchTriggerPrototype.cs new file mode 100644 index 0000000000..74d3895234 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/Prototypes/XenoArchTriggerPrototype.cs @@ -0,0 +1,46 @@ +using Content.Shared.Random; +using Content.Shared.Whitelist; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary; + +namespace Content.Shared.Xenoarchaeology.Artifact.Prototypes; + +/// Proto for xeno artifact triggers - markers, which event could trigger node to unlock it. +[Prototype] +public sealed partial class XenoArchTriggerPrototype : IPrototype +{ + /// + [IdDataField] + public string ID { get; } = default!; + + /// + /// Tip for user on how to activate this trigger. + /// + [DataField] + public LocId Tip; + + /// + /// Whitelist, describing for which subtype of artifacts this trigger could be used. + /// + [DataField] + public EntityWhitelist? Whitelist; + + /// + /// List of components that represent ways to trigger node. + /// + [DataField] + public ComponentRegistry Components = new(); +} + +/// +/// Container for list of xeno artifact triggers and their respective weights to be used in case randomly rolling trigger is required. +/// +[Prototype] +public sealed partial class WeightedRandomXenoArchTriggerPrototype : IWeightedRandomPrototype +{ + [IdDataField] + public string ID { get; private set; } = default!; + + [DataField(customTypeSerializer: typeof(PrototypeIdDictionarySerializer))] + public Dictionary Weights { get; private set; } = new(); +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Graph.cs b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Graph.cs new file mode 100644 index 0000000000..fca5baf10f --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Graph.cs @@ -0,0 +1,615 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Shared.Xenoarchaeology.Artifact; + +/// +/// User-friendly API for viewing and modifying the complex graph relationship in XenoArtifacts +/// +public abstract partial class SharedXenoArtifactSystem +{ + /// + /// Gets the index, corresponding to a given node, throwing if the node is not present. + /// + public int GetIndex(Entity ent, EntityUid node) + { + if (TryGetIndex((ent, ent), node, out var index)) + { + return index.Value; + } + + throw new ArgumentException($"node {ToPrettyString(node)} is not present in {ToPrettyString(ent)}"); + } + + /// + /// Tries to get index inside nodes collection, corresponding to a given node EntityUid. + /// + public bool TryGetIndex(Entity ent, EntityUid node, [NotNullWhen(true)] out int? index) + { + index = null; + if (!Resolve(ent, ref ent.Comp)) + return false; + + for (var i = 0; i < ent.Comp.NodeVertices.Length; i++) + { + if (!TryGetNode(ent, i, out var iNode)) + continue; + + if (node != iNode.Value.Owner) + continue; + + index = i; + return true; + } + + return false; + } + + /// + /// Gets node entity with node component from artifact by index of node inside artifact nodes collection. + /// + /// Throws if requested index doesn't exist on artifact. + public Entity GetNode(Entity ent, int index) + { + if (ent.Comp.NodeVertices[index] is { } netUid && GetEntity(netUid) is var uid) + return (uid, XenoArtifactNode(uid)); + + throw new ArgumentException($"index {index} does not correspond to an existing node in {ToPrettyString(ent)}"); + } + + /// + /// Tries to get node entity with node component from artifact by index of node inside artifact nodes collection. + /// + public bool TryGetNode(Entity ent, int index, [NotNullWhen(true)] out Entity? node) + { + node = null; + if (!Resolve(ent, ref ent.Comp)) + return false; + + if (index < 0 || index >= ent.Comp.NodeVertices.Length) + return false; + + if (ent.Comp.NodeVertices[index] is { } netUid && GetEntity(netUid) is var uid) + node = (uid, XenoArtifactNode(uid)); + + return node != null; + } + + /// + /// Gets the index of the first empty spot in the NodeVertices array. + /// If there is none, resizes both arrays and returns the new index. + /// + public int GetFreeNodeIndex(Entity ent) + { + var length = ent.Comp.NodeVertices.Length; + for (var i = 0; i < length; i++) + { + if (ent.Comp.NodeVertices[i] == null) + return i; + } + + ResizeNodeGraph(ent, length + 1); + return length; + } + + /// + /// Extracts node entities from artifact container + /// (uses pre-cached and mapping from NetEntity). + /// + public IEnumerable> GetAllNodes(Entity ent) + { + foreach (var netNode in ent.Comp.NodeVertices) + { + if (TryGetEntity(netNode, out var node)) + yield return (node.Value, XenoArtifactNode(node.Value)); + } + } + + /// + /// Extracts enumeration of all indices that artifact node container have. + /// + public IEnumerable GetAllNodeIndices(Entity ent) + { + for (var i = 0; i < ent.Comp.NodeVertices.Length; i++) + { + if (ent.Comp.NodeVertices[i] is not null) + yield return i; + } + } + + /// + /// Adds edge between artifact nodes - and + /// + /// Artifact entity that contains 'from' and 'to' node entities. + /// Node from which we need to draw edge. + /// Node to which we need to draw edge. + /// + /// Marker, if we need to recalculate caches and mark related components dirty to update on client side. + /// Should be disabled for initial graph creation to not recalculate cache on each node/edge. + /// + /// True if adding edge was successful, false otherwise. + public bool AddEdge(Entity ent, EntityUid from, EntityUid to, bool dirty = true) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + if (!TryGetIndex(ent, from, out var fromIdx) || + !TryGetIndex(ent, to, out var toIdx)) + return false; + + return AddEdge(ent, fromIdx.Value, toIdx.Value, dirty: dirty); + } + + /// + /// Adds edge between artifact nodes by indices inside node container - and + /// + /// Artifact entity that contains 'from' and 'to' node entities. + /// Node index inside artifact node container, from which we need to draw edge. + /// Node index inside artifact node container, to which we need to draw edge. + /// + /// Marker, if we need to recalculate caches and mark related components dirty to update on client side. + /// Should be disabled for initial graph creation to not recalculate cache on each node/edge. + /// + /// True if adding edge was successful, false otherwise. + public bool AddEdge(Entity ent, int fromIdx, int toIdx, bool dirty = true) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + DebugTools.Assert(fromIdx >= 0 && fromIdx < ent.Comp.NodeVertices.Length, $"fromIdx is out of bounds for fromIdx {fromIdx}"); + DebugTools.Assert(toIdx >= 0 && toIdx < ent.Comp.NodeVertices.Length, $"toIdx is out of bounds for toIdx {toIdx}"); + + if (ent.Comp.NodeAdjacencyMatrix[fromIdx][toIdx]) + return false; //Edge already exists + + // TODO: add a safety check to prohibit cyclic paths. + + ent.Comp.NodeAdjacencyMatrix[fromIdx][toIdx] = true; + if (dirty) + { + RebuildXenoArtifactMetaData(ent); + } + + return true; + } + + /// + /// Removes edge between artifact nodes. + /// + /// Artifact entity that contains 'from' and 'to' node entities. + /// Entity of node from which edge to remove is connected. + /// Entity of node to which edge to remove is connected. + /// + /// Marker, if we need to recalculate caches and mark related components dirty to update on client side. + /// Should be disabled for initial graph creation to not recalculate cache on each node/edge. + /// + /// True if removed edge was successfully, false otherwise. + public bool RemoveEdge(Entity ent, EntityUid from, EntityUid to, bool dirty = true) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + if (!TryGetIndex(ent, from, out var fromIdx) || + !TryGetIndex(ent, to, out var toIdx)) + return false; + + return RemoveEdge(ent, fromIdx.Value, toIdx.Value, dirty); + } + + /// + /// Removes edge between artifact nodes. + /// + /// Artifact entity that contains 'from' and 'to' node entities. + /// First node index inside artifact node container, from which we need to remove connecting edge. + /// Other node index inside artifact node container, from which we need to remove connecting edge. + /// + /// Marker, if we need to recalculate caches and mark related components dirty to update on client side. + /// Should be disabled for initial graph creation to not recalculate cache on each node/edge. + /// + /// True if removed edge was successfully, false otherwise. + public bool RemoveEdge(Entity ent, int fromIdx, int toIdx, bool dirty = true) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + DebugTools.Assert(fromIdx >= 0 && fromIdx < ent.Comp.NodeVertices.Length, $"fromIdx is out of bounds for fromIdx {fromIdx}"); + DebugTools.Assert(toIdx >= 0 && toIdx < ent.Comp.NodeVertices.Length, $"toIdx is out of bounds for toIdx {toIdx}"); + + if (!ent.Comp.NodeAdjacencyMatrix[fromIdx][toIdx]) + return false; //Edge doesn't exist + + ent.Comp.NodeAdjacencyMatrix[fromIdx][toIdx] = false; + + if (dirty) + { + RebuildXenoArtifactMetaData(ent); + } + + return true; + } + + /// + /// Creates node entity (spawns) and adds node into artifact node container. + /// + /// Artifact entity, to container of which node should be added. + /// EntProtoId of node to be added. + /// Created node or null. + /// + /// Marker, if we need to recalculate caches and mark related components dirty to update on client side. + /// Should be disabled for initial graph creation to not recalculate cache on each node/edge. + /// + /// True if node creation and adding was successful, false otherwise. + public bool AddNode( + Entity ent, + EntProtoId entProtoId, + [NotNullWhen(true)] out Entity? node, + bool dirty = true + ) + { + node = null; + if (!Resolve(ent, ref ent.Comp)) + return false; + + var uid = Spawn(entProtoId); + node = (uid, XenoArtifactNode(uid)); + return AddNode(ent, (node.Value, node.Value.Comp), dirty: dirty); + } + + /// + /// Adds node entity to artifact node container. + /// + /// Artifact entity, to container of which node should be added. + /// Node entity to add. + /// + /// Marker, if we need to recalculate caches and mark related components dirty to update on client side. + /// Should be disabled for initial graph creation to not recalculate cache on each node/edge. + /// + /// True if node adding was successful, false otherwise. + public bool AddNode(Entity ent, Entity node, bool dirty = true) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + node.Comp ??= XenoArtifactNode(node); + node.Comp.Attached = GetNetEntity(ent); + + var nodeIdx = GetFreeNodeIndex((ent, ent.Comp)); + _container.Insert(node.Owner, ent.Comp.NodeContainer); + ent.Comp.NodeVertices[nodeIdx] = GetNetEntity(node); + + Dirty(node); + if (dirty) + { + RebuildXenoArtifactMetaData(ent); + } + + return true; + } + + /// + /// Removes artifact node from artifact node container. + /// + /// Artifact from container of which node should be removed + /// Node entity to be removed. + /// + /// Marker, if we need to recalculate caches and mark related components dirty to update on client side. + /// Should be disabled for initial graph creation to not recalculate cache on each node/edge. + /// + /// True if node was removed successfully, false otherwise. + public bool RemoveNode(Entity ent, Entity node, bool dirty = true) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + node.Comp ??= XenoArtifactNode(node); + + if (!TryGetIndex(ent, node, out var idx)) + return false; // node isn't attached to this entity. + + RemoveAllNodeEdges(ent, idx.Value, dirty: false); + + _container.Remove(node.Owner, ent.Comp.NodeContainer); + node.Comp.Attached = null; + ent.Comp.NodeVertices[idx.Value] = null; + if (dirty) + { + RebuildXenoArtifactMetaData(ent); + } + + Dirty(node); + + return true; + } + + /// + /// Remove edges, connected to passed artifact node. + /// + /// Entity of artifact, in node container of which node resides. + /// Index of node (inside node container), for which all edges should be removed. + /// + /// Marker, if we need to recalculate caches and mark related components dirty to update on client side. + /// Should be disabled for initial graph creation to not recalculate cache on each node/edge. + /// + public void RemoveAllNodeEdges(Entity ent, int nodeIdx, bool dirty = true) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + var predecessors = GetDirectPredecessorNodes(ent, nodeIdx); + foreach (var p in predecessors) + { + RemoveEdge(ent, p, nodeIdx, dirty: false); + } + + var successors = GetDirectSuccessorNodes(ent, nodeIdx); + foreach (var s in successors) + { + RemoveEdge(ent, nodeIdx, s, dirty: false); + } + + if (dirty) + { + RebuildXenoArtifactMetaData(ent); + } + } + + /// + /// Gets set of node entities, that are direct predecessors to passed node entity. + /// + /// + /// Direct predecessors are nodes, which are connected by edges directly to target node, + /// and are on outgoing ('FROM') side of edge connection. + /// + public HashSet> GetDirectPredecessorNodes(Entity ent, EntityUid node) + { + if (!Resolve(ent, ref ent.Comp)) + return new(); + + if (!TryGetIndex(ent, node, out var index)) + return new(); + + var indices = GetDirectPredecessorNodes(ent, index.Value); + var output = new HashSet>(); + foreach (var i in indices) + { + if (TryGetNode(ent, i, out var predecessor)) + output.Add(predecessor.Value); + } + + return output; + } + + /// + /// Gets set of node indices (in artifact node container) which are direct predecessors to node with passed node index. + /// + /// + /// Direct predecessors are nodes, which are connected by edges directly to target node, + /// and are on outgoing ('FROM') side of edge connection. + /// + public HashSet GetDirectPredecessorNodes(Entity ent, int nodeIdx) + { + if (!Resolve(ent, ref ent.Comp)) + return new(); + + DebugTools.Assert(nodeIdx >= 0 && nodeIdx < ent.Comp.NodeVertices.Length, $"node index {nodeIdx} is out of bounds!"); + + var indices = new HashSet(); + for (var i = 0; i < ent.Comp.NodeAdjacencyMatrixRows; i++) + { + if (ent.Comp.NodeAdjacencyMatrix[i][nodeIdx]) + indices.Add(i); + } + + return indices; + } + + /// + /// Gets set of node entities, that are direct successors to passed node entity. + /// + /// + /// Direct successors are nodes, which are connected by edges + /// directly to target node, and are on incoming ('TO') side of edge connection. + /// + public HashSet> GetDirectSuccessorNodes(Entity ent, EntityUid node) + { + if (!Resolve(ent, ref ent.Comp)) + return new(); + + if (!TryGetIndex(ent, node, out var index)) + return new(); + + var indices = GetDirectSuccessorNodes(ent, index.Value); + var output = new HashSet>(); + foreach (var i in indices) + { + if (TryGetNode(ent, i, out var successor)) + output.Add(successor.Value); + } + + return output; + } + + /// + /// Gets set of node indices (in artifact node container) which are direct successors to node with passed node index. + /// + /// + /// Direct successors are nodes, which are connected by edges + /// directly to target node, and are on incoming ('TO') side of edge connection. + /// + public HashSet GetDirectSuccessorNodes(Entity ent, int nodeIdx) + { + if (!Resolve(ent, ref ent.Comp)) + return new(); + DebugTools.Assert(nodeIdx >= 0 && nodeIdx < ent.Comp.NodeVertices.Length, "node index is out of bounds!"); + + var indices = new HashSet(); + for (var i = 0; i < ent.Comp.NodeAdjacencyMatrixColumns; i++) + { + if (ent.Comp.NodeAdjacencyMatrix[nodeIdx][i]) + indices.Add(i); + } + + return indices; + } + + /// + /// Gets set of node entities, that are predecessors to passed node entity. + /// + /// + /// Predecessors are nodes, which are connected by edges directly to target node on 'FROM' side of edge, + /// or connected to such node on 'FROM' side of edge, etc recursively. + /// + public HashSet> GetPredecessorNodes(Entity ent, Entity node) + { + if (!Resolve(ent, ref ent.Comp)) + return new(); + + var predecessors = GetPredecessorNodes(ent, GetIndex((ent, ent.Comp), node)); + var output = new HashSet>(); + foreach (var p in predecessors) + { + output.Add(GetNode((ent, ent.Comp), p)); + } + + return output; + } + + /// + /// Gets set of node indices inside artifact node container, that are predecessors to entity with passed node index. + /// + /// + /// Predecessors are nodes, which are connected by edges directly to target node on 'FROM' side of edge, + /// or connected to such node on 'FROM' side of edge, etc recursively. + /// + public HashSet GetPredecessorNodes(Entity ent, int nodeIdx) + { + if (!Resolve(ent, ref ent.Comp)) + return new(); + + var predecessors = GetDirectPredecessorNodes(ent, nodeIdx); + if (predecessors.Count == 0) + return new(); + + var output = new HashSet(); + foreach (var p in predecessors) + { + output.Add(p); + var recursivePredecessors = GetPredecessorNodes(ent, p); + foreach (var rp in recursivePredecessors) + { + output.Add(rp); + } + } + + return output; + } + + /// + /// Gets set of node entities, that are successors to passed node entity. + /// + /// + /// Successors are nodes, which are connected by edges directly to target node on 'TO' side of edge, + /// or connected to such node on 'TO' side of edge, etc recursively. + /// + public HashSet> GetSuccessorNodes(Entity ent, Entity node) + { + if (!Resolve(ent, ref ent.Comp)) + return new(); + + var successors = GetSuccessorNodes(ent, GetIndex((ent, ent.Comp), node)); + var output = new HashSet>(); + foreach (var s in successors) + { + output.Add(GetNode((ent, ent.Comp), s)); + } + + return output; + } + + /// + /// Gets set of node indices inside artifact node container, that are successors to entity with passed node index. + /// + /// + /// Successors are nodes, which are connected by edges directly to target node on 'TO' side of edge, + /// or connected to such node on 'TO' side of edge, etc recursively. + /// + public HashSet GetSuccessorNodes(Entity ent, int nodeIdx) + { + if (!Resolve(ent, ref ent.Comp)) + return new(); + + var successors = GetDirectSuccessorNodes(ent, nodeIdx); + if (successors.Count == 0) + return new(); + + var output = new HashSet(); + foreach (var s in successors) + { + output.Add(s); + var recursiveSuccessors = GetSuccessorNodes(ent, s); + foreach (var rs in recursiveSuccessors) + { + output.Add(rs); + } + } + + return output; + } + + /// + /// Determines, if there is an edge (directed link) FROM one node TO other in passed artifact. + /// + /// Artifact, inside which node container nodes are. + /// Node FROM which existence of edge should be checked. + /// Node TO which existance of edge should be checked. + public bool NodeHasEdge( + Entity ent, + Entity from, + Entity to + ) + { + if (!Resolve(ent, ref ent.Comp)) + return new(); + + var fromIdx = GetIndex((ent, ent.Comp), from); + var toIdx = GetIndex((ent, ent.Comp), to); + + return ent.Comp.NodeAdjacencyMatrix[fromIdx][toIdx]; + } + + /// + /// Resizes the adjacency matrix and vertices array to , + /// or at least what it WOULD do if i wasn't forced to use shitty lists. + /// + protected void ResizeNodeGraph(Entity ent, int newSize) + { + Array.Resize(ref ent.Comp.NodeVertices, newSize); + + while (ent.Comp.NodeAdjacencyMatrix.Count < newSize) + { + ent.Comp.NodeAdjacencyMatrix.Add(new()); + } + + foreach (var row in ent.Comp.NodeAdjacencyMatrix) + { + while (row.Count < newSize) + { + row.Add(false); + } + } + + Dirty(ent); + } + + /// Removes unlocking state from artifact. + private void CancelUnlockingOnGraphStructureChange(Entity ent) + { + if (!TryComp(ent, out var unlockingComponent)) + return; + + Entity artifactEnt = (ent, unlockingComponent, ent.Comp); + CancelUnlockingState(artifactEnt); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Node.cs b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Node.cs new file mode 100644 index 0000000000..899e578bcf --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Node.cs @@ -0,0 +1,399 @@ +using System.Linq; +using Content.Shared.EntityTable; +using Content.Shared.NameIdentifier; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.Prototypes; +using Robust.Shared.Prototypes; +using Robust.Shared.Utility; + +namespace Content.Shared.Xenoarchaeology.Artifact; + +public abstract partial class SharedXenoArtifactSystem +{ + [Dependency] private readonly EntityTableSystem _entityTable = default!; + + private EntityQuery _xenoArtifactQuery; + private EntityQuery _nodeQuery; + + private void InitializeNode() + { + SubscribeLocalEvent(OnNodeMapInit); + + _xenoArtifactQuery = GetEntityQuery(); + _nodeQuery = GetEntityQuery(); + } + + /// + /// Initializes artifact node on its creation (by setting durability). + /// + private void OnNodeMapInit(Entity ent, ref MapInitEvent args) + { + XenoArtifactNodeComponent nodeComponent = ent; + nodeComponent.MaxDurability -= nodeComponent.MaxDurabilityCanDecreaseBy.Next(RobustRandom); + SetNodeDurability((ent, ent), nodeComponent.MaxDurability); + } + + /// Gets node component by node entity uid. + public XenoArtifactNodeComponent XenoArtifactNode(EntityUid uid) + { + return _nodeQuery.Get(uid); + } + + public void SetNodeUnlocked(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + if (ent.Comp.Attached is not { } netArtifact) + return; + + var artifact = GetEntity(netArtifact); + if (!TryComp(artifact, out var artifactComponent)) + return; + + SetNodeUnlocked((artifact, artifactComponent), (ent, ent.Comp)); + } + + public void SetNodeUnlocked(Entity artifact, Entity node) + { + if (!node.Comp.Locked) + return; + + node.Comp.Locked = false; + RebuildCachedActiveNodes((artifact, artifact)); + Dirty(node); + } + + /// + /// Adds to the node's durability by the specified value. To reduce, provide negative value. + /// + public void AdjustNodeDurability(Entity ent, int durabilityDelta) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + SetNodeDurability(ent, ent.Comp.Durability + durabilityDelta); + } + + /// + /// Sets a node's durability to the specified value. HIGHLY recommended to not be less than 0. + /// + public void SetNodeDurability(Entity ent, int durability) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + ent.Comp.Durability = Math.Clamp(durability, 0, ent.Comp.MaxDurability); + UpdateNodeResearchValue((ent, ent.Comp)); + Dirty(ent); + } + + /// + /// Creates artifact node entity, attaching trigger and marking depth level for future use. + /// + public Entity CreateNode(Entity ent, ProtoId trigger, int depth = 0) + { + var triggerProto = PrototypeManager.Index(trigger); + return CreateNode(ent, triggerProto, depth); + } + + /// + /// Creates artifact node entity, attaching trigger and marking depth level for future use. + /// + public Entity CreateNode(Entity ent, XenoArchTriggerPrototype trigger, int depth = 0) + { + var entProtoId = _entityTable.GetSpawns(ent.Comp.EffectsTable) + .First(); + + AddNode((ent, ent), entProtoId, out var nodeEnt, dirty: false); + DebugTools.Assert(nodeEnt.HasValue, "Failed to create node on artifact."); + + var nodeComponent = nodeEnt.Value.Comp; + nodeComponent.Depth = depth; + nodeComponent.TriggerTip = trigger.Tip; + EntityManager.AddComponents(nodeEnt.Value, trigger.Components); + + Dirty(nodeEnt.Value); + return nodeEnt.Value; + } + + /// Checks if all predecessor nodes are marked as 'unlocked'. + public bool HasUnlockedPredecessor(Entity ent, EntityUid node) + { + var predecessors = GetDirectPredecessorNodes((ent, ent), node); + if (predecessors.Count == 0) + { + return true; + } + + foreach (var predecessor in predecessors) + { + if (predecessor.Comp.Locked) + { + return false; + } + } + + return true; + } + + /// Checks if node was marked as 'active'. Active nodes are invoked on artifact use (if durability is greater than zero). + public bool IsNodeActive(Entity ent, EntityUid node) + { + return ent.Comp.CachedActiveNodes.Contains(GetNetEntity(node)); + } + + /// + /// Gets list of 'active' nodes. Active nodes are invoked on artifact use (if durability is greater than zero). + /// + public List> GetActiveNodes(Entity ent) + { + return ent.Comp.CachedActiveNodes + .Select(activeNode => _nodeQuery.Get(GetEntity(activeNode))) + .ToList(); + } + + /// + /// Gets amount of research points that can be extracted from node. + /// We can only extract "what's left" - its base value, reduced by already consumed value. + /// Every drained durability brings more points to be extracted. + /// + public int GetResearchValue(Entity ent) + { + if (ent.Comp.Locked) + return 0; + + return Math.Max(0, ent.Comp.ResearchValue - ent.Comp.ConsumedResearchValue); + } + + /// + /// Sets amount of points already extracted from node. + /// + public void SetConsumedResearchValue(Entity ent, int value) + { + ent.Comp.ConsumedResearchValue = value; + Dirty(ent); + } + + /// + /// Converts node entity uid to its display name (which is Identifier from . + /// + public string GetNodeId(EntityUid uid) + { + return (CompOrNull(uid)?.Identifier ?? 0).ToString("D3"); + } + + /// + /// Gets two-dimensional array in a form of nested lists, which holds artifact nodes, grouped by segments. + /// Segments are groups of interconnected nodes, there might be one or more segments in non-empty artifact. + /// + public List>> GetSegments(Entity ent) + { + var output = new List>>(); + + foreach (var segment in ent.Comp.CachedSegments) + { + var outSegment = new List>(); + foreach (var netNode in segment) + { + var node = GetEntity(netNode); + outSegment.Add((node, XenoArtifactNode(node))); + } + + output.Add(outSegment); + } + + return output; + } + + /// + /// Gets list of nodes, grouped by depth level. Depth level count starts from 0. + /// Only 0 depth nodes have no incoming edges - as only they are starting nodes. + /// + public Dictionary>> GetDepthOrderedNodes(IEnumerable> nodes) + { + var nodesByDepth = new Dictionary>>(); + + foreach (var node in nodes) + { + if (!nodesByDepth.TryGetValue(node.Comp.Depth, out var depthList)) + { + depthList = new List>(); + nodesByDepth.Add(node.Comp.Depth, depthList); + } + + depthList.Add(node); + } + + return nodesByDepth; + } + + /// + /// Rebuilds all the data, associated with nodes in an artifact, updating caches. + /// + public void RebuildXenoArtifactMetaData(Entity artifact) + { + if (!Resolve(artifact, ref artifact.Comp)) + return; + + RebuildCachedActiveNodes(artifact); + RebuildCachedSegments(artifact); + foreach (var node in GetAllNodes((artifact, artifact.Comp))) + { + RebuildNodeMetaData(node); + } + + CancelUnlockingOnGraphStructureChange((artifact, artifact.Comp)); + } + + public void RebuildNodeMetaData(Entity node) + { + UpdateNodeResearchValue(node); + } + + /// + /// Clears all cached active nodes and rebuilds the list using the current node state. + /// Active nodes have the following property: + /// - Are unlocked themselves + /// - All successors are also unlocked + /// + /// + /// You could technically modify this to have a per-node method that only checks direct predecessors + /// and then does recursive updates for all successors, but I don't think the optimization is necessary right now. + /// + public void RebuildCachedActiveNodes(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + ent.Comp.CachedActiveNodes.Clear(); + var allNodes = GetAllNodes((ent, ent.Comp)); + foreach (var node in allNodes) + { + // Locked nodes cannot be active. + if (node.Comp.Locked) + continue; + + var successors = GetDirectSuccessorNodes(ent, node); + + // If this node has no successors, then we don't need to bother with this extra logic. + if (successors.Count != 0) + { + // Checks for any of the direct successors being unlocked. + var successorIsUnlocked = false; + foreach (var sNode in successors) + { + if (sNode.Comp.Locked) + continue; + + successorIsUnlocked = true; + break; + } + + // Active nodes must be at the end of the path. + if (successorIsUnlocked) + continue; + } + + var netEntity = GetNetEntity(node); + ent.Comp.CachedActiveNodes.Add(netEntity); + } + + Dirty(ent); + } + + public void RebuildCachedSegments(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return; + + ent.Comp.CachedSegments.Clear(); + + var entities = GetAllNodes((ent, ent.Comp)) + .ToList(); + var segments = GetSegmentsFromNodes((ent, ent.Comp), entities); + var netEntities = segments.Select( + s => s.Select(n => GetNetEntity(n)) + .ToList() + ); + ent.Comp.CachedSegments.AddRange(netEntities); + + Dirty(ent); + } + + /// + /// Gets two-dimensional array (as lists inside enumeration) that contains artifact nodes, grouped by segment. + /// + public IEnumerable>> GetSegmentsFromNodes(Entity ent, List> nodes) + { + var outSegments = new List>>(); + foreach (var node in nodes) + { + var segment = new List>(); + GetSegmentNodesRecursive(ent, node, segment, outSegments); + + if (segment.Count == 0) + continue; + + outSegments.Add(segment); + } + + return outSegments; + } + + /// + /// Fills nodes into segments by recursively walking through collections of predecessors and successors. + /// + private void GetSegmentNodesRecursive( + Entity ent, + Entity node, + List> segment, + List>> otherSegments + ) + { + if (otherSegments.Any(s => s.Contains(node))) + return; + + if (segment.Contains(node)) + return; + + segment.Add(node); + + var predecessors = GetDirectPredecessorNodes((ent, ent), node); + foreach (var p in predecessors) + { + GetSegmentNodesRecursive(ent, p, segment, otherSegments); + } + + var successors = GetDirectSuccessorNodes((ent, ent), node); + foreach (var s in successors) + { + GetSegmentNodesRecursive(ent, s, segment, otherSegments); + } + } + + /// + /// Sets node research point amount that can be extracted. + /// Used up durability increases amount to be extracted. + /// + public void UpdateNodeResearchValue(Entity node) + { + XenoArtifactNodeComponent nodeComponent = node; + if (nodeComponent.Attached == null) + { + nodeComponent.ResearchValue = 0; + return; + } + + var artifact = _xenoArtifactQuery.Get(GetEntity(nodeComponent.Attached.Value)); + + var nonactiveNodes = GetActiveNodes(artifact); + var durabilityEffect = MathF.Pow((float)nodeComponent.Durability / nodeComponent.MaxDurability, 2); + var durabilityMultiplier = nonactiveNodes.Contains(node) + ? 1f - durabilityEffect + : 1f + durabilityEffect; + + var predecessorNodes = GetPredecessorNodes((artifact, artifact), node); + nodeComponent.ResearchValue = (int)(Math.Pow(1.25, Math.Pow(predecessorNodes.Count, 1.5f)) * nodeComponent.BasePointValue * durabilityMultiplier); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Unlock.cs b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Unlock.cs new file mode 100644 index 0000000000..57d6502bfb --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.Unlock.cs @@ -0,0 +1,185 @@ +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Robust.Shared.Audio; +using Robust.Shared.Audio.Systems; +using Robust.Shared.Collections; +using Robust.Shared.Random; + +namespace Content.Shared.Xenoarchaeology.Artifact; + +public abstract partial class SharedXenoArtifactSystem +{ + [Dependency] private readonly SharedAudioSystem _audio = default!; + + private EntityQuery _unlockingQuery; + + private void InitializeUnlock() + { + _unlockingQuery = GetEntityQuery(); + + SubscribeLocalEvent(OnUnlockingStarted); + } + + /// Finish unlocking phase when the time is up. + private void UpdateUnlock(float _) + { + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var unlock, out var comp)) + { + if (_timing.CurTime < unlock.EndTime) + continue; + + FinishUnlockingState((uid, unlock, comp)); + } + } + + /// + /// Checks if node can be unlocked. + /// Only those nodes, that have no predecessors, or have all + /// predecessors unlocked can be unlocked themselves. + /// Artifact being suppressed also prevents unlocking. + /// + public bool CanUnlockNode(Entity ent) + { + if (!Resolve(ent, ref ent.Comp)) + return false; + + var artifact = GetEntity(ent.Comp.Attached); + if (!TryComp(artifact, out var artiComp)) + return false; + + if (artiComp.Suppressed) + return false; + + if (!HasUnlockedPredecessor((artifact.Value, artiComp), ent) + // unlocked final nodes should not listen for unlocking + || (!ent.Comp.Locked && GetSuccessorNodes((artifact.Value, artiComp), (ent.Owner, ent.Comp)).Count == 0) + ) + return false; + + return true; + } + + /// + /// Finishes unlocking phase, removing related component, and sums up what nodes were triggered, + /// that could be unlocked. Marks such nodes as unlocked, and pushes their node activation event. + /// + public void FinishUnlockingState(Entity ent) + { + string unlockAttemptResultMsg; + XenoArtifactComponent artifactComponent = ent; + XenoArtifactUnlockingComponent unlockingComponent = ent; + + SoundSpecifier? soundEffect; + if (TryGetNodeFromUnlockState(ent, out var node)) + { + SetNodeUnlocked((ent, artifactComponent), node.Value); + ActivateNode((ent, ent), (node.Value, node.Value), null, null, Transform(ent).Coordinates, false); + unlockAttemptResultMsg = "artifact-unlock-state-end-success"; + + // as an experiment - unlocking node doesn't activate it, activation is left for player to decide. + // var activated = ActivateNode((ent, artifactComponent), node.Value, null, null, Transform(ent).Coordinates, false); + // if (activated) + soundEffect = unlockingComponent.UnlockActivationSuccessfulSound; + } + else + { + unlockAttemptResultMsg = "artifact-unlock-state-end-failure"; + soundEffect = unlockingComponent.UnlockActivationFailedSound; + } + + if (_net.IsServer) + { + _popup.PopupEntity(Loc.GetString(unlockAttemptResultMsg), ent); + _audio.PlayPvs(soundEffect, ent.Owner); + } + + RemComp(ent, unlockingComponent); + RaiseUnlockingFinished(ent, node); + artifactComponent.NextUnlockTime = _timing.CurTime + artifactComponent.UnlockStateRefractory; + } + + public void CancelUnlockingState(Entity ent) + { + RemComp(ent, ent.Comp1); + RaiseUnlockingFinished(ent, null); + } + + /// + /// Gets first locked node that can be unlocked (it is locked and all predecessor are unlocked). + /// + public bool TryGetNodeFromUnlockState( + Entity ent, + [NotNullWhen(true)] out Entity? node + ) + { + node = null; + var potentialNodes = new ValueList>(); + + var artifactUnlockingComponent = ent.Comp1; + foreach (var nodeIndex in GetAllNodeIndices((ent, ent))) + { + var artifactComponent = ent.Comp2; + var curNode = GetNode((ent, artifactComponent), nodeIndex); + if (!curNode.Comp.Locked || !CanUnlockNode((curNode, curNode))) + continue; + + var requiredIndices = GetPredecessorNodes((ent, artifactComponent), nodeIndex); + requiredIndices.Add(nodeIndex); + + if (!ent.Comp1.ArtifexiumApplied) + { + // Make sure the two sets are identical + if (requiredIndices.Count != artifactUnlockingComponent.TriggeredNodeIndexes.Count + || !artifactUnlockingComponent.TriggeredNodeIndexes.All(requiredIndices.Contains)) + continue; + + node = curNode; + return true; // exit early + } + + // If we apply artifexium, check that the sets are identical EXCEPT for one extra node. + // This node is a "wildcard" and we'll make a pool so we can pick one to actually unlock. + if (!artifactUnlockingComponent.TriggeredNodeIndexes.All(requiredIndices.Contains) || + requiredIndices.Count - 1 != artifactUnlockingComponent.TriggeredNodeIndexes.Count) + continue; + + potentialNodes.Add(curNode); + } + + if (potentialNodes.Count != 0) + node = RobustRandom.Pick(potentialNodes); + + return node != null; + } + + private void OnUnlockingStarted(Entity ent, ref MapInitEvent args) + { + var unlockingStartedEvent = new ArtifactUnlockingStartedEvent(); + RaiseLocalEvent(ent.Owner, ref unlockingStartedEvent); + } + + private void RaiseUnlockingFinished( + Entity ent, + Entity? node + ) + { + var unlockingFinishedEvent = new ArtifactUnlockingFinishedEvent(node); + RaiseLocalEvent(ent.Owner, ref unlockingFinishedEvent); + } + +} + +/// +/// Event for starting artifact unlocking stage. +/// +[ByRefEvent] +public record struct ArtifactUnlockingStartedEvent; + +/// +/// Event for finishing artifact unlocking stage. +/// +/// Node which were unlocked. Null if stage was finished without new unlocks. +[ByRefEvent] +public record struct ArtifactUnlockingFinishedEvent(EntityUid? UnlockedNode); diff --git a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs new file mode 100644 index 0000000000..d98fa059f3 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAE.cs @@ -0,0 +1,162 @@ +using Content.Shared.Administration.Logs; +using Content.Shared.Database; +using Content.Shared.Interaction; +using Content.Shared.Interaction.Events; +using Content.Shared.Timing; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Robust.Shared.Map; + +namespace Content.Shared.Xenoarchaeology.Artifact; + +public abstract partial class SharedXenoArtifactSystem +{ + [Dependency] private readonly UseDelaySystem _useDelay = default!; + [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!; + + private void InitializeXAE() + { + SubscribeLocalEvent(OnUseInHand); + SubscribeLocalEvent(OnAfterInteract); + SubscribeLocalEvent(OnActivateInWorld); + } + + private void OnUseInHand(Entity ent, ref UseInHandEvent args) + { + if (args.Handled) + return; + + args.Handled = TryActivateXenoArtifact(ent, args.User, args.User, Transform(args.User).Coordinates); + } + + private void OnAfterInteract(Entity ent, ref AfterInteractEvent args) + { + if (args.Handled || !args.CanReach) + return; + + args.Handled = TryActivateXenoArtifact(ent, args.User, args.Target, args.ClickLocation); + } + + private void OnActivateInWorld(Entity ent, ref ActivateInWorldEvent args) + { + if (args.Handled || !args.Complex) + return; + + args.Handled = TryActivateXenoArtifact(ent, args.User, args.Target, Transform(args.Target).Coordinates); + } + + /// + /// Attempts to activate artifact nodes. 'active' are nodes that are marked as 'unlocked' and have no other successors, marked as 'unlocked'. + /// + /// Artifact entity, for which attempt to activate was made. + /// Character that attempted to activate artifact. + /// Target, on which artifact activation attempt was used (for hand-held artifact - it can be 'clicked' over someone). + /// Coordinates of entity. + /// Whether this activation will deplete durability on the activated nodes. + /// True, if activation was successful, false otherwise. + public bool TryActivateXenoArtifact( + Entity artifact, + EntityUid? user, + EntityUid? target, + EntityCoordinates coordinates, + bool consumeDurability = true + ) + { + XenoArtifactComponent xenoArtifactComponent = artifact; + if (xenoArtifactComponent.Suppressed) + return false; + + if (TryComp(artifact, out var delay) && !_useDelay.TryResetDelay((artifact, delay), true)) + return false; + + var success = false; + foreach (var node in GetActiveNodes(artifact)) + { + success |= ActivateNode(artifact, node, user, target, coordinates, consumeDurability: consumeDurability); + } + + if (!success) + { + _popup.PopupClient(Loc.GetString("artifact-activation-fail"), artifact, user); + return false; + } + + // we raised event for each node activation, + // now we raise event for artifact itself. For animations and stuff. + var ev = new XenoArtifactActivatedEvent( + artifact, + user, + target, + coordinates + ); + RaiseLocalEvent(artifact, ref ev); + + if (user.HasValue) + _audio.PlayPredicted(xenoArtifactComponent.ForceActivationSoundSpecifier, artifact, user); + else + _audio.PlayPvs(xenoArtifactComponent.ForceActivationSoundSpecifier, artifact); + + return true; + } + + /// + /// Pushes node activation event and updates durability for activated node. + /// + /// Artifact entity, for which attempt to activate was made. + /// Node entity, effect of which should be activated. + /// Character that attempted to activate artifact. + /// Target, on which artifact activation attempt was used (for hand-held artifact - it can be 'clicked' over someone). + /// Coordinates of entity. + /// Marker, if node durability should be adjusted as a result of activation. + /// True, if activation was successful, false otherwise. + public bool ActivateNode( + Entity artifact, + Entity node, + EntityUid? user, + EntityUid? target, + EntityCoordinates coordinates, + bool consumeDurability = true + ) + { + if (node.Comp.Degraded) + return false; + + _adminLogger.Add( + LogType.ArtifactNode, + LogImpact.Low, + $"{ToPrettyString(artifact.Owner)} node {ToPrettyString(node)} got activated at {coordinates}" + ); + if (consumeDurability) + { + AdjustNodeDurability((node, node.Comp), -1); + } + + var ev = new XenoArtifactNodeActivatedEvent(artifact, node, user, target, coordinates); + RaiseLocalEvent(node, ref ev); + return true; + } +} + +/// +/// Event of node activation. Should lead to node effect being activated. +/// +/// Artifact entity, for which attempt to activate was made. +/// Node entity, effect of which should be activated. +/// Character that attempted to activate artifact. +/// Target, on which artifact activation attempt was used (for hand-held artifact - it can be 'clicked' over someone). +/// Coordinates of entity. +[ByRefEvent] +public readonly record struct XenoArtifactNodeActivatedEvent( + Entity Artifact, + Entity Node, + EntityUid? User, + EntityUid? Target, + EntityCoordinates Coordinates +); + +[ByRefEvent] +public readonly record struct XenoArtifactActivatedEvent( + Entity Artifact, + EntityUid? User, + EntityUid? Target, + EntityCoordinates Coordinates +); diff --git a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAT.cs b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAT.cs new file mode 100644 index 0000000000..1ef85db27f --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.XAT.cs @@ -0,0 +1,119 @@ +using System.Linq; +using Content.Shared.Chemistry; +using Content.Shared.Damage; +using Content.Shared.Examine; +using Content.Shared.Interaction; +using Content.Shared.Movement.Pulling.Events; +using Content.Shared.Throwing; +using Content.Shared.Weapons.Melee.Events; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact; + +public abstract partial class SharedXenoArtifactSystem +{ + private void InitializeXAT() + { + XATRelayLocalEvent(); + XATRelayLocalEvent(); + XATRelayLocalEvent(); + XATRelayLocalEvent(); + XATRelayLocalEvent(); + XATRelayLocalEvent(); + XATRelayLocalEvent(); + XATRelayLocalEvent(); + + // special case this one because we need to order the messages + SubscribeLocalEvent(OnExamined); + } + + /// Relays artifact events for artifact nodes. + protected void XATRelayLocalEvent() where T : notnull + { + SubscribeLocalEvent(RelayEventToNodes); + } + + private void OnExamined(Entity ent, ref ExaminedEvent args) + { + using (args.PushGroup(nameof(XenoArtifactComponent))) + { + RelayEventToNodes(ent, ref args); + } + } + + protected void RelayEventToNodes(Entity ent, ref T args) where T : notnull + { + var ev = new XenoArchNodeRelayedEvent(ent, args); + + var nodes = GetAllNodes(ent); + foreach (var node in nodes) + { + RaiseLocalEvent(node, ref ev); + } + } + + /// + /// Attempts to shift artifact into unlocking state, in which it is going to listen to interactions, that could trigger nodes. + /// + public void TriggerXenoArtifact(Entity ent, Entity? node, bool force = false) + { + // limits spontaneous chain activations, also prevents spamming every triggering tool to activate nodes + // without real knowledge about triggers + if (!force && _timing.CurTime < ent.Comp.NextUnlockTime) + return; + + if (!_unlockingQuery.TryGetComponent(ent, out var unlockingComp)) + { + unlockingComp = EnsureComp(ent); + unlockingComp.EndTime = _timing.CurTime + ent.Comp.UnlockStateDuration; + Log.Debug($"{ToPrettyString(ent)} entered unlocking state"); + + if (_net.IsServer) + _popup.PopupEntity(Loc.GetString("artifact-unlock-state-begin"), ent); + Dirty(ent); + } + else if (node != null) + { + var index = GetIndex(ent, node.Value); + + var predecessorNodeIndices = GetPredecessorNodes((ent, ent), index); + var successorNodeIndices = GetSuccessorNodes((ent, ent), index); + if (unlockingComp.TriggeredNodeIndexes.Count == 0 + || unlockingComp.TriggeredNodeIndexes.All( + x => predecessorNodeIndices.Contains(x) || successorNodeIndices.Contains(x) + ) + ) + // we add time on each new trigger, if it is not going to fail us + unlockingComp.EndTime += ent.Comp.UnlockStateIncrementPerNode; + } + + if (node != null && unlockingComp.TriggeredNodeIndexes.Add(GetIndex(ent, node.Value))) + { + Dirty(ent, unlockingComp); + } + } + + public void SetArtifexiumApplied(Entity ent, bool val) + { + ent.Comp.ArtifexiumApplied = val; + Dirty(ent); + } +} + +/// +/// Event wrapper for XenoArch Trigger events. +/// +[ByRefEvent] +public record struct XenoArchNodeRelayedEvent(Entity Artifact, TEvent Args) +{ + /// + /// Original event. + /// + public TEvent Args = Args; + + /// + /// Artifact entity, that received original event. + /// + public Entity Artifact = Artifact; +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.cs new file mode 100644 index 0000000000..a4a4cfc45a --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/SharedXenoArtifactSystem.cs @@ -0,0 +1,65 @@ +using Content.Shared.Actions; +using Content.Shared.Popups; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Robust.Shared.Containers; +using Robust.Shared.Network; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Shared.Xenoarchaeology.Artifact; + +/// +/// Handles all logic for generating and facilitating interactions with XenoArtifacts +/// +public abstract partial class SharedXenoArtifactSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly INetManager _net = default!; + [Dependency] protected readonly IPrototypeManager PrototypeManager = default!; + [Dependency] protected readonly IRobustRandom RobustRandom = default!; + [Dependency] private readonly SharedActionsSystem _actions = default!; + [Dependency] private readonly SharedContainerSystem _container = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnStartup); + SubscribeLocalEvent(OnSelfActivate); + + InitializeNode(); + InitializeUnlock(); + InitializeXAT(); + InitializeXAE(); + } + + /// + public override void Update(float frameTime) + { + base.Update(frameTime); + + UpdateUnlock(frameTime); + } + + /// As all artifacts have to contain nodes - we ensure that they are containers. + private void OnStartup(Entity ent, ref ComponentStartup args) + { + _actions.AddAction(ent, ent.Comp.SelfActivateAction); + ent.Comp.NodeContainer = _container.EnsureContainer(ent, XenoArtifactComponent.NodeContainerId); + } + + private void OnSelfActivate(Entity ent, ref ArtifactSelfActivateEvent args) + { + args.Handled = TryActivateXenoArtifact(ent, ent, null, Transform(ent).Coordinates, false); + } + + public void SetSuppressed(Entity ent, bool val) + { + if (ent.Comp.Suppressed == val) + return; + + ent.Comp.Suppressed = val; + Dirty(ent); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/BaseXAESystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/BaseXAESystem.cs new file mode 100644 index 0000000000..69437821e0 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/BaseXAESystem.cs @@ -0,0 +1,21 @@ +namespace Content.Shared.Xenoarchaeology.Artifact.XAE; + +/// +/// Base class for +/// +/// +public abstract class BaseXAESystem : EntitySystem where T : Component +{ + /// + public override void Initialize() + { + SubscribeLocalEvent(OnActivated); + } + + /// + /// Handler for node activation. + /// + /// Entity (node) that got activated. + /// Activation event (containing artifact and other useful info). + protected abstract void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args); +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEApplyComponentsComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEApplyComponentsComponent.cs new file mode 100644 index 0000000000..6f2eb81771 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEApplyComponentsComponent.cs @@ -0,0 +1,29 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// Applies components when effect is activated. +/// +[RegisterComponent, Access(typeof(XAEApplyComponentsSystem))] +public sealed partial class XAEApplyComponentsComponent : Component +{ + /// + /// Components that are permanently added to an entity when the effect's node is entered. + /// + [DataField] + public ComponentRegistry Components = new(); + + /// + /// Does adding components need to be done only on first activation. + /// + [DataField] + public bool ApplyIfAlreadyHave { get; set; } + + /// + /// Does component need to be restored when activated 2nd or more times. + /// + [DataField] + public bool RefreshOnReactivate { get; set; } +} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/DamageNearbyArtifactComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEDamageInAreaComponent.cs similarity index 60% rename from Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/DamageNearbyArtifactComponent.cs rename to Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEDamageInAreaComponent.cs index fb85446400..3725c1ba1f 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/DamageNearbyArtifactComponent.cs +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEDamageInAreaComponent.cs @@ -1,44 +1,42 @@ -using Content.Shared.Damage; +using Content.Shared.Damage; using Content.Shared.Whitelist; +using Robust.Shared.GameStates; -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; +namespace Content.Shared.Xenoarchaeology.Artifact.XAE.Components; /// /// When activated, damages nearby entities. /// -[RegisterComponent] -public sealed partial class DamageNearbyArtifactComponent : Component +[RegisterComponent, Access(typeof(XAEDamageInAreaSystem)), NetworkedComponent, AutoGenerateComponentState] +public sealed partial class XAEDamageInAreaComponent : Component { /// /// The radius of entities that will be affected /// - [DataField("radius")] + [DataField, AutoNetworkedField] public float Radius = 3f; /// /// A whitelist for filtering certain damage. /// - /// - /// TODO: The component portion, since it uses an array, does not work currently. - /// - [DataField("whitelist")] + [DataField, AutoNetworkedField] public EntityWhitelist? Whitelist; /// /// The damage that is applied /// - [DataField("damage", required: true)] + [DataField(required: true), AutoNetworkedField] public DamageSpecifier Damage = default!; /// /// The chance that damage is applied to each individual entity /// - [DataField("damageChance")] + [DataField, AutoNetworkedField] public float DamageChance = 1f; /// /// Whether or not this should ignore resistances for the damage /// - [DataField("ignoreResistances")] + [DataField, AutoNetworkedField] public bool IgnoreResistances; } diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEKnockComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEKnockComponent.cs new file mode 100644 index 0000000000..72080e099d --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEKnockComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// This is used for using the "knock" spell when the artifact is activated +/// +[RegisterComponent, Access(typeof(XAEKnockSystem)), NetworkedComponent, AutoGenerateComponentState] +public sealed partial class XAEKnockComponent : Component +{ + /// + /// The range of the spell + /// + [DataField, AutoNetworkedField] + public float KnockRange = 4f; +} diff --git a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/RandomTeleportArtifactComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAERandomTeleportInvokerComponent.cs similarity index 51% rename from Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/RandomTeleportArtifactComponent.cs rename to Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAERandomTeleportInvokerComponent.cs index d2be32e95c..a9d9ba1299 100644 --- a/Content.Server/Xenoarchaeology/XenoArtifacts/Effects/Components/RandomTeleportArtifactComponent.cs +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAERandomTeleportInvokerComponent.cs @@ -1,21 +1,23 @@ -namespace Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components; +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE.Components; /// /// When activated, will teleport the artifact /// to a random position within a certain radius /// -[RegisterComponent] -public sealed partial class RandomTeleportArtifactComponent : Component +[RegisterComponent, Access(typeof(XAERandomTeleportInvokerSystem)), NetworkedComponent, AutoGenerateComponentState] +public sealed partial class XAERandomTeleportInvokerComponent : Component { /// /// The max distance that the artifact will teleport. /// - [DataField("maxRange")] + [DataField, AutoNetworkedField] public float MaxRange = 15f; /// /// The min distance that the artifact will teleport. /// - [DataField("minRange")] + [DataField, AutoNetworkedField] public float MinRange = 6f; } diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAERemoveCollisionComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAERemoveCollisionComponent.cs new file mode 100644 index 0000000000..cbc6ee1096 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAERemoveCollisionComponent.cs @@ -0,0 +1,10 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// Removes the masks/layers of hard fixtures from the artifact when added, allowing it to pass through walls +/// and such. +/// +[RegisterComponent, Access(typeof(XAERemoveCollisionSystem)), NetworkedComponent] +public sealed partial class XAERemoveCollisionComponent : Component; diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEShuffleComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEShuffleComponent.cs new file mode 100644 index 0000000000..38858e5948 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/Components/XAEShuffleComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE.Components; + +/// +/// When activated, will shuffle the position of all players +/// within a certain radius. +/// +[RegisterComponent, Access(typeof(XAEShuffleSystem)), NetworkedComponent, AutoGenerateComponentState] +public sealed partial class XAEShuffleComponent : Component +{ + /// + /// Radius, within which mobs would be switched. + /// + [DataField, AutoNetworkedField] + public float Radius = 7.5f; +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEApplyComponentsSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEApplyComponentsSystem.cs new file mode 100644 index 0000000000..e5bd33f581 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEApplyComponentsSystem.cs @@ -0,0 +1,38 @@ +using Content.Shared.Xenoarchaeology.Artifact.XAE.Components; +using Robust.Shared.Timing; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE; + +/// +/// System for applying component-registry when artifact effect is activated. +/// +public sealed class XAEApplyComponentsSystem : BaseXAESystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + if (!_timing.IsFirstTimePredicted) + return; + + var artifact = args.Artifact; + + foreach (var registry in ent.Comp.Components) + { + var componentType = registry.Value.Component.GetType(); + if (!ent.Comp.ApplyIfAlreadyHave && EntityManager.HasComponent(artifact, componentType)) + { + continue; + } + + if (ent.Comp.RefreshOnReactivate) + { + EntityManager.RemoveComponent(artifact, componentType); + } + + var clone = EntityManager.ComponentFactory.GetComponent(registry.Value); + EntityManager.AddComponent(artifact, clone); + } + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEDamageInAreaSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEDamageInAreaSystem.cs new file mode 100644 index 0000000000..405fa338ff --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEDamageInAreaSystem.cs @@ -0,0 +1,43 @@ +using Content.Shared.Damage; +using Content.Shared.Whitelist; +using Content.Shared.Xenoarchaeology.Artifact.XAE.Components; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect that damages entities from whitelist in area. +/// +public sealed class XAEDamageInAreaSystem : BaseXAESystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly EntityWhitelistSystem _whitelistSystem = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + /// Pre-allocated and re-used collection. + private readonly HashSet _entitiesInRange = new(); + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + if (!_timing.IsFirstTimePredicted) + return; + + var damageInAreaComponent = ent.Comp; + _entitiesInRange.Clear(); + _lookup.GetEntitiesInRange(ent.Owner, damageInAreaComponent.Radius, _entitiesInRange); + foreach (var entityInRange in _entitiesInRange) + { + if (!_random.Prob(damageInAreaComponent.DamageChance)) + continue; + + if (_whitelistSystem.IsWhitelistFail(damageInAreaComponent.Whitelist, entityInRange)) + continue; + + _damageable.TryChangeDamage(entityInRange, damageInAreaComponent.Damage, damageInAreaComponent.IgnoreResistances); + } + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEKnockSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEKnockSystem.cs new file mode 100644 index 0000000000..9cc9efe51b --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEKnockSystem.cs @@ -0,0 +1,27 @@ +using Content.Shared.Magic.Events; +using Content.Shared.Xenoarchaeology.Artifact.XAE.Components; +using Robust.Shared.Timing; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect that opens doors in some area around. +/// +public sealed class XAEKnockSystem : BaseXAESystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + if (!_timing.IsFirstTimePredicted) + return; + + var ev = new KnockSpellEvent + { + Performer = ent.Owner, + Range = ent.Comp.KnockRange + }; + RaiseLocalEvent(ev); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERandomTeleportInvokerSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERandomTeleportInvokerSystem.cs new file mode 100644 index 0000000000..24563cbff7 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERandomTeleportInvokerSystem.cs @@ -0,0 +1,29 @@ +using Content.Shared.Popups; +using Content.Shared.Xenoarchaeology.Artifact.XAE.Components; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE; + +public sealed class XAERandomTeleportInvokerSystem : BaseXAESystem +{ + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + [Dependency] private readonly SharedTransformSystem _xform = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + if (!_timing.IsFirstTimePredicted) + return; + // todo: teleport person who activated artifact with artifact itself + var component = ent.Comp; + + var xform = Transform(ent.Owner); + _popup.PopupCoordinates(Loc.GetString("blink-artifact-popup"), xform.Coordinates, PopupType.Medium); + + var offsetTo = _random.NextVector2(component.MinRange, component.MaxRange); + _xform.SetCoordinates(ent.Owner, xform, xform.Coordinates.Offset(offsetTo)); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERemoveCollisionSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERemoveCollisionSystem.cs new file mode 100644 index 0000000000..5b557a77f3 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAERemoveCollisionSystem.cs @@ -0,0 +1,25 @@ +using Content.Shared.Xenoarchaeology.Artifact.XAE.Components; +using Robust.Shared.Physics; +using Robust.Shared.Physics.Systems; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE; + +/// +/// System for xeno artifact effect that make artifact pass through other objects. +/// +public sealed class XAERemoveCollisionSystem : BaseXAESystem +{ + [Dependency] private readonly SharedPhysicsSystem _physics = default!; + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + if (!TryComp(ent.Owner, out var fixtures)) + return; + + foreach (var fixture in fixtures.Fixtures.Values) + { + _physics.SetHard(ent.Owner, fixture, false, fixtures); + } + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEShuffleSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEShuffleSystem.cs new file mode 100644 index 0000000000..9eb627b4f6 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAE/XAEShuffleSystem.cs @@ -0,0 +1,59 @@ +using Content.Shared.Mobs.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAE.Components; +using Robust.Shared.Random; +using Robust.Shared.Timing; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAE; + +/// +/// System that handles mob entities spacial shuffling effect. +/// +public sealed class XAEShuffleSystem : BaseXAESystem +{ + [Dependency] private readonly EntityLookupSystem _lookup = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedTransformSystem _xform = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + private EntityQuery _mobState; + + /// Pre-allocated and re-used collection. + private readonly HashSet _entities= new(); + + /// + public override void Initialize() + { + base.Initialize(); + + _mobState = GetEntityQuery(); + } + + /// + protected override void OnActivated(Entity ent, ref XenoArtifactNodeActivatedEvent args) + { + if(!_timing.IsFirstTimePredicted) + return; + + List> toShuffle = new(); + _entities.Clear(); + _lookup.GetEntitiesInRange(ent.Owner, ent.Comp.Radius, _entities, LookupFlags.Dynamic | LookupFlags.Sundries); + foreach (var entity in _entities) + { + if (!_mobState.HasComponent(entity)) + continue; + + var xform = Transform(entity); + + toShuffle.Add((entity, xform)); + } + + _random.Shuffle(toShuffle); + + while (toShuffle.Count > 1) + { + var ent1 = _random.PickAndTake(toShuffle); + var ent2 = _random.PickAndTake(toShuffle); + _xform.SwapPositions((ent1, ent1), (ent2, ent2)); + } + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/BaseQueryUpdateXATSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/BaseQueryUpdateXATSystem.cs new file mode 100644 index 0000000000..5a7fc53e9e --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/BaseQueryUpdateXATSystem.cs @@ -0,0 +1,51 @@ +using Content.Shared.Xenoarchaeology.Artifact.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// Base type for xeno artifact trigger systems, that are relied on updating loop. +/// +/// Type of XAT component that system will work with. +public abstract class BaseQueryUpdateXATSystem : BaseXATSystem where T : Component +{ + protected EntityQuery _xenoArtifactQuery; + + /// + public override void Initialize() + { + base.Initialize(); + + _xenoArtifactQuery = GetEntityQuery(); + } + + /// + public override void Update(float frameTime) + { + base.Update(frameTime); + + // TODO: add a way to defer triggering artifacts to the end of the Update loop + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var node)) + { + if (node.Attached == null) + continue; + + var artifact = _xenoArtifactQuery.Get(GetEntity(node.Attached.Value)); + + if (!CanTrigger(artifact, (uid, node))) + continue; + + UpdateXAT(artifact, (uid, comp, node), frameTime); + } + } + + /// + /// Handles update logic that is related to trigger component. + /// + protected abstract void UpdateXAT( + Entity artifact, + Entity node, + float frameTime + ); +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/BaseXATSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/BaseXATSystem.cs new file mode 100644 index 0000000000..d995a12d6a --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/BaseXATSystem.cs @@ -0,0 +1,88 @@ +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Robust.Shared.Timing; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// Base type for xeno artifact trigger systems. Each system should work with 1 trigger mechanics. +/// +/// Type of XAT component that system will work with. +public abstract class BaseXATSystem : EntitySystem where T : Component +{ + [Dependency] protected readonly IGameTiming Timing = default!; + [Dependency] protected readonly SharedXenoArtifactSystem XenoArtifact = default!; + + private EntityQuery _unlockingQuery; + + /// + public override void Initialize() + { + base.Initialize(); + + _unlockingQuery = GetEntityQuery(); + } + + /// + /// Subscribes to event occurring on artifact (and by relaying - on node). + /// + /// Type of event to sub for. + /// Delegate that handles event. + protected void XATSubscribeDirectEvent(XATEventHandler eventHandler) where TEvent : notnull + { + SubscribeLocalEvent>((uid, component, args) => + { + var nodeComp = Comp(uid); + + if (!CanTrigger(args.Artifact, (uid, nodeComp))) + return; + + var node = new Entity(uid, component, nodeComp); + eventHandler.Invoke(args.Artifact, node, ref args.Args); + }); + } + + /// + /// Checks if node can be triggered. + /// + /// Artifact entity. + /// Node from . + protected bool CanTrigger(Entity artifact, Entity node) + { + if (Timing.CurTime < artifact.Comp.NextUnlockTime) + return false; + + if (_unlockingQuery.TryComp(artifact, out var unlocking) && + unlocking.TriggeredNodeIndexes.Contains(XenoArtifact.GetIndex(artifact, node))) + return false; + + if (!XenoArtifact.CanUnlockNode((node, node))) + return false; + + return true; + } + + /// + /// Triggers node. Triggered nodes participate in node unlocking. + /// + protected void Trigger(Entity artifact, Entity node) + { + if (!Timing.IsFirstTimePredicted) + return; + + Log.Debug($"Activated trigger {typeof(T).Name} on node {ToPrettyString(node)} for {ToPrettyString(artifact)}"); + XenoArtifact.TriggerXenoArtifact(artifact, (node.Owner, node.Comp2)); + } + + /// + /// Delegate for handling relayed artifact trigger events. + /// + /// Event type to be handled. + /// Artifact, on which event occurred. + /// Node which for which event were relayed. + /// Event data. + protected delegate void XATEventHandler( + Entity artifact, + Entity node, + ref TEvent args + ) where TEvent : notnull; +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATCompNearbyComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATCompNearbyComponent.cs new file mode 100644 index 0000000000..90c697a359 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATCompNearbyComponent.cs @@ -0,0 +1,30 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used a XAT that activates when an entity fulfilling the given whitelist is nearby the artifact. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(XATCompNearbyComponent)), AutoGenerateComponentState] +public sealed partial class XATCompNearbyComponent : Component +{ + /// + /// Component name that is required to activate trigger. + /// Is spelled without 'Component' suffix. + /// + [DataField(customTypeSerializer: typeof(ComponentNameSerializer)), AutoNetworkedField] + public string RequireComponentWithName = "Item"; + + /// + /// Radius, in which trigger going to search for entity with component. + /// + [DataField, AutoNetworkedField] + public float Radius = 5; + + /// + /// Required entities count. + /// + [DataField, AutoNetworkedField] + public int Count = 1; +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATDamageThresholdReachedComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATDamageThresholdReachedComponent.cs new file mode 100644 index 0000000000..4f5ceb1bae --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATDamageThresholdReachedComponent.cs @@ -0,0 +1,38 @@ +using Content.Shared.Damage; +using Content.Shared.Damage.Prototypes; +using Content.Shared.FixedPoint; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for an artifact that is activated after a certain amount of damage is dealt. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(XATDamageThresholdReachedSystem))] +public sealed partial class XATDamageThresholdReachedComponent : Component +{ + /// + /// Damage, accumulated by artifact so far. Is cleared on node activation. + /// + [DataField, AutoNetworkedField] + public DamageSpecifier AccumulatedDamage = new(); + + /// + /// Damage that is required to activate trigger, grouped by damage type. + /// Only one damage type is required, amount of damage must exceed set limit. + /// is not required to activate trigger if this + /// requirement is satisfied. + /// + [DataField, AutoNetworkedField] + public Dictionary, FixedPoint2> TypesNeeded = new(); + + /// + /// Damage that is required to activate trigger, grouped by damage group. + /// Only one damage type is required, amount of damage must exceed set limit. + /// is not required to activate trigger if this + /// requirement is satisfied. + /// + [DataField, AutoNetworkedField] + public Dictionary, FixedPoint2> GroupsNeeded = new(); +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATDeathComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATDeathComponent.cs new file mode 100644 index 0000000000..48a0916d1b --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATDeathComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for a xenoarch trigger that activates when something dies nearby. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(XATDeathSystem)), AutoGenerateComponentState] +public sealed partial class XATDeathComponent : Component +{ + /// + /// Range within which artifact going to listen to death event. + /// + [DataField, AutoNetworkedField] + public float Range = 15; +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATExaminableTextComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATExaminableTextComponent.cs new file mode 100644 index 0000000000..b097389563 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATExaminableTextComponent.cs @@ -0,0 +1,14 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for an artifact node that puts examine text on the artifact itself. Useful for flavor +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SharedXenoArtifactSystem)), AutoGenerateComponentState] +public sealed partial class XATExaminableTextComponent : Component +{ + /// Text to display. + [DataField(required: true), AutoNetworkedField] + public LocId ExamineText; +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATExamineComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATExamineComponent.cs new file mode 100644 index 0000000000..1b00141484 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATExamineComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for an artifact that is activated when someone examines it. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(XATExamineSystem))] +public sealed partial class XATExamineComponent : Component; diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATInteractionComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATInteractionComponent.cs new file mode 100644 index 0000000000..988738fbb5 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATInteractionComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for a xenoarch trigger that activates after any type of physical interaction. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(XATInteractionSystem))] +public sealed partial class XATInteractionComponent : Component; diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATItemLandComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATItemLandComponent.cs new file mode 100644 index 0000000000..153e532288 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATItemLandComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for an artifact trigger that activates when a thrown item lands on the ground. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(XATItemLandSystem))] +public sealed partial class XATItemLandComponent : Component; diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATReactiveComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATReactiveComponent.cs new file mode 100644 index 0000000000..1af168b4a9 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATReactiveComponent.cs @@ -0,0 +1,38 @@ +using Content.Shared.Chemistry; +using Content.Shared.Chemistry.Reaction; +using Content.Shared.Chemistry.Reagent; +using Content.Shared.FixedPoint; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for a xenoarch trigger that activates when a reaction occurs on the artifact. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(XATReactiveSystem)), AutoGenerateComponentState] +public sealed partial class XATReactiveComponent : Component +{ + [DataField, AutoNetworkedField] + public List ReactionMethods = new() { ReactionMethod.Touch }; + + /// + /// Reagents that are required in quantity to activate trigger. + /// If any of them are present in required amount - activation will be triggered. + /// + [DataField, AutoNetworkedField] + public HashSet> Reagents = new(); + + /// + /// ReagentGroups that are required in quantity to activate trigger. + /// If any of them are present in required amount - activation will be triggered. + /// + [DataField, AutoNetworkedField] + public HashSet> ReactiveGroups = new(); + + /// + /// Min amount of reagent to trigger. + /// + [DataField, AutoNetworkedField] + public FixedPoint2 MinQuantity = 5f; +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATTimerComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATTimerComponent.cs new file mode 100644 index 0000000000..d23b222b14 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATTimerComponent.cs @@ -0,0 +1,23 @@ +using Content.Shared.Destructible.Thresholds; +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for a xenoarch trigger that self-activates at a regular interval +/// +[RegisterComponent, NetworkedComponent, Access(typeof(XATTimerSystem)), AutoGenerateComponentState, AutoGenerateComponentPause] +public sealed partial class XATTimerComponent : Component +{ + /// + /// Next time timer going to activate. + /// + [DataField, AutoNetworkedField, AutoPausedField] + public TimeSpan NextActivation; + + /// + /// Delay between activations. + /// + [DataField, AutoNetworkedField] + public MinMax PossibleDelayInSeconds; +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATToolUseComponent.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATToolUseComponent.cs new file mode 100644 index 0000000000..f07e6ae642 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/Components/XATToolUseComponent.cs @@ -0,0 +1,49 @@ +using Content.Shared.DoAfter; +using Content.Shared.Tools; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +/// +/// This is used for a xenoarch trigger that is activated by a tool being used on it. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(XATToolUseSystem)), AutoGenerateComponentState] +public sealed partial class XATToolUseComponent : Component +{ + /// + /// Tool to be used. + /// + [DataField, AutoNetworkedField] + public ProtoId RequiredTool; + + /// + /// Time that using tool on artifact will take. + /// + [DataField, AutoNetworkedField] + public float Delay = 3; + + /// + /// Amount of fuel using tool will take (for devices such as Welding tool). + /// + [DataField, AutoNetworkedField] + public float Fuel; +} + +/// Do after that will be used if proper tool was used on artifact with . +[Serializable, NetSerializable] +public sealed partial class XATToolUseDoAfterEvent : DoAfterEvent +{ + public NetEntity Node; + + public XATToolUseDoAfterEvent(NetEntity node) + { + Node = node; + } + + public override DoAfterEvent Clone() + { + return this; + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATCompNearbySystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATCompNearbySystem.cs new file mode 100644 index 0000000000..8036ec054f --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATCompNearbySystem.cs @@ -0,0 +1,34 @@ +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// System for xeno artifact trigger that requires some entity/entities with certain component on them nearby. +/// +public sealed class XATCompNearbySystem : BaseQueryUpdateXATSystem +{ + [Dependency] private readonly EntityLookupSystem _entityLookup = default!; + [Dependency] private readonly SharedTransformSystem _transform = default!; + + /// Pre-allocated and re-used collection. + private readonly HashSet> _entities = new(); + + /// + protected override void UpdateXAT( + Entity artifact, + Entity node, + float frameTime + ) + { + var compNearbyComponent = node.Comp1; + + var pos = _transform.GetMapCoordinates(artifact); + var comp = EntityManager.ComponentFactory.GetRegistration(compNearbyComponent.RequireComponentWithName); + + _entities.Clear(); + _entityLookup.GetEntitiesInRange(comp.Type, pos, compNearbyComponent.Radius, _entities); + if (_entities.Count >= compNearbyComponent.Count) + Trigger(artifact, node); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATDamageThresholdReachedSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATDamageThresholdReachedSystem.cs new file mode 100644 index 0000000000..eab832ce6d --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATDamageThresholdReachedSystem.cs @@ -0,0 +1,65 @@ +using Content.Shared.Damage; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; +using Robust.Shared.Prototypes; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// System for xeno artifact trigger that requires certain damage to be applied to artifact within a timeframe. +/// +public sealed class XATDamageThresholdReachedSystem : BaseXATSystem +{ + [Dependency] private readonly IPrototypeManager _prototype = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + XATSubscribeDirectEvent(OnDamageChanged); + } + + private void OnDamageChanged(Entity artifact, Entity node, ref DamageChangedEvent args) + { + if (!args.DamageIncreased || args.DamageDelta == null || args.Origin == artifact.Owner) + return; + + var damageTriggerComponent = node.Comp1; + if (Timing.IsFirstTimePredicted) + damageTriggerComponent.AccumulatedDamage += args.DamageDelta; + + foreach (var (type, needed) in damageTriggerComponent.TypesNeeded) + { + if (damageTriggerComponent.AccumulatedDamage.DamageDict.GetValueOrDefault(type) >= needed) + { + InvokeTrigger(artifact, node); + return; // intentional. Do not continue checks + } + } + + foreach (var (group, needed) in damageTriggerComponent.GroupsNeeded) + { + var damageGroupPrototype = _prototype.Index(group); + if (!damageTriggerComponent.AccumulatedDamage.TryGetDamageInGroup(damageGroupPrototype, out var damage)) + continue; + + if (damage >= needed) + { + InvokeTrigger(artifact, node); + return; // intentional. Do not continue checks + } + } + } + + private void InvokeTrigger( + Entity artifact, + Entity node + ) + { + var damageTriggerComponent = node.Comp1; + damageTriggerComponent.AccumulatedDamage.DamageDict.Clear(); + Dirty(node, damageTriggerComponent); + Trigger(artifact, node); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATDeathSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATDeathSystem.cs new file mode 100644 index 0000000000..747bd82feb --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATDeathSystem.cs @@ -0,0 +1,49 @@ +using Content.Shared.Mobs; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// System for xeno artifact trigger that requires death of some mob near artifact. +/// +public sealed class XATDeathSystem : BaseXATSystem +{ + [Dependency] private readonly SharedTransformSystem _transform = default!; + + private EntityQuery _xenoArtifactQuery; + + /// + public override void Initialize() + { + base.Initialize(); + + _xenoArtifactQuery = GetEntityQuery(); + + SubscribeLocalEvent(OnMobStateChanged); + } + + private void OnMobStateChanged(MobStateChangedEvent args) + { + if (args.NewMobState != MobState.Dead) + return; + + var targetCoords = Transform(args.Target).Coordinates; + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var comp, out var node)) + { + if (node.Attached == null) + continue; + + var artifact = _xenoArtifactQuery.Get(GetEntity(node.Attached.Value)); + + if (!CanTrigger(artifact, (uid, node))) + continue; + + var artifactCoords = Transform(artifact).Coordinates; + if (_transform.InRange(targetCoords, artifactCoords, comp.Range)) + Trigger(artifact, (uid, comp, node)); + } + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATExaminableTextSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATExaminableTextSystem.cs new file mode 100644 index 0000000000..affb850fb0 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATExaminableTextSystem.cs @@ -0,0 +1,28 @@ +using Content.Shared.Examine; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// System for marking xeno artifact with certain text. +/// +/// Not actually a trigger but nice and easy to use. +public sealed class XATExaminableTextSystem : BaseXATSystem +{ + /// + public override void Initialize() + { + base.Initialize(); + + XATSubscribeDirectEvent(OnExamined); + } + + private void OnExamined(Entity artifact, Entity node, ref ExaminedEvent args) + { + if (!args.IsInDetailsRange) + return; + + args.PushMarkup(Loc.GetString(node.Comp1.ExamineText)); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATExamineSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATExamineSystem.cs new file mode 100644 index 0000000000..44616ee7de --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATExamineSystem.cs @@ -0,0 +1,32 @@ +using Content.Shared.Examine; +using Content.Shared.Ghost; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// System for xeno artifact trigger that requires player to examine details of artifact. +/// +public sealed class XATExamineSystem : BaseXATSystem +{ + /// + public override void Initialize() + { + base.Initialize(); + + XATSubscribeDirectEvent(OnExamine); + } + + private void OnExamine(Entity artifact, Entity node, ref ExaminedEvent args) + { + if (!args.IsInDetailsRange) + return; + + if (HasComp(args.Examiner)) + return; + + Trigger(artifact, node); + args.PushMarkup(Loc.GetString("artifact-examine-trigger-desc")); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATInteractionSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATInteractionSystem.cs new file mode 100644 index 0000000000..940e46198e --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATInteractionSystem.cs @@ -0,0 +1,42 @@ +using Content.Shared.Interaction; +using Content.Shared.Movement.Pulling.Events; +using Content.Shared.Weapons.Melee.Events; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// System for xeno artifact trigger that requires some way of 'using' (with default action) an artifact entity. +/// +public sealed class XATInteractionSystem : BaseXATSystem +{ + /// + public override void Initialize() + { + base.Initialize(); + + XATSubscribeDirectEvent(OnPullStart); + XATSubscribeDirectEvent(OnAttacked); + XATSubscribeDirectEvent(OnInteractHand); + } + + private void OnPullStart(Entity artifact, Entity node, ref PullStartedMessage args) + { + Trigger(artifact, node); + } + + private void OnAttacked(Entity artifact, Entity node, ref AttackedEvent args) + { + Trigger(artifact, node); + } + + private void OnInteractHand(Entity artifact, Entity node, ref InteractHandEvent args) + { + if (args.Handled) + return; + + args.Handled = true; + Trigger(artifact, node); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATItemLandSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATItemLandSystem.cs new file mode 100644 index 0000000000..943d1ef5c5 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATItemLandSystem.cs @@ -0,0 +1,24 @@ +using Content.Shared.Throwing; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// System for xeno artifact trigger that requires hand-held artifact to be thrown (and land). +/// +public sealed class XATItemLandSystem : BaseXATSystem +{ + /// + public override void Initialize() + { + base.Initialize(); + + XATSubscribeDirectEvent(OnLand); + } + + private void OnLand(Entity artifact, Entity node, ref LandEvent args) + { + Trigger(artifact, node); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATReactiveSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATReactiveSystem.cs new file mode 100644 index 0000000000..6b0c425ea3 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATReactiveSystem.cs @@ -0,0 +1,58 @@ +using Content.Shared.Chemistry; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// System for xeno artifact trigger that requires some chemical reagent. +/// +public sealed class XATReactiveSystem : BaseXATSystem +{ + /// + public override void Initialize() + { + base.Initialize(); + + XATSubscribeDirectEvent(OnReaction); + } + + private void OnReaction(Entity artifact, Entity node, ref ReactionEntityEvent args) + { + var reactiveTriggerComponent = node.Comp1; + if (!reactiveTriggerComponent.ReactionMethods.Contains(args.Method)) + return; + + if (args.ReagentQuantity.Quantity < reactiveTriggerComponent.MinQuantity) + return; + + if (!reactiveTriggerComponent.Reagents.Contains(args.Reagent.ID)) + return; + + if (reactiveTriggerComponent.ReactiveGroups?.Count > 0 && !ReagentHaveReactiveGroup(args, reactiveTriggerComponent)) + return; + + Trigger(artifact, node); + } + + private static bool ReagentHaveReactiveGroup(ReactionEntityEvent args, XATReactiveComponent reactiveTriggerComponent) + { + var reactiveReagentEffectEntries = args.Reagent.ReactiveEffects; + if (reactiveReagentEffectEntries == null) + { + return false; + } + + var reactiveGroups = reactiveTriggerComponent.ReactiveGroups; + foreach(var reactiveGroup in reactiveGroups) + { + if (reactiveReagentEffectEntries.TryGetValue(reactiveGroup, out var effectEntry) + && effectEntry.Methods?.Contains(args.Method) == true) + { + return true; + } + } + + return false; + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATTimerSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATTimerSystem.cs new file mode 100644 index 0000000000..af77711852 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATTimerSystem.cs @@ -0,0 +1,68 @@ +using Content.Shared.Examine; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; +using Robust.Shared.Random; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// System for xeno artifact trigger that activates from time to time on schedule. +/// +public sealed class XATTimerSystem : BaseQueryUpdateXATSystem +{ + [Dependency] private readonly IRobustRandom _robustRandom = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnMapInit); + XATSubscribeDirectEvent(OnExamine); + } + + // We handle the timer resetting here because we need to keep it updated even if the node isn't able to unlock. + public override void Update(float frameTime) + { + base.Update(frameTime); + + var timerQuery = EntityQueryEnumerator(); + while (timerQuery.MoveNext(out var uid, out var timer)) + { + if (Timing.CurTime < timer.NextActivation) + continue; + timer.NextActivation += GetNextDelay(timer); + Dirty(uid, timer); + } + } + + /// + protected override void UpdateXAT(Entity artifact, Entity node, float frameTime) + { + if (Timing.CurTime > node.Comp1.NextActivation) + Trigger(artifact, node); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + var delay = GetNextDelay(ent); + ent.Comp.NextActivation = Timing.CurTime + delay; + Dirty(ent); + } + + private void OnExamine(Entity artifact, Entity node, ref ExaminedEvent args) + { + if (!args.IsInDetailsRange) + return; + + args.PushMarkup( + Loc.GetString("xenoarch-trigger-examine-timer", + ("time", MathF.Ceiling((float) (node.Comp1.NextActivation - Timing.CurTime).TotalSeconds))) + ); + } + + private TimeSpan GetNextDelay(XATTimerComponent comp) + { + return TimeSpan.FromSeconds(comp.PossibleDelayInSeconds.Next(_robustRandom)); + } +} diff --git a/Content.Shared/Xenoarchaeology/Artifact/XAT/XATToolUseSystem.cs b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATToolUseSystem.cs new file mode 100644 index 0000000000..ca2692af46 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Artifact/XAT/XATToolUseSystem.cs @@ -0,0 +1,52 @@ +using Content.Shared.Interaction; +using Content.Shared.Tools.Components; +using Content.Shared.Tools.Systems; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; + +namespace Content.Shared.Xenoarchaeology.Artifact.XAT; + +/// +/// This handles +/// +public sealed class XATToolUseSystem : BaseXATSystem +{ + [Dependency] private readonly SharedToolSystem _tool = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + XATSubscribeDirectEvent(OnInteractUsing); + XATSubscribeDirectEvent(OnToolUseComplete); + } + + private void OnToolUseComplete(Entity artifact, Entity node, ref XATToolUseDoAfterEvent args) + { + if (args.Cancelled) + return; + + if (GetEntity(args.Node) != node.Owner) + return; + + Trigger(artifact, node); + args.Handled = true; + } + + private void OnInteractUsing(Entity artifact, Entity node, ref InteractUsingEvent args) + { + if (!TryComp(args.Used, out var tool)) + return; + + var toolUseTriggerComponent = node.Comp1; + args.Handled = _tool.UseTool(args.Used, + args.User, + artifact, + toolUseTriggerComponent.Delay, + toolUseTriggerComponent.RequiredTool, + new XATToolUseDoAfterEvent(GetNetEntity(node)), + fuel: toolUseTriggerComponent.Fuel, + tool); + } +} diff --git a/Content.Shared/Xenoarchaeology/Equipment/Components/AnalysisConsoleComponent.cs b/Content.Shared/Xenoarchaeology/Equipment/Components/AnalysisConsoleComponent.cs new file mode 100644 index 0000000000..3247e3365a --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Equipment/Components/AnalysisConsoleComponent.cs @@ -0,0 +1,52 @@ +using Content.Shared.DeviceLinking; +using Robust.Shared.Audio; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared.Xenoarchaeology.Equipment.Components; + +/// +/// The console that is used for artifact analysis +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +public sealed partial class AnalysisConsoleComponent : Component +{ + /// + /// The analyzer entity the console is linked. + /// Can be null if not linked. + /// + [DataField, AutoNetworkedField] + public NetEntity? AnalyzerEntity; + + [DataField] + public SoundSpecifier? ScanFinishedSound = new SoundPathSpecifier("/Audio/Machines/scan_finish.ogg"); + + /// + /// The sound played when an artifact has points extracted. + /// + [DataField] + public SoundSpecifier? ExtractSound = new SoundPathSpecifier("/Audio/Effects/radpulse11.ogg") + { + Params = new AudioParams + { + Volume = 4, + } + }; + + /// + /// The machine linking port for the analyzer + /// + [DataField] + public ProtoId LinkingPort = "ArtifactAnalyzerSender"; +} + +[Serializable, NetSerializable] +public enum ArtifactAnalyzerUiKey : byte +{ + Key +} + +[Serializable, NetSerializable] +public sealed class AnalysisConsoleExtractButtonPressedMessage : BoundUserInterfaceMessage; + diff --git a/Content.Shared/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs b/Content.Shared/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs new file mode 100644 index 0000000000..05d17bb123 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Equipment/Components/ArtifactAnalyzerComponent.cs @@ -0,0 +1,38 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Equipment.Components; + +/// +/// A machine that is combined and linked to the +/// in order to analyze artifacts and extract points. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +public sealed partial class ArtifactAnalyzerComponent : Component +{ + /// + /// How long it takes to analyze an artifact + /// + [DataField] + public TimeSpan AnalysisDuration = TimeSpan.FromSeconds(30); + + /// + /// The current artifact placed on this analyzer. + /// Can be null if none are present. + /// + [DataField, AutoNetworkedField] + public EntityUid? CurrentArtifact; + + /// + /// The corresponding console entity. + /// Can be null if not linked. + /// + [ViewVariables, AutoNetworkedField] + public EntityUid? Console; + + /// + /// Marker, if artifact graph data is ready for printing. + /// + [ViewVariables(VVAccess.ReadWrite)] + public bool ReadyToPrint = false; +} diff --git a/Content.Shared/Xenoarchaeology/Equipment/ArtifactCrusherComponent.cs b/Content.Shared/Xenoarchaeology/Equipment/Components/ArtifactCrusherComponent.cs similarity index 98% rename from Content.Shared/Xenoarchaeology/Equipment/ArtifactCrusherComponent.cs rename to Content.Shared/Xenoarchaeology/Equipment/Components/ArtifactCrusherComponent.cs index e21cedb6f9..69a682b660 100644 --- a/Content.Shared/Xenoarchaeology/Equipment/ArtifactCrusherComponent.cs +++ b/Content.Shared/Xenoarchaeology/Equipment/Components/ArtifactCrusherComponent.cs @@ -9,7 +9,7 @@ using Robust.Shared.Prototypes; using Robust.Shared.Serialization; using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom; -namespace Content.Shared.Xenoarchaeology.Equipment; +namespace Content.Shared.Xenoarchaeology.Equipment.Components; /// /// This is an entity storage that, when activated, crushes the artifact inside of it and gives artifact fragments. diff --git a/Content.Shared/Xenoarchaeology/Equipment/Components/NodeScannerComponent.cs b/Content.Shared/Xenoarchaeology/Equipment/Components/NodeScannerComponent.cs new file mode 100644 index 0000000000..89403ee1e3 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Equipment/Components/NodeScannerComponent.cs @@ -0,0 +1,58 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Serialization; + +namespace Content.Shared.Xenoarchaeology.Equipment.Components; + +/// +/// Component for managing data stored on NodeScanner hand-held device. +/// Can store snapshot list of currently triggered artifact nodes. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true), Access(typeof(SharedNodeScannerSystem))] +public sealed partial class NodeScannerComponent : Component +{ + /// + /// Identity-names (3-digit codes) of nodes that are triggered on scanned artifact. + /// + [DataField, AutoNetworkedField] + public HashSet TriggeredNodesSnapshot = new(); + + /// + /// State of artifact on the moment of scanning. + /// + [DataField, AutoNetworkedField] + public ArtifactState ArtifactState; + + /// + /// Time until next unlocking of scanned artifact can be started. + /// + [DataField, AutoNetworkedField] + public TimeSpan? WaitTime; + + /// + /// Moment of gametime, at which last artifact scanning was done. + /// + [DataField, AutoNetworkedField] + public TimeSpan? ScannedAt; +} + +/// +/// Displayable to player artifact states. +/// +[Serializable, NetSerializable] +public enum ArtifactState +{ + /// Unused default. + None, + /// Artifact is ready to start unlocking. + Ready, + /// Artifact is in unlocking state, listening to any additional trigger. + Unlocking, + /// Artifact unlocking is on cooldown, nodes could not be triggered. + Cooldown +} + +[Serializable, NetSerializable] +public enum NodeScannerUiKey : byte +{ + Key +} diff --git a/Content.Shared/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs b/Content.Shared/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs new file mode 100644 index 0000000000..831813b1c9 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Equipment/Components/SuppressArtifactContainerComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Xenoarchaeology.Equipment.Components; + +/// +/// Suppress artifact activation, when entity is placed inside this container. +/// +[RegisterComponent, NetworkedComponent, Access(typeof(SuppressArtifactContainerSystem))] +public sealed partial class SuppressArtifactContainerComponent : Component; diff --git a/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzer.cs b/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzer.cs deleted file mode 100644 index 07f2a60c84..0000000000 --- a/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzer.cs +++ /dev/null @@ -1,69 +0,0 @@ -using Robust.Shared.Serialization; -using Robust.Shared.Utility; - -namespace Content.Shared.Xenoarchaeology.Equipment; - -[Serializable, NetSerializable] -public enum ArtifactAnalzyerUiKey : byte -{ - Key -} - -[Serializable, NetSerializable] -public sealed class AnalysisConsoleServerSelectionMessage : BoundUserInterfaceMessage -{ -} - -[Serializable, NetSerializable] -public sealed class AnalysisConsoleScanButtonPressedMessage : BoundUserInterfaceMessage -{ -} - -[Serializable, NetSerializable] -public sealed class AnalysisConsolePrintButtonPressedMessage : BoundUserInterfaceMessage -{ -} - -[Serializable, NetSerializable] -public sealed class AnalysisConsoleExtractButtonPressedMessage : BoundUserInterfaceMessage -{ -} - -[Serializable, NetSerializable] -public sealed class AnalysisConsoleBiasButtonPressedMessage(bool isDown) : BoundUserInterfaceMessage -{ - public bool IsDown = isDown; -} - -[Serializable, NetSerializable] -public sealed class AnalysisConsoleUpdateState( - NetEntity? artifact, - bool analyzerConnected, - bool serverConnected, - bool canScan, - bool canPrint, - FormattedMessage? scanReport, - bool scanning, - bool paused, - TimeSpan? startTime, - TimeSpan? accumulatedRunTime, - TimeSpan? totalTime, - int pointAmount, - bool isTraversalDown -) - : BoundUserInterfaceState -{ - public NetEntity? Artifact = artifact; - public bool AnalyzerConnected = analyzerConnected; - public bool ServerConnected = serverConnected; - public bool CanScan = canScan; - public bool CanPrint = canPrint; - public FormattedMessage? ScanReport = scanReport; - public bool Scanning = scanning; - public bool Paused = paused; - public TimeSpan? StartTime = startTime; - public TimeSpan? AccumulatedRunTime = accumulatedRunTime; - public TimeSpan? TotalTime = totalTime; - public int PointAmount = pointAmount; - public bool IsTraversalDown = isTraversalDown; -} diff --git a/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzerSystem.cs b/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzerSystem.cs new file mode 100644 index 0000000000..e47e964225 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactAnalyzerSystem.cs @@ -0,0 +1,136 @@ +using System.Diagnostics.CodeAnalysis; +using Content.Shared.DeviceLinking; +using Content.Shared.DeviceLinking.Events; +using Content.Shared.Placeable; +using Content.Shared.Power.EntitySystems; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Equipment.Components; + +namespace Content.Shared.Xenoarchaeology.Equipment; + +/// +/// This system is used for managing the artifact analyzer as well as the analysis console. +/// It also handles scanning and ui updates for both systems. +/// +public abstract class SharedArtifactAnalyzerSystem : EntitySystem +{ + [Dependency] private readonly SharedPowerReceiverSystem _powerReceiver = default!; + + /// + public override void Initialize() + { + base.Initialize(); + + SubscribeLocalEvent(OnItemPlaced); + SubscribeLocalEvent(OnItemRemoved); + SubscribeLocalEvent(OnMapInit); + + SubscribeLocalEvent(OnNewLink); + SubscribeLocalEvent(OnPortDisconnected); + } + + private void OnItemPlaced(Entity ent, ref ItemPlacedEvent args) + { + ent.Comp.CurrentArtifact = args.OtherEntity; + Dirty(ent); + } + + private void OnItemRemoved(Entity ent, ref ItemRemovedEvent args) + { + if (args.OtherEntity != ent.Comp.CurrentArtifact) + return; + + ent.Comp.CurrentArtifact = null; + Dirty(ent); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + if (!TryComp(ent, out var sink)) + return; + + foreach (var source in sink.LinkedSources) + { + if (!TryComp(source, out var analysis)) + continue; + + analysis.AnalyzerEntity = GetNetEntity(ent); + ent.Comp.Console = source; + Dirty(source, analysis); + Dirty(ent); + break; + } + } + + private void OnNewLink(Entity ent, ref NewLinkEvent args) + { + if (!TryComp(args.Sink, out var analyzer)) + return; + + ent.Comp.AnalyzerEntity = GetNetEntity(args.Sink); + analyzer.Console = ent; + Dirty(args.Sink, analyzer); + Dirty(ent); + } + + private void OnPortDisconnected(Entity ent, ref PortDisconnectedEvent args) + { + var analyzerNetEntity = ent.Comp.AnalyzerEntity; + if (args.Port != ent.Comp.LinkingPort || analyzerNetEntity == null) + return; + + var analyzerEntityUid = GetEntity(analyzerNetEntity); + if (TryComp(analyzerEntityUid, out var analyzer)) + { + analyzer.Console = null; + Dirty(analyzerEntityUid.Value, analyzer); + } + + ent.Comp.AnalyzerEntity = null; + Dirty(ent); + } + + public bool TryGetAnalyzer(Entity ent, [NotNullWhen(true)] out Entity? analyzer) + { + analyzer = null; + + var consoleEnt = ent.Owner; + if (!_powerReceiver.IsPowered(consoleEnt)) + return false; + + var analyzerUid = GetEntity(ent.Comp.AnalyzerEntity); + if (!TryComp(analyzerUid, out var analyzerComp)) + return false; + + if (!_powerReceiver.IsPowered(analyzerUid.Value)) + return false; + + analyzer = (analyzerUid.Value, analyzerComp); + return true; + } + + public bool TryGetArtifactFromConsole(Entity ent, [NotNullWhen(true)] out Entity? artifact) + { + artifact = null; + + if (!TryGetAnalyzer(ent, out var analyzer)) + return false; + + if (!TryComp(analyzer.Value.Comp.CurrentArtifact, out var comp)) + return false; + + artifact = (analyzer.Value.Comp.CurrentArtifact.Value, comp); + return true; + } + + public bool TryGetAnalysisConsole(Entity ent, [NotNullWhen(true)] out Entity? analysisConsole) + { + analysisConsole = null; + + if (!TryComp(ent.Comp.Console, out var consoleComp)) + return false; + + analysisConsole = (ent.Comp.Console.Value, consoleComp); + return true; + } +} diff --git a/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactCrusherSystem.cs b/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactCrusherSystem.cs index 2d7d86822f..64f3126297 100644 --- a/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactCrusherSystem.cs +++ b/Content.Shared/Xenoarchaeology/Equipment/SharedArtifactCrusherSystem.cs @@ -3,6 +3,7 @@ using Content.Shared.Storage.Components; using Robust.Shared.Audio.Systems; using Robust.Shared.Containers; using Content.Shared.Emag.Systems; +using Content.Shared.Xenoarchaeology.Equipment.Components; namespace Content.Shared.Xenoarchaeology.Equipment; diff --git a/Content.Shared/Xenoarchaeology/Equipment/SharedNodeScannerSystem.cs b/Content.Shared/Xenoarchaeology/Equipment/SharedNodeScannerSystem.cs new file mode 100644 index 0000000000..7589cc8971 --- /dev/null +++ b/Content.Shared/Xenoarchaeology/Equipment/SharedNodeScannerSystem.cs @@ -0,0 +1,120 @@ +using Content.Shared.Interaction; +using Content.Shared.NameIdentifier; +using Content.Shared.Timing; +using Content.Shared.Verbs; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Equipment.Components; +using Robust.Shared.Timing; + +namespace Content.Shared.Xenoarchaeology.Equipment; + +/// Controls behaviour of artifact node scanner device. +public abstract class SharedNodeScannerSystem : EntitySystem +{ + [Dependency] private readonly UseDelaySystem _useDelay = default!; + [Dependency] private readonly SharedXenoArtifactSystem _artifact = default!; + [Dependency] private readonly IGameTiming _timing = default!; + + /// + public override void Initialize() + { + SubscribeLocalEvent(OnBeforeRangedInteract); + SubscribeLocalEvent>(AddScanVerb); + } + + private void OnBeforeRangedInteract(EntityUid uid, NodeScannerComponent component, BeforeRangedInteractEvent args) + { + if (args.Handled || !args.CanReach || args.Target is not { } target) + return; + + Entity unlockingEnt = TryComp(target, out var unlockingComponent) + ? (target, unlockingComponent) + : (target, null); + + TryMakeActiveNodesSnapshot((uid, component), unlockingEnt, args.User); + + args.Handled = true; + } + + private void AddScanVerb(EntityUid uid, NodeScannerComponent component, GetVerbsEvent args) + { + if (!args.CanAccess) + return; + + if (!TryComp(args.Target, out var unlockingComponent)) + return; + + var verb = new UtilityVerb + { + Act = () => + { + TryMakeActiveNodesSnapshot((uid, component), (args.Target, unlockingComponent), args.User); + }, + Text = Loc.GetString("node-scan-tooltip") + }; + + args.Verbs.Add(verb); + } + + private void TryMakeActiveNodesSnapshot( + Entity device, + Entity unlockingEnt, + EntityUid actor + ) + { + if (!_timing.IsFirstTimePredicted) + return; + + if (TryComp(device, out UseDelayComponent? useDelay) + && !_useDelay.TryResetDelay((device, useDelay), true)) + return; + + if (!TryComp(unlockingEnt.Owner, out var artifactComponent)) + return; + + TryOpenUi(device, actor); + + TimeSpan? waitTime = null; + HashSet triggeredNodeNames; + ArtifactState artifactState; + if (unlockingEnt.Comp == null) + { + triggeredNodeNames = new HashSet(); + var timeToUnlockAvailable = artifactComponent.NextUnlockTime - _timing.CurTime; + if (timeToUnlockAvailable > TimeSpan.Zero) + { + artifactState = ArtifactState.Cooldown; + waitTime = timeToUnlockAvailable; + } + else + { + artifactState = ArtifactState.Ready; + } + } + else + { + var triggeredIndexes = unlockingEnt.Comp.TriggeredNodeIndexes; + triggeredNodeNames = new HashSet(triggeredIndexes.Count); + + foreach (var triggeredIndex in triggeredIndexes) + { + var node = _artifact.GetNode((unlockingEnt.Owner, artifactComponent), triggeredIndex); + var triggeredNodeName = (CompOrNull(node)?.Identifier ?? 0).ToString("D3"); + triggeredNodeNames.Add(triggeredNodeName); + } + + artifactState = ArtifactState.Unlocking; + waitTime = _timing.CurTime - unlockingEnt.Comp.EndTime; + } + + device.Comp.ArtifactState = artifactState; + device.Comp.WaitTime = waitTime; + device.Comp.TriggeredNodesSnapshot = triggeredNodeNames; + device.Comp.ScannedAt = _timing.CurTime; + + Dirty(device); + } + + protected abstract void TryOpenUi(Entity device, EntityUid actor); +} diff --git a/Content.Server/Xenoarchaeology/Equipment/Systems/SuppressArtifactContainerSystem.cs b/Content.Shared/Xenoarchaeology/Equipment/SuppressArtifactContainerSystem.cs similarity index 54% rename from Content.Server/Xenoarchaeology/Equipment/Systems/SuppressArtifactContainerSystem.cs rename to Content.Shared/Xenoarchaeology/Equipment/SuppressArtifactContainerSystem.cs index 4278af409a..4076274ca2 100644 --- a/Content.Server/Xenoarchaeology/Equipment/Systems/SuppressArtifactContainerSystem.cs +++ b/Content.Shared/Xenoarchaeology/Equipment/SuppressArtifactContainerSystem.cs @@ -1,12 +1,13 @@ -using Content.Server.Xenoarchaeology.Equipment.Components; -using Content.Server.Xenoarchaeology.XenoArtifacts; +using Content.Shared.Xenoarchaeology.Artifact; +using Content.Shared.Xenoarchaeology.Artifact.Components; +using Content.Shared.Xenoarchaeology.Equipment.Components; using Robust.Shared.Containers; -namespace Content.Server.Xenoarchaeology.Equipment.Systems; +namespace Content.Shared.Xenoarchaeology.Equipment; public sealed class SuppressArtifactContainerSystem : EntitySystem { - [Dependency] private readonly ArtifactSystem _artifact = default!; + [Dependency] private readonly SharedXenoArtifactSystem _xenoArtifact = default!; public override void Initialize() { @@ -17,17 +18,17 @@ public sealed class SuppressArtifactContainerSystem : EntitySystem private void OnInserted(EntityUid uid, SuppressArtifactContainerComponent component, EntInsertedIntoContainerMessage args) { - if (!TryComp(args.Entity, out var artifact)) + if (!TryComp(args.Entity, out var artifact)) return; - _artifact.SetIsSuppressed(args.Entity, true, artifact); + _xenoArtifact.SetSuppressed((args.Entity, artifact), true); } private void OnRemoved(EntityUid uid, SuppressArtifactContainerComponent component, EntRemovedFromContainerMessage args) { - if (!TryComp(args.Entity, out var artifact)) + if (!TryComp(args.Entity, out var artifact)) return; - _artifact.SetIsSuppressed(args.Entity, false, artifact); + _xenoArtifact.SetSuppressed((args.Entity, artifact), false); } } diff --git a/Content.Shared/Xenoarchaeology/XenoArtifacts/ArtifactEffectPrototype.cs b/Content.Shared/Xenoarchaeology/XenoArtifacts/ArtifactEffectPrototype.cs deleted file mode 100644 index 4ba4d0d43a..0000000000 --- a/Content.Shared/Xenoarchaeology/XenoArtifacts/ArtifactEffectPrototype.cs +++ /dev/null @@ -1,44 +0,0 @@ -using Content.Shared.Item; -using Content.Shared.Whitelist; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; - -namespace Content.Shared.Xenoarchaeology.XenoArtifacts; - -/// -/// This is a prototype for... -/// -[Prototype] -[DataDefinition] -public sealed partial class ArtifactEffectPrototype : IPrototype -{ - /// - [IdDataField] - public string ID { get; private set; } = default!; - - /// - /// Components that are added to the artifact when the specfic effect is active. - /// These are removed after the node is exited and the effect is changed. - /// - [DataField("components", serverOnly: true)] - public ComponentRegistry Components = new(); - - /// - /// Components that are permanently added to an entity when the effect's node is entered. - /// - [DataField("permanentComponents")] - public ComponentRegistry PermanentComponents = new(); - - //TODO: make this a list so we can have multiple target depths - [DataField("targetDepth")] - public int TargetDepth = 0; - - [DataField("effectHint")] - public string? EffectHint; - - [DataField("whitelist")] - public EntityWhitelist? Whitelist; - - [DataField("blacklist")] - public EntityWhitelist? Blacklist; -} diff --git a/Content.Shared/Xenoarchaeology/XenoArtifacts/ArtifactTriggerPrototype.cs b/Content.Shared/Xenoarchaeology/XenoArtifacts/ArtifactTriggerPrototype.cs deleted file mode 100644 index 53ade6a5c6..0000000000 --- a/Content.Shared/Xenoarchaeology/XenoArtifacts/ArtifactTriggerPrototype.cs +++ /dev/null @@ -1,33 +0,0 @@ -using Content.Shared.Item; -using Content.Shared.Whitelist; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; - -namespace Content.Shared.Xenoarchaeology.XenoArtifacts; - -/// -/// This is a prototype for... -/// -[Prototype] -[DataDefinition] -public sealed partial class ArtifactTriggerPrototype : IPrototype -{ - /// - [IdDataField] - public string ID { get; private set; } = default!; - - [DataField("components", serverOnly: true)] - public ComponentRegistry Components = new(); - - [DataField("targetDepth")] - public int TargetDepth = 0; - - [DataField("triggerHint")] - public string? TriggerHint; - - [DataField("whitelist")] - public EntityWhitelist? Whitelist; - - [DataField("blacklist")] - public EntityWhitelist? Blacklist; -} diff --git a/Content.Shared/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteComponent.cs b/Content.Shared/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteComponent.cs index 77b381b0b5..ff10ec628b 100644 --- a/Content.Shared/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteComponent.cs +++ b/Content.Shared/Xenoarchaeology/XenoArtifacts/RandomArtifactSpriteComponent.cs @@ -1,4 +1,4 @@ -namespace Content.Shared.Xenoarchaeology.XenoArtifacts; +namespace Content.Shared.Xenoarchaeology.XenoArtifacts; [RegisterComponent] public sealed partial class RandomArtifactSpriteComponent : Component @@ -10,7 +10,7 @@ public sealed partial class RandomArtifactSpriteComponent : Component public int MaxSprite = 14; [DataField("activationTime")] - public double ActivationTime = 2.0; + public double ActivationTime = 0.4; public TimeSpan? ActivationStart; } diff --git a/Content.Shared/Xenoarchaeology/XenoArtifacts/SharedArtifact.cs b/Content.Shared/Xenoarchaeology/XenoArtifacts/SharedArtifact.cs index f7a69eade3..a434f468eb 100644 --- a/Content.Shared/Xenoarchaeology/XenoArtifacts/SharedArtifact.cs +++ b/Content.Shared/Xenoarchaeology/XenoArtifacts/SharedArtifact.cs @@ -1,4 +1,3 @@ -using Content.Shared.Actions; using Robust.Shared.Serialization; namespace Content.Shared.Xenoarchaeology.XenoArtifacts; @@ -7,12 +6,6 @@ namespace Content.Shared.Xenoarchaeology.XenoArtifacts; public enum SharedArtifactsVisuals : byte { SpriteIndex, - IsActivated -} - -/// -/// Raised as an instant action event when a sentient artifact activates itself using an action. -/// -public sealed partial class ArtifactSelfActivateEvent : InstantActionEvent -{ + IsActivated, + IsUnlocking } diff --git a/Content.Shared/Zombies/PendingZombieComponent.cs b/Content.Shared/Zombies/PendingZombieComponent.cs index 0fb61c84df..b199edeb00 100644 --- a/Content.Shared/Zombies/PendingZombieComponent.cs +++ b/Content.Shared/Zombies/PendingZombieComponent.cs @@ -17,7 +17,7 @@ public sealed partial class PendingZombieComponent : Component { DamageDict = new () { - { "Poison", 0.2 }, + { "Poison", 0.4 }, } }; diff --git a/Content.Shared/Zombies/SharedZombieSystem.cs b/Content.Shared/Zombies/SharedZombieSystem.cs index 0388450a8c..076917c4ac 100644 --- a/Content.Shared/Zombies/SharedZombieSystem.cs +++ b/Content.Shared/Zombies/SharedZombieSystem.cs @@ -1,4 +1,6 @@ -using Content.Shared.Movement.Systems; +using Content.Shared.Armor; +using Content.Shared.Inventory; +using Content.Shared.Movement.Systems; using Content.Shared.NameModifier.EntitySystems; namespace Content.Shared.Zombies; @@ -12,6 +14,24 @@ public abstract class SharedZombieSystem : EntitySystem SubscribeLocalEvent(OnRefreshSpeed); SubscribeLocalEvent(OnRefreshNameModifiers); + SubscribeLocalEvent(OnArmorExamine); + SubscribeLocalEvent>(OnResistanceQuery); + } + + private void OnResistanceQuery(Entity ent, ref InventoryRelayedEvent query) + { + query.Args.TotalCoefficient *= ent.Comp.ZombificationResistanceCoefficient; + } + + private void OnArmorExamine(Entity ent, ref ArmorExamineEvent args) + { + var value = MathF.Round((1f - ent.Comp.ZombificationResistanceCoefficient) * 100, 1); + + if (value == 0) + return; + + args.Msg.PushNewline(); + args.Msg.AddMarkupOrThrow(Loc.GetString(ent.Comp.Examine, ("value", value))); } private void OnRefreshSpeed(EntityUid uid, ZombieComponent component, RefreshMovementSpeedModifiersEvent args) diff --git a/Content.Shared/Zombies/ZombieComponent.cs b/Content.Shared/Zombies/ZombieComponent.cs index 94e1e5afec..47ae35b4c5 100644 --- a/Content.Shared/Zombies/ZombieComponent.cs +++ b/Content.Shared/Zombies/ZombieComponent.cs @@ -1,7 +1,7 @@ -using Content.Shared.Antag; using Content.Shared.Chat.Prototypes; using Content.Shared.Chemistry.Reagent; using Content.Shared.Damage; +using Content.Shared.FixedPoint; using Content.Shared.Humanoid; using Content.Shared.Roles; using Content.Shared.StatusIcon; @@ -17,17 +17,30 @@ namespace Content.Shared.Zombies; public sealed partial class ZombieComponent : Component { /// - /// The baseline infection chance you have if you are completely nude + /// The baseline infection chance you have if you have no protective gear /// [ViewVariables(VVAccess.ReadWrite)] - public float MaxZombieInfectionChance = 0.80f; + public float BaseZombieInfectionChance = 0.75f; /// /// The minimum infection chance possible. This is simply to prevent - /// being invincible by bundling up. + /// being overly protected by bundling up. /// [ViewVariables(VVAccess.ReadWrite)] - public float MinZombieInfectionChance = 0.25f; + public float MinZombieInfectionChance = 0.05f; + + /// + /// How effective each resistance type on a piece of armor is. Using a damage specifier for this seems illegal. + /// + public DamageSpecifier ResistanceEffectiveness = new() + { + DamageDict = new () + { + {"Slash", 0.5}, + {"Piercing", 0.3}, + {"Blunt", 0.1}, + } + }; [ViewVariables(VVAccess.ReadWrite)] public float ZombieMovementSpeedDebuff = 0.70f; @@ -127,6 +140,20 @@ public sealed partial class ZombieComponent : Component } }; + /// + /// The damage dealt on bite, dehardcoded for your enjoyment + /// + [DataField] + public DamageSpecifier DamageOnBite = new() + { + DamageDict = new() + { + { "Slash", 13 }, + { "Piercing", 7 }, + { "Structural", 10 } + } + }; + /// /// Path to antagonist alert sound. /// diff --git a/Content.Shared/Zombies/ZombificationResistanceComponent.cs b/Content.Shared/Zombies/ZombificationResistanceComponent.cs new file mode 100644 index 0000000000..58dd99721c --- /dev/null +++ b/Content.Shared/Zombies/ZombificationResistanceComponent.cs @@ -0,0 +1,46 @@ +using Content.Shared.Inventory; +using Robust.Shared.GameStates; + +namespace Content.Shared.Zombies; + +/// +/// An armor-esque component for clothing that grants "resistance" (lowers the chance) against getting infected. +/// It works on a coefficient system, so 0.3 is better than 0.9, 1 is no resistance, and 0 is full resistance. +/// +[NetworkedComponent, RegisterComponent] +public sealed partial class ZombificationResistanceComponent : Component +{ + /// + /// The multiplier that will by applied to the zombification chance. + /// + [DataField] + public float ZombificationResistanceCoefficient = 1; + + /// + /// Examine string for the zombification resistance. + /// Passed value from 0 to 100. + /// + [DataField] + public LocId Examine = "zombification-resistance-coefficient-value"; +} + +/// +/// Gets the total resistance from the ZombificationResistanceComponent, i.e. just all of them multiplied together. +/// +public sealed class ZombificationResistanceQueryEvent : EntityEventArgs, IInventoryRelayEvent +{ + /// + /// All slots to relay to + /// + public SlotFlags TargetSlots { get; } + + /// + /// The Total of all Coefficients. + /// + public float TotalCoefficient = 1.0f; + + public ZombificationResistanceQueryEvent(SlotFlags slots) + { + TargetSlots = slots; + } +} diff --git a/Content.Shared/_CP14/BloodMoon/CP14BloodMoonCurseComponent.cs b/Content.Shared/_CP14/BloodMoon/CP14BloodMoonCurseComponent.cs new file mode 100644 index 0000000000..d91ab569bd --- /dev/null +++ b/Content.Shared/_CP14/BloodMoon/CP14BloodMoonCurseComponent.cs @@ -0,0 +1,27 @@ +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.BloodMoon; + + +[RegisterComponent, NetworkedComponent] +public sealed partial class CP14BloodMoonCurseComponent : Component +{ + [DataField] + public EntityUid? CurseRule; + + [DataField] + public EntProtoId CurseEffect = "CP14BloodMoonCurseEffect"; + + [DataField] + public EntityUid? SpawnedEffect; + + [DataField] + public TimeSpan EndStunDuration = TimeSpan.FromSeconds(60f); + + [DataField] + public EntProtoId Action = "CP14ActionSpellBloodlust"; + + [DataField] + public EntityUid? ActionEntity; +} diff --git a/Content.Shared/_CP14/DayCycle/CP14DayCycleComponent.cs b/Content.Shared/_CP14/DayCycle/CP14DayCycleComponent.cs new file mode 100644 index 0000000000..24e5d6f85c --- /dev/null +++ b/Content.Shared/_CP14/DayCycle/CP14DayCycleComponent.cs @@ -0,0 +1,11 @@ +namespace Content.Shared._CP14.DayCycle; + + +[RegisterComponent] +public sealed partial class CP14DayCycleComponent : Component +{ + public float LastLightLevel = 0f; + + [DataField] + public float Threshold = 0.6f; +} diff --git a/Content.Shared/_CP14/DayCycle/CP14DayCycleSystem.cs b/Content.Shared/_CP14/DayCycle/CP14DayCycleSystem.cs new file mode 100644 index 0000000000..16d99abc9b --- /dev/null +++ b/Content.Shared/_CP14/DayCycle/CP14DayCycleSystem.cs @@ -0,0 +1,130 @@ +using Content.Shared.GameTicking; +using Content.Shared.Light.Components; +using Content.Shared.Storage.Components; +using Content.Shared.Weather; +using Robust.Shared.Map; +using Robust.Shared.Map.Components; +using Robust.Shared.Timing; + +namespace Content.Shared._CP14.DayCycle; + +/// +/// This is an add-on to the LightCycle system that helps you determine what time of day it is on the map +/// +public sealed class CP14DayCycleSystem : EntitySystem +{ + [Dependency] private readonly IGameTiming _timing = default!; + [Dependency] private readonly MetaDataSystem _metaData = default!; + [Dependency] private readonly SharedGameTicker _ticker = default!; + [Dependency] private readonly SharedMapSystem _maps = default!; + [Dependency] private readonly SharedWeatherSystem _weather = default!; + + private EntityQuery _mapGridQuery; + private EntityQuery _storageQuery; + + + public override void Initialize() + { + base.Initialize(); + + _mapGridQuery = GetEntityQuery(); + _storageQuery = GetEntityQuery(); + } + + public override void Update(float frameTime) + { + base.Update(frameTime); + + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out var lightCycle, out var dayCycle, out var map)) + { + var oldLightLevel = dayCycle.LastLightLevel; + var newLightLevel = GetLightLevel((uid, lightCycle)); + + // Going into darkness + if (oldLightLevel > newLightLevel) + { + if (oldLightLevel > dayCycle.Threshold) + { + if (newLightLevel < dayCycle.Threshold) + { + var ev = new CP14StartNightEvent(uid); + RaiseLocalEvent(ev); + } + } + } + + // Going into light + if (oldLightLevel < newLightLevel) + { + if (oldLightLevel < dayCycle.Threshold) + { + if (newLightLevel > dayCycle.Threshold) + { + var ev = new CP14StartDayEvent(uid); + RaiseLocalEvent(ev); + } + } + } + + dayCycle.LastLightLevel = newLightLevel; + } + } + + public float GetLightLevel(Entity map) + { + if (!Resolve(map.Owner, ref map.Comp, false)) + return 0; + + var time = (float)_timing.CurTime + .Add(map.Comp.Offset) + .Subtract(_ticker.RoundStartTimeSpan) + .Subtract(_metaData.GetPauseTime(map)) + .TotalSeconds; + + var normalizedTime = time % map.Comp.Duration.TotalSeconds; + var lightLevel = Math.Sin((normalizedTime / map.Comp.Duration.TotalSeconds) * MathF.PI); + return (float)lightLevel; + } + + /// + /// Checks to see if the specified entity is on the map where it's daytime. + /// + /// An entity being tested to see if it is in daylight + public bool UnderSunlight(EntityUid target) + { + if (_storageQuery.HasComp(target)) + return false; + + var xform = Transform(target); + + if (xform.MapUid is null || xform.GridUid is null) + return false; + + var day = GetLightLevel(xform.MapUid.Value) > 0.5f; + + var grid = xform.GridUid; + if (grid is null) + return day; + + if (!_mapGridQuery.TryComp(grid, out var gridComp)) + return day; + + if (!_weather.CanWeatherAffect(grid.Value, + gridComp, + _maps.GetTileRef(xform.GridUid.Value, gridComp, xform.Coordinates))) + return false; + + return day; + } +} + +public sealed class CP14StartNightEvent(EntityUid map) : EntityEventArgs +{ + public EntityUid Map = map; +} + +public sealed class CP14StartDayEvent(EntityUid map) : EntityEventArgs +{ + public EntityUid Map = map; +} diff --git a/Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs b/Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs deleted file mode 100644 index b2d038fc80..0000000000 --- a/Content.Shared/_CP14/Decals/CP14DecalCleanerEvents.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Content.Shared.DoAfter; -using Robust.Shared.Map; -using Robust.Shared.Serialization; - -namespace Content.Shared._CP14.Decals; - -[Serializable, NetSerializable] -public sealed partial class CP14DecalCleanerDoAfterEvent : DoAfterEvent -{ - public NetCoordinates ClickLocation; - - public CP14DecalCleanerDoAfterEvent(NetCoordinates click) - { - ClickLocation = click; - } - - public override DoAfterEvent Clone() => this; -} diff --git a/Content.Shared/_CP14/Demiplane/Components/CP14DemiplaneTimedDestructionComponent.cs b/Content.Shared/_CP14/Demiplane/Components/CP14DemiplaneTimedDestructionComponent.cs index 9495598efc..10b5d97f2f 100644 --- a/Content.Shared/_CP14/Demiplane/Components/CP14DemiplaneTimedDestructionComponent.cs +++ b/Content.Shared/_CP14/Demiplane/Components/CP14DemiplaneTimedDestructionComponent.cs @@ -9,7 +9,7 @@ namespace Content.Shared._CP14.Demiplane.Components; public sealed partial class CP14DemiplaneTimedDestructionComponent : Component { [DataField] - public TimeSpan TimeToDestruction = TimeSpan.FromSeconds(150f); + public TimeSpan TimeToDestruction = TimeSpan.FromSeconds(130f); [DataField, AutoPausedField] public TimeSpan EndTime = TimeSpan.Zero; diff --git a/Content.Shared/_CP14/Demiplane/Prototypes/CP14DemiplaneLocationPrototype.cs b/Content.Shared/_CP14/Demiplane/Prototypes/CP14DemiplaneLocationPrototype.cs index b6cb82f80d..5db0fc5400 100644 --- a/Content.Shared/_CP14/Demiplane/Prototypes/CP14DemiplaneLocationPrototype.cs +++ b/Content.Shared/_CP14/Demiplane/Prototypes/CP14DemiplaneLocationPrototype.cs @@ -2,6 +2,7 @@ using Content.Shared.Destructible.Thresholds; using Content.Shared.Procedural; using Content.Shared.Tag; using Robust.Shared.Prototypes; +using Robust.Shared.Utility; namespace Content.Shared._CP14.Demiplane.Prototypes; @@ -39,4 +40,7 @@ public sealed partial class CP14DemiplaneLocationPrototype : IPrototype [DataField] public float ExamineProb = 0.75f; + + [DataField] + public SpriteSpecifier? Icon = null; } diff --git a/Content.Shared/_CP14/Demiplane/Prototypes/CP14SpecialDemiplanePrototype.cs b/Content.Shared/_CP14/Demiplane/Prototypes/CP14SpecialDemiplanePrototype.cs new file mode 100644 index 0000000000..a36a040d7f --- /dev/null +++ b/Content.Shared/_CP14/Demiplane/Prototypes/CP14SpecialDemiplanePrototype.cs @@ -0,0 +1,33 @@ +using Content.Shared.Destructible.Thresholds; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Demiplane.Prototypes; + +/// +/// A prototype “Special Demiplane” that can appear on the demiplane map as the final room of a chain of demiplanes. +/// It is supposed to be used as a special demiplane with special modifiers, and mining resources and +/// equipment from here is the main task of adventurers +/// +[Prototype("cp14SpecialDemiplane")] +public sealed partial class CP14SpecialDemiplanePrototype : IPrototype +{ + [IdDataField] public string ID { get; } = default!; + + /// + /// The difficulty levels at which this location can be generated. + /// + [DataField(required: true)] + public MinMax Levels = new(1, 10); + + /// + /// The location config that will be used to generate the demiplane. May be null, and if so, the location will be generated using the default way. + /// + [DataField] + public ProtoId? Location; + + /// + /// Modifiers that will be automatically added to the demiplane when it is generated. + /// + [DataField] + public List> Modifiers = new(); +} diff --git a/Content.Shared/_CP14/DemiplaneTraveling/CP14DemiplaneMapUI.cs b/Content.Shared/_CP14/DemiplaneTraveling/CP14DemiplaneMapUI.cs new file mode 100644 index 0000000000..d87611cdac --- /dev/null +++ b/Content.Shared/_CP14/DemiplaneTraveling/CP14DemiplaneMapUI.cs @@ -0,0 +1,36 @@ + +using System.Numerics; +using Content.Shared._CP14.Demiplane.Prototypes; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared._CP14.DemiplaneTraveling; + +[Serializable, NetSerializable] +public enum CP14DemiplaneMapUiKey +{ + Key, +} + +[Serializable, NetSerializable] +public sealed class CP14DemiplaneMapUiState(Dictionary nodes, HashSet<(Vector2i, Vector2i)>? edges = null) : BoundUserInterfaceState +{ + public Dictionary Nodes = nodes; + public HashSet<(Vector2i, Vector2i)> Edges = edges ?? new(); +} + +[Serializable, NetSerializable] +public sealed class CP14DemiplaneMapNode(int level, Vector2 uiPosition, bool start, ProtoId? locationConfig = null, List>? modifiers = null) +{ + public int Level = level; + public int AdditionalLevel = 0; + public Vector2 UiPosition = uiPosition; + public bool Start = start; + + public bool InFrontierZone = false; + public bool InUsing = false; + public bool Scanned = start; + + public ProtoId? LocationConfig = locationConfig; + public List> Modifiers = modifiers ?? new(); +} diff --git a/Content.Shared/_CP14/DemiplaneTraveling/CP14DemiplaneNavigationMapComponent.cs b/Content.Shared/_CP14/DemiplaneTraveling/CP14DemiplaneNavigationMapComponent.cs new file mode 100644 index 0000000000..efd9df0fb3 --- /dev/null +++ b/Content.Shared/_CP14/DemiplaneTraveling/CP14DemiplaneNavigationMapComponent.cs @@ -0,0 +1,30 @@ +using Content.Shared.Damage; +using Robust.Shared.Audio; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.DemiplaneTraveling; + +/// +/// Component for opening demiplane map UI and interacting with StationDemiplaneMapComponent +/// +[RegisterComponent] +public sealed partial class CP14DemiplaneNavigationMapComponent : Component +{ + /// + /// Extracting coordinates from the demiplane node will create this entity and synchronize its modifiers, location and other parameters. + /// + [DataField] + public EntProtoId KeyProto = "CP14BaseDemiplaneKey"; + + [DataField] + public SoundSpecifier EjectSound = new SoundPathSpecifier("/Audio/Magic/ethereal_exit.ogg"); + + [DataField] + public DamageSpecifier RevokeDamage = new() + { + DamageDict = new() + { + { "Blunt", 100 }, + }, + }; +} diff --git a/Content.Shared/_CP14/DemiplaneTraveling/CP14SharedStationDemiplaneMapSystem.cs b/Content.Shared/_CP14/DemiplaneTraveling/CP14SharedStationDemiplaneMapSystem.cs new file mode 100644 index 0000000000..d2557c6163 --- /dev/null +++ b/Content.Shared/_CP14/DemiplaneTraveling/CP14SharedStationDemiplaneMapSystem.cs @@ -0,0 +1,47 @@ +using Robust.Shared.Serialization; + +namespace Content.Shared._CP14.DemiplaneTraveling; + +public abstract partial class CP14SharedStationDemiplaneMapSystem : EntitySystem +{ + public static bool NodeInFronrierZone(Dictionary nodes, HashSet<(Vector2i, Vector2i)> edges, Vector2i key) + { + if (!nodes.TryGetValue(key, out var node)) + return false; + + if (node.Scanned || node.Start) + return false; + + //return false if no finished or start nodes near + var near = new List(); + foreach (var edge in edges) + { + var node1 = nodes[edge.Item1]; + var node2 = nodes[edge.Item2]; + + if (node1 != node && node2 != node) + continue; + + if (node1.Scanned || node1.Start || node2.Scanned || node2.Start) + { + return true; + } + } + + return false; + } +} + +[Serializable, NetSerializable] +public sealed class CP14DemiplaneMapEjectMessage(Vector2i position) : BoundUserInterfaceMessage +{ + public readonly Vector2i Position = position; +} + + +[Serializable, NetSerializable] +public sealed class CP14DemiplaneMapRevokeMessage(Vector2i position) : BoundUserInterfaceMessage +{ + public readonly Vector2i Position = position; +} + diff --git a/Content.Shared/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapComponent.cs b/Content.Shared/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapComponent.cs new file mode 100644 index 0000000000..699c610a7f --- /dev/null +++ b/Content.Shared/_CP14/DemiplaneTraveling/CP14StationDemiplaneMapComponent.cs @@ -0,0 +1,22 @@ +using Content.Shared.Destructible.Thresholds; + +namespace Content.Shared._CP14.DemiplaneTraveling; + +/// +/// A station component that stores information about the current map of demiplanes, their research status and relationships. +/// +[RegisterComponent] +public sealed partial class CP14StationDemiplaneMapComponent : Component +{ + [DataField] + public Dictionary Nodes = new(); + + [DataField] + public HashSet<(Vector2i, Vector2i)> Edges = new(); + + /// + /// Count of special rooms that can be generated in the demiplane map. + /// + [DataField] + public MinMax Specials = new(30, 30); +} diff --git a/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningItemComponent.cs b/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningItemComponent.cs deleted file mode 100644 index 918062e73e..0000000000 --- a/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningItemComponent.cs +++ /dev/null @@ -1,16 +0,0 @@ -namespace Content.Shared._CP14.MagicAttuning; - -/// -/// Reflects the fact that this subject can be focused on (Magical attune as a mechanic from DnD.) -/// -[RegisterComponent, Access(typeof(CP14SharedMagicAttuningSystem))] -public sealed partial class CP14MagicAttuningItemComponent : Component -{ - /// - /// how long it takes to focus on that object - /// - [DataField] - public TimeSpan FocusTime = TimeSpan.FromSeconds(5f); - - public Entity? Link = null; -} diff --git a/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningMindComponent.cs b/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningMindComponent.cs deleted file mode 100644 index a6e04797f0..0000000000 --- a/Content.Shared/_CP14/MagicAttuning/CP14MagicAttuningMindComponent.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Robust.Shared.GameStates; - -namespace Content.Shared._CP14.MagicAttuning; - -/// -/// A mind that can focus on objects -/// -[RegisterComponent, NetworkedComponent] -[Access(typeof(CP14SharedMagicAttuningSystem))] -public sealed partial class CP14MagicAttuningMindComponent : Component -{ - [DataField] - public int MaxAttuning = 3; - /// - /// The entities that this being is focused on - /// - [DataField] - public List AttunedTo = new(); - - /// - /// cheat: if added to an entity with MindContainer, automatically copied to the mind, removing it from the body. This is to make it easy to add the component to prototype creatures. - /// - [DataField] - public bool AutoCopyToMind = false; -} diff --git a/Content.Shared/_CP14/MagicAttuning/CP14SharedMagicAttuningSystem.cs b/Content.Shared/_CP14/MagicAttuning/CP14SharedMagicAttuningSystem.cs deleted file mode 100644 index 51e630a3e4..0000000000 --- a/Content.Shared/_CP14/MagicAttuning/CP14SharedMagicAttuningSystem.cs +++ /dev/null @@ -1,238 +0,0 @@ -using Content.Shared.DoAfter; -using Content.Shared.Mind; -using Content.Shared.Mind.Components; -using Content.Shared.Popups; -using Content.Shared.Verbs; -using Robust.Shared.Serialization; - -namespace Content.Shared._CP14.MagicAttuning; - -/// -/// This system controls the customization to magic items by the players. -/// -public sealed partial class CP14SharedMagicAttuningSystem : EntitySystem -{ - [Dependency] private readonly SharedMindSystem _mind = default!; - [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; - [Dependency] private readonly SharedPopupSystem _popup = default!; - - public override void Initialize() - { - base.Initialize(); - - SubscribeLocalEvent>(OnInteractionVerb); - SubscribeLocalEvent(OnAttuneDoAfter); - SubscribeLocalEvent(OnMindAdded); - } - - private void OnMindAdded(Entity ent, ref MindAddedMessage args) - { - if (!ent.Comp.AutoCopyToMind) - return; - - if (HasComp(ent)) - return; - - if (!_mind.TryGetMind(ent, out var mindId, out var mind)) - return; - - if (!HasComp(mindId)) - { - var attuneMind = AddComp(mindId); - attuneMind.MaxAttuning = ent.Comp.MaxAttuning; - } - } - - public bool IsAttunedTo(EntityUid mind, EntityUid item) - { - if (!TryComp(item, out var attuningItem)) - return false; - - if (!TryComp(mind, out var attuningMind)) - return false; - - return attuningMind.AttunedTo.Contains(item); - } - - private void OnInteractionVerb(Entity attuningItem, ref GetVerbsEvent args) - { - if (!args.CanAccess || !args.CanInteract) - return; - - if (!_mind.TryGetMind(args.User, out var mindId, out var mind)) - return; - - if (!TryComp(mindId, out var attumingMind)) - return; - - var user = args.User; - if (attumingMind.AttunedTo.Contains(args.Target)) - { - args.Verbs.Add(new() - { - Act = () => - { - RemoveAttune((mindId, attumingMind), attuningItem); - }, - Text = Loc.GetString("cp14-magic-deattuning-verb-text"), - Message = Loc.GetString("cp14-magic-attuning-verb-message"), - }); - } - else - { - args.Verbs.Add(new() - { - Act = () => - { - TryStartAttune(user, attuningItem); - }, - Text = Loc.GetString("cp14-magic-attuning-verb-text"), - Message = Loc.GetString("cp14-magic-attuning-verb-message"), - }); - } - } - - public bool TryStartAttune(EntityUid user, Entity item) - { - if (!_mind.TryGetMind(user, out var mindId, out var mind)) - return false; - - if (!TryComp(mindId, out var attuningMind)) - return false; - - if (attuningMind.MaxAttuning <= 0) - return false; - - //if there's an overabundance of ties, we report that the oldest one is torn. - if (attuningMind.AttunedTo.Count >= attuningMind.MaxAttuning) - { - var oldestAttune = attuningMind.AttunedTo[0]; - _popup.PopupEntity(Loc.GetString("cp14-magic-attune-oldest-forgot", ("item", MetaData(oldestAttune).EntityName)), user, user); - } - - //we notify the current owner of the item that someone is cutting ties. - if (item.Comp.Link is not null && - item.Comp.Link.Value.Owner != mindId && - TryComp(item.Comp.Link.Value.Owner, out var ownerMind) && - ownerMind.OwnedEntity is not null) - { - _popup.PopupEntity(Loc.GetString("cp14-magic-attune-oldest-forgot", ("item", MetaData(item).EntityName)), ownerMind.OwnedEntity.Value, ownerMind.OwnedEntity.Value); - } - - var doAfterArgs = new DoAfterArgs(EntityManager, - user, - item.Comp.FocusTime, - new CP14MagicAttuneDoAfterEvent(), - mindId, - item) - { - BreakOnDamage = true, - BreakOnMove = true, - DistanceThreshold = 2f, - BlockDuplicate = true, - }; - - _doAfter.TryStartDoAfter(doAfterArgs); - return true; - } - - private void OnAttuneDoAfter(Entity ent, ref CP14MagicAttuneDoAfterEvent args) - { - if (args.Cancelled || args.Handled || args.Target is null) - return; - - if (ent.Comp.AttunedTo.Count >= ent.Comp.MaxAttuning) - { - var oldestAttune = ent.Comp.AttunedTo[0]; - RemoveAttune(ent, oldestAttune); - } - - AddAttune(ent, args.Target.Value); - } - - private void RemoveAttune(Entity attuningMind, EntityUid item) - { - if (!attuningMind.Comp.AttunedTo.Contains(item)) - return; - - attuningMind.Comp.AttunedTo.Remove(item); - - if (!TryComp(item, out var attuningItem)) - return; - - if (!TryComp(attuningMind, out var mind)) - return; - - attuningItem.Link = null; - - var ev = new RemovedAttuneFromMindEvent(attuningMind, mind.OwnedEntity, item); - RaiseLocalEvent(attuningMind, ev); - RaiseLocalEvent(item, ev); - - if (mind.OwnedEntity is not null) - { - _popup.PopupEntity(Loc.GetString("cp14-magic-attune-oldest-forgot-end", ("item", MetaData(item).EntityName)), mind.OwnedEntity.Value, mind.OwnedEntity.Value); - } - } - - private void AddAttune(Entity attuningMind, EntityUid item) - { - if (attuningMind.Comp.AttunedTo.Contains(item)) - return; - - if (!TryComp(item, out var attuningItem)) - return; - - if (!TryComp(attuningMind, out var mind)) - return; - - if (attuningItem.Link is not null) - RemoveAttune(attuningItem.Link.Value, item); - - attuningMind.Comp.AttunedTo.Add(item); - attuningItem.Link = attuningMind; - - - var ev = new AddedAttuneToMindEvent(attuningMind, mind.OwnedEntity, item); - RaiseLocalEvent(attuningMind, ev); - RaiseLocalEvent(item, ev); - } -} - -[Serializable, NetSerializable] -public sealed partial class CP14MagicAttuneDoAfterEvent : SimpleDoAfterEvent -{ -} - -/// -/// is evoked on both the item and the mind when a new connection between them appears. -/// -public sealed class AddedAttuneToMindEvent : EntityEventArgs -{ - public readonly EntityUid Mind; - public readonly EntityUid? User; - public readonly EntityUid Item; - - public AddedAttuneToMindEvent(EntityUid mind, EntityUid? user, EntityUid item) - { - Mind = mind; - User = user; - Item = item; - } -} -/// -/// is evoked on both the item and the mind when the connection is broken -/// -public sealed class RemovedAttuneFromMindEvent : EntityEventArgs -{ - public readonly EntityUid Mind; - public readonly EntityUid? User; - public readonly EntityUid Item; - - public RemovedAttuneFromMindEvent(EntityUid mind, EntityUid? user, EntityUid item) - { - Mind = mind; - User = user; - Item = item; - } -} diff --git a/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs b/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs index b9ae60492d..fd2c4717d2 100644 --- a/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs +++ b/Content.Shared/_CP14/MagicEnergy/SharedCP14MagicEnergySystem.cs @@ -58,6 +58,19 @@ public abstract class SharedCP14MagicEnergySystem : EntitySystem _ambient.SetAmbience(ent, args.Powered); } + private void UpdateMagicAlert(Entity ent) + { + if (ent.Comp.MagicAlert is null) + return; + + var level = ContentHelpers.RoundToLevels( + MathF.Max(0f, (float) ent.Comp.Energy), + (float) ent.Comp.MaxEnergy, + _alerts.GetMaxSeverity(ent.Comp.MagicAlert.Value)); + + _alerts.ShowAlert(ent, ent.Comp.MagicAlert.Value, (short) level); + } + public void ChangeEnergy(Entity ent, FixedPoint2 energy, out FixedPoint2 deltaEnergy, @@ -154,17 +167,14 @@ public abstract class SharedCP14MagicEnergySystem : EntitySystem ("color", color)); } - private void UpdateMagicAlert(Entity ent) + public void ChangeMaximumEnergy(Entity ent, FixedPoint2 energy) { - if (ent.Comp.MagicAlert is null) + if (!Resolve(ent, ref ent.Comp, false)) return; - var level = ContentHelpers.RoundToLevels( - MathF.Max(0f, (float) ent.Comp.Energy), - (float) ent.Comp.MaxEnergy, - _alerts.GetMaxSeverity(ent.Comp.MagicAlert.Value)); + ent.Comp.MaxEnergy += energy; - _alerts.ShowAlert(ent, ent.Comp.MagicAlert.Value, (short) level); + ChangeEnergy(ent, energy, out _, out _); } } diff --git a/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifyComponent.cs b/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifyComponent.cs index 26c325c8bb..565e98a347 100644 --- a/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifyComponent.cs +++ b/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifyComponent.cs @@ -15,4 +15,7 @@ public sealed partial class CP14MagicManacostModifyComponent : Component [DataField] public FixedPoint2 GlobalModifier = 1f; + + [DataField] + public bool Examinable = false; } diff --git a/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifySystem.cs b/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifySystem.cs index 7bd66fb5b7..648e359dfa 100644 --- a/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifySystem.cs +++ b/Content.Shared/_CP14/MagicManacostModify/CP14MagicManacostModifySystem.cs @@ -2,6 +2,7 @@ using Content.Shared._CP14.MagicRitual.Prototypes; using Content.Shared._CP14.MagicSpell.Events; using Content.Shared.Examine; +using Content.Shared.FixedPoint; using Content.Shared.Inventory; using Content.Shared.Verbs; using Robust.Shared.Prototypes; @@ -24,10 +25,10 @@ public sealed partial class CP14MagicManacostModifySystem : EntitySystem private void OnVerbExamine(Entity ent, ref GetVerbsEvent args) { - if (!args.CanInteract || !args.CanAccess) + if (!args.CanInteract || !args.CanAccess || !ent.Comp.Examinable) return; - var markup = GetMagicClothingExamine(ent.Comp); + var markup = GetManacostModifyMessage(ent.Comp.GlobalModifier, ent.Comp.Modifiers); _examine.AddDetailedExamineVerb( args, ent.Comp, @@ -37,21 +38,21 @@ public sealed partial class CP14MagicManacostModifySystem : EntitySystem Loc.GetString("cp14-magic-examinable-verb-message")); } - private FormattedMessage GetMagicClothingExamine(CP14MagicManacostModifyComponent comp) + public FormattedMessage GetManacostModifyMessage(FixedPoint2 global, Dictionary, FixedPoint2> modifiers) { var msg = new FormattedMessage(); msg.AddMarkupOrThrow(Loc.GetString("cp14-clothing-magic-examine")); - if (comp.GlobalModifier != 1) + if (global != 1) { msg.PushNewline(); - var plus = (float)comp.GlobalModifier > 1 ? "+" : ""; + var plus = (float)global > 1 ? "+" : ""; msg.AddMarkupOrThrow( - $"{Loc.GetString("cp14-clothing-magic-global")}: {plus}{MathF.Round((float)(comp.GlobalModifier - 1) * 100, MidpointRounding.AwayFromZero)}%"); + $"{Loc.GetString("cp14-clothing-magic-global")}: {plus}{MathF.Round((float)(global - 1) * 100, MidpointRounding.AwayFromZero)}%"); } - foreach (var modifier in comp.Modifiers) + foreach (var modifier in modifiers) { if (modifier.Value == 1) continue; diff --git a/Content.Shared/_CP14/MagicRitual/Actions/AddOrb.cs b/Content.Shared/_CP14/MagicRitual/Actions/AddOrb.cs deleted file mode 100644 index 599b393526..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/AddOrb.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Text; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -/// -/// Adds a key-orb to the ritual. -/// -public sealed partial class AddOrb : CP14RitualAction -{ - [DataField(required: true)] - public Dictionary Orbs = new(); - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-effect-add-orb")+ "\n"); - foreach (var orb in Orbs) - { - if (!prototype.TryIndex(orb.Key, out var indexedOrb)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", indexedOrb.Name), ("count", orb.Value)) + "\n"); - } - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - if (phase.Comp.Ritual is null) - return; - - var ritual = entManager.System(); - - foreach (var orb in Orbs) - { - for (var i = 0; i < orb.Value; i++) - { - ritual.AddOrbToRitual(phase.Comp.Ritual.Value, orb.Key); - } - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/ApplyEntityEffect.cs b/Content.Shared/_CP14/MagicRitual/Actions/ApplyEntityEffect.cs deleted file mode 100644 index b5b0159c18..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/ApplyEntityEffect.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System.Text; -using Content.Shared.EntityEffects; -using Content.Shared.Whitelist; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -/// -/// Filters the nearest X entities by whitelist and applies the specified EntityEffects on them -/// -public sealed partial class ApplyEntityEffect : CP14RitualAction -{ - [DataField] - public float CheckRange = 1f; - - [DataField] - public EntityWhitelist? Whitelist; - - [DataField] - public LocId? WhitelistDesc; - - [DataField(required: true, serverOnly: true)] - public List Effects = new(); - - [DataField] - public int MaxEntities = 1; - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - - sb.Append(Loc.GetString("cp14-ritual-range", ("range", CheckRange)) + "\n"); - sb.Append(Loc.GetString("cp14-ritual-effect-apply-effect", ("count", MaxEntities), ("range", CheckRange)) + "\n"); - - if (WhitelistDesc is not null) - { - sb.Append(Loc.GetString(WhitelistDesc)); - sb.Append("\n"); - } - - foreach (var effect in Effects) - { - sb.Append("- " + effect.GuidebookEffectDescription(prototype, entSys) + "\n"); - } - sb.Append("\n"); - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - var lookup = entManager.System(); - var whitelist = entManager.System(); - - var entitiesAround = lookup.GetEntitiesInRange(phase, CheckRange, LookupFlags.Uncontained); - - var count = 0; - foreach (var entity in entitiesAround) - { - if (Whitelist is not null && !whitelist.IsValid(Whitelist, entity)) - continue; - - foreach (var effect in Effects) - { - effect.Effect(new EntityEffectBaseArgs(entity, entManager)); - } - - entManager.Spawn(VisualEffect, transform.GetMapCoordinates(entity)); - count++; - - if (count >= MaxEntities) - break; - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/CP14RitualAction.cs b/Content.Shared/_CP14/MagicRitual/Actions/CP14RitualAction.cs deleted file mode 100644 index b8e4d5b55c..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/CP14RitualAction.cs +++ /dev/null @@ -1,19 +0,0 @@ -using JetBrains.Annotations; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -[ImplicitDataDefinitionForInheritors] -[MeansImplicitUse] -public abstract partial class CP14RitualAction -{ - /// - /// Effect appearing in place of interacted entities - /// - [DataField("vfx")] - public EntProtoId? VisualEffect = "CP14DustEffect"; - - public abstract void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase); - - public abstract string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys); -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/ConsumeOrb.cs b/Content.Shared/_CP14/MagicRitual/Actions/ConsumeOrb.cs deleted file mode 100644 index 4bfa738bde..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/ConsumeOrb.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Text; -using Content.Shared._CP14.MagicRitual.Prototypes; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -/// -/// Removes the orb key from the ritual. -/// -public sealed partial class ConsumeOrb : CP14RitualAction -{ - [DataField(required: true)] - public ProtoId MagicType = new(); - - [DataField(required: true)] - public int Count = 0; - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - if (!prototype.TryIndex(MagicType, out var indexedType)) - return null; - - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-effect-consume-orb", ("name", Loc.GetString(indexedType.Name)), ("count", Count))+ "\n"); - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - if (phase.Comp.Ritual is null) - return; - - var ritual = entManager.System(); - - for (var i = 0; i < Count; i++) - { - ritual.ConsumeOrbType(phase.Comp.Ritual.Value, MagicType); - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/ConsumeResource.cs b/Content.Shared/_CP14/MagicRitual/Actions/ConsumeResource.cs deleted file mode 100644 index cad1cb1ee1..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/ConsumeResource.cs +++ /dev/null @@ -1,104 +0,0 @@ -using System.Text; -using Content.Shared.Stacks; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -public sealed partial class ConsumeResource : CP14RitualAction -{ - [DataField] - public float CheckRange = 1f; - - [DataField] - public Dictionary RequiredEntities = new (); - - [DataField] - public Dictionary, int> RequiredStacks = new(); - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-effect-consume-resource", ("range", CheckRange)) + "\n"); - - foreach (var entity in RequiredEntities) - { - if (!prototype.TryIndex(entity.Key, out var indexed)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", indexed.Name), ("count", entity.Value)) + "\n"); - } - - foreach (var stack in RequiredStacks) - { - if (!prototype.TryIndex(stack.Key, out var indexed)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", Loc.GetString(indexed.Name)), ("count", stack.Value)) + "\n"); - } - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - var lookup = entManager.System(); - var stack = entManager.System(); - - var entitiesAround = lookup.GetEntitiesInRange(phase, CheckRange, LookupFlags.Uncontained); - - foreach (var reqEnt in RequiredEntities) - { - var requiredCount = reqEnt.Value; - - foreach (var entity in entitiesAround) - { - if (!entManager.TryGetComponent(entity, out var metaData)) - continue; - if (!entManager.HasComponent(entity)) - continue; - - var entProto = metaData.EntityPrototype; - if (entProto is null) - continue; - - if (entProto.ID == reqEnt.Key && requiredCount > 0) - { - if (VisualEffect is not null) - entManager.Spawn(VisualEffect.Value, transform.GetMapCoordinates(entity)); - - entManager.DeleteEntity(entity); - - requiredCount--; - } - } - } - - foreach (var reqStack in RequiredStacks) - { - var requiredCount = reqStack.Value; - - foreach (var entity in entitiesAround) - { - if (!entManager.TryGetComponent(entity, out var stackComp)) - continue; - - if (stackComp.StackTypeId != reqStack.Key) - continue; - - var count = (int)MathF.Min(requiredCount, stackComp.Count); - - - if (stackComp.Count - count <= 0) - entManager.DeleteEntity(entity); - else - stack.SetCount(entity, stackComp.Count - count, stackComp); - - - requiredCount -= count; - - if (VisualEffect is not null) - entManager.Spawn(VisualEffect.Value, transform.GetMapCoordinates(entity)); - } - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/EditStability.cs b/Content.Shared/_CP14/MagicRitual/Actions/EditStability.cs deleted file mode 100644 index f70cdfab23..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/EditStability.cs +++ /dev/null @@ -1,27 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -public sealed partial class EditStability : CP14RitualAction -{ - [DataField(required: true)] - public float Mod; - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - var ritual = entManager.System(); - - if (phase.Comp.Ritual is not null) - ritual.ChangeRitualStability(phase.Comp.Ritual.Value, Mod); - } - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Mod switch - { - > 0 => Loc.GetString("cp14-ritual-effect-stability-add", ("count", Mod * 100)) + "\n", - < 0 => Loc.GetString("cp14-ritual-effect-stability-minus", ("count", -Mod * 100)) + "\n", - _ => null, - }; - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Actions/SpawnEntity.cs b/Content.Shared/_CP14/MagicRitual/Actions/SpawnEntity.cs deleted file mode 100644 index faff072030..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Actions/SpawnEntity.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Text; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Actions; - -/// -/// Creates an entity in the coordinates of the ritual. -/// TODO: EntityTable support? -public sealed partial class SpawnEntity : CP14RitualAction -{ - [DataField(required: true)] - public Dictionary Spawns = new(); - - [DataField] - public LocId? Name; - - public override string? GetGuidebookEffectDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-effect-spawn-entity")+ "\n"); - foreach (var spawn in Spawns) - { - if (!prototype.TryIndex(spawn.Key, out var indexed)) - return null; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", - ("name", Name is null ? indexed.Name : Loc.GetString(Name)), - ("count", spawn.Value)) + "\n"); - } - - return sb.ToString(); - } - - public override void Effect(EntityManager entManager, SharedTransformSystem transform, Entity phase) - { - foreach (var spawn in Spawns) - { - for (var i = 0; i < spawn.Value; i++) - { - entManager.Spawn(spawn.Key, transform.GetMapCoordinates(phase)); - } - } - } -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualComponent.cs b/Content.Shared/_CP14/MagicRitual/CP14MagicRitualComponent.cs deleted file mode 100644 index df6f93bfbc..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualComponent.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual; - -/// -/// Ritual Behavior Controller. Creates and removes entities of magical phases -/// -[RegisterComponent, Access(typeof(CP14SharedRitualSystem))] -public sealed partial class CP14MagicRitualComponent : Component -{ - [DataField(required: true)] - public EntProtoId StartPhase; - - [DataField] - public EntityUid? CurrentPhase; - - [DataField] - public float Stability = 1f; - - [DataField] - public float ActivationTime = 5f; - - [DataField] - public string RitualLayerMap = "ritual"; - - [DataField] - public int MaxOrbCapacity = 3; - - [DataField] - public float RitualRadius = 5; - - [DataField] - public TimeSpan TriggerTime = TimeSpan.Zero; - - [DataField] - public List Orbs = new(); -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualEvents.cs b/Content.Shared/_CP14/MagicRitual/CP14MagicRitualEvents.cs deleted file mode 100644 index fe676a44eb..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualEvents.cs +++ /dev/null @@ -1,86 +0,0 @@ -using Content.Shared.DoAfter; -using Robust.Shared.Prototypes; -using Robust.Shared.Serialization; - -namespace Content.Shared._CP14.MagicRitual; - -/// -/// Called out a ritual when any of its phase triggers are activated -/// -public sealed class CP14RitualTriggerEvent : EntityEventArgs -{ - public EntProtoId NextPhase; - - public CP14RitualTriggerEvent(EntProtoId phase) - { - NextPhase = phase; - } -} - -/// -/// Called out at a ritual when his stability is altered -/// -public sealed class CP14RitualStabilityChangedEvent : EntityEventArgs -{ - public float OldStability; - public float NewStability; - - public CP14RitualStabilityChangedEvent(float oldS, float newS) - { - OldStability = oldS; - NewStability = newS; - } -} - -/// -/// Called on both the ritual and the phase when they link together -/// -public sealed class CP14RitualPhaseBoundEvent : EntityEventArgs -{ - public EntityUid Ritual; - public EntityUid Phase; - - public CP14RitualPhaseBoundEvent(EntityUid r, EntityUid p) - { - Ritual = r; - Phase = p; - } -} - -/// -/// Invoked at the ritual holder entity when the ritual is complete and the phase entities have been removed -/// -public sealed class CP14RitualEndEvent : EntityEventArgs -{ - public EntityUid Ritual; - - public CP14RitualEndEvent(EntityUid r) - { - Ritual = r; - } -} - -/// -/// Invoked at the ritual holder entity when the ritual begins, and invokes the starting phase -/// -public sealed class CP14RitualStartEvent : EntityEventArgs -{ - public EntityUid Ritual; - - public CP14RitualStartEvent(EntityUid r) - { - Ritual = r; - } -} - -[Serializable, NetSerializable] -public sealed partial class CP14ActivateRitualDoAfter : SimpleDoAfterEvent -{ -} - -[Serializable, NetSerializable] -public enum RitualVisuals -{ - Color, - Enabled, -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualOrbComponent.cs b/Content.Shared/_CP14/MagicRitual/CP14MagicRitualOrbComponent.cs deleted file mode 100644 index fb82663d62..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualOrbComponent.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Content.Shared._CP14.MagicRitual.Prototypes; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual; - -/// -/// “Key” in the concept of rituals. An entity that can be a key to a ritual, and holds certain characteristics that can be spent, or by which a phase transition requirement check can be made. -/// -[RegisterComponent, Access(typeof(CP14SharedRitualSystem))] -public sealed partial class CP14MagicRitualOrbComponent : Component -{ - [DataField] - public Dictionary, int> Powers = new(); -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualPhaseComponent.cs b/Content.Shared/_CP14/MagicRitual/CP14MagicRitualPhaseComponent.cs deleted file mode 100644 index f5a897d98c..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14MagicRitualPhaseComponent.cs +++ /dev/null @@ -1,41 +0,0 @@ -using Content.Shared._CP14.MagicRitual.Actions; -using Content.Shared._CP14.MagicRitual.Requirements; -using Content.Shared._CP14.MagicRitualTrigger; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual; - -/// -/// Magical entity that reacts to world events -/// -[RegisterComponent, Access(typeof(CP14SharedRitualSystem))] -public sealed partial class CP14MagicRitualPhaseComponent : Component -{ - /// - /// A link to the ritual itself in which this phase is found - /// - [DataField] - public EntityUid? Ritual; - - [DataField] - public Color PhaseColor = Color.White; - - [DataField] - public List Edges = new(); - - /// - /// by moving to this node, the ritual will end instantly. - /// - [DataField] - public bool DeadEnd = false; -} - -[DataRecord] -public partial record struct RitualPhaseEdge() -{ - public EntProtoId Target { get; set; } - - public List Triggers { get; set; } = new(); - public List Requirements { get; set; } = new(); - public List Actions { get; set; } = new(); -} diff --git a/Content.Shared/_CP14/MagicRitual/CP14SharedRitualSystem.cs b/Content.Shared/_CP14/MagicRitual/CP14SharedRitualSystem.cs deleted file mode 100644 index e36cdffb27..0000000000 --- a/Content.Shared/_CP14/MagicRitual/CP14SharedRitualSystem.cs +++ /dev/null @@ -1,70 +0,0 @@ -using Content.Shared._CP14.MagicRitual.Prototypes; -using Content.Shared.Follower; -using Robust.Shared.Network; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual; - -public partial class CP14SharedRitualSystem : EntitySystem -{ - [Dependency] private readonly FollowerSystem _followerSystem = default!; - [Dependency] private readonly IPrototypeManager _proto = default!; - [Dependency] private readonly SharedTransformSystem _transform = default!; - [Dependency] private readonly INetManager _net = default!; - - public void ChangeRitualStability(EntityUid uid, float dStab, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual)) - // return; -// - //var newS = MathHelper.Clamp01(ritual.Stability + dStab); -// - //var ev = new CP14RitualStabilityChangedEvent(ritual.Stability, newS); - //RaiseLocalEvent(uid, ev); -// - //ritual.Stability = newS; - } - - public void AddOrbToRitual(EntityUid uid, EntProtoId orb, CP14MagicRitualComponent? ritual = null) - { - //if (_net.IsClient) - // return; -// - //if (!Resolve(uid, ref ritual)) - // return; -// - //if (!_proto.TryIndex(orb, out var indexedOrb)) - // return; -// - //if (ritual.Orbs.Count >= ritual.MaxOrbCapacity) - // return; -// - //var spawnedOrb = Spawn(orb, _transform.GetMapCoordinates(uid)); -// - //if (!TryComp(spawnedOrb, out var orbComp)) - //{ - // QueueDel(spawnedOrb); - // return; - //} -// - //_followerSystem.StartFollowingEntity(spawnedOrb, uid); - //ritual.Orbs.Add((spawnedOrb, orbComp)); - } - - public void ConsumeOrbType(EntityUid uid, ProtoId magicType, CP14MagicRitualComponent? ritual = null) - { - //if (!Resolve(uid, ref ritual)) - // return; -// - //foreach (var orb in ritual.Orbs) - //{ - // var powers = orb.Comp.Powers; - // if (!powers.ContainsKey(magicType)) - // continue; -// - // ritual.Orbs.Remove(orb); - // QueueDel(orb); - // return; - //} - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Requirements/CP14RitualRequirement.cs b/Content.Shared/_CP14/MagicRitual/Requirements/CP14RitualRequirement.cs deleted file mode 100644 index dafe4d5183..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Requirements/CP14RitualRequirement.cs +++ /dev/null @@ -1,19 +0,0 @@ -using JetBrains.Annotations; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Requirements; - -[ImplicitDataDefinitionForInheritors] -[MeansImplicitUse] -public abstract partial class CP14RitualRequirement -{ - /// - /// If this checks fails, the ritual will lose some of its stability. - /// - [DataField] - public float FailStabilityCost; - - public abstract bool Check(EntityManager entManager, Entity phaseEnt, float stability); - - public abstract string? GetGuidebookRequirementDescription(IPrototypeManager prototype, IEntitySystemManager entSys); -} diff --git a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredOrbs.cs b/Content.Shared/_CP14/MagicRitual/Requirements/RequiredOrbs.cs deleted file mode 100644 index 54d1480b8f..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredOrbs.cs +++ /dev/null @@ -1,66 +0,0 @@ -using System.Text; -using Content.Shared._CP14.MagicRitual.Prototypes; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Requirements; - -/// -/// Requires specific daytime period -/// -public sealed partial class RequiredOrbs : CP14RitualRequirement -{ - [DataField] - public ProtoId MagicType = new(); - - [DataField] - public int? Min; - - [DataField] - public int? Max; - - public override string? GetGuidebookRequirementDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - - if (!prototype.TryIndex(MagicType, out var indexedType)) - return null; - - sb.Append(Loc.GetString("cp14-ritual-required-orbs", ("name", Loc.GetString(indexedType.Name))) + " "); - if (Min is not null && Max is not null) - sb.Append(Loc.GetString("cp14-ritual-required-orbs-item-minmax", ("min", Min), ("max", Max))+ "\n"); - else if (Min is not null) - sb.Append(Loc.GetString("cp14-ritual-required-orbs-item-min", ("min", Min))+ "\n"); - else if (Max is not null) - sb.Append(Loc.GetString("cp14-ritual-required-orbs-item-min", ("max", Max))+ "\n"); - - return sb.ToString(); - } - - public override bool Check(EntityManager entManager, Entity phaseEnt, float stability) - { - //if (phaseEnt.Comp.Ritual is null) - // return false; -// - //if (!entManager.TryGetComponent(phaseEnt, out var ritualComp)) - // return false; -// - //var count = 0; - //foreach (var orb in ritualComp.Orbs) - //{ - // foreach (var power in orb.Comp.Powers) - // { - // if (power.Key == MagicType) - // count += power.Value; - // } - //} -// - //if (Min is not null && Max is not null) - // return count >= Min && count <= Max; - //if (Min is not null) - // return count >= Min; - //if (Max is not null) - // return count <= Max; -// - return false; - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredResource.cs b/Content.Shared/_CP14/MagicRitual/Requirements/RequiredResource.cs deleted file mode 100644 index 88a2ceb9d4..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredResource.cs +++ /dev/null @@ -1,113 +0,0 @@ -using System.Text; -using Content.Shared.Stacks; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Requirements; - -/// -/// Requires certain specific entities to be near the ritual. TODO: Replace with Whitelist -/// -public sealed partial class RequiredResource : CP14RitualRequirement -{ - [DataField] - public float CheckRange = 3f; - - [DataField] - public Dictionary RequiredEntities = new (); - - [DataField] - public Dictionary, int> RequiredStacks = new(); - - /// - /// Effect appearing in place of used entities - /// - [DataField("vfx")] - public EntProtoId? Effect = "CP14DustEffect"; - - public override string? GetGuidebookRequirementDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - var sb = new StringBuilder(); - sb.Append(Loc.GetString("cp14-ritual-required-resource", ("range", CheckRange)) + "\n"); - - foreach (var entity in RequiredEntities) - { - if (!prototype.TryIndex(entity.Key, out var indexed)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", indexed.Name), ("count", entity.Value)) + "\n"); - } - - foreach (var stack in RequiredStacks) - { - if (!prototype.TryIndex(stack.Key, out var indexed)) - continue; - - sb.Append(Loc.GetString("cp14-ritual-entry-item", ("name", Loc.GetString(indexed.Name)), ("count", stack.Value)) + "\n"); - } - - return sb.ToString(); - } - - public override bool Check(EntityManager entManager, Entity phaseEnt, float stability) - { - var _lookup = entManager.System(); - var _transform = entManager.System(); - - var entitiesAround = _lookup.GetEntitiesInRange(phaseEnt, CheckRange, LookupFlags.Uncontained); - - var passed = true; - - foreach (var reqEnt in RequiredEntities) - { - var requiredCount = reqEnt.Value; - - foreach (var entity in entitiesAround) - { - if (!entManager.TryGetComponent(entity, out var metaData)) - continue; - if (!entManager.TryGetComponent(entity, out var xform)) - continue; - - var entProto = metaData.EntityPrototype; - if (entProto is null) - continue; - - if (entProto.ID == reqEnt.Key && requiredCount > 0) - { - if (Effect is not null) - entManager.Spawn(Effect.Value, _transform.GetMapCoordinates(entity)); - - requiredCount--; - } - } - - if (requiredCount > 0) - passed = false; - } - - foreach (var reqStack in RequiredStacks) - { - var requiredCount = reqStack.Value; - - foreach (var entity in entitiesAround) - { - if (!entManager.TryGetComponent(entity, out var stack)) - continue; - - if (stack.StackTypeId != reqStack.Key) - continue; - - var count = (int)MathF.Min(requiredCount, stack.Count); - requiredCount -= count; - - if (Effect is not null) - entManager.Spawn(Effect.Value, _transform.GetMapCoordinates(entity)); - } - - if (requiredCount > 0) - passed = false; - } - - return passed; - } -} diff --git a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredStability.cs b/Content.Shared/_CP14/MagicRitual/Requirements/RequiredStability.cs deleted file mode 100644 index 51f3eace29..0000000000 --- a/Content.Shared/_CP14/MagicRitual/Requirements/RequiredStability.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitual.Requirements; - -/// -/// Requires that the stability of the ritual be within specified limits. If the stability is above or below the specified values, the check will fail -/// -public sealed partial class RequiredStability : CP14RitualRequirement -{ - [DataField] - public float Min = 0; - [DataField] - public float Max = 1; - - public override string? GetGuidebookRequirementDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Min switch - { - > 0 when Max < 1 => - Loc.GetString("cp14-ritual-required-stability-minmax", ("min", Min*100), ("max", Max*100)), - > 0 => Loc.GetString("cp14-ritual-required-stability-min", ("min", Min*100)), - < 0 => Loc.GetString("cp14-ritual-required-stability-max", ("min", Max*100)), - _ => null, - }; - } - - public override bool Check(EntityManager entManager, Entity phaseEnt, float stability) - { - if (phaseEnt.Comp.Ritual is null) - return false; - - if (!entManager.TryGetComponent(phaseEnt, out var ritualComp)) - return false; - - return !(ritualComp.Stability < Min) && !(ritualComp.Stability > Max); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/CP14RitualTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/CP14RitualTrigger.cs deleted file mode 100644 index a86b942ed5..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/CP14RitualTrigger.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using JetBrains.Annotations; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger; - -[ImplicitDataDefinitionForInheritors] -[MeansImplicitUse] -public abstract partial class CP14RitualTrigger -{ - [DataField] - public RitualPhaseEdge? Edge = null; - - public abstract void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge); - - public abstract string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys); -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/CP14SharedRitualTriggerSystem.cs b/Content.Shared/_CP14/MagicRitualTrigger/CP14SharedRitualTriggerSystem.cs deleted file mode 100644 index 49e3a8f0d3..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/CP14SharedRitualTriggerSystem.cs +++ /dev/null @@ -1,5 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger; - -public partial class CP14SharedRitualTriggerSystem : EntitySystem -{ -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTrigger.cs deleted file mode 100644 index f2f6629fb3..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTrigger.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared.Humanoid.Prototypes; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -/// -/// triggers when a creature of a certain race dies within range of the ritual. -/// -public sealed partial class CP14SacrificeSpeciesTrigger : CP14RitualTrigger -{ - [DataField] - public float Range = 3f; - - [DataField(required: true)] - public ProtoId Species = default!; - - public override void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge) - { - entManager.EnsureComponent(ritual, out var trigger); - trigger.Triggers.Add(this); - Edge = edge; - } - - public override string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - if (!prototype.TryIndex(Species, out var indexedSpecies)) - return null; - - return Loc.GetString("cp14-ritual-trigger-sacrifice", - ("name", Loc.GetString(indexedSpecies.Name)), - ("range", Range)); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTriggerComponent.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTriggerComponent.cs deleted file mode 100644 index cb92dc1cd8..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeSpeciesTriggerComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -[RegisterComponent] -public sealed partial class CP14RitualSacrificeSpeciesTriggerComponent : Component -{ - [DataField] - public HashSet Triggers = new(); -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTrigger.cs deleted file mode 100644 index 7b8b29cc24..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTrigger.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Content.Shared.Whitelist; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -/// -/// Triggers when a creature passing the whitelist dies within range of the ritual. -/// -public sealed partial class CP14SacrificeWhitelistTrigger : CP14RitualTrigger -{ - [DataField] - public float Range = 3f; - - [DataField(required: true)] - public EntityWhitelist Whitelist = default!; - - [DataField(required: true)] - public LocId WhitelistDesc = default!; - - public override void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge) - { - entManager.EnsureComponent(ritual, out var trigger); - trigger.Triggers.Add(this); - Edge = edge; - } - - public override string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Loc.GetString("cp14-ritual-trigger-sacrifice", - ("name", Loc.GetString(WhitelistDesc)), - ("range", Range)); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTriggerComponent.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTriggerComponent.cs deleted file mode 100644 index 20cad400cb..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualSacrificeWhitelistTriggerComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -[RegisterComponent] -public sealed partial class CP14RitualSacrificeWhitelistTriggerComponent : Component -{ - [DataField] - public HashSet Triggers = new(); -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTrigger.cs deleted file mode 100644 index 2c84afb3ec..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTrigger.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -/// -/// Triggers the phase transition after a certain period of time -/// -public sealed partial class CP14TimerTrigger : CP14RitualTrigger -{ - [DataField] - public float Delay = 10f; - - [DataField] - public TimeSpan TriggerTime = TimeSpan.Zero; - - public override void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge) - { - entManager.EnsureComponent(ritual, out var trigger); - trigger.Triggers.Add(this); - Edge = edge; - } - - public override string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Loc.GetString("cp14-ritual-trigger-timer-stable", ("time", Delay)); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTriggerComponent.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTriggerComponent.cs deleted file mode 100644 index c1293c83ac..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualTimerTriggerComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -[RegisterComponent] -public sealed partial class CP14RitualTimerTriggerComponent : Component -{ - [DataField] - public HashSet Triggers = new(); -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTrigger.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTrigger.cs deleted file mode 100644 index 3793c64761..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTrigger.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Content.Shared._CP14.MagicRitual; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -/// -/// Triggers a phase transition when the Ritual hears a certain message -/// -public sealed partial class CP14VoiceTrigger : CP14RitualTrigger -{ - [DataField] - public string Message = string.Empty; - - [DataField] - public int Speakers = 1; - - public override void Initialize(EntityManager entManager, Entity ritual, RitualPhaseEdge edge) - { - entManager.EnsureComponent(ritual, out var trigger); - trigger.Triggers.Add(this); - Edge = edge; - } - - public override string? GetGuidebookTriggerDescription(IPrototypeManager prototype, IEntitySystemManager entSys) - { - return Loc.GetString("cp14-ritual-trigger-voice", ("phrase", Message), ("count", Speakers)); - } -} diff --git a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTriggerComponent.cs b/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTriggerComponent.cs deleted file mode 100644 index 9704086dbe..0000000000 --- a/Content.Shared/_CP14/MagicRitualTrigger/Triggers/CP14RitualVoiceTriggerComponent.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Content.Shared._CP14.MagicRitualTrigger.Triggers; - -[RegisterComponent] -public sealed partial class CP14RitualVoiceTriggerComponent : Component -{ - [DataField] - public HashSet Triggers = new(); -} diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.Checks.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.Checks.cs index b90c03a362..efa751e987 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.Checks.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.Checks.cs @@ -3,7 +3,8 @@ using Content.Shared._CP14.MagicSpell.Events; using Content.Shared.CombatMode.Pacification; using Content.Shared.Damage.Components; using Content.Shared.Hands.Components; -using Content.Shared.Instruments; +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; using Content.Shared.Popups; using Content.Shared.Speech.Muting; @@ -11,6 +12,8 @@ namespace Content.Shared._CP14.MagicSpell; public abstract partial class CP14SharedMagicSystem { + [Dependency] private readonly MobStateSystem _mobState = default!; + private void InitializeChecks() { SubscribeLocalEvent(OnSomaticCheck); @@ -18,6 +21,7 @@ public abstract partial class CP14SharedMagicSystem SubscribeLocalEvent(OnManaCheck); SubscribeLocalEvent(OnStaminaCheck); SubscribeLocalEvent(OnPacifiedCheck); + SubscribeLocalEvent(OnMobStateCheck); //Verbal speaking SubscribeLocalEvent(OnVerbalAspectStartCast); @@ -37,7 +41,8 @@ public abstract partial class CP14SharedMagicSystem //First - trying get mana from item if (_magicEffectQuery.TryComp(ent, out var magicEffect)) { - if (magicEffect.SpellStorage is not null && _magicContainerQuery.TryComp(magicEffect.SpellStorage, out var magicContainer)) + if (magicEffect.SpellStorage is not null && + _magicContainerQuery.TryComp(magicEffect.SpellStorage, out var magicContainer)) requiredMana = MathF.Max(0, (float)(requiredMana - magicContainer.Energy)); } @@ -53,22 +58,27 @@ public abstract partial class CP14SharedMagicSystem } if (!_magicEnergy.HasEnergy(args.Performer, requiredMana, playerMana, true) && _net.IsServer) - _popup.PopupEntity(Loc.GetString($"cp14-magic-spell-not-enough-mana-cast-warning-{_random.Next(5)}"), args.Performer, args.Performer, PopupType.SmallCaution); + _popup.PopupEntity(Loc.GetString($"cp14-magic-spell-not-enough-mana-cast-warning-{_random.Next(5)}"), + args.Performer, + args.Performer, + PopupType.SmallCaution); } - private void OnStaminaCheck(Entity ent, ref CP14CastMagicEffectAttemptEvent args) + private void OnStaminaCheck(Entity ent, + ref CP14CastMagicEffectAttemptEvent args) { if (!TryComp(args.Performer, out var staminaComp)) return; - if (staminaComp.Critical) - { - args.PushReason(Loc.GetString("cp14-magic-spell-stamina-not-enough")); - args.Cancel(); - } + if (!staminaComp.Critical) + return; + + args.PushReason(Loc.GetString("cp14-magic-spell-stamina-not-enough")); + args.Cancel(); } - private void OnSomaticCheck(Entity ent, ref CP14CastMagicEffectAttemptEvent args) + private void OnSomaticCheck(Entity ent, + ref CP14CastMagicEffectAttemptEvent args) { if (TryComp(args.Performer, out var hands) || hands is not null) { @@ -78,32 +88,68 @@ public abstract partial class CP14SharedMagicSystem if (hand.Value.IsEmpty) freeHand++; } + if (freeHand >= ent.Comp.FreeHandRequired) return; } + args.PushReason(Loc.GetString("cp14-magic-spell-need-somatic-component")); args.Cancel(); } - private void OnVerbalCheck(Entity ent, ref CP14CastMagicEffectAttemptEvent args) + private void OnVerbalCheck(Entity ent, + ref CP14CastMagicEffectAttemptEvent args) { - if (HasComp(args.Performer)) + if (!HasComp(args.Performer)) + return; + + args.PushReason(Loc.GetString("cp14-magic-spell-need-verbal-component")); + args.Cancel(); + } + + private void OnPacifiedCheck(Entity ent, + ref CP14CastMagicEffectAttemptEvent args) + { + if (!HasComp(args.Performer)) + return; + + args.PushReason(Loc.GetString("cp14-magic-spell-pacified")); + args.Cancel(); + } + + private void OnMobStateCheck(Entity ent, + ref CP14CastMagicEffectAttemptEvent args) + { + if (args.Target is not { } target) + return; + + if (!TryComp(target, out var mobStateComp)) { - args.PushReason(Loc.GetString("cp14-magic-spell-need-verbal-component")); + args.PushReason(Loc.GetString("cp14-magic-spell-target-not-mob")); args.Cancel(); + return; + } + + if (!ent.Comp.Inverted) + { + if (_mobState.IsDead(target, mobStateComp)) + { + args.PushReason(Loc.GetString("cp14-magic-spell-target-dead")); + args.Cancel(); + } + } + else + { + if (!_mobState.IsDead(target, mobStateComp)) + { + args.PushReason(Loc.GetString("cp14-magic-spell-target-alive")); + args.Cancel(); + } } } - private void OnPacifiedCheck(Entity ent, ref CP14CastMagicEffectAttemptEvent args) - { - if (HasComp(args.Performer)) - { - args.PushReason(Loc.GetString("cp14-magic-spell-pacified")); - args.Cancel(); - } - } - - private void OnVerbalAspectStartCast(Entity ent, ref CP14StartCastMagicEffectEvent args) + private void OnVerbalAspectStartCast(Entity ent, + ref CP14StartCastMagicEffectEvent args) { var ev = new CP14SpellSpeechEvent { @@ -114,7 +160,8 @@ public abstract partial class CP14SharedMagicSystem RaiseLocalEvent(ent, ref ev); } - private void OnVerbalAspectAfterCast(Entity ent, ref CP14MagicEffectConsumeResourceEvent args) + private void OnVerbalAspectAfterCast(Entity ent, + ref CP14MagicEffectConsumeResourceEvent args) { if (_net.IsClient) return; diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.DelayedActions.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.DelayedActions.cs index e6a4c4dd6c..264964cece 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.DelayedActions.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.DelayedActions.cs @@ -36,6 +36,7 @@ public abstract partial class CP14SharedMagicSystem BlockDuplicate = true, BreakOnDropItem = fromItem, NeedHand = fromItem, + RequireCanInteract = delayedEffect.RequireCanInteract, }; if (_doAfter.TryStartDoAfter(doAfterEventArgs, out var doAfterId)) @@ -56,31 +57,30 @@ public abstract partial class CP14SharedMagicSystem _action.CP14StartCustomDelay(action, TimeSpan.FromSeconds(cooldown.Value)); } - private void UseDelayedAction(ICP14DelayedMagicEffect delayedEffect, Entity action, DoAfterEvent doAfter, EntityUid performer, EntityUid? target = null, EntityCoordinates? worldTarget = null) + private bool UseDelayedAction(ICP14DelayedMagicEffect delayedEffect, Entity action, DoAfterEvent doAfter, EntityUid performer, EntityUid? target = null, EntityCoordinates? worldTarget = null) { - if (!CanCastSpell(action, performer)) - return; + // Event may return an empty entity with id = 0, which causes bugs + var currentTarget = target; + if (currentTarget is not null && currentTarget == EntityUid.Invalid) + currentTarget = null; - // event may return an empty entity with id = 0, which causes bugs - var _target = target; - if (_target is not null && _target.Value.Id == 0) - _target = null; + var spellArgs = new CP14SpellEffectBaseArgs(performer, action.Comp.SpellStorage, currentTarget, worldTarget); + if (!CanCastSpell(action, spellArgs)) + return false; if (_doAfter.IsRunning(action.Comp.ActiveDoAfter)) - _doAfter.Cancel(action.Comp.ActiveDoAfter); - else { - if (TryStartDelayedAction(delayedEffect, doAfter, action, _target, performer)) - { - var evStart = new CP14StartCastMagicEffectEvent(performer); - RaiseLocalEvent(action, ref evStart); - - var spellArgs = - new CP14SpellEffectBaseArgs(performer, action.Comp.SpellStorage, _target, worldTarget); - - CastTelegraphy(action, spellArgs); - } + _doAfter.Cancel(action.Comp.ActiveDoAfter); + return false; } + + if (!TryStartDelayedAction(delayedEffect, doAfter, action, currentTarget, performer)) + return false; + + var evStart = new CP14StartCastMagicEffectEvent(performer); + RaiseLocalEvent(action, ref evStart); + CastTelegraphy(action, spellArgs); + return true; } /// @@ -98,7 +98,9 @@ public abstract partial class CP14SharedMagicSystem return; var doAfter = new CP14DelayedInstantActionDoAfterEvent(args.Cooldown); - UseDelayedAction(delayedEffect, (args.Action, magicEffect), doAfter, args.Performer, args.Performer); + + if (!UseDelayedAction(delayedEffect, (args.Action, magicEffect), doAfter, args.Performer, args.Performer)) + return; args.Handled = true; } @@ -121,7 +123,9 @@ public abstract partial class CP14SharedMagicSystem EntityManager.GetNetCoordinates(args.Coords), EntityManager.GetNetEntity(args.Entity), args.Cooldown); - UseDelayedAction(delayedEffect, (args.Action, magicEffect), doAfter, args.Performer, args.Entity, args.Coords); + + if (!UseDelayedAction(delayedEffect, (args.Action, magicEffect), doAfter, args.Performer, args.Entity, args.Coords)) + return; args.Handled = true; } @@ -141,7 +145,9 @@ public abstract partial class CP14SharedMagicSystem return; var doAfter = new CP14DelayedEntityTargetActionDoAfterEvent(EntityManager.GetNetEntity(args.Target), args.Cooldown); - UseDelayedAction(delayedEffect, (args.Action, magicEffect), doAfter, args.Performer, args.Target); + + if (!UseDelayedAction(delayedEffect, (args.Action, magicEffect), doAfter, args.Performer, args.Target)) + return; args.Handled = true; } diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.InstantActions.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.InstantActions.cs index acaba35e04..747f2ea102 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.InstantActions.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.InstantActions.cs @@ -21,11 +21,10 @@ public abstract partial class CP14SharedMagicSystem if (!TryComp(args.Action, out var magicEffect)) return; - if (!CanCastSpell((args.Action, magicEffect), args.Performer)) - return; + var spellArgs = new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Performer, Transform(args.Performer).Coordinates); - var spellArgs = - new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Performer, Transform(args.Performer).Coordinates); + if (!CanCastSpell((args.Action, magicEffect), spellArgs)) + return; CastSpell((args.Action, magicEffect), spellArgs); _action.CP14StartCustomDelay(args.Action, args.Cooldown); @@ -39,11 +38,10 @@ public abstract partial class CP14SharedMagicSystem if (!TryComp(args.Action, out var magicEffect)) return; - if (!CanCastSpell((args.Action, magicEffect), args.Performer)) - return; + var spellArgs = new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Entity, args.Coords); - var spellArgs = - new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Entity, args.Coords); + if (!CanCastSpell((args.Action, magicEffect), spellArgs)) + return; CastSpell((args.Action, magicEffect), spellArgs); _action.CP14StartCustomDelay(args.Action, args.Cooldown); @@ -57,11 +55,10 @@ public abstract partial class CP14SharedMagicSystem if (!TryComp(args.Action, out var magicEffect)) return; - if (!CanCastSpell((args.Action, magicEffect), args.Performer)) - return; + var spellArgs = new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Target, Transform(args.Target).Coordinates); - var spellArgs = - new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Target, Transform(args.Target).Coordinates); + if (!CanCastSpell((args.Action, magicEffect), spellArgs)) + return; CastSpell((args.Action, magicEffect), spellArgs); _action.CP14StartCustomDelay(args.Action, args.Cooldown); diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.ToggleableActions.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.ToggleableActions.cs index b41266df25..9d251e60f0 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.ToggleableActions.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.ToggleableActions.cs @@ -36,7 +36,7 @@ public abstract partial class CP14SharedMagicSystem var spellArgs = new CP14SpellEffectBaseArgs(toggled.Performer, effect.SpellStorage, toggled.EntityTarget, toggled.WorldTarget); - if (!CanCastSpell((uid, effect), toggled.Performer.Value)) + if (!CanCastSpell((uid, effect), spellArgs)) { if (_doAfter.IsRunning(toggled.DoAfterId)) _doAfter.Cancel(toggled.DoAfterId); @@ -116,7 +116,8 @@ public abstract partial class CP14SharedMagicSystem private void ToggleToggleableAction(ICP14ToggleableMagicEffect toggleable, DoAfterEvent doAfter, Entity action, EntityUid performer, EntityUid? entityTarget = null, EntityCoordinates? worldTarget = null) { - if (!CanCastSpell(action, performer)) + var spellArgs = new CP14SpellEffectBaseArgs(performer, entityTarget, entityTarget, worldTarget); + if (!CanCastSpell(action, spellArgs)) return; if (_doAfter.IsRunning(action.Comp.ActiveDoAfter)) diff --git a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs index 039898ee54..e510101d6d 100644 --- a/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs +++ b/Content.Shared/_CP14/MagicSpell/CP14SharedMagicSystem.cs @@ -1,3 +1,4 @@ +using System.Linq; using System.Text; using Content.Shared._CP14.MagicEnergy; using Content.Shared._CP14.MagicEnergy.Components; @@ -118,7 +119,7 @@ public abstract partial class CP14SharedMagicSystem : EntitySystem if (_proto.TryIndex(ent.Comp.MagicType, out var indexedMagic)) { - sb.Append($"\n{Loc.GetString("cp14-magic-magic-type")}: [color={indexedMagic.Color.ToHex()}]{Loc.GetString(indexedMagic.Name)}[/color]"); + sb.Append($"\n{Loc.GetString("cp14-magic-type")}: [color={indexedMagic.Color.ToHex()}]{Loc.GetString(indexedMagic.Name)}[/color]"); } if (TryComp(ent, out var verbal)) @@ -148,20 +149,23 @@ public abstract partial class CP14SharedMagicSystem : EntitySystem /// /// Checking to see if the spell can be used at all /// - private bool CanCastSpell(Entity ent, EntityUid performer) + private bool CanCastSpell(Entity ent, CP14SpellEffectBaseArgs args) { - var ev = new CP14CastMagicEffectAttemptEvent(performer); - RaiseLocalEvent(ent, ref ev); - if (ev.Reason != string.Empty && _net.IsServer) - { - _popup.PopupEntity(ev.Reason, performer, performer); - } + if (args.User is not { } performer) + return true; + + var ev = new CP14CastMagicEffectAttemptEvent(performer, args.Used, args.Target, args.Position); + RaiseLocalEvent(ent, ev); + + if (ev.Reason != string.Empty) + _popup.PopupPredicted(ev.Reason, performer, performer); + return !ev.Cancelled; } private void CastTelegraphy(Entity ent, CP14SpellEffectBaseArgs args) { - if (!_net.IsServer) + if (_net.IsClient) return; foreach (var effect in ent.Comp.TelegraphyEffects) @@ -175,12 +179,12 @@ public abstract partial class CP14SharedMagicSystem : EntitySystem var ev = new CP14MagicEffectConsumeResourceEvent(args.User); RaiseLocalEvent(ent, ref ev); - if (_net.IsServer) + if (_net.IsClient) + return; + + foreach (var effect in ent.Comp.Effects) { - foreach (var effect in ent.Comp.Effects) - { - effect.Effect(EntityManager, args); - } + effect.Effect(EntityManager, args); } } diff --git a/Content.Shared/_CP14/MagicSpell/Components/CP14MagicEffectAliveTargetRequiredComponent.cs b/Content.Shared/_CP14/MagicSpell/Components/CP14MagicEffectAliveTargetRequiredComponent.cs new file mode 100644 index 0000000000..c1af631afd --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Components/CP14MagicEffectAliveTargetRequiredComponent.cs @@ -0,0 +1,13 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._CP14.MagicSpell.Components; + +/// +/// Allows you to limit the use of a spell based on the target's alive/dead status +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class CP14MagicEffectAliveTargetRequiredComponent : Component +{ + [DataField, AutoNetworkedField] + public bool Inverted = false; +} diff --git a/Content.Shared/_CP14/MagicSpell/Events/CP14CastMagicEffectEvent.cs b/Content.Shared/_CP14/MagicSpell/Events/CP14CastMagicEffectEvent.cs index ced1b61dc4..4206a7c5a5 100644 --- a/Content.Shared/_CP14/MagicSpell/Events/CP14CastMagicEffectEvent.cs +++ b/Content.Shared/_CP14/MagicSpell/Events/CP14CastMagicEffectEvent.cs @@ -1,7 +1,9 @@ using Content.Shared._CP14.MagicRitual.Prototypes; using Content.Shared._CP14.MagicSpell.Components; +using Content.Shared._CP14.MagicSpell.Spells; using Content.Shared.FixedPoint; using Content.Shared.Inventory; +using Robust.Shared.Map; using Robust.Shared.Prototypes; namespace Content.Shared._CP14.MagicSpell.Events; @@ -9,19 +11,24 @@ namespace Content.Shared._CP14.MagicSpell.Events; /// /// Called first to verify that all conditions are met and the spell can be performed. /// -[ByRefEvent] public sealed class CP14CastMagicEffectAttemptEvent : CancellableEntityEventArgs { /// /// The Performer of the event, to check if they meet the requirements. /// - public EntityUid Performer { get; init; } + public readonly EntityUid Performer; + public readonly EntityUid? Used; + public readonly EntityUid? Target; + public readonly EntityCoordinates? Position; public string Reason = string.Empty; - public CP14CastMagicEffectAttemptEvent(EntityUid performer) + public CP14CastMagicEffectAttemptEvent(EntityUid performer, EntityUid? used, EntityUid? target, EntityCoordinates? position) { Performer = performer; + Used = used; + Target = target; + Position = position; } public void PushReason(string reason) diff --git a/Content.Shared/_CP14/MagicSpell/Events/CP14DelayedActionEvents.cs b/Content.Shared/_CP14/MagicSpell/Events/CP14DelayedActionEvents.cs index 496d572a3e..d8b14220b1 100644 --- a/Content.Shared/_CP14/MagicSpell/Events/CP14DelayedActionEvents.cs +++ b/Content.Shared/_CP14/MagicSpell/Events/CP14DelayedActionEvents.cs @@ -17,7 +17,9 @@ public interface ICP14DelayedMagicEffect public float DistanceThreshold { get; } - public bool Hidden{ get; } + public bool Hidden { get; } + + public bool RequireCanInteract { get; } } public sealed partial class CP14DelayedEntityWorldTargetActionEvent : EntityWorldTargetActionEvent, @@ -40,6 +42,9 @@ public sealed partial class CP14DelayedEntityWorldTargetActionEvent : EntityWorl [DataField] public bool Hidden { get; private set; } = false; + + [DataField] + public bool RequireCanInteract { get; private set; } = true; } //Entity Target @@ -63,6 +68,9 @@ public sealed partial class CP14DelayedEntityTargetActionEvent : EntityTargetAct [DataField] public bool Hidden { get; private set; } = false; + + [DataField] + public bool RequireCanInteract { get; private set; } = true; } public sealed partial class CP14DelayedInstantActionEvent : InstantActionEvent, ICP14DelayedMagicEffect @@ -84,6 +92,9 @@ public sealed partial class CP14DelayedInstantActionEvent : InstantActionEvent, [DataField] public bool Hidden { get; private set; } = false; + + [DataField] + public bool RequireCanInteract { get; private set; } = true; } [Serializable, NetSerializable] diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellCasterSwap.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellCasterSwap.cs new file mode 100644 index 0000000000..e90ea2818d --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellCasterSwap.cs @@ -0,0 +1,17 @@ +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellCasterSwap : CP14SpellEffect +{ + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (args.User is not { } user || args.Target is not { } target) + return; + + var transform = entManager.System(); + var userPosition = transform.GetMoverCoordinates(user); + var targetPosition = transform.GetMoverCoordinates(target); + + transform.SetCoordinates(user, targetPosition); + transform.SetCoordinates(target, userPosition); + } +} diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs index 768badd03a..418e29d5b9 100644 --- a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellEffect.cs @@ -10,7 +10,7 @@ public abstract partial class CP14SpellEffect public abstract void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args); } -public record class CP14SpellEffectBaseArgs +public record CP14SpellEffectBaseArgs { public EntityUid? User; public EntityUid? Used; diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointer.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointer.cs new file mode 100644 index 0000000000..ec1af34875 --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointer.cs @@ -0,0 +1,52 @@ +using Content.Shared.Whitelist; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellPointer : CP14SpellEffect +{ + [DataField(required: true)] + public EntProtoId PointerEntity; + + [DataField(required: true)] + public EntityWhitelist? Whitelist; + + [DataField] + public EntityWhitelist? Blacklist = null; + + [DataField(required: true)] + public float SearchRange = 30f; + + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (args.User is null) + return; + + var lookup = entManager.System(); + var whitelistSys = entManager.System(); + var transform = entManager.System(); + + var originPosition = transform.GetWorldPosition(args.User.Value); + var originEntPosition = transform.GetMoverCoordinates(args.User.Value); + + var entitiesInRange = lookup.GetEntitiesInRange(originEntPosition, SearchRange); + foreach (var ent in entitiesInRange) + { + if (ent.Owner == args.User.Value) + continue; + + if (!whitelistSys.CheckBoth(ent, Blacklist, Whitelist)) + continue; + + var targetPosition = transform.GetWorldPosition(ent.Comp); + + //Calculate the rotation + Angle angle = new(targetPosition - originPosition); + + var pointer = entManager.Spawn(PointerEntity, new MapCoordinates(originPosition, transform.GetMapId(originEntPosition))); + + transform.SetWorldRotation(pointer, angle + Angle.FromDegrees(90)); + } + } +} diff --git a/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointerToAlive.cs b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointerToAlive.cs new file mode 100644 index 0000000000..e8aec42e2f --- /dev/null +++ b/Content.Shared/_CP14/MagicSpell/Spells/CP14SpellPointerToAlive.cs @@ -0,0 +1,47 @@ +using Content.Shared.Mobs.Components; +using Content.Shared.Mobs.Systems; +using Robust.Shared.Map; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.MagicSpell.Spells; + +public sealed partial class CP14SpellPointerToAlive : CP14SpellEffect +{ + [DataField(required: true)] + public EntProtoId PointerEntity; + + [DataField(required: true)] + public float SearchRange = 30f; + + public override void Effect(EntityManager entManager, CP14SpellEffectBaseArgs args) + { + if (args.User is null) + return; + + var lookup = entManager.System(); + var mobStateSys = entManager.System(); + var transform = entManager.System(); + + var originPosition = transform.GetWorldPosition(args.User.Value); + var originEntPosition = transform.GetMoverCoordinates(args.User.Value); + + var entitiesInRange = lookup.GetEntitiesInRange(originEntPosition, SearchRange); + foreach (var ent in entitiesInRange) + { + if (ent.Owner == args.User.Value) + continue; + + if (mobStateSys.IsDead(ent)) + continue; + + var targetPosition = transform.GetWorldPosition(ent); + + //Calculate the rotation + Angle angle = new(targetPosition - originPosition); + + var pointer = entManager.Spawn(PointerEntity, new MapCoordinates(originPosition, transform.GetMapId(originEntPosition))); + + transform.SetWorldRotation(pointer, angle + Angle.FromDegrees(90)); + } + } +} diff --git a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.Access.cs b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.Access.cs index 062811a248..85c859cfc2 100644 --- a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.Access.cs +++ b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.Access.cs @@ -1,7 +1,5 @@ -using Content.Shared._CP14.MagicAttuning; using Content.Shared._CP14.MagicSpellStorage.Components; using Content.Shared.Clothing; -using Content.Shared.Clothing.Components; using Content.Shared.Hands; namespace Content.Shared._CP14.MagicSpellStorage; @@ -11,9 +9,7 @@ public sealed partial class CP14SpellStorageSystem private void InitializeAccess() { SubscribeLocalEvent(OnEquippedHand); - SubscribeLocalEvent(OnHandAddedAttune); - SubscribeLocalEvent(OnClothingAddedAttune); SubscribeLocalEvent(OnClothingEquipped); SubscribeLocalEvent(OnClothingUnequipped); } @@ -26,40 +22,6 @@ public sealed partial class CP14SpellStorageSystem TryGrantAccess((ent, spellStorage), args.User); } - private void OnHandAddedAttune(Entity ent, ref AddedAttuneToMindEvent args) - { - if (!TryComp(ent, out var spellStorage)) - return; - - if (args.User is null) - return; - - if (!_hands.IsHolding(args.User.Value, ent)) - return; - - TryGrantAccess((ent, spellStorage), args.User.Value); - } - - private void OnClothingAddedAttune(Entity ent, ref AddedAttuneToMindEvent args) - { - if (!ent.Comp.Wearing) - return; - - if (!TryComp(ent, out var spellStorage)) - return; - - if (args.User is null) - return; - - if (!TryComp(ent, out var clothing)) - return; - - if (Transform(ent).ParentUid != args.User) - return; - - TryGrantAccess((ent, spellStorage), args.User.Value); - } - private void OnClothingEquipped(Entity ent, ref ClothingGotEquippedEvent args) { ent.Comp.Wearing = true; diff --git a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs index 2aa2ae3b1f..0ec0595de2 100644 --- a/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs +++ b/Content.Shared/_CP14/MagicSpellStorage/CP14SpellStorageSystem.cs @@ -1,4 +1,3 @@ -using Content.Shared._CP14.MagicAttuning; using Content.Shared._CP14.MagicSpell.Components; using Content.Shared._CP14.MagicSpell.Events; using Content.Shared._CP14.MagicSpellStorage.Components; @@ -18,7 +17,6 @@ public sealed partial class CP14SpellStorageSystem : EntitySystem [Dependency] private readonly ActionContainerSystem _actionContainer = default!; [Dependency] private readonly SharedActionsSystem _actions = default!; [Dependency] private readonly SharedMindSystem _mind = default!; - [Dependency] private readonly CP14SharedMagicAttuningSystem _attuning = default!; [Dependency] private readonly SharedHandsSystem _hands = default!; [Dependency] private readonly INetManager _net = default!; [Dependency] private readonly DamageableSystem _damageable = default!; @@ -31,7 +29,6 @@ public sealed partial class CP14SpellStorageSystem : EntitySystem SubscribeLocalEvent(OnMagicStorageShutdown); SubscribeLocalEvent(OnSpellUsed); - SubscribeLocalEvent(OnRemovedAttune); } private void OnSpellUsed(Entity ent, ref CP14SpellFromSpellStorageUsedEvent args) @@ -81,21 +78,7 @@ public sealed partial class CP14SpellStorageSystem : EntitySystem if (mind.OwnedEntity is null) return false; - if (TryComp(storage, out var reqAttune)) - { - if (!_attuning.IsAttunedTo(mindId, storage)) - return false; - } - _actions.GrantActions(user, storage.Comp.SpellEntities, storage); return true; } - - private void OnRemovedAttune(Entity ent, ref RemovedAttuneFromMindEvent args) - { - if (args.User is null) - return; - - _actions.RemoveProvidedActions(args.User.Value, ent); - } } diff --git a/Content.Shared/_CP14/MagicSpellStorage/Components/CP14SpellStorageRequireAttuneComponent.cs b/Content.Shared/_CP14/MagicSpellStorage/Components/CP14SpellStorageRequireAttuneComponent.cs deleted file mode 100644 index b3af633fae..0000000000 --- a/Content.Shared/_CP14/MagicSpellStorage/Components/CP14SpellStorageRequireAttuneComponent.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace Content.Shared._CP14.MagicSpellStorage.Components; - -/// -/// The ability to access spellcasting is limited by the attuning requirement -/// -[RegisterComponent, Access(typeof(CP14SpellStorageSystem))] -public sealed partial class CP14SpellStorageRequireAttuneComponent : Component -{ -} diff --git a/Content.Shared/_CP14/ModularCraft/CP14SharedModularCraftSystem.cs b/Content.Shared/_CP14/ModularCraft/CP14SharedModularCraftSystem.cs index 93cd96c177..5e537938f0 100644 --- a/Content.Shared/_CP14/ModularCraft/CP14SharedModularCraftSystem.cs +++ b/Content.Shared/_CP14/ModularCraft/CP14SharedModularCraftSystem.cs @@ -10,7 +10,7 @@ namespace Content.Shared._CP14.ModularCraft; public abstract class CP14SharedModularCraftSystem : EntitySystem { [Dependency] private readonly SharedDoAfterSystem _doAfter = default!; - [Dependency] private readonly SharedLabelSystem _label = default!; + [Dependency] private readonly LabelSystem _label = default!; [Dependency] private readonly MetaDataSystem _meta = default!; public override void Initialize() diff --git a/Content.Shared/_CP14/ResearchTable/CP14ResearchTableComponent.cs b/Content.Shared/_CP14/ResearchTable/CP14ResearchTableComponent.cs new file mode 100644 index 0000000000..6cb4016a13 --- /dev/null +++ b/Content.Shared/_CP14/ResearchTable/CP14ResearchTableComponent.cs @@ -0,0 +1,17 @@ +using Robust.Shared.Audio; +using Robust.Shared.GameStates; + +namespace Content.Shared._CP14.ResearchTable; + +[RegisterComponent, NetworkedComponent] +public sealed partial class CP14ResearchTableComponent : Component +{ + [DataField] + public float ResearchSpeed = 3f; + + [DataField] + public float ResearchRadius = 0.5f; + + [DataField] + public SoundSpecifier ResearchSound = new SoundCollectionSpecifier("PaperScribbles"); +} diff --git a/Content.Shared/_CP14/ResearchTable/CP14SharedResearchSystem.cs b/Content.Shared/_CP14/ResearchTable/CP14SharedResearchSystem.cs new file mode 100644 index 0000000000..04c032a6ea --- /dev/null +++ b/Content.Shared/_CP14/ResearchTable/CP14SharedResearchSystem.cs @@ -0,0 +1,19 @@ +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared.DoAfter; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared._CP14.ResearchTable; + +public abstract class CP14SharedResearchSystem : EntitySystem +{ +} + +[Serializable, NetSerializable] +public sealed partial class CP14ResearchDoAfterEvent : DoAfterEvent +{ + [DataField(required: true)] + public ProtoId Skill = default!; + + public override DoAfterEvent Clone() => this; +} diff --git a/Content.Shared/_CP14/RoundStatistic/CP14RoundStatTrackerPrototype.cs b/Content.Shared/_CP14/RoundStatistic/CP14RoundStatTrackerPrototype.cs deleted file mode 100644 index 9da3be1582..0000000000 --- a/Content.Shared/_CP14/RoundStatistic/CP14RoundStatTrackerPrototype.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.RoundStatistic; - -[Prototype("statisticTracker")] -public sealed partial class CP14RoundStatTrackerPrototype : IPrototype -{ - [IdDataField] public string ID { get; } = default!; - - [DataField(required: true)] - public LocId Text; -} diff --git a/Content.Shared/_CP14/Skill/CP14LearnSkillsSpecial.cs b/Content.Shared/_CP14/Skill/CP14LearnSkillsSpecial.cs new file mode 100644 index 0000000000..42ebf9121e --- /dev/null +++ b/Content.Shared/_CP14/Skill/CP14LearnSkillsSpecial.cs @@ -0,0 +1,22 @@ +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared.Roles; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill; + +public sealed partial class CP14LearnSkillsSpecial : JobSpecial +{ + [DataField] + public HashSet> Skills { get; private set; } = new(); + + public override void AfterEquip(EntityUid mob) + { + var entMan = IoCManager.Resolve(); + var skillSys = entMan.System(); + + foreach (var skill in Skills) + { + skillSys.TryAddSkill(mob, skill, free: true); + } + } +} diff --git a/Content.Shared/_CP14/Skill/CP14ResearchTableUI.cs b/Content.Shared/_CP14/Skill/CP14ResearchTableUI.cs new file mode 100644 index 0000000000..e3f41a59bc --- /dev/null +++ b/Content.Shared/_CP14/Skill/CP14ResearchTableUI.cs @@ -0,0 +1,61 @@ +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Shared.Prototypes; +using Robust.Shared.Serialization; + +namespace Content.Shared._CP14.Skill; + +[Serializable, NetSerializable] +public enum CP14ResearchTableUiKey +{ + Key, +} + +[Serializable, NetSerializable] +public sealed class CP14ResearchMessage(ProtoId skill) : BoundUserInterfaceMessage +{ + public readonly ProtoId Skill = skill; +} + + +[Serializable, NetSerializable] +public sealed class CP14ResearchTableUiState(List skills) : BoundUserInterfaceState +{ + public readonly List Skills = skills; +} + +[Serializable, NetSerializable] +public readonly struct CP14ResearchUiEntry(ProtoId protoId, bool craftable) : IEquatable +{ + public readonly ProtoId ProtoId = protoId; + public readonly bool Craftable = craftable; + + public int CompareTo(CP14ResearchUiEntry other) + { + return Craftable.CompareTo(other.Craftable); + } + + public override bool Equals(object? obj) + { + return obj is CP14ResearchUiEntry other && Equals(other); + } + + public bool Equals(CP14ResearchUiEntry other) + { + return ProtoId.Id == other.ProtoId.Id; + } + + public override int GetHashCode() + { + return HashCode.Combine(ProtoId, Craftable); + } + + public override string ToString() + { + return $"{ProtoId} ({Craftable})"; + } + + public static int CompareTo(CP14ResearchUiEntry left, CP14ResearchUiEntry right) + { + return right.CompareTo(left); + } +} diff --git a/Content.Shared/_CP14/Skill/CP14SharedSkillSystem.cs b/Content.Shared/_CP14/Skill/CP14SharedSkillSystem.cs index 6f5af04582..cbe8cb04d9 100644 --- a/Content.Shared/_CP14/Skill/CP14SharedSkillSystem.cs +++ b/Content.Shared/_CP14/Skill/CP14SharedSkillSystem.cs @@ -1,3 +1,5 @@ +using System.Linq; +using System.Text; using Content.Shared._CP14.Skill.Components; using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.FixedPoint; @@ -7,12 +9,39 @@ namespace Content.Shared._CP14.Skill; public abstract partial class CP14SharedSkillSystem : EntitySystem { + private EntityQuery _skillStorageQuery = default!; public override void Initialize() { base.Initialize(); + _skillStorageQuery = GetEntityQuery(); + + SubscribeLocalEvent(OnMapInit); + InitializeAdmin(); + InitializeChecks(); + } + + private void OnMapInit(Entity ent, ref MapInitEvent args) + { + //If at initialization we have any skill records, we automatically give them to this entity + + var free = ent.Comp.FreeLearnedSkills.ToList(); + var learned = ent.Comp.LearnedSkills.ToList(); + + ent.Comp.FreeLearnedSkills.Clear(); + ent.Comp.LearnedSkills.Clear(); + + foreach (var skill in free) + { + TryAddSkill(ent.Owner, skill, ent.Comp, true); + } + + foreach (var skill in learned) + { + TryAddSkill(ent.Owner, skill, ent.Comp); + } } /// @@ -20,7 +49,8 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem /// public bool TryAddSkill(EntityUid target, ProtoId skill, - CP14SkillStorageComponent? component = null) + CP14SkillStorageComponent? component = null, + bool free = false) { if (!Resolve(target, ref component, false)) return false; @@ -31,15 +61,22 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!_proto.TryIndex(skill, out var indexedSkill)) return false; - if (indexedSkill.Effect is not null) + foreach (var effect in indexedSkill.Effects) { - indexedSkill.Effect.AddSkill(EntityManager, target); + effect.AddSkill(EntityManager, target); } - component.SkillsSumExperience += indexedSkill.LearnCost; + if (free) + component.FreeLearnedSkills.Add(skill); + else + component.SkillsSumExperience += indexedSkill.LearnCost; component.LearnedSkills.Add(skill); Dirty(target, component); + + var learnEv = new CP14SkillLearnedEvent(skill, target); + RaiseLocalEvent(target, ref learnEv); + return true; } @@ -59,12 +96,13 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!_proto.TryIndex(skill, out var indexedSkill)) return false; - if (indexedSkill.Effect is not null) + foreach (var effect in indexedSkill.Effects) { - indexedSkill.Effect.RemoveSkill(EntityManager, target); + effect.RemoveSkill(EntityManager, target); } - component.SkillsSumExperience -= indexedSkill.LearnCost; + if (!component.FreeLearnedSkills.Remove(skill)) + component.SkillsSumExperience -= indexedSkill.LearnCost; Dirty(target, component); return true; @@ -83,53 +121,14 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem return component.LearnedSkills.Contains(skill); } - /// - /// Adds experience to the specified skill tree for the player. - /// - public bool TryAddExperience(EntityUid target, - ProtoId tree, - FixedPoint2 exp, + public bool HaveFreeSkill(EntityUid target, + ProtoId skill, CP14SkillStorageComponent? component = null) { if (!Resolve(target, ref component, false)) return false; - if (component.Progress.TryGetValue(tree, out var currentExp)) - { - // If the tree already exists, add experience to it - component.Progress[tree] = currentExp + exp; - } - else - { - // If the tree doesn't exist, initialize it with the experience - component.Progress[tree] = exp; - } - - Dirty(target, component); - return true; - } - - /// - /// Removes experience from the specified skill tree for the player. - /// - public bool TryRemoveExperience(EntityUid target, - ProtoId tree, - FixedPoint2 exp, - CP14SkillStorageComponent? component = null) - { - if (!Resolve(target, ref component, false)) - return false; - - if (!component.Progress.TryGetValue(tree, out var currentExp)) - return false; - - if (currentExp < exp) - return false; - - component.Progress[tree] = FixedPoint2.Max(0, component.Progress[tree] - exp); - - Dirty(target, component); - return true; + return component.FreeLearnedSkills.Contains(skill); } /// @@ -158,12 +157,6 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!AllowedToLearn(target, skill, component)) return false; - //Experience check - if (!component.Progress.TryGetValue(skill.Tree, out var currentExp)) - return false; - if (currentExp < skill.LearnCost) - return false; - return true; } @@ -182,13 +175,13 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem return false; //Check max cap - if (component.SkillsSumExperience + skill.LearnCost >= component.ExperienceMaxCap) + if (component.SkillsSumExperience + skill.LearnCost > component.ExperienceMaxCap) return false; //Restrictions check foreach (var req in skill.Restrictions) { - if (!req.Check(EntityManager, target)) + if (!req.Check(EntityManager, target, skill)) return false; } @@ -205,15 +198,9 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!Resolve(target, ref component, false)) return false; - if (!_proto.TryIndex(skill, out var indexedSkill)) - return false; - if (!CanLearnSkill(target, skill, component)) return false; - if (!TryRemoveExperience(target, indexedSkill.Tree, indexedSkill.LearnCost, component)) - return false; - if (!TryAddSkill(target, skill, component)) return false; @@ -228,11 +215,11 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!_proto.TryIndex(skill, out var indexedSkill)) return string.Empty; - if (indexedSkill.Name != null) + if (indexedSkill.Name is not null) return Loc.GetString(indexedSkill.Name); - if (indexedSkill.Effect != null) - return indexedSkill.Effect.GetName(EntityManager, _proto) ?? string.Empty; + if (indexedSkill.Effects.Count > 0) + return indexedSkill.Effects.First().GetName(EntityManager, _proto) ?? string.Empty; return string.Empty; } @@ -245,12 +232,19 @@ public abstract partial class CP14SharedSkillSystem : EntitySystem if (!_proto.TryIndex(skill, out var indexedSkill)) return string.Empty; - if (indexedSkill.Desc != null) + if (indexedSkill.Desc is not null) return Loc.GetString(indexedSkill.Desc); - if (indexedSkill.Effect != null) - return indexedSkill.Effect.GetDescription(EntityManager, _proto) ?? string.Empty; + var sb = new StringBuilder(); - return string.Empty; + foreach (var effect in indexedSkill.Effects) + { + sb.Append(effect.GetDescription(EntityManager, _proto, skill) + "\n"); + } + + return sb.ToString(); } } + +[ByRefEvent] +public record struct CP14SkillLearnedEvent(ProtoId Skill, EntityUid User); diff --git a/Content.Shared/_CP14/Skill/CP14SkillSystem.Admin.cs b/Content.Shared/_CP14/Skill/CP14SkillSystem.Admin.cs index 3b0813371d..dd49da8b2b 100644 --- a/Content.Shared/_CP14/Skill/CP14SkillSystem.Admin.cs +++ b/Content.Shared/_CP14/Skill/CP14SkillSystem.Admin.cs @@ -50,27 +50,6 @@ public abstract partial class CP14SharedSkillSystem var target = args.Target; - //Add skill points - foreach (var tree in _allTrees) - { - FixedPoint2 current = 0; - ent.Comp.Progress.TryGetValue(tree, out current); - - var name = Loc.GetString(tree.Name); - args.Verbs.Add(new Verb - { - Text = name, - Message = $"{name} EXP {current} -> {current + 1}", - Category = VerbCategory.CP14AdminSkillAdd, - Icon = tree.Icon, - Act = () => - { - TryAddExperience(target, tree.ID, 1); - }, - Priority = 2, - }); - } - //Add Skill foreach (var skill in _allSkills) { @@ -91,30 +70,6 @@ public abstract partial class CP14SharedSkillSystem }); } - //Remove skill points - foreach (var tree in _allTrees) - { - FixedPoint2 current = 0; - ent.Comp.Progress.TryGetValue(tree, out current); - - if (current < 1) - continue; - - var name = Loc.GetString(tree.Name); - args.Verbs.Add(new Verb - { - Text = name, - Message = $"{name} EXP {current} -> {current - 1}", - Category = VerbCategory.CP14AdminSkillRemove, - Icon = tree.Icon, - Act = () => - { - TryRemoveExperience(target, tree.ID, 1); - }, - Priority = 2, - }); - } - //Remove Skill foreach (var skill in ent.Comp.LearnedSkills) { diff --git a/Content.Shared/_CP14/Skill/CP14SkillSystem.Checks.cs b/Content.Shared/_CP14/Skill/CP14SkillSystem.Checks.cs new file mode 100644 index 0000000000..dbfa66e89e --- /dev/null +++ b/Content.Shared/_CP14/Skill/CP14SkillSystem.Checks.cs @@ -0,0 +1,75 @@ +using System.Text; +using Content.Shared._CP14.Skill.Components; +using Content.Shared.Damage; +using Content.Shared.Examine; +using Content.Shared.Hands.EntitySystems; +using Content.Shared.Popups; +using Content.Shared.Throwing; +using Content.Shared.Weapons.Melee.Events; +using Robust.Shared.Network; +using Robust.Shared.Random; + +namespace Content.Shared._CP14.Skill; + +public abstract partial class CP14SharedSkillSystem +{ + [Dependency] private readonly ThrowingSystem _throwing = default!; + [Dependency] private readonly INetManager _net = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly SharedHandsSystem _hands = default!; + [Dependency] private readonly DamageableSystem _damageable = default!; + [Dependency] private readonly SharedPopupSystem _popup = default!; + private void InitializeChecks() + { + SubscribeLocalEvent(OnMeleeAttack); + SubscribeLocalEvent(OnExamined); + } + + private void OnExamined(Entity ent, ref ExaminedEvent args) + { + var sb = new StringBuilder(); + sb.Append(Loc.GetString("cp14-skill-issue-title") + "\n"); + + foreach (var skill in ent.Comp.Skills) + { + if (!_proto.TryIndex(skill, out var indexedSkill)) + continue; + + if (indexedSkill.Name is null) + continue; + + var color = HaveSkill(args.Examiner, skill) ? Color.LimeGreen.ToHex() : Color.Red.ToHex(); + sb.Append($"[color={color}] - {Loc.GetString(indexedSkill.Name)} [/color]\n"); + } + args.PushMarkup(sb.ToString()); + } + + private void OnMeleeAttack(Entity ent, ref MeleeHitEvent args) + { + if (!_skillStorageQuery.TryComp(args.User, out var skillStorage)) + return; + + var passed = true; + foreach (var reqSkill in ent.Comp.Skills) + { + if (!skillStorage.LearnedSkills.Contains(reqSkill)) + { + passed = false; + break; + } + } + + args.BonusDamage *= ent.Comp.DamageMultiplier; + + if (_net.IsClient) + return; + + if (passed || !_random.Prob(ent.Comp.DropProbability)) + return; + + _hands.TryDrop(args.User, ent); + _throwing.TryThrow(ent, _random.NextAngle().ToWorldVec() * 2, 2f, args.User); + _damageable.TryChangeDamage(args.User, args.BaseDamage); + _popup.PopupEntity(Loc.GetString("cp14-skill-issue"), args.User, args.User, PopupType.Medium); + } +} diff --git a/Content.Shared/_CP14/Skill/CP14SkillSystem.Learning.cs b/Content.Shared/_CP14/Skill/CP14SkillSystem.Learning.cs deleted file mode 100644 index 68bf7d4970..0000000000 --- a/Content.Shared/_CP14/Skill/CP14SkillSystem.Learning.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Content.Shared._CP14.Skill.Components; -using Content.Shared._CP14.Skill.Prototypes; -using Content.Shared.Bed.Sleep; -using Content.Shared.Examine; -using Content.Shared.FixedPoint; -using Content.Shared.Mobs.Components; -using Content.Shared.Mobs.Systems; -using Robust.Shared.Map; -using Robust.Shared.Prototypes; - -namespace Content.Shared._CP14.Skill; - -public abstract partial class CP14SharedSkillSystem -{ - [Dependency] private readonly EntityLookupSystem _lookup = default!; - [Dependency] private readonly ExamineSystemShared _examine = default!; - [Dependency] private readonly MobStateSystem _mobState = default!; - - public void GiveExperienceInRadius(EntityCoordinates position, ProtoId tree, FixedPoint2 points, float radius = 5) - { - var entities = _lookup.GetEntitiesInRange(position, radius, LookupFlags.Uncontained); - - foreach (var ent in entities) - { - //Cant learn if the position is not in range or obstructed - if (!_examine.InRangeUnOccluded(ent, position, radius)) - continue; - - //Cant learn when dead - if (TryComp(ent, out var mobState) && !_mobState.IsAlive(ent, mobState)) - continue; - - //Cant learn if the entity is sleeping - if (HasComp(ent)) - continue; - - TryAddExperience(ent, tree, points); - } - } - - public void GiveExperienceInRadius(EntityUid uid, - ProtoId tree, - FixedPoint2 points, - float radius = 5) - { - GiveExperienceInRadius(Transform(uid).Coordinates, tree, points, radius); - } -} diff --git a/Content.Shared/_CP14/Skill/Components/CP14MeleeWeaponSkillRequiredComponent.cs b/Content.Shared/_CP14/Skill/Components/CP14MeleeWeaponSkillRequiredComponent.cs new file mode 100644 index 0000000000..3f4557dc79 --- /dev/null +++ b/Content.Shared/_CP14/Skill/Components/CP14MeleeWeaponSkillRequiredComponent.cs @@ -0,0 +1,31 @@ +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Shared.GameStates; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Components; + +/// +/// Component that stores the skills learned by a player and their progress in the skill trees. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] +[Access(typeof(CP14SharedSkillSystem))] +public sealed partial class CP14MeleeWeaponSkillRequiredComponent : Component +{ + /// + /// What skills does a character have to have to use this weapon? + /// + [DataField, AutoNetworkedField] + public HashSet> Skills = new(); + + /// + /// The chances of dropping a weapon from your hands if the required skills are not learned by the character. + /// + [DataField, AutoNetworkedField] + public float DropProbability = 0.5f; + + /// + /// Reduces outgoing damage if the required skills are not learned by the character + /// + [DataField, AutoNetworkedField] + public float DamageMultiplier = 0.5f; +} diff --git a/Content.Shared/_CP14/Skill/Components/CP14SkillStorageComponent.cs b/Content.Shared/_CP14/Skill/Components/CP14SkillStorageComponent.cs index cd0f783885..bfb11e4776 100644 --- a/Content.Shared/_CP14/Skill/Components/CP14SkillStorageComponent.cs +++ b/Content.Shared/_CP14/Skill/Components/CP14SkillStorageComponent.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.ResearchTable; using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.FixedPoint; using Robust.Shared.GameStates; @@ -10,29 +11,36 @@ namespace Content.Shared._CP14.Skill.Components; /// Component that stores the skills learned by a player and their progress in the skill trees. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true)] -[Access(typeof(CP14SharedSkillSystem))] +[Access(typeof(CP14SharedSkillSystem), typeof(CP14SharedResearchSystem))] public sealed partial class CP14SkillStorageComponent : Component { + /// + /// Tracks skills that are learned without spending memory points. + /// the skills that are here are DUBLED in the LearnedSkills, + /// + [DataField, AutoNetworkedField] + public List> FreeLearnedSkills = new(); + [DataField, AutoNetworkedField] public List> LearnedSkills = new(); + /// + /// skills that the player has learned on the research table, but has not yet learned in the skill tree. + /// + [DataField, AutoNetworkedField] + public List> ResearchedSkills = new(); + /// /// The number of experience points spent on skills. Technically this could be calculated via LearnedSkills, but this is a cached value for optimization. /// [DataField, AutoNetworkedField] public FixedPoint2 SkillsSumExperience = 0; - /// - /// Keeps track of progress points in the knowledge areas available to the player. Important: The absence of a specific area means that the player CANNOT progress in that area. - /// - [DataField, AutoNetworkedField] - public Dictionary, FixedPoint2> Progress = new(); - /// /// The maximum ceiling of experience points that can be spent on learning skills. Not tied to a category. /// [DataField, AutoNetworkedField] - public FixedPoint2 ExperienceMaxCap = 10; + public FixedPoint2 ExperienceMaxCap = 5; } /// diff --git a/Content.Shared/_CP14/Skill/Effects/AddAction.cs b/Content.Shared/_CP14/Skill/Effects/AddAction.cs index 1272ff51a4..76aaec59cb 100644 --- a/Content.Shared/_CP14/Skill/Effects/AddAction.cs +++ b/Content.Shared/_CP14/Skill/Effects/AddAction.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.Actions; using Robust.Shared.Prototypes; @@ -39,7 +40,7 @@ public sealed partial class AddAction : CP14SkillEffect return !protoManager.TryIndex(Action, out var indexedAction) ? string.Empty : indexedAction.Name; } - public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager) + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) { return !protoManager.TryIndex(Action, out var indexedAction) ? string.Empty : indexedAction.Description; } diff --git a/Content.Shared/_CP14/Skill/Effects/AddComponents.cs b/Content.Shared/_CP14/Skill/Effects/AddComponents.cs new file mode 100644 index 0000000000..851a5dda7d --- /dev/null +++ b/Content.Shared/_CP14/Skill/Effects/AddComponents.cs @@ -0,0 +1,31 @@ + +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Effects; + +public sealed partial class AddComponents : CP14SkillEffect +{ + [DataField(required: true)] + public ComponentRegistry Components = new(); + + public override void AddSkill(IEntityManager entManager, EntityUid target) + { + entManager.AddComponents(target, Components); + } + + public override void RemoveSkill(IEntityManager entManager, EntityUid target) + { + entManager.RemoveComponents(target, Components); + } + + public override string? GetName(IEntityManager entMagager, IPrototypeManager protoManager) + { + return null; + } + + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) + { + return null; + } +} diff --git a/Content.Shared/_CP14/Skill/Effects/AddMaxMana.cs b/Content.Shared/_CP14/Skill/Effects/AddMaxMana.cs new file mode 100644 index 0000000000..7fc05e438c --- /dev/null +++ b/Content.Shared/_CP14/Skill/Effects/AddMaxMana.cs @@ -0,0 +1,33 @@ +using Content.Shared._CP14.MagicEnergy; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared.FixedPoint; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Effects; + +public sealed partial class AddManaMax : CP14SkillEffect +{ + [DataField] + public FixedPoint2 AdditionalMana = 0; + public override void AddSkill(IEntityManager entManager, EntityUid target) + { + var magicSystem = entManager.System(); + magicSystem.ChangeMaximumEnergy(target, AdditionalMana); + } + + public override void RemoveSkill(IEntityManager entManager, EntityUid target) + { + var magicSystem = entManager.System(); + magicSystem.ChangeMaximumEnergy(target, -AdditionalMana); + } + + public override string? GetName(IEntityManager entMagager, IPrototypeManager protoManager) + { + return null; + } + + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) + { + return Loc.GetString("cp14-skill-desc-add-mana", ("mana", AdditionalMana.ToString())); + } +} diff --git a/Content.Shared/_CP14/Skill/Effects/CP14SkillEffect.cs b/Content.Shared/_CP14/Skill/Effects/CP14SkillEffect.cs index 63e4a617c6..0bcf0719ff 100644 --- a/Content.Shared/_CP14/Skill/Effects/CP14SkillEffect.cs +++ b/Content.Shared/_CP14/Skill/Effects/CP14SkillEffect.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using JetBrains.Annotations; using Robust.Shared.Prototypes; @@ -13,5 +14,5 @@ public abstract partial class CP14SkillEffect public abstract string? GetName(IEntityManager entMagager, IPrototypeManager protoManager); - public abstract string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager); + public abstract string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill); } diff --git a/Content.Shared/_CP14/Skill/Effects/ModifyManacost.cs b/Content.Shared/_CP14/Skill/Effects/ModifyManacost.cs new file mode 100644 index 0000000000..dc684d1ae0 --- /dev/null +++ b/Content.Shared/_CP14/Skill/Effects/ModifyManacost.cs @@ -0,0 +1,78 @@ +using System.Text; +using Content.Shared._CP14.MagicManacostModify; +using Content.Shared._CP14.MagicRitual.Prototypes; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared.FixedPoint; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Effects; + +public sealed partial class ModifyManacost : CP14SkillEffect +{ + [DataField] + public FixedPoint2 Global = 0f; + + [DataField] + public Dictionary, FixedPoint2> Modifiers = new(); + + public override void AddSkill(IEntityManager entManager, EntityUid target) + { + entManager.EnsureComponent(target, out var magicEffectManaCost); + + foreach (var (magicType, modifier) in Modifiers) + { + if (!magicEffectManaCost.Modifiers.ContainsKey(magicType)) + magicEffectManaCost.Modifiers.Add(magicType, 1 + modifier); + else + magicEffectManaCost.Modifiers[magicType] += modifier; + } + magicEffectManaCost.GlobalModifier += Global; + } + + public override void RemoveSkill(IEntityManager entManager, EntityUid target) + { + entManager.EnsureComponent(target, out var magicEffectManaCost); + + foreach (var (magicType, modifier) in Modifiers) + { + if (!magicEffectManaCost.Modifiers.ContainsKey(magicType)) + continue; + + magicEffectManaCost.Modifiers[magicType] -= modifier; + if (magicEffectManaCost.Modifiers[magicType] <= 0) + magicEffectManaCost.Modifiers.Remove(magicType); + } + magicEffectManaCost.GlobalModifier -= Global; + } + + public override string? GetName(IEntityManager entMagager, IPrototypeManager protoManager) + { + return null; + } + + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) + { + var sb = new StringBuilder(); + sb.Append(Loc.GetString("cp14-clothing-magic-examine")+"\n"); + + if (Global != 0) + { + + var plus = (float)Global > 0 ? "+" : ""; + sb.Append( + $"{Loc.GetString("cp14-clothing-magic-global")}: {plus}{MathF.Round((float)Global * 100, MidpointRounding.AwayFromZero)}%\n"); + } + + foreach (var modifier in Modifiers) + { + if (modifier.Value == 0) + continue; + + var plus = modifier.Value > 1 ? "+" : ""; + var indexedType = protoManager.Index(modifier.Key); + sb.Append($"- [color={indexedType.Color.ToHex()}]{Loc.GetString(indexedType.Name)}[/color]: {plus}{modifier.Value*100}%"); + } + + return sb.ToString(); + } +} diff --git a/Content.Shared/_CP14/Skill/Effects/ReplaceAction.cs b/Content.Shared/_CP14/Skill/Effects/ReplaceAction.cs index 75cc01192b..5b6b1253e6 100644 --- a/Content.Shared/_CP14/Skill/Effects/ReplaceAction.cs +++ b/Content.Shared/_CP14/Skill/Effects/ReplaceAction.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.Actions; using Robust.Shared.Prototypes; @@ -62,7 +63,7 @@ public sealed partial class ReplaceAction : CP14SkillEffect return !protoManager.TryIndex(NewAction, out var indexedAction) ? string.Empty : indexedAction.Name; } - public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager) + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) { return !protoManager.TryIndex(NewAction, out var indexedAction) ? string.Empty : indexedAction.Description; } diff --git a/Content.Shared/_CP14/Skill/Effects/UnlockRecipes.cs b/Content.Shared/_CP14/Skill/Effects/UnlockRecipes.cs new file mode 100644 index 0000000000..0d77836b49 --- /dev/null +++ b/Content.Shared/_CP14/Skill/Effects/UnlockRecipes.cs @@ -0,0 +1,65 @@ +using System.Text; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared._CP14.Workbench.Prototypes; +using Content.Shared._CP14.Workbench.Requirements; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Effects; + +/// +/// This effect only exists for parsing the description. +/// +public sealed partial class UnlockRecipes : CP14SkillEffect +{ + public override void AddSkill(IEntityManager entManager, EntityUid target) + { + // + } + + public override void RemoveSkill(IEntityManager entManager, EntityUid target) + { + // + } + + public override string? GetName(IEntityManager entMagager, IPrototypeManager protoManager) + { + return null; + } + + public override string? GetDescription(IEntityManager entMagager, IPrototypeManager protoManager, ProtoId skill) + { + var allRecipes = protoManager.EnumeratePrototypes(); + + var sb = new StringBuilder(); + sb.Append(Loc.GetString("cp14-skill-desc-unlock-recipes") + "\n"); + + var affectedRecipes = new List(); + foreach (var recipe in allRecipes) + { + foreach (var req in recipe.Requirements) + { + switch (req) + { + case SkillRequired skillReq: + foreach (var skillReqSkill in skillReq.Skills) + { + if (skillReqSkill == skill) + { + affectedRecipes.Add(recipe); + break; + } + } + break; + } + } + } + foreach (var recipe in affectedRecipes) + { + if (!protoManager.TryIndex(recipe.Result, out var indexedResult)) + continue; + sb.Append("- " + indexedResult.Name + "\n"); + } + + return sb.ToString(); + } +} diff --git a/Content.Shared/_CP14/Skill/Prototypes/CP14SkillPrototype.cs b/Content.Shared/_CP14/Skill/Prototypes/CP14SkillPrototype.cs index e7903889f3..19290a36c0 100644 --- a/Content.Shared/_CP14/Skill/Prototypes/CP14SkillPrototype.cs +++ b/Content.Shared/_CP14/Skill/Prototypes/CP14SkillPrototype.cs @@ -18,13 +18,13 @@ public sealed partial class CP14SkillPrototype : IPrototype /// Skill Title. If you leave null, the name will try to generate from Effect.GetName() /// [DataField] - public LocId? Name; + public LocId? Name = null; /// /// Skill Description. If you leave null, the description will try to generate from Effect.GetDescription() /// [DataField] - public LocId? Desc; + public LocId? Desc = null; /// /// The tree this skill belongs to. This is used to group skills together in the UI. @@ -55,7 +55,7 @@ public sealed partial class CP14SkillPrototype : IPrototype /// But the presence of the skill itself can affect some systems that check for the presence of certain skills. /// [DataField] - public CP14SkillEffect? Effect; + public List Effects = new(); /// /// Skill restriction. Limiters on learning. Any reason why a player cannot learn this skill. diff --git a/Content.Shared/_CP14/Skill/Prototypes/CP14SkillTreePrototype.cs b/Content.Shared/_CP14/Skill/Prototypes/CP14SkillTreePrototype.cs index 47f2d71928..8a00c6e2b6 100644 --- a/Content.Shared/_CP14/Skill/Prototypes/CP14SkillTreePrototype.cs +++ b/Content.Shared/_CP14/Skill/Prototypes/CP14SkillTreePrototype.cs @@ -16,19 +16,19 @@ public sealed partial class CP14SkillTreePrototype : IPrototype public LocId Name; [DataField] - public SpriteSpecifier FrameIcon = new SpriteSpecifier.Rsi(new ResPath("/Textures/_CP14/Interface/Skills/default.rsi"), "frame"); + public SpriteSpecifier? FrameIcon; [DataField] - public SpriteSpecifier HoveredIcon = new SpriteSpecifier.Rsi(new ResPath("/Textures/_CP14/Interface/Skills/default.rsi"), "hovered"); + public SpriteSpecifier? HoveredIcon; [DataField] - public SpriteSpecifier SelectedIcon = new SpriteSpecifier.Rsi(new ResPath("/Textures/_CP14/Interface/Skills/default.rsi"), "selected"); + public SpriteSpecifier? SelectedIcon; [DataField] - public SpriteSpecifier LearnedIcon = new SpriteSpecifier.Rsi(new ResPath("/Textures/_CP14/Interface/Skills/default.rsi"), "learned"); + public SpriteSpecifier? LearnedIcon; [DataField] - public SpriteSpecifier AvailableIcon = new SpriteSpecifier.Rsi(new ResPath("/Textures/_CP14/Interface/Skills/default.rsi"), "available"); + public SpriteSpecifier? AvailableIcon; [DataField] public string Parallax = "AspidParallax"; diff --git a/Content.Shared/_CP14/Skill/Restrictions/CP14SkillRestriction.cs b/Content.Shared/_CP14/Skill/Restrictions/CP14SkillRestriction.cs index 01dda44d74..17907343aa 100644 --- a/Content.Shared/_CP14/Skill/Restrictions/CP14SkillRestriction.cs +++ b/Content.Shared/_CP14/Skill/Restrictions/CP14SkillRestriction.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using JetBrains.Annotations; using Robust.Shared.Prototypes; @@ -7,7 +8,7 @@ namespace Content.Shared._CP14.Skill.Restrictions; [MeansImplicitUse] public abstract partial class CP14SkillRestriction { - public abstract bool Check(IEntityManager entManager, EntityUid target); + public abstract bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill); public abstract string GetDescription(IEntityManager entManager, IPrototypeManager protoManager); } diff --git a/Content.Shared/_CP14/Skill/Restrictions/Impossible.cs b/Content.Shared/_CP14/Skill/Restrictions/Impossible.cs new file mode 100644 index 0000000000..38707056c4 --- /dev/null +++ b/Content.Shared/_CP14/Skill/Restrictions/Impossible.cs @@ -0,0 +1,18 @@ +using Content.Shared._CP14.Skill.Components; +using Content.Shared._CP14.Skill.Prototypes; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Restrictions; + +public sealed partial class Impossible : CP14SkillRestriction +{ + public override bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill) + { + return false; + } + + public override string GetDescription(IEntityManager entManager, IPrototypeManager protoManager) + { + return Loc.GetString("cp14-skill-req-impossible"); + } +} diff --git a/Content.Shared/_CP14/Skill/Restrictions/NeedPrerequisite.cs b/Content.Shared/_CP14/Skill/Restrictions/NeedPrerequisite.cs index 629706b8f1..3f68e78899 100644 --- a/Content.Shared/_CP14/Skill/Restrictions/NeedPrerequisite.cs +++ b/Content.Shared/_CP14/Skill/Restrictions/NeedPrerequisite.cs @@ -9,7 +9,7 @@ public sealed partial class NeedPrerequisite : CP14SkillRestriction [DataField(required: true)] public ProtoId Prerequisite = new(); - public override bool Check(IEntityManager entManager, EntityUid target) + public override bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill) { if (!entManager.TryGetComponent(target, out var skillStorage)) return false; diff --git a/Content.Shared/_CP14/Skill/Restrictions/Researched.cs b/Content.Shared/_CP14/Skill/Restrictions/Researched.cs new file mode 100644 index 0000000000..db1ee222bc --- /dev/null +++ b/Content.Shared/_CP14/Skill/Restrictions/Researched.cs @@ -0,0 +1,26 @@ +using Content.Shared._CP14.Skill.Components; +using Content.Shared._CP14.Skill.Prototypes; +using Content.Shared._CP14.Workbench; +using Robust.Shared.Prototypes; + +namespace Content.Shared._CP14.Skill.Restrictions; + +public sealed partial class Researched : CP14SkillRestriction +{ + [DataField(required: true)] + public List Requirements = new(); + + public override bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill) + { + if (!entManager.TryGetComponent(target, out var skillStorage)) + return false; + + var learned = skillStorage.ResearchedSkills; + return learned.Contains(skill); + } + + public override string GetDescription(IEntityManager entManager, IPrototypeManager protoManager) + { + return Loc.GetString("cp14-skill-req-researched"); + } +} diff --git a/Content.Shared/_CP14/Skill/Restrictions/SpeciesWhitelist.cs b/Content.Shared/_CP14/Skill/Restrictions/SpeciesWhitelist.cs index cc8b21a404..d46b8c2b36 100644 --- a/Content.Shared/_CP14/Skill/Restrictions/SpeciesWhitelist.cs +++ b/Content.Shared/_CP14/Skill/Restrictions/SpeciesWhitelist.cs @@ -1,3 +1,4 @@ +using Content.Shared._CP14.Skill.Prototypes; using Content.Shared.Humanoid; using Content.Shared.Humanoid.Prototypes; using Robust.Shared.Prototypes; @@ -9,7 +10,7 @@ public sealed partial class SpeciesWhitelist : CP14SkillRestriction [DataField(required: true)] public ProtoId Species = new(); - public override bool Check(IEntityManager entManager, EntityUid target) + public override bool Check(IEntityManager entManager, EntityUid target, CP14SkillPrototype skill) { if (!entManager.TryGetComponent(target, out var appearance)) return false; diff --git a/Content.Shared/_CP14/Workbench/SharedCP14WorkbenchSystem.cs b/Content.Shared/_CP14/Workbench/CP14SharedWorkbenchSystem.cs similarity index 90% rename from Content.Shared/_CP14/Workbench/SharedCP14WorkbenchSystem.cs rename to Content.Shared/_CP14/Workbench/CP14SharedWorkbenchSystem.cs index 639d42cc10..cc9e7d2ec5 100644 --- a/Content.Shared/_CP14/Workbench/SharedCP14WorkbenchSystem.cs +++ b/Content.Shared/_CP14/Workbench/CP14SharedWorkbenchSystem.cs @@ -10,7 +10,7 @@ using Robust.Shared.Serialization; namespace Content.Shared._CP14.Workbench; -public abstract class SharedCP14WorkbenchSystem : EntitySystem +public abstract class CP14SharedWorkbenchSystem : EntitySystem { } diff --git a/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs b/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs index d0b96a0c14..302d17e928 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/MaterialResource.cs @@ -26,8 +26,7 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var count = 0; foreach (var ent in placedEntities) @@ -76,12 +75,14 @@ public sealed partial class MaterialResource : CP14WorkbenchCraftRequirement if (mat.Key != Material) continue; + if (requiredCount <= 0) + return; + if (stack is null) { var value = (int)MathF.Min(requiredCount, mat.Value); requiredCount -= value; entManager.DeleteEntity(placedEntity); - continue; } else { diff --git a/Content.Shared/_CP14/Workbench/Requirements/ProtoIdResource.cs b/Content.Shared/_CP14/Workbench/Requirements/ProtoIdResource.cs index 6c714ace0a..02bf018204 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/ProtoIdResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/ProtoIdResource.cs @@ -22,8 +22,7 @@ public sealed partial class ProtoIdResource : CP14WorkbenchCraftRequirement public override bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var indexedIngredients = IndexIngredients(entManager, placedEntities); diff --git a/Content.Shared/_CP14/Workbench/Requirements/KnowledgeRequired.cs b/Content.Shared/_CP14/Workbench/Requirements/SkillRequired.cs similarity index 95% rename from Content.Shared/_CP14/Workbench/Requirements/KnowledgeRequired.cs rename to Content.Shared/_CP14/Workbench/Requirements/SkillRequired.cs index c814e6535d..4da4b2c9ca 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/KnowledgeRequired.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/SkillRequired.cs @@ -16,8 +16,7 @@ public sealed partial class SkillRequired : CP14WorkbenchCraftRequirement public override bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var knowledgeSystem = entManager.System(); diff --git a/Content.Shared/_CP14/Workbench/Requirements/StackGroupResource.cs b/Content.Shared/_CP14/Workbench/Requirements/StackGroupResource.cs index a6ed0e43b8..1f1b52d7fa 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/StackGroupResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/StackGroupResource.cs @@ -23,8 +23,7 @@ public sealed partial class StackGroupResource : CP14WorkbenchCraftRequirement public override bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { if (!protoManager.TryIndex(Group, out var indexedGroup)) return false; diff --git a/Content.Shared/_CP14/Workbench/Requirements/StackResource.cs b/Content.Shared/_CP14/Workbench/Requirements/StackResource.cs index ce67cff95a..80ead44718 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/StackResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/StackResource.cs @@ -23,8 +23,7 @@ public sealed partial class StackResource : CP14WorkbenchCraftRequirement public override bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var count = 0; foreach (var ent in placedEntities) diff --git a/Content.Shared/_CP14/Workbench/Requirements/TagResource.cs b/Content.Shared/_CP14/Workbench/Requirements/TagResource.cs index 549a2e7756..e8849a9253 100644 --- a/Content.Shared/_CP14/Workbench/Requirements/TagResource.cs +++ b/Content.Shared/_CP14/Workbench/Requirements/TagResource.cs @@ -30,8 +30,7 @@ public sealed partial class TagResource : CP14WorkbenchCraftRequirement EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe) + EntityUid user) { var tagSystem = entManager.System(); diff --git a/Content.Shared/_CP14/Workbench/WorkbenchCraftRequirement.cs b/Content.Shared/_CP14/Workbench/WorkbenchCraftRequirement.cs index f17d610071..6fe852e7c1 100644 --- a/Content.Shared/_CP14/Workbench/WorkbenchCraftRequirement.cs +++ b/Content.Shared/_CP14/Workbench/WorkbenchCraftRequirement.cs @@ -26,8 +26,7 @@ public abstract partial class CP14WorkbenchCraftRequirement public abstract bool CheckRequirement(EntityManager entManager, IPrototypeManager protoManager, HashSet placedEntities, - EntityUid user, - CP14WorkbenchRecipePrototype recipe); + EntityUid user); /// /// An event that is triggered after crafting. This is the place to put important things like removing items, spending stacks or other things. diff --git a/Content.Shared/_CP14/WorldSprite/WorldSpriteVisualLayer.cs b/Content.Shared/_CP14/WorldSprite/WorldSpriteVisualLayer.cs deleted file mode 100644 index 058adaf133..0000000000 --- a/Content.Shared/_CP14/WorldSprite/WorldSpriteVisualLayer.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Content.Shared._CP14.WorldSprite; - -public enum WorldSpriteVisualLayers : byte -{ - Layer, -} diff --git a/README.md b/README.md index dc6af1e6bd..f9389ef6ff 100644 --- a/README.md +++ b/README.md @@ -26,4 +26,4 @@ These are just the most important points, Please read [Legal.md](https://github. ## Forking CrystallEdge -You cannot create forks of CrystallEdge to open your own public servers. You can copy a build for educational purposes, code research and contributing to the main build. \ No newline at end of file +You cannot create forks of CrystallEdge to open your own public servers. You can copy a build for educational purposes, code research and contributing to the main build. diff --git a/Resources/Audio/Effects/attributions.yml b/Resources/Audio/Effects/attributions.yml index add8884a7d..9cfaa54122 100644 --- a/Resources/Audio/Effects/attributions.yml +++ b/Resources/Audio/Effects/attributions.yml @@ -241,3 +241,8 @@ copyright: 'created by Vrymaa on Freesound and modified by Chaboricks' license: "CC0-1.0" source: https://freesound.org/people/Vrymaa/sounds/785128/ + +- files: ["cig_light.ogg", "cig_snuff.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Created by mattroks101 for Bee Station. cig_snuff converted to mono" + source: "https://github.com/BeeStation/BeeStation-Hornet/pull/29" diff --git a/Resources/Audio/Effects/cig_light.ogg b/Resources/Audio/Effects/cig_light.ogg new file mode 100644 index 0000000000..48aef9c344 Binary files /dev/null and b/Resources/Audio/Effects/cig_light.ogg differ diff --git a/Resources/Audio/Effects/cig_snuff.ogg b/Resources/Audio/Effects/cig_snuff.ogg new file mode 100644 index 0000000000..b97cd5c426 Binary files /dev/null and b/Resources/Audio/Effects/cig_snuff.ogg differ diff --git a/Resources/Audio/Items/Artifact/artifact-activation-fail1.ogg b/Resources/Audio/Items/Artifact/artifact-activation-fail1.ogg new file mode 100644 index 0000000000..fb9b7e1289 Binary files /dev/null and b/Resources/Audio/Items/Artifact/artifact-activation-fail1.ogg differ diff --git a/Resources/Audio/Items/Artifact/artifact-force-activated1.ogg b/Resources/Audio/Items/Artifact/artifact-force-activated1.ogg new file mode 100644 index 0000000000..9ad8cb1659 Binary files /dev/null and b/Resources/Audio/Items/Artifact/artifact-force-activated1.ogg differ diff --git a/Resources/Audio/Items/Artifact/attributions.yml b/Resources/Audio/Items/Artifact/attributions.yml index ff50796dfd..a49afc5749 100644 --- a/Resources/Audio/Items/Artifact/attributions.yml +++ b/Resources/Audio/Items/Artifact/attributions.yml @@ -2,3 +2,11 @@ license: "CC-BY-4.0" copyright: "Created by Garuda1982, split into individual files and converted to OGG and Mono by EmoGarbage404 (github)" source: "https://freesound.org/people/Garuda1982/sounds/560310/" +- files: ["artifact-activation-fail1.ogg"] + license: "CC-BY-NC-3.0" + copyright: "Created by GabrieleKkj, split and converted by fildrance" + source: "https://freesound.org/people/GabrieleKkj/sounds/264370/" +- files: ["artifact-force-activated1.ogg"] + license: "CC0-1.0" + copyright: "Created by brunoboselli, split and converted by fildrance" + source: "https://freesound.org/people/brunoboselli/sounds/457294/" diff --git a/Resources/Audio/Items/Toys/arf.ogg b/Resources/Audio/Items/Toys/arf.ogg new file mode 100644 index 0000000000..4d29017a10 Binary files /dev/null and b/Resources/Audio/Items/Toys/arf.ogg differ diff --git a/Resources/Audio/Items/Toys/attributions.yml b/Resources/Audio/Items/Toys/attributions.yml index cd767ff3d6..2dd0ce9ede 100644 --- a/Resources/Audio/Items/Toys/attributions.yml +++ b/Resources/Audio/Items/Toys/attributions.yml @@ -92,3 +92,8 @@ license: "CC0-1.0" copyright: "Created by xprospero for ss14" source: "https://github.com/space-wizards/space-station-14/blob/master/Resources/Audio/Items/Toys/rubber_chicken_3.ogg" + +- files: ["arf.ogg"] + license: "CC0-1.0" + copyright: "Created by Orsoniks, from the game Casualties Unknown" + source: "https://orsonik.itch.io/scav-prototype" diff --git a/Resources/Audio/_CP14/Ambience/attributions.yml b/Resources/Audio/_CP14/Ambience/attributions.yml index 9f10b2d1c8..9ac94c838c 100644 --- a/Resources/Audio/_CP14/Ambience/attributions.yml +++ b/Resources/Audio/_CP14/Ambience/attributions.yml @@ -23,6 +23,11 @@ copyright: 'by be-steele of Freesound.org.' source: "https://freesound.org/people/be-steele/sounds/130753/" +- files: ["blood_moon_raise.ogg"] + license: "CC-BY-4.0" + copyright: 'by xkeril of Freesound.org.' + source: "https://freesound.org/people/xkeril/sounds/639585/" + - files: ["ambimagic1.ogg", "ambimagic2.ogg", "ambimagic3.ogg", "ambimagic4.ogg"] license: "CC-BY-4.0" copyright: 'by EminYILDIRIM of Freesound.org.' @@ -31,9 +36,4 @@ - files: ["ambimagic5.ogg", "ambimagic6.ogg"] license: "CC0-1.0" copyright: 'by xkeril of Freesound.org.' - source: "https://freesound.org/people/xkeril/sounds/706092/" - -- files: ["event_boom.ogg"] - license: "CC-BY-4.0" - copyright: 'by juskiddink of Freesound.org.' - source: "https://freesound.org/people/juskiddink/sounds/130890/" \ No newline at end of file + source: "https://freesound.org/people/xkeril/sounds/706092/" \ No newline at end of file diff --git a/Resources/Audio/_CP14/Ambience/blood_moon_raise.ogg b/Resources/Audio/_CP14/Ambience/blood_moon_raise.ogg new file mode 100644 index 0000000000..88ff92a235 Binary files /dev/null and b/Resources/Audio/_CP14/Ambience/blood_moon_raise.ogg differ diff --git a/Resources/Audio/_CP14/Announce/attributions.yml b/Resources/Audio/_CP14/Announce/attributions.yml new file mode 100644 index 0000000000..c76701945d --- /dev/null +++ b/Resources/Audio/_CP14/Announce/attributions.yml @@ -0,0 +1,9 @@ +- files: ["event_boom.ogg"] + license: "CC-BY-4.0" + copyright: 'by juskiddink of Freesound.org.' + source: "https://freesound.org/people/juskiddink/sounds/130890/" + +- files: ["darkness_boom.ogg", "darkness_boom_2.ogg"] + license: "CC-BY-4.0" + copyright: 'by Uzbazur of Freesound.org.' + source: "https://freesound.org/people/Uzbazur/sounds/442241/" \ No newline at end of file diff --git a/Resources/Audio/_CP14/Announce/darkness_boom.ogg b/Resources/Audio/_CP14/Announce/darkness_boom.ogg new file mode 100644 index 0000000000..829878a365 Binary files /dev/null and b/Resources/Audio/_CP14/Announce/darkness_boom.ogg differ diff --git a/Resources/Audio/_CP14/Announce/darkness_boom_2.ogg b/Resources/Audio/_CP14/Announce/darkness_boom_2.ogg new file mode 100644 index 0000000000..b48aad10b0 Binary files /dev/null and b/Resources/Audio/_CP14/Announce/darkness_boom_2.ogg differ diff --git a/Resources/Audio/_CP14/Ambience/event_boom.ogg b/Resources/Audio/_CP14/Announce/event_boom.ogg similarity index 100% rename from Resources/Audio/_CP14/Ambience/event_boom.ogg rename to Resources/Audio/_CP14/Announce/event_boom.ogg diff --git a/Resources/Audio/_CP14/Misc/attributions.yml b/Resources/Audio/_CP14/Misc/attributions.yml new file mode 100644 index 0000000000..72c34db847 --- /dev/null +++ b/Resources/Audio/_CP14/Misc/attributions.yml @@ -0,0 +1,16 @@ +# Attempted to keep the files in alphabetical order so its easier to audit. +# Finding individual authors is an unfeasible task. If you can reference the author please do so. +- files: ["safe-alert.ogg"] + license: "CC-BY-4.0" + copyright: "Created by kevp888" + source: "https://freesound.org/s/688445" + +- files: ["minor-alert.ogg"] + license: "CC0-1.0" + copyright: "Created by Horrormarkus" + source: "https://freesound.org/s/659672" + +- files: ["major-alert.ogg"] + license: "CC0-1.0" + copyright: "Created by Aeonomi" + source: "https://freesound.org/s/180329" diff --git a/Resources/Audio/_CP14/Misc/major-alert.ogg b/Resources/Audio/_CP14/Misc/major-alert.ogg new file mode 100644 index 0000000000..5caf3bdb7b Binary files /dev/null and b/Resources/Audio/_CP14/Misc/major-alert.ogg differ diff --git a/Resources/Audio/_CP14/Misc/minor-alert.ogg b/Resources/Audio/_CP14/Misc/minor-alert.ogg new file mode 100644 index 0000000000..2881b3d1ae Binary files /dev/null and b/Resources/Audio/_CP14/Misc/minor-alert.ogg differ diff --git a/Resources/Audio/_CP14/Misc/safe-alert.ogg b/Resources/Audio/_CP14/Misc/safe-alert.ogg new file mode 100644 index 0000000000..575b2331d4 Binary files /dev/null and b/Resources/Audio/_CP14/Misc/safe-alert.ogg differ diff --git a/Resources/Changelog/Admin.yml b/Resources/Changelog/Admin.yml index d6c48b8fc0..3eaf627d38 100644 --- a/Resources/Changelog/Admin.yml +++ b/Resources/Changelog/Admin.yml @@ -999,5 +999,113 @@ Entries: id: 121 time: '2025-04-08T14:54:14.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/36396 +- author: Errant + changes: + - message: The Copy button on the PlayerPanel now copies only the target username, + not the entire line. + type: Fix + id: 122 + time: '2025-04-11T21:04:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36468 +- author: slarticodefast + changes: + - message: Added debug verb for quickly inspecting someone's mind entity in VV. + type: Add + id: 123 + time: '2025-04-12T13:37:07.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36474 +- author: Errant + changes: + - message: Player Panel now has a Follow button. + type: Add + id: 124 + time: '2025-04-12T20:00:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36466 +- author: slarticodefast + changes: + - message: Fixed the inspect mind command not working for other players. + type: Fix + id: 125 + time: '2025-04-14T14:45:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36558 +- author: eoineoineoin + changes: + - message: '"chatwindow" command has been added to open an additional chat window' + type: Add + - message: '"achatwindow" command has been added to open an additional chat window, + preconfigured for monitoring admin channels' + type: Add + id: 126 + time: '2025-04-14T15:37:59.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33548 +- author: Samuka + changes: + - message: Added a Bluespace Instant Effect to the spawn menu + type: Add + id: 127 + time: '2025-04-16T02:26:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36607 +- author: Errant + changes: + - message: Mind Roles now have subtypes, which can more specifically indicate what + role they are. For example, depending on clientside settings a Traitor can either + show as "SOLO ANTAGONIST" or "TRAITOR" on both the admin overlay and playerlist. + See Admin Options for the available settings. (Note, many minor roles don't + ((currently)) have a subtype configured, and will default to showing their role + type instead) + type: Tweak + id: 128 + time: '2025-04-16T17:04:48.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35359 +- author: Errant + changes: + - message: Antag tags on admin notices now show exactly what kind of antag that + mob is. + type: Tweak + id: 129 + time: '2025-04-16T22:59:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36640 +- author: IProduceWidgets + changes: + - message: stationevent toolshed commands should now work again to provide event + statistics. + type: Fix + id: 130 + time: '2025-04-18T07:44:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32200 +- author: Errant + changes: + - message: The setgamepreset command no longer changes the preset permanently. When + used with only one parameter (for the preset to be used), it will make that + change for the next round that starts. The optional second parameter can specify + the number of upcoming rounds that will use the specified preset. If you want + to change the game preset permanently, set an arbitrarily high number as the + second parameter, or preferably just modify the game.defaultpreset cvar + type: Tweak + id: 131 + time: '2025-04-18T12:24:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/30812 +- author: Tayrtahn + changes: + - message: Added MarkerOne, MarkerTwo, and MarkerThree components for testing and + tracking purposes. + type: Add + id: 132 + time: '2025-04-20T19:08:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36776 +- author: sowelipililimute + changes: + - message: The Funding Allocation Computer now has a CVar to enable configuring + the primary cut (off by default) + type: Add + - message: The Funding Allocation Computer now has a CVar to enable configuring + the lockbox cut (on by default) + type: Add + - message: The Funding Allocation Computer now has a CVar to enable hiding the primary + account from the funding splits (on by default) + type: Add + id: 133 + time: '2025-04-22T12:34:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36790 Name: Admin Order: 1 diff --git a/Resources/Changelog/Changelog.yml b/Resources/Changelog/Changelog.yml index 8c3f1efb60..d82b8aa6e7 100644 --- a/Resources/Changelog/Changelog.yml +++ b/Resources/Changelog/Changelog.yml @@ -1,1428 +1,4 @@ Entries: -- author: deltanedas - changes: - - message: Fixed expeditions on cave planets not having any ore. - type: Fix - id: 7649 - time: '2024-11-24T08:49:31.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32890 -- author: slarticodefast - changes: - - message: Fixed doors not auto-closing correctly after being unbolted in an open - state. - type: Fix - id: 7650 - time: '2024-11-25T04:26:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33524 -- author: Schrodinger71 - changes: - - message: Fixed a bug letting players type "ghost" in the console and then see - the whole chat while being in the lobby. - type: Fix - id: 7651 - time: '2024-11-25T07:20:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33529 -- author: Minemoder - changes: - - message: The shark plushie now goes rawr when hitting something or being thrown. - type: Tweak - id: 7652 - time: '2024-11-25T12:23:57.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33540 -- author: red15 - changes: - - message: Vending machine lights turns off when broken. - type: Fix - id: 7653 - time: '2024-11-25T12:35:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33513 -- author: metalgearsloth - changes: - - message: Adjusted the top menu on the separated game screen. The buttons will - now form multiple rows and no longer overflow into the viewport. - type: Tweak - id: 7654 - time: '2024-11-26T00:59:35.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33047 -- author: slarticodefast - changes: - - message: Added the greytide virus station event. It will bolt open all doors in - a few randomly chosen departments and unlock lockers with the corresponding - access. - type: Add - id: 7655 - time: '2024-11-26T13:50:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33547 -- author: slarticodefast - changes: - - message: Fixed space ambient music not playing. - type: Fix - id: 7656 - time: '2024-11-27T05:32:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33594 -- author: slarticodefast - changes: - - message: Fixed windoors and high security doors not showing up on the AI's electrocution - HUD. - type: Fix - id: 7657 - time: '2024-11-27T05:55:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33551 -- author: Beck Thompson - changes: - - message: Handheld light verbs are now predicted! - type: Fix - id: 7658 - time: '2024-11-28T13:41:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33622 -- author: arimah - changes: - - message: GPS coordinates are now more readable. - type: Tweak - id: 7659 - time: '2024-11-29T08:14:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33625 -- author: DrSmugleaf - changes: - - message: Added admin log for ghost warping. - type: Add - id: 7660 - time: '2024-11-29T09:46:24.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33636 -- author: MossyGreySlope - changes: - - message: Rename the "slimeperson life support crate" to "internals crate (nitrogen)". - type: Tweak - id: 7661 - time: '2024-11-29T12:51:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33545 -- author: GansuLalan - changes: - - message: The arrival shuttle will no longer smash the nuke - type: Fix - id: 7662 - time: '2024-11-30T02:48:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33659 -- author: VlaDOS1408 - changes: - - message: Locale to shuttle-ftl-status-Invalid - type: Add - id: 7663 - time: '2024-11-30T02:54:37.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33651 -- author: jbox144 - changes: - - message: Fixed the link on Marathon's TEG exterior airlock - type: Fix - - message: Fixed Cog's exterior atmospherics airlock - type: Fix - id: 7664 - time: '2024-11-30T06:23:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33621 -- author: Plykiya - changes: - - message: You can no longer cuff someone multiple times if multiple cuff do-afters - are completed at the exact same time. - type: Fix - id: 7665 - time: '2024-11-30T15:58:56.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33646 -- author: Plykiya - changes: - - message: You can now inspect the entity in your hand instead of the entity that - happened to be underneath your hand. - type: Fix - id: 7666 - time: '2024-11-30T16:14:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33642 -- author: Plykiya - changes: - - message: You can now inspect entities in the stripping window instead of the entity - that happened to be underneath the window. - type: Fix - id: 7667 - time: '2024-11-30T16:23:27.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33644 -- author: Winkarst-cpu - changes: - - message: Now borgs get names on roundstart. - type: Fix - id: 7668 - time: '2024-11-30T17:25:09.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33578 -- author: thetolbean - changes: - - message: The double-bladed esword now can only be activated when wielded. - type: Tweak - id: 7669 - time: '2024-11-30T19:31:40.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32869 -- author: IProduceWidgets - changes: - - message: Reindeer. - type: Add - - message: the legally distinct cookie monster. - type: Add - - message: cargo order for holiday light tubes. - type: Add - id: 7670 - time: '2024-12-01T06:30:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33364 -- author: MilenVolf - changes: - - message: Mouses, mothroaches, cockroaches and etc can be picked up once again. - type: Fix - id: 7671 - time: '2024-12-01T22:09:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33602 -- author: JIPDawg - changes: - - message: Some Antag ghost roles now show their correct rules. - type: Fix - id: 7672 - time: '2024-12-02T19:43:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32457 -- author: Southbridge, Flipsie27 - changes: - - message: 'Added a new low-mid pop map: Amber Station' - type: Add - id: 7673 - time: '2024-12-03T02:24:38.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33441 -- author: CheddaCheez - changes: - - message: Added recipes for Nachos, Cheesy Nachos, and Cuban Nachos. - type: Add - id: 7674 - time: '2024-12-03T02:59:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33637 -- author: notafet - changes: - - message: Fix sinks and toilets not draining. - type: Fix - id: 7675 - time: '2024-12-04T02:42:16.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33691 -- author: PJB3005 - changes: - - message: Fixed broken layout on some wire hacking UIs. - type: Fix - id: 7676 - time: '2024-12-04T10:13:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33714 -- author: keronshb - changes: - - message: Adds Wand of the Locker - a wand that shoots out cursed lockers, that - will store anyone they touch! - type: Add - id: 7677 - time: '2024-12-04T16:49:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33710 -- author: PJB3005 - changes: - - message: Vox now have natural poison regeneration, allowing them to go for ~30 - seconds in oxygen and heal the damage away. - type: Tweak - id: 7678 - time: '2024-12-05T21:17:27.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33722 -- author: IProduceWidgets - changes: - - message: N2 survival boxes now show the right tank icon. - type: Tweak - id: 7679 - time: '2024-12-05T21:39:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33733 -- author: IProduceWidgets - changes: - - message: StationEvents with very low weights will now actually appear. - type: Fix - id: 7680 - time: '2024-12-06T04:52:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33584 -- author: Winkarst-cpu - changes: - - message: Bar signs now have a maintenance panel and AI can interact with them. - type: Add - id: 7681 - time: '2024-12-06T05:27:53.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33467 -- author: ScarKy0, GoldenCan - changes: - - message: The Derelict Cyborg - a broken cyborg with altered laws due to years - of exposure to ion storms - can now appear as a ghost role through a new midround - event. - type: Add - id: 7682 - time: '2024-12-06T06:22:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33433 -- author: TheShuEd - changes: - - message: Fixed debris chunks loot spawning - type: Fix - id: 7683 - time: '2024-12-06T10:15:23.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33747 -- author: metalgearsloth - changes: - - message: Fix gas pumps being capped to atmos max pressure and not their own max - pressure. - type: Fix - - message: Predict gas pump UI and you no longer need to be in details range to - examine it. - type: Tweak - id: 7684 - time: '2024-12-07T03:39:52.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33717 -- author: mrjajkes, Piras314 - changes: - - message: Added Nukemass by mrjajkes to the nuke songs for christmas! - type: Add - id: 7685 - time: '2024-12-07T05:58:23.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33752 -- author: PJB3005 - changes: - - message: Silicons now have a proper preview in the lobby/character editor. - type: Tweak - id: 7686 - time: '2024-12-08T01:46:41.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33763 -- author: PJB3005 - changes: - - message: You can now use Interact (E by default) to toggle radiation collectors, - field generators, and emitters. Previously you had to click with an empty hand. - type: Fix - id: 7687 - time: '2024-12-08T22:37:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33762 -- author: ArtisticRoomba - changes: - - message: Detectives are now required to start with outer clothing (armor) like - all other security roles. - type: Tweak - - message: Vox Detectives now spawn with their chosen outer clothing equipped. Previously - the tank harness would override this and your armor would start on the floor. - type: Fix - id: 7688 - time: '2024-12-08T22:50:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33765 -- author: slarticodefast - changes: - - message: Fixed pipes still containing gas after unanchoring them. - type: Fix - id: 7689 - time: '2024-12-08T23:20:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33774 -- author: Errant - changes: - - message: Signal timers now have a maximum countdown duration, which can be specified - in yaml. The default maximum is one hour, to prevent the displayed time from - overflowing into hh:mm . - type: Tweak - id: 7690 - time: '2024-12-09T03:41:11.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33781 -- author: Plykiya - changes: - - message: You are now notified of who is pulling you when being pulled. - type: Add - id: 7691 - time: '2024-12-09T03:51:53.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33612 -- author: Bhijn and Myr - changes: - - message: The Admin Message system now contains an introductory message as the - very first message shown to a user, before any messages are written or received. - This message serves primarily to remind ahelping players (whom are likely to - be experiencing strong emotion) to remember that admins are humans, too. - type: Add - id: 7692 - time: '2024-12-09T08:54:23.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33348 -- author: ScarKy0 - changes: - - message: You can now pet the AI Core. - type: Add - id: 7693 - time: '2024-12-09T16:10:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33788 -- author: joshepvodka - changes: - - message: Added flavor profiles to beverages that missed them. - type: Add - - message: Tweaked some drink flavor profiles. - type: Tweak - - message: Soda/Booze dispenser will now always eject the shaker/glass before any - bottle or jug. - type: Tweak - id: 7694 - time: '2024-12-09T17:12:57.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33505 -- author: ArtisticRoomba - changes: - - message: SMES now gives visual feedback for if the maintenance panel is open. - type: Fix - id: 7695 - time: '2024-12-10T10:00:18.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33808 -- author: metalgearsloth - changes: - - message: Fix blank newlines on examine tooltips (e.g. tables). - type: Fix - id: 7696 - time: '2024-12-10T13:45:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33813 -- author: slarticodefast - changes: - - message: Fixed the greytide virus event affecting non-station maps. - type: Fix - id: 7697 - time: '2024-12-11T14:30:29.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33806 -- author: metalgearsloth - changes: - - message: Fix battery self-recharging items like the antique laser gun from mispredicting. - type: Fix - id: 7698 - time: '2024-12-11T15:58:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33384 -- author: BramvanZijp - changes: - - message: The Head of Security's Energy Shotgun has regained its ability to self - recharge, but only if the weapon has not been discharged in the last 10 seconds. - type: Add - - message: The Head of Security's Energy Shotgun now has a varying amount of shots - depending on the firing mode. - type: Tweak - - message: Energy based weapons with differing energy consumption depending on the - fire-mode will now update the ammo counter on the HUD when switching between - fire-modes. - type: Fix - id: 7699 - time: '2024-12-11T16:21:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32104 -- author: Winkarst-cpu - changes: - - message: The A.P.E. guidebook entry now contains information about Sigma particles - and transformation effects. - type: Tweak - id: 7700 - time: '2024-12-12T14:24:35.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33558 -- author: lzk228 - changes: - - message: Disabled evac after declaring nuke war is increased from 15 to 25 minutes. - type: Tweak - id: 7701 - time: '2024-12-13T03:10:21.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33628 -- author: LevitatingTree - changes: - - message: Lizards can now eat the Five Alarm Burger! - type: Fix - id: 7702 - time: '2024-12-13T13:53:56.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33848 -- author: Southbridge - changes: - - message: Paper documents now support the [mono] tag. - type: Add - id: 7703 - time: '2024-12-13T14:24:35.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33830 -- author: yuitop - changes: - - message: Anchoring now has higher priority over stashing. - type: Tweak - id: 7704 - time: '2024-12-13T23:00:46.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31779 -- author: Nimfar11 - changes: - - message: Changes the colour of the Borg binary channel to a different shade of - blue. - type: Tweak - id: 7705 - time: '2024-12-14T16:03:18.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33841 -- author: Litraxx - changes: - - message: Renamed the Dungeon Master lawset to Game Master lawset - type: Fix - id: 7706 - time: '2024-12-16T11:52:03.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33678 -- author: psykana - changes: - - message: Zombies can now see initial infected - type: Add - id: 7707 - time: '2024-12-16T11:53:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33665 -- author: Plykiya - changes: - - message: Bombs like stingers and clustergrenades now trigger when destroyed due - to damage. - type: Fix - id: 7708 - time: '2024-12-16T12:08:08.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31108 -- author: Beck Thompson - changes: - - message: Added some new scrap that contains uranium and plasma that can be found - when salvaging! - type: Add - id: 7709 - time: '2024-12-16T12:33:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32198 -- author: Sirionaut, SpaceBaa - changes: - - message: Animals no longer consume nutrients when their udder/woolcoat is full. - type: Fix - - message: Entities with udders display a rough hunger level when examined. - type: Add - id: 7710 - time: '2024-12-16T12:53:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32905 -- author: thetolbean - changes: - - message: Teleporting or dashing now causes you to stop pulling objects. - type: Tweak - id: 7711 - time: '2024-12-16T14:09:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33252 -- author: KieueCaprie - changes: - - message: The lizard plushie will now be visible when held in your hands! - type: Add - id: 7712 - time: '2024-12-16T14:14:51.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32583 -- author: Bhijn and Myr - changes: - - message: Admins no longer count towards the playercount cap, meaning you no longer - need to wait for multiple people to leave in order to join after an admin has - joined. - type: Tweak - id: 7713 - time: '2024-12-16T14:19:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33424 -- author: dragonryan06 - changes: - - message: 'New cocktail: the Zombie.' - type: Add - id: 7714 - time: '2024-12-16T15:25:06.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32802 -- author: SlamBamActionman - changes: - - message: Added Holy damage to the Chaplain's bible, holy water and the gohei, - which can be exclusively dealt to spirits. - type: Add - id: 7715 - time: '2024-12-16T15:33:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32755 -- author: Vexerot - changes: - - message: Security Belts and Security Carriers now provide 10% reduced explosion - damage to contents. - type: Tweak - id: 7716 - time: '2024-12-16T16:27:40.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33253 -- author: goet - changes: - - message: Spaceshrooms can now be cooked on the electric grill. - type: Tweak - id: 7717 - time: '2024-12-16T17:53:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31872 -- author: Beck Thompson - changes: - - message: Figures can now be activated with signals! - type: Add - id: 7718 - time: '2024-12-16T18:52:09.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32769 -- author: TheShuEd - changes: - - message: Christmas anomaly added - type: Add - - message: Christmas anomaly infection added - type: Add - id: 7719 - time: '2024-12-16T19:23:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33889 -- author: chromiumboy - changes: - - message: Added the atmospheric network monitor. Use these consoles to monitor - the network of pipes that supply the crew with a breathable atmosphere - type: Add - id: 7720 - time: '2024-12-17T03:53:17.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32294 -- author: TheShuEd - changes: - - message: Added new map Gate - type: Add - id: 7721 - time: '2024-12-17T10:06:33.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32032 -- author: pcaessayrs - changes: - - message: Anomaly hosts keep their anomaly when turning into a zombie. - type: Tweak - id: 7722 - time: '2024-12-17T11:56:47.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33867 -- author: TiniestShark - changes: - - message: Adds in-hand sprites to the Anomaly Scanner. - type: Add - id: 7723 - time: '2024-12-17T13:35:29.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33427 -- author: chromiumboy - changes: - - message: Holopads are now available, allowing you to communicate holographically - with the rest of the crew - type: Add - id: 7724 - time: '2024-12-17T19:18:15.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32711 -- author: Golinth - changes: - - message: AMEs larger than 2 cores now produce more power, instead of less. - type: Tweak - id: 7725 - time: '2024-12-17T23:56:03.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32825 -- author: ArtisticRoomba, AugustSun - changes: - - message: New Advanced SMES, an SMES with a 16 MJ capacity. It can be researched - at Industrial T2, Advanced Powercells. - type: Add - id: 7726 - time: '2024-12-17T23:58:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33757 -- author: Allen, lzk228 - changes: - - message: Made Gun Safes a craftable object (10 steel, 5 lv cable, 10 plasteel) - type: Add - id: 7727 - time: '2024-12-18T11:26:19.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32694 -- author: MilenVolf - changes: - - message: Clicking on a buckled mob now unbuckles it, rather than hugging/petting - it. - type: Fix - id: 7728 - time: '2024-12-18T14:26:58.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33635 -- author: SlamBamActionman - changes: - - message: Slimes no longer deal Cellular damage. - type: Tweak - id: 7729 - time: '2024-12-18T15:05:16.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33104 -- author: Redbookcase - changes: - - message: Standardized Mercenary gear's contraband status. - type: Tweak - id: 7730 - time: '2024-12-18T15:13:40.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33647 -- author: ArtisticRoomba - changes: - - message: New plushie, named "drazil plushie". Based on an inverted lizard plushie. - It can be rarely found in maints lockers. Hew! - type: Add - - message: New reagent, Juice that makes you Hew. It can be made from juicing inverted - lizard plushies. Hew! - type: Add - id: 7731 - time: '2024-12-18T16:31:56.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33776 -- author: FairlySadPanda August-Sun Eric156 - changes: - - message: Smite Cranberry is now available wherever lemon-lime soda is sold, just - for the holidays. This includes a certain jolly anomaly. - type: Add - id: 7732 - time: '2024-12-19T00:11:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33922 -- author: Crotalus, ArtisticRoomba - changes: - - message: Battery levels of applicable devices are now shown in the Power Monitoring - Console! - type: Add - id: 7733 - time: '2024-12-19T00:46:36.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33854 -- author: TytosB - changes: - - message: 'added new mid pop map: loop' - type: Add - id: 7734 - time: '2024-12-19T09:38:23.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33697 -- author: Centronias - changes: - - message: Fixed a bug where the B input on logic gates would get stuck in a high - state - type: Fix - id: 7735 - time: '2024-12-19T11:31:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33792 -- author: Plykiya - changes: - - message: Cargo armor crate now correctly indicates that it contains bulletproof - vests. - type: Fix - id: 7736 - time: '2024-12-19T17:21:28.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33414 -- author: Piras314 - changes: - - message: Removed the nuke song "Clearly Nuclear" on request of the author. - type: Remove - id: 7737 - time: '2024-12-20T14:35:55.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33971 -- author: VlaDOS1408 - changes: - - message: The Communication Console UI is now resizable. - type: Fix - id: 7738 - time: '2024-12-20T16:17:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33655 -- author: RatIRL - changes: - - message: Added All-Hostile ballistic turret. - type: Add - id: 7739 - time: '2024-12-20T20:34:53.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33970 -- author: Beck Thompson - changes: - - message: Defibrillator cooldowns are now clearly visible. - type: Tweak - id: 7740 - time: '2024-12-20T21:26:56.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/31251 -- author: J C Denton - changes: - - message: Syndicate and NanoTrasen NPCs and turrets are now hostile to Dragons - and Carps - type: Tweak - id: 7741 - time: '2024-12-20T21:38:27.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32515 -- author: lzk228 - changes: - - message: Item's tool function now shows on examine. - type: Add - id: 7742 - time: '2024-12-20T22:15:40.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32436 -- author: Pinkbat5 - changes: - - message: Diona can now chirp. - type: Add - - message: Nymphs can scream and laugh like adult diona. - type: Add - id: 7743 - time: '2024-12-20T22:34:44.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32511 -- author: ScarKy0 - changes: - - message: Syndicate uplinks now have 6 discounts instead of 3. - type: Tweak - id: 7744 - time: '2024-12-21T02:14:08.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33950 -- author: JustinWinningham - changes: - - message: Wood walls no longer require girders and are built from barricades instead. - type: Tweak - id: 7745 - time: '2024-12-21T03:28:46.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33902 -- author: ElectroJr - changes: - - message: Toolshed console commands have been reworked. Some old commands may no - longer work. - type: Tweak - id: 7746 - time: '2024-12-21T06:45:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33598 -- author: muburu - changes: - - message: Space Ninjas now have silent footsteps. - type: Tweak - id: 7747 - time: '2024-12-23T14:24:10.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33280 -- author: amatwiedle - changes: - - message: Borgs can no longer drink from tools provided by modules. - type: Fix - id: 7748 - time: '2024-12-23T19:54:18.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32964 -- author: Booblesnoot42 - changes: - - message: On Cog, an unnecessary protolathe was removed from cargo. - type: Remove - id: 7749 - time: '2024-12-23T23:24:47.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34026 -- author: Booblesnoot42 - changes: - - message: On Amber, an unnecessary protolathe was removed from cargo. - type: Remove - id: 7750 - time: '2024-12-23T23:24:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34027 -- author: TheShuEd - changes: - - message: You can now select candles in trinkets loadout - type: Add - id: 7751 - time: '2024-12-24T00:24:19.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33193 -- author: lzk228 - changes: - - message: Now you are allowed to paint multiple airlocks with the spray painter. - Along with that you can cancel the doafter by clicking on the door you are painting. - type: Tweak - id: 7752 - time: '2024-12-24T02:25:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34001 -- author: ArtisticRoomba - changes: - - message: Reinforced tables now require welding to construct and deconstruct. - type: Tweak - id: 7753 - time: '2024-12-26T22:47:23.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33992 -- author: crazybrain - changes: - - message: Bluespace lockers and quantum spin inverters can no longer go on the - arrivals shuttle. - type: Tweak - id: 7754 - time: '2024-12-27T12:34:31.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34072 -- author: Plykiya - changes: - - message: You now see a popup when being cuffed or uncuffed again. - type: Fix - id: 7755 - time: '2024-12-27T13:34:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33639 -- author: Alpaccalypse - changes: - - message: Power monitoring computer boards can no longer be researched or printed, - as originally intended. - type: Remove - id: 7756 - time: '2024-12-28T10:13:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34078 -- author: psykana - changes: - - message: Traitor can no longer get multiple objectives to save/help/kill the same - person - type: Fix - id: 7757 - time: '2024-12-28T14:49:03.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33704 -- author: chromiumboy - changes: - - message: The holoapd UI has been updated to include a text-based filter for the - contacts list, and also to specify the name of the holopad that incoming calls - originate from - type: Tweak - id: 7758 - time: '2024-12-28T23:33:16.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34055 -- author: zHonys - changes: - - message: Smile can now use hats - type: Add - id: 7759 - time: '2024-12-29T01:49:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33924 -- author: ewokswagger - changes: - - message: Pizza deliveries are now guaranteed to have at least one cotton pizza. - type: Tweak - id: 7760 - time: '2024-12-29T01:50:49.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33997 -- author: ArtisticRoomba, JuneSzalkowska - changes: - - message: New cotton dough slices and cotton dough rolls. - type: Add - - message: New cotton baguette, cotton crostini, cotton chevre-chaud, cotton bagel, - and cotton croissant recipes. You can make them by following the recipes for - regular baguettes, bagels, etc, but use cotton dough instead. - type: Add - - message: Slicing dough into thirds now divides the nutriment value into thirds. - Previously you could slice dough to triple your nutriment. - type: Fix - id: 7761 - time: '2024-12-29T02:02:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33508 -- author: Velcroboy - changes: - - message: Rolling joints no longer requires a cigarette filter. - type: Tweak - id: 7762 - time: '2024-12-29T03:25:40.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34106 -- author: DreamlyJack - changes: - - message: Added Hair Pulato - type: Add - id: 7763 - time: '2024-12-31T10:29:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34117 -- author: chromiumboy - changes: - - message: Chat messages from holopads during emergency broadcasts will no longer - be logged in the chat window to prevent message spam. This is a temporary change - until a proper fix can be made to the chat system - type: Tweak - id: 7764 - time: '2024-12-31T10:52:08.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34114 -- author: PopGamer46 - changes: - - message: Fixed borgs not being able to check their laws in crit - type: Fix - id: 7765 - time: '2024-12-31T11:10:46.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34133 -- author: amatwiedle - changes: - - message: The A/V Communication technology now unlocks holopad circuit boards. - type: Add - id: 7766 - time: '2024-12-31T13:20:07.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34150 -- author: justdie12 - changes: - - message: Flipped signal disposal routers sprite - type: Fix - id: 7767 - time: '2024-12-31T13:25:06.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34139 -- author: ArtisticRoomba - changes: - - message: Shotgun crate now comes with 4 lethal shell boxes. - type: Tweak - - message: Enforcer gun safe now comes with 4 lethal shell boxes. - type: Tweak - - message: Kammerer gun safe now comes with 2 lethal shell boxes. - type: Tweak - id: 7768 - time: '2024-12-31T23:08:26.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34156 -- author: Booblesnoot42 - changes: - - message: Tarantulas spawned in vents will now be hostile to the crew. - type: Fix - id: 7769 - time: '2025-01-01T16:18:52.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34153 -- author: Booblesnoot42 - changes: - - message: The RCD no longer has a cooldown when opened or closed. - type: Fix - id: 7770 - time: '2025-01-01T16:19:30.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34149 -- author: lzk228 - changes: - - message: Decreased HP for rusted wall variants - type: Tweak - id: 7771 - time: '2025-01-01T16:23:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34043 -- author: ReeZii - changes: - - message: Fixed thief beacon, which can doubled steal target's - type: Fix - id: 7772 - time: '2025-01-01T16:25:48.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33750 -- author: Errant - changes: - - message: Removed seasonal nuke song "Nukemass". - type: Remove - id: 7773 - time: '2025-01-01T16:27:50.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34066 -- author: Alpaccalypse - changes: - - message: '"Irish Car Bomb" renamed to "Irish Slammer".' - type: Tweak - id: 7774 - time: '2025-01-02T09:46:30.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34107 -- author: DylanWhittingham - changes: - - message: Added appraisal tool sound. - type: Add - id: 7775 - time: '2025-01-02T16:46:13.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34119 -- author: ps3moira - changes: - - message: Changed tables and counter iconsmoothing - type: Tweak - id: 7776 - time: '2025-01-02T16:49:30.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32673 -- author: SlamBamActionman - changes: - - message: Added Chameleon PDA, found in the Thief & Uplink Chameleon Kit! - type: Add - - message: The PDA "owner" field now updates upon having a new ID inserted. - type: Tweak - id: 7777 - time: '2025-01-02T18:23:29.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/30514 -- author: FairlySadPanda - changes: - - message: Added a few new actions that a scrambled borg can encounter via an ion - storm. - type: Add - id: 7778 - time: '2025-01-02T18:55:57.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34180 -- author: Deerstop - changes: - - message: Map rotation now includes Elkridge Depot - type: Tweak - id: 7779 - time: '2025-01-04T00:40:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34206 -- author: themias - changes: - - message: Forensics are now applied to bullets when loading using an ammo box. - type: Fix - id: 7780 - time: '2025-01-04T13:41:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32280 -- author: deltanedas - changes: - - message: Fixed wielding use delay not working properly. - type: Fix - - message: Fixed bow sprite not updating when wielded. - type: Fix - id: 7781 - time: '2025-01-05T19:06:10.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32188 -- author: Errant - changes: - - message: Lobby chat width is no longer dependent on the server's name. - type: Tweak - - message: Lobby title of a server can now be different from the Hub listing's name. - type: Tweak - id: 7782 - time: '2025-01-05T20:56:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33783 -- author: SpaceRox1244 - changes: - - message: Station lights can now be destroyed by bullets. - type: Add - id: 7783 - time: '2025-01-05T22:11:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34070 -- author: ArtisticRoomba - changes: - - message: You can no longer get stuck when trying to walk between a station anchor - and a wall. - type: Fix - id: 7784 - time: '2025-01-06T12:32:42.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34217 -- author: ArtisticRoomba - changes: - - message: Kessler Syndrome and Zombeteors are removed from the possible gamemodes - in the Secret pool. - type: Remove - id: 7785 - time: '2025-01-07T00:18:56.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34051 -- author: Alpaccalypse - changes: - - message: Special reagents are now listed in the relevant section of the guidebook. - type: Add - id: 7786 - time: '2025-01-07T17:45:03.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34265 -- author: Tayrtahn - changes: - - message: Sentient goats now have a bleating effect when speaking. - type: Add - id: 7787 - time: '2025-01-08T01:00:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34273 -- author: southbridge-fur - changes: - - message: Warm light bulbs exist now. - type: Add - id: 7788 - time: '2025-01-09T08:54:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34324 -- author: deltanedas - changes: - - message: Fixed AIs not being able to use lockable buttons. - type: Fix - id: 7789 - time: '2025-01-09T11:23:37.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34326 -- author: Alpaccalypse - changes: - - message: The reagent "cola" has been renamed to "Space Cola". - type: Tweak - - message: The reagent "lemon-lime" has been renamed to "Smite Soda". - type: Tweak - - message: The reagent "lemon-lime-cranberry" has been renamed to "Smite Cranberry". - type: Tweak - - message: The reagent "Space Mountain Wind" has been renamed to "Space Solar Wind". - type: Tweak - - message: The reagent "Energy Drink" has been renamed to "Red Bool". - type: Tweak - id: 7790 - time: '2025-01-09T20:24:31.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34178 -- author: Errant - changes: - - message: Battery-powered weapons will no longer occasionally refuse to recharge - the last missing shot. - type: Fix - id: 7791 - time: '2025-01-10T06:54:55.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34028 -- author: Southbridge - changes: - - message: Air Alarms can now copy sensor thresholds to all attached sensors. - type: Add - id: 7792 - time: '2025-01-10T06:55:05.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34346 -- author: Coolsurf6 - changes: - - message: Made Forensic Gloves security contraband. - type: Tweak - id: 7793 - time: '2025-01-10T15:01:00.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34193 -- author: TeenSarlacc - changes: - - message: Large instruments can now be ordered through cargo. - type: Add - id: 7794 - time: '2025-01-10T15:13:23.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34240 -- author: themias - changes: - - message: Fixed crayons losing durability attempting to write on stamped paper - type: Fix - id: 7795 - time: '2025-01-10T15:37:11.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34202 -- author: Tayrtahn - changes: - - message: Arcades, vending machines and the recycler now sometimes say creepy things - when a ghost uses the "Boo!" action near them. - type: Add - id: 7796 - time: '2025-01-11T02:48:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34368 -- author: Kickguy223 - changes: - - message: Indestructible tiles no longer break due to explosions - type: Fix - id: 7797 - time: '2025-01-11T17:27:09.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34339 -- author: '0x6273' - changes: - - message: Fix a bug that was causing arachnid stomachs to not digest at the intended, - slower than normal speed. - type: Fix - id: 7798 - time: '2025-01-11T19:29:54.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34298 -- author: justdie12 - changes: - - message: Added a bend version of the radiator. - type: Add - id: 7799 - time: '2025-01-11T20:03:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34251 -- author: Errant - changes: - - message: Players are now informed in chat every time their role type changes, - and can also see their current role type on the character window. - type: Add - id: 7800 - time: '2025-01-11T21:17:26.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33420 -- author: Kontinentaldrift - changes: - - message: EOD locker always spawns with tools. - type: Tweak - id: 7801 - time: '2025-01-12T16:38:41.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34394 -- author: SlimSlam - changes: - - message: News Room - type: Add - id: 7802 - time: '2025-01-12T23:32:51.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34408 -- author: Deerstop - changes: - - message: Improved the readability of the manual valve sprite. - type: Tweak - id: 7803 - time: '2025-01-13T07:07:30.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34378 -- author: JustinWinningham - changes: - - message: Anomalies no longer block players or APES (or other objects) from passing - through them - type: Tweak - - message: Players can no longer move anomalies with unanchored furniture, closets, - etc. - type: Fix - id: 7804 - time: '2025-01-13T10:06:57.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34280 -- author: zHonys - changes: - - message: Items with collisions (like mousetraps) won't kept doors form opening - type: Fix - id: 7805 - time: '2025-01-13T10:07:18.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34045 -- author: Coolsurf6 - changes: - - message: The "Jazz" style for the Electric Guitar now uses the correct soundfont. - type: Tweak - id: 7806 - time: '2025-01-13T10:07:33.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33363 -- author: southbridge-fur - changes: - - message: The Pride-O-Mat vending machine has been ported to upstream. - type: Add - id: 7807 - time: '2025-01-13T18:49:02.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34412 -- author: Killerqu00 - changes: - - message: Pet carriers can now be crafted. - type: Add - id: 7808 - time: '2025-01-14T22:34:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34431 -- author: themias - changes: - - message: Fixed muzzles not working on some characters (e.g. dwarves) - type: Fix - id: 7809 - time: '2025-01-15T00:10:39.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34419 -- author: ArtisticRoomba - changes: - - message: The station anchor machine board can no longer be printed at the circuit - imprinter. - type: Remove - id: 7810 - time: '2025-01-15T16:26:19.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34358 -- author: ArtisticRoomba - changes: - - message: Mime PDA item interactions (insertions/ejections of IDs, pens, etc.) - are now silent. - type: Tweak - id: 7811 - time: '2025-01-15T18:03:49.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34426 -- author: Alpaccalypse - changes: - - message: Smite soda vending machines have been added to the game. - type: Add - id: 7812 - time: '2025-01-15T18:20:01.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34420 -- author: kosticia - changes: - - message: Bedsheets now can be printed on uniform printer - type: Add - id: 7813 - time: '2025-01-15T19:35:59.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34034 -- author: TheShuEd - changes: - - message: Christmas anomaly removed - type: Remove - id: 7814 - time: '2025-01-15T20:22:32.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34053 -- author: Kickguy223 - changes: - - message: Puddles will now correctly evaporate - type: Fix - id: 7815 - time: '2025-01-15T21:21:20.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34303 -- author: themias - changes: - - message: The DNA scrambler implant no longer updates your ID card or station record - type: Fix - id: 7816 - time: '2025-01-15T22:49:51.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34091 -- author: jbox144 - changes: - - message: Added Plasma Station - type: Add - id: 7817 - time: '2025-01-16T07:02:14.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33991 -- author: jbox144 - changes: - - message: Reduced Plasma's minimum population to 20, maximum population to 60 - type: Tweak - - message: Reduced Plasma's clown jobs from 2 to 1 - type: Tweak - id: 7818 - time: '2025-01-16T08:51:17.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34462 -- author: pcaessayrs - changes: - - message: Uranium, Cak, and BreadDog are no longer space garbage. - type: Fix - id: 7819 - time: '2025-01-16T11:40:22.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34192 -- author: GansuLalan - changes: - - message: Pianos will no longer push players off when climbing them - type: Fix - id: 7820 - time: '2025-01-16T12:25:08.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33690 -- author: Southbridge - changes: - - message: More Ionstorm law elements have been added - type: Add - id: 7821 - time: '2025-01-16T20:49:47.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34197 -- author: southbridge-fur - changes: - - message: Pride-O-Mats now have scarves instead of cloaks - type: Tweak - id: 7822 - time: '2025-01-17T11:35:03.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34448 -- author: Toby222 - changes: - - message: Update nix flake to use current nixpkgs release - type: Fix - id: 7823 - time: '2025-01-17T17:26:04.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34480 -- author: ArtisticRoomba, miamioni - changes: - - message: The Space Lizard plushie can now be worn on top of your head. - type: Add - id: 7824 - time: '2025-01-18T09:02:40.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33809 -- author: Spacemann - changes: - - message: Station cameras can now be destroyed by bullets. - type: Add - id: 7825 - time: '2025-01-18T13:41:29.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34500 -- author: Winkarst-cpu - changes: - - message: Some masks can now be seen when pulled down. - type: Add - id: 7826 - time: '2025-01-18T16:58:52.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33451 -- author: Minemoder - changes: - - message: The chemical locker now has a 10u vial of plasma. - type: Add - id: 7827 - time: '2025-01-18T18:27:46.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33871 -- author: Nox38 - changes: - - message: Seclites now start with a medium-capacity power cell. - type: Tweak - - message: Seclite power draw (wattage) has been reduced to 0.5. - type: Tweak - id: 7828 - time: '2025-01-18T22:56:42.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34469 -- author: K-Dynamic - changes: - - message: Empty guns have a louder dry fire sound (i.e. when the chamber or power - cell is empty). - type: Tweak - id: 7829 - time: '2025-01-19T01:46:55.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34447 -- author: WarPigeon - changes: - - message: The debriefing room in CentComm is now open to heads of staff for end - of round roleplay. - type: Tweak - id: 7830 - time: '2025-01-19T05:32:34.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/34475 -- author: Winkarst-cpu - changes: - - message: Now items from the storage implant drop on the floor upon gibbing of - the owner. - type: Tweak - id: 7831 - time: '2025-01-19T19:48:58.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33493 -- author: ArtisticRoomba - changes: - - message: Voxes can now honk, weh, and hew if forced to by a reagent. - type: Fix - - message: Arachnids and Moths can now honk if forced to by a reagent. - type: Fix - id: 7832 - time: '2025-01-20T00:21:25.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/33777 -- author: K-Dynamic - changes: - - message: Welding gas masks are now toggleable like other breathing masks. - type: Fix - id: 7833 - time: '2025-01-20T00:32:45.0000000+00:00' - url: https://github.com/space-wizards/space-station-14/pull/32691 - author: ElectroJr changes: - message: Fixed some visual overlays not being removed when the effect should stop. @@ -3890,3 +2466,1467 @@ id: 8148 time: '2025-04-10T15:59:18.0000000+00:00' url: https://github.com/space-wizards/space-station-14/pull/36273 +- author: SlamBamActionman + changes: + - message: The Syndicate Raid Bundle now comes in a Syndicate backpack instead of + duffelbag. + type: Tweak + - message: The Syndicate Raid Suit now has an inventory size of 2x2 (previously + 4x4). + type: Tweak + id: 8149 + time: '2025-04-10T22:22:17.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35890 +- author: EmoGarbage404 + changes: + - message: Grinding soda cans now gives a small amount of Aluminum. + type: Add + id: 8150 + time: '2025-04-11T00:54:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36449 +- author: RedBookcase + changes: + - message: The Kardashev-Mosin is now considered Major Contraband. + type: Tweak + id: 8151 + time: '2025-04-11T00:57:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36446 +- author: Nukesthestation + changes: + - message: Zombies /suicideing return to an ai state + type: Tweak + id: 8152 + time: '2025-04-11T01:12:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36453 +- author: YoungThugSS14 + changes: + - message: Wizards now appear roundstart in the "all at once" gamemode. + type: Tweak + id: 8153 + time: '2025-04-11T02:06:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36408 +- author: DinnerCalzone + changes: + - message: Fixed gas mixers and pneumatic valves being hidden by floor tiles. + type: Fix + id: 8154 + time: '2025-04-11T02:10:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36428 +- author: Nox38, BurgerMoth, ArtisticRoomba + changes: + - message: Added descriptions for all .25 caseless cartridges, magazines, and ammo + boxes. + type: Add + id: 8155 + time: '2025-04-11T02:15:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36385 +- author: Nox38, BurgerMoth, ArtisticRoomba + changes: + - message: Added descriptions to all .45 magnum cartridges, magazines, speed loaders, + and ammo boxes. + type: Add + id: 8156 + time: '2025-04-11T04:58:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36383 +- author: PJB3005 + changes: + - message: Lobby time on Wizard's Den has been increased from 2 minute 30 seconds + to 5 minutes. + type: Tweak + id: 8157 + time: '2025-04-12T09:05:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36476 +- author: Quantum-cross + changes: + - message: Supercrit anomaly playing explosion sound twice + type: Fix + id: 8158 + time: '2025-04-12T23:27:00.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36489 +- author: metalgearsloth + changes: + - message: Fixed docking ports being clipped in shuttle nav if using non-100% UI + scales. + type: Fix + id: 8159 + time: '2025-04-13T06:29:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36348 +- author: KingFroozy + changes: + - message: Added white shoes to paramedic's loadout. + type: Add + id: 8160 + time: '2025-04-13T10:35:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32227 +- author: EmoGarbage404 + changes: + - message: Adds departmental economy! All departments now have custom request consoles + where they can order from cargo and make money transfers. + type: Add + - message: Added lock boxes. These are access-locked crates that allow a department + to earn sole income when they are sold. Order more from cargo. + type: Add + - message: Slightly increased passive station income. + type: Tweak + id: 8161 + time: '2025-04-13T13:22:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36445 +- author: K-Dynamic + changes: + - message: Neutralised anomaly infections now drop inert cores. + type: Tweak + id: 8162 + time: '2025-04-13T14:24:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36503 +- author: ScarKy0 + changes: + - message: Oxygen, Carbon Dioxide, Nitrous Oxide and Frezon can now metabolize when + digested/injected. + type: Tweak + id: 8163 + time: '2025-04-13T15:21:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31648 +- author: ArchRBX + changes: + - message: Handheld GPS's can now be examined to read their displays + type: Add + - message: Handheld GPS's now update their displays much more frequently + type: Tweak + id: 8164 + time: '2025-04-13T15:29:13.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31814 +- author: Beck Thompson, Kaz Wooblie + changes: + - message: Computers now wont delete items inside of them when deconstructing. + type: Fix + - message: The ID card computer now throws the IDs out when deconstructed or damaged! + type: Add + id: 8165 + time: '2025-04-13T15:51:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32308 +- author: ElectroJr + changes: + - message: Fixed a bug that allowed dead or incapacitated people to potentially + interact with some UIs. + type: Fix + id: 8166 + time: '2025-04-13T16:09:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36480 +- author: K-Dynamic + changes: + - message: Stinger grenades no longer flash on detonation. + type: Tweak + id: 8167 + time: '2025-04-13T17:23:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36394 +- author: Unisol + changes: + - message: added deathmatch map DM01 Entryway + type: Add + id: 8168 + time: '2025-04-14T01:21:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31533 +- author: TeenSarlacc + changes: + - message: You can now purchase shark plushies from Cargo. + type: Add + id: 8169 + time: '2025-04-14T01:33:04.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36338 +- author: K-Dynamic + changes: + - message: Syndicate commander hardsuit now slows movement by 10%. + type: Tweak + id: 8170 + time: '2025-04-14T05:37:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35805 +- author: YoungThugSS14 + changes: + - message: Binoculars can now be worn on the neck. + type: Tweak + id: 8171 + time: '2025-04-14T06:34:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35759 +- author: K-Dynamic + changes: + - message: Drawings from blue and green crayons now match their colours. + type: Tweak + id: 8172 + time: '2025-04-14T08:58:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36532 +- author: PJB3005 + changes: + - message: Fire extinguishers can now extinguish things like candles and cigarettes. + type: Add + - message: You can even use them to extinguish items that are held/worn! + type: Add + id: 8173 + time: '2025-04-14T09:00:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36267 +- author: metalgearsloth + changes: + - message: Fix shuttle arrivals visualizer not updating with the target coordinates + updating. + type: Fix + id: 8174 + time: '2025-04-14T14:34:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35772 +- author: CheesePlated + changes: + - message: The ID card console now works properly when setting job presets for replacement + IDs + type: Fix + id: 8175 + time: '2025-04-14T15:02:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34921 +- author: BramvanZijp + changes: + - message: Deathsquad Hardsuit now provides 85% stamina damage resistance. + type: Add + id: 8176 + time: '2025-04-14T15:27:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35580 +- author: benev0 + changes: + - message: Stopped climbing movent while in containers + type: Fix + id: 8177 + time: '2025-04-14T15:56:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32033 +- author: SlamBamActionman + changes: + - message: Hyposprays now shows contained chemicals in the sprite. + type: Tweak + id: 8178 + time: '2025-04-14T15:58:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/30703 +- author: SlamBamActionman + changes: + - message: Implanters are now named after the implant they contained, even after + the implanter has been used. + type: Tweak + - message: Syndicate implanters now remind you to scrub them in the item description. + type: Add + id: 8179 + time: '2025-04-14T16:50:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36555 +- author: Golub + changes: + - message: Added the Knock spell to the wizard's grimoire + type: Add + id: 8180 + time: '2025-04-14T18:57:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36562 +- author: metalgearsloth + changes: + - message: DamagePopups such as target dummies are now predicted. + type: Fix + id: 8181 + time: '2025-04-14T19:10:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36547 +- author: SlamBamActionman + changes: + - message: Tracking implants no longer announce on radio when someone goes into + critical health. + type: Remove + id: 8182 + time: '2025-04-14T20:23:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35995 +- author: SlamBamActionman + changes: + - message: Chest rig explosive resistance is increased from 50% to 90%. + type: Tweak + id: 8183 + time: '2025-04-14T20:45:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35889 +- author: ArtisticRoomba + changes: + - message: Certain randomly filled bags will now have the correct number of contents + inside of them. + type: Fix + id: 8184 + time: '2025-04-14T21:02:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36155 +- author: Will-Oliver-Br + changes: + - message: Now you can see if there's a beaker in the chemmaster. + type: Tweak + id: 8185 + time: '2025-04-14T23:27:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36472 +- author: EmoGarbage404, Fildrance + changes: + - message: new ui for analysis console, new ui for node scanner. Artifact node activation + is now different. + type: Add + - message: artifacts cannot create massive distruction events, become guns or music + instruments. Sentient artifacts cannot activate nodes. + type: Remove + id: 8186 + time: '2025-04-15T00:34:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33370 +- author: EmoGarbage404 + changes: + - message: Skeletons once again become living skulls on death. + type: Fix + id: 8187 + time: '2025-04-15T03:38:31.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36571 +- author: Crazydave91920 + changes: + - message: Fixed Zookeeper not being on the double barrel shotgun contraband list + type: Fix + id: 8188 + time: '2025-04-15T18:27:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36583 +- author: Minemoder5000 + changes: + - message: The Syndicate Elite Hardsuit and Cybersun Juggernaut Suit have been restricted + to Nuclear Operative uplinks. + type: Tweak + - message: The Elite Web Vest has been added to the uplink for 5 tc. It has reduced + pierce resistance, but increased heat, radiation, blunt, slash, and caustic + resistance compared to the normal web vest. + type: Add + id: 8189 + time: '2025-04-15T21:39:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36225 +- author: EmoGarbage404 + changes: + - message: Sentient artifacts can once again activate themselves. + type: Tweak + - message: Increased sentient artifact self activation cooldown. + type: Tweak + id: 8190 + time: '2025-04-15T22:24:58.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36598 +- author: EmoGarbage404 + changes: + - message: When an artifact's node is unlocked, the effect will now also occur. + Effects can still be triggered manually through interaction. + type: Add + - message: Artifacts will now have more nodes on average. + type: Tweak + - message: Higher-class artifact nodes now grant significantly more points. + type: Tweak + id: 8191 + time: '2025-04-15T22:38:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36604 +- author: EmoGarbage404 + changes: + - message: Restored Artifexium's interaction with artifacts. Now, a single spray + will randomly activate one of the triggers for a node, allowing you to subvert + puzzling artifacts. + type: Add + id: 8192 + time: '2025-04-15T22:49:58.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36595 +- author: slarticodefast, Flareguy + changes: + - message: Added the Desynchronizer, an experimental device that allows the user + to temporarily make themselves invincible, invisible, & immobile. Unlock it + through experimental science today! + type: Add + - message: Gravity Manipulation technology is now a tier 2 technology. + type: Tweak + id: 8193 + time: '2025-04-16T01:33:39.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35752 +- author: RedBookcase + changes: + - message: Minor blueprint tweaks and a new stored sprite for blueprints. + type: Tweak + id: 8194 + time: '2025-04-16T10:12:22.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36609 +- author: SlamBamActionman + changes: + - message: Unfolded bandanas/lab coats now fit in crates again. + type: Fix + id: 8195 + time: '2025-04-16T11:54:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36625 +- author: metalgearsloth + changes: + - message: Fixes tippy messages being too sh- + type: Fix + id: 8196 + time: '2025-04-16T12:23:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36616 +- author: SlamBamActionman + changes: + - message: Closed pet carriers no longer push players or lockers. + type: Fix + id: 8197 + time: '2025-04-16T14:12:30.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36627 +- author: Flareguy, ArtisticRoomba + changes: + - message: Added the Temperature Gun. It can shoot body-temperature-changing bolts. + Unlock them through arsenal science today! + type: Add + - message: Experimental Battery Ammo technology is no longer available to research.. + type: Remove + id: 8198 + time: '2025-04-16T17:58:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35447 +- author: UpAndLeaves + changes: + - message: Most clothing will no longer provide protection against zombification + type: Tweak + - message: Blunt/Slash/Piercing resistance will now provide weak protection against + zombification. + type: Tweak + - message: Winter coats are now moderately effective against zombification. + type: Tweak + - message: Bio suits are now very effective against zombification. + type: Tweak + - message: Security bio suits are now lightly armored. + type: Tweak + - message: Bio suits now only have 5% slowdown. + type: Tweak + id: 8199 + time: '2025-04-16T18:21:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36485 +- author: ScarKy0 + changes: + - message: A basic sheet crate can now be ordered for 1660 spesos. It contains 30 + steel, glass and plastic. + type: Add + id: 8200 + time: '2025-04-16T19:20:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36419 +- author: sowelipililimute + changes: + - message: The medical and security techfabs now announce new recipes that they + can fabricate as they are researched + type: Add + id: 8201 + time: '2025-04-16T19:29:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34959 +- author: Linkbro1 + changes: + - message: changed MV and HV cable item sprites, changed MV cable structure sprites + type: Tweak + id: 8202 + time: '2025-04-16T20:26:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34955 +- author: ciaran + changes: + - message: Fixed duplicate crew monitor console entries for crew with tracking implants + type: Fix + id: 8203 + time: '2025-04-16T21:14:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35918 +- author: Seam_Less + changes: + - message: Standardized the In-Hand Sprites for all gloves + type: Tweak + id: 8204 + time: '2025-04-16T22:15:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35997 +- author: DissidentBullet + changes: + - message: Monkeys can now wear juggernaut suits + type: Add + id: 8205 + time: '2025-04-16T23:14:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34121 +- author: SpaceRox1244 + changes: + - message: Cargo can now order handheld artifact containers for transporting small + artifacts. + type: Add + id: 8206 + time: '2025-04-16T23:35:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33327 +- author: ScarKy0 + changes: + - message: Hydroponics tray flatpacks can now be bought for 750 spesos. + type: Add + id: 8207 + time: '2025-04-16T23:51:00.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36630 +- author: EmoGarbage404 + changes: + - message: Fixed artifacts sometimes having negative research values. + type: Fix + id: 8208 + time: '2025-04-17T03:14:17.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36642 +- author: VerinSenpai + changes: + - message: You can now use actions within the action window. + type: Add + id: 8209 + time: '2025-04-17T10:08:09.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35642 +- author: ElectroJr + changes: + - message: Fixed some intense explosion types using incorrect overlay sprites. + type: Fix + id: 8210 + time: '2025-04-17T10:12:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36644 +- author: Beck Thompson, SlamBamActionman + changes: + - message: Fixed trash bag visuals. The appearance will now update correctly depending + on how many items it contains! + type: Fix + id: 8211 + time: '2025-04-17T10:36:23.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32386 +- author: Callmore + changes: + - message: Cyborgs now require being pryed to open/close the panel instead of screwed. + type: Tweak + id: 8212 + time: '2025-04-17T10:38:00.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32796 +- author: Errant + changes: + - message: Handheld geiger counters can now by heard by everyone nearby. + type: Tweak + id: 8213 + time: '2025-04-17T11:24:47.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/30463 +- author: Centronias + changes: + - message: Tank harnesses can be made at lathes, similar to utility belts. + type: Add + - message: Tank harnesses take up a 1x2 space in inventories, half of their previous + 2x2. + type: Tweak + id: 8214 + time: '2025-04-17T12:33:31.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35590 +- author: Jacktastic09 + changes: + - message: Added the Solid Headband, available via hacked ClothesMate vending machines + type: Add + id: 8215 + time: '2025-04-17T13:43:44.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36650 +- author: Hoodie42 + changes: + - message: The banjo can now be worn on the back or suit storage slots. + type: Tweak + id: 8216 + time: '2025-04-17T14:05:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34057 +- author: muburu + changes: + - message: Space Dragons now have randomly generated names. + type: Add + id: 8217 + time: '2025-04-17T21:05:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36656 +- author: archee1 + changes: + - message: Cats can walk slowly to avoid slipping on puddles. + type: Tweak + - message: Cak's (cake cats) previously incorrect sprinting and walking speeds have + been corrected + type: Fix + id: 8218 + time: '2025-04-18T01:15:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36542 +- author: Killerqu00 + changes: + - message: Contraband examine icon now shows whether or not you are allowed to possess + the item. + type: Add + - message: Contraband examine activates by hovering instead of clicking. + type: Tweak + id: 8219 + time: '2025-04-18T01:23:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36032 +- author: mjarduk + changes: + - message: Torches can now be refueled. + type: Tweak + - message: Burnt torches/glowsticks names' can now display if they're glued, cluwnified, + etc. + type: Fix + id: 8220 + time: '2025-04-18T01:59:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36209 +- author: lzk228 + changes: + - message: Borgs, clowns and mimes now can choose a custom name in loadouts. + type: Tweak + id: 8222 + time: '2025-04-18T02:32:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35170 +- author: DogZeroX + changes: + - message: Added Experiment plushie from the game Scav Prototype! + type: Add + id: 8223 + time: '2025-04-18T02:38:34.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36663 +- author: slarticodefast + changes: + - message: Fire extinguishers and sprays now allow you to push the grids you are + standing on when you have magboots on. + type: Add + id: 8224 + time: '2025-04-18T03:41:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31754 +- author: aada + changes: + - message: Filter categories added to the security techfab. + type: Add + id: 8225 + time: '2025-04-18T03:52:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35594 +- author: Fildrance + changes: + - message: returned deconstruct to the top level option on RCD + type: Fix + id: 8226 + time: '2025-04-18T04:50:15.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36486 +- author: ciaran + changes: + - message: Added a button to scroll back to the bottom of the chat box + type: Add + id: 8227 + time: '2025-04-18T07:43:00.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35913 +- author: Tayrtahn + changes: + - message: The popup when pointing at an item in a character's inventory now mentions + that character. + type: Tweak + id: 8228 + time: '2025-04-18T12:09:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36252 +- author: slarticodefast + changes: + - message: Punching lights while wearing insulated gloves will no longer electrocute + you. + type: Fix + id: 8229 + time: '2025-04-18T12:26:48.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36686 +- author: Minemoder + changes: + - message: Rainbow Cannabis Leaves no longer emit light due to a renderer limitation. + type: Remove + id: 8230 + time: '2025-04-18T14:12:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36479 +- author: IProduceWidgets + changes: + - message: Holobarrier projectors are now more power efficient. + type: Tweak + id: 8231 + time: '2025-04-18T16:10:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34473 +- author: K-Dynamic + changes: + - message: Removed egg-plant from MegaSeed Servitor. (Egg-plant seeds can still + be obtained by mutation or exotic seed crate.) + type: Remove + id: 8232 + time: '2025-04-18T16:42:50.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36579 +- author: Failed, Centronias + changes: + - message: The drink shaker now has in-hand sprites + type: Tweak + id: 8233 + time: '2025-04-18T17:12:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36382 +- author: IProduceWidgets + changes: + - message: filing cabinets no longer have whitelists. + type: Tweak + id: 8234 + time: '2025-04-18T17:37:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36185 +- author: aada + changes: + - message: Egg-plants now have 6 reagent per egg at 20 potency, up from 3. + type: Tweak + id: 8235 + time: '2025-04-18T19:52:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36693 +- author: Nox38 + changes: + - message: Nuclear operative agent is renamed to nuclear operative corpsman. + type: Tweak + id: 8236 + time: '2025-04-18T19:56:57.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34627 +- author: Ilya246 + changes: + - message: The actions hotbar now has up to 10 more hotkeys accessible through the + shift key. + type: Add + id: 8237 + time: '2025-04-18T22:45:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33872 +- author: lzk228 + changes: + - message: Fixed breaking small mobs (e.g. mice) mask after getting into an air + flow. + type: Fix + id: 8238 + time: '2025-04-18T22:52:09.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33888 +- author: YoungThugSS14 + changes: + - message: The Diona and Gingerbread species now get unique typing indicators + type: Add + id: 8239 + time: '2025-04-18T23:19:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36126 +- author: Rainbeon + changes: + - message: Fixed Revolvers not correctly reloading from Speedloaders when the Revolver + is partially loaded. + type: Fix + - message: Speedloaders will now prioritize loading the active and upcoming chambers + in a Revolver when the Speedloader is only partially filled, rather than the + ones farthest away. + type: Fix + id: 8240 + time: '2025-04-18T23:26:44.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32396 +- author: ScarKy0 + changes: + - message: Changed the air vent and scrubber sprites. + type: Tweak + id: 8241 + time: '2025-04-18T23:34:59.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34223 +- author: EmoGarbage404 + changes: + - message: Added the material silo. This machine allows nearby machines to share + a pool of resources, cutting down on micromanagement. + type: Add + id: 8242 + time: '2025-04-18T23:43:17.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36492 +- author: Onezero0 + changes: + - message: Modular Grenades can now fit inside Security belts and carriers. + type: Tweak + id: 8243 + time: '2025-04-19T00:04:44.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34169 +- author: Alpaccalypse + changes: + - message: The cocktail "Irish slammer" has been renamed to "Grenade Penguin". + type: Tweak + id: 8244 + time: '2025-04-19T00:24:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34181 +- author: ScarKy0 + changes: + - message: Added a couple more tools to the artifact borg module. + type: Tweak + id: 8245 + time: '2025-04-19T00:25:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33338 +- author: august-sun + changes: + - message: Resprited the Chief Engineer's mantle. + type: Tweak + id: 8246 + time: '2025-04-19T00:26:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36697 +- author: IProduceWidgets + changes: + - message: Vox are no longer immune to the zombie virus under certain circumstances + type: Fix + - message: The zombie virus no longer provides non-Initial Infected an undue grace + period before poisoning them. + type: Fix + id: 8247 + time: '2025-04-19T00:38:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34472 +- author: Booblesnoot42 + changes: + - message: Airlocks will now animate properly after crushing someone. + type: Fix + id: 8248 + time: '2025-04-19T00:57:17.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34523 +- author: SlamBamActionman + changes: + - message: Fingerprints and fibers are now always applied to items being held, regardless + of how they got into your hands. + type: Fix + - message: Changing gloves now correctly applies new fibers/fingerprints on held + items. + type: Fix + id: 8249 + time: '2025-04-19T01:02:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/30609 +- author: Coolsurf6 + changes: + - message: Attachbodypart command now functions as intended. + type: Fix + id: 8250 + time: '2025-04-19T01:23:58.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34577 +- author: metalgearsloth + changes: + - message: Fix disarm swing sound even if a disarm isn't possible on the target. + type: Fix + id: 8251 + time: '2025-04-19T01:38:22.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36546 +- author: metalgearsloth + changes: + - message: Predict gas volume pumps. + type: Tweak + id: 8252 + time: '2025-04-19T01:48:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33835 +- author: SharkSnake98 + changes: + - message: Added 12 new, varied drinks for the bartender to mix during shifts. + type: Add + id: 8253 + time: '2025-04-19T05:12:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36287 +- author: Ko4erga + changes: + - message: Added new color turtlenecks in WinterDrobe. + type: Add + id: 8254 + time: '2025-04-19T05:14:50.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32920 +- author: metalgearsloth + changes: + - message: Virtual items (e.g. wielding) are now predicted. + type: Add + id: 8255 + time: '2025-04-19T06:51:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36617 +- author: metalgearsloth + changes: + - message: Fix charges sometimes breaking for auto-recharge devices such as RCDs. + type: Fix + id: 8256 + time: '2025-04-19T08:49:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36714 +- author: Boaz1111 + changes: + - message: Reduced the range at which security radios pick up noise from 4 tiles + to 1 tile. + type: Tweak + id: 8257 + time: '2025-04-19T13:10:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34878 +- author: Quantus + changes: + - message: Fixed the unusual delay in production after de-aging a plant with cryoxadone. + type: Fix + id: 8258 + time: '2025-04-19T13:43:05.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34668 +- author: ArtisticRoomba + changes: + - message: The Go Go Hat now checks if your message matches either the name of the + item or the label of the item. This allows people with accents to name their + items according to how their character would say the item, or for a faster retrieval + without having to type out the full name. + type: Tweak + id: 8259 + time: '2025-04-19T14:11:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35658 +- author: GrownSamoyedDog + changes: + - message: Pineapple Juice Cartons are new and added to Booze-O-Mat. + type: Add + id: 8260 + time: '2025-04-19T14:25:09.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34769 +- author: claustro305 + changes: + - message: Fixed a bug where dragged objects would collide with wall mounted lights + and cameras. + type: Fix + id: 8261 + time: '2025-04-19T14:29:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35908 +- author: metalgearsloth + changes: + - message: Fix detailed examine buttons sometimes showing up incorrectly. + type: Fix + id: 8262 + time: '2025-04-19T14:37:45.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33814 +- author: sowelipililimute + changes: + - message: Servers with the number of open inventories set to two have a new alignment + that doesn't shift as much when opening and closing multiple inventories + type: Tweak + id: 8263 + time: '2025-04-19T14:40:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35041 +- author: ps3moira + changes: + - message: Removed interior shuttle walls + type: Remove + id: 8264 + time: '2025-04-19T14:41:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34261 +- author: Minemoder + changes: + - message: Most roles on the station now require significantly less playtime playtime + to unlock. + type: Tweak + id: 8265 + time: '2025-04-19T15:31:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36666 +- author: Fildrance + changes: + - message: fixed spessman getting stuck after unlocking portal node + type: Fix + id: 8266 + time: '2025-04-19T17:07:23.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36719 +- author: VlaDOS1408 + changes: + - message: Fixed Gravity gen menu resizing! Now it looks like it should. + type: Fix + id: 8267 + time: '2025-04-19T20:20:32.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34036 +- author: coffeeware, MilenVolf + changes: + - message: Most common mobs without hands now can't dump containers wtih solution + by drag and dropping. + type: Tweak + id: 8268 + time: '2025-04-19T20:32:17.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33350 +- author: ScarKy0 + changes: + - message: Salvage borgs now start with a tool module + type: Add + id: 8269 + time: '2025-04-19T20:33:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33336 +- author: Seam_Less + changes: + - message: Standardized the Sprites of most scarfs + type: Tweak + id: 8270 + time: '2025-04-20T00:17:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35446 +- author: ArtisticRoomba + changes: + - message: Fixed backpack water tanks (spray nozzle) projectiles not properly cleaning + up puddles. + type: Fix + id: 8271 + time: '2025-04-20T02:41:24.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35950 +- author: Blackern5000 + changes: + - message: Reptilians can now have shark tails and a back fin. + type: Add + id: 8272 + time: '2025-04-20T05:57:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33219 +- author: chromiumboy + changes: + - message: The countdown timer for emergency broadcast cooldowns are now consistent + across holopad UIs + type: Fix + id: 8273 + time: '2025-04-20T05:58:41.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34115 +- author: ArtisticRoomba + changes: + - message: Filing cabinet drawers have the same internal storage size as tall filing + cabinets. + type: Tweak + id: 8274 + time: '2025-04-20T06:01:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36757 +- author: CubixThree + changes: + - message: Added plural pride pin. + type: Add + id: 8275 + time: '2025-04-20T07:00:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36744 +- author: Helm + changes: + - message: You can now add any reagents to soup! + type: Fix + id: 8276 + time: '2025-04-20T09:32:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34633 +- author: Nox38, BurgerMoth, ArtisticRoomba + changes: + - message: Added descriptions to all .35 auto cartridges, magazines, and ammo boxes. + type: Add + id: 8277 + time: '2025-04-20T11:51:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36085 +- author: Pgriha + changes: + - message: SWAT, ERT, Riot and some other helmets are now hiding head markings. + type: Fix + id: 8278 + time: '2025-04-20T11:52:31.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36074 +- author: RedBookcase + changes: + - message: More items can be processed by the station's Recyclers. + type: Add + id: 8279 + time: '2025-04-20T11:53:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35800 +- author: Alice4267 + changes: + - message: Changed the amount of glass sheets needed to create beakers to 2 on normal + autolathe and 1 on hyperconvectional autolathe. + type: Tweak + - message: Changed the amount of glass sheets needed to create large beakers to + 4 on normal autolathe and 2 on hyperconvectional autolathe. + type: Tweak + id: 8280 + time: '2025-04-20T12:01:08.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34441 +- author: Pgriha + changes: + - message: Heterochromia for Moth. + type: Add + id: 8281 + time: '2025-04-20T12:03:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36061 +- author: BackeTako + changes: + - message: New Salvage doors + type: Add + id: 8282 + time: '2025-04-20T12:03:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36375 +- author: HyperB1 + changes: + - message: Departmental shelves can now contain a wider variety of items. + type: Tweak + id: 8283 + time: '2025-04-20T12:19:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34292 +- author: ScarKy0 + changes: + - message: Cargo will receive slightly less mail, but will earn more spesos from + it. Overall earnings are still on average the same. + type: Tweak + id: 8284 + time: '2025-04-20T13:55:23.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36767 +- author: HyperB1 + changes: + - message: ERT engineering hardsuit now features proper fire protection. + type: Fix + id: 8285 + time: '2025-04-20T14:06:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34949 +- author: K-Dynamic + changes: + - message: Nonlethal throwables crate can be ordered from cargo (2500 spesos) and + contains 4x bolas, 4x flashbang grenades, 4x tear gas grenades, 4x stinger grenades. + type: Add + id: 8286 + time: '2025-04-20T14:08:02.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35808 +- author: RedBookcase + changes: + - message: Updated Pirate weapons & hardsuits to be more inline with similar items. + type: Tweak + id: 8287 + time: '2025-04-20T20:55:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35986 +- author: Booblesnoot42 + changes: + - message: The sprites for the main chapel altars have been adjusted. + type: Tweak + id: 8289 + time: '2025-04-20T21:09:01.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35685 +- author: UBlueberry + changes: + - message: Beanies can now be found in WinterDrobes, don'tchaknow. + type: Add + id: 8290 + time: '2025-04-20T21:15:34.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32946 +- author: Lanedon + changes: + - message: Santa hats can now be folded to remove the beard. + type: Tweak + id: 8291 + time: '2025-04-20T21:17:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36510 +- author: Princess Cheeseballs + changes: + - message: Items now slip on slippery surfaces + type: Add + - message: Puddle slipperiness has been tweaked to be more intuitive + type: Tweak + id: 8292 + time: '2025-04-20T21:27:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35845 +- author: uhbg + changes: + - message: The Bartender can now make Eggnog by shaking an egg, milk, and rum. + type: Add + id: 8293 + time: '2025-04-20T21:27:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34065 +- author: notquitehadouken + changes: + - message: Kill objectives will now always require you to maroon your target. + type: Tweak + id: 8294 + time: '2025-04-20T21:34:19.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35825 +- author: Entvari + changes: + - message: Added a new Wizard headset. + type: Add + - message: The Wizard now starts with the Wizard headset. + type: Tweak + id: 8295 + time: '2025-04-20T21:38:30.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35732 +- author: aada + changes: + - message: Filter categories added to the circuit imprinter. + type: Add + id: 8296 + time: '2025-04-20T22:27:49.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35713 +- author: ScarKy0 + changes: + - message: Mail spawning has been reworked. The mail teleporter now has to be manually + emptied to take all the mail out. (You can do it by alt-clicking it or using + a verb) + type: Tweak + - message: The mail teleporter now has an internal capacity of 20. It will not spawn + mail past that until emptied by someone. + type: Add + id: 8297 + time: '2025-04-21T09:32:18.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36774 +- author: ScarKy0 + changes: + - message: Default cargo split is now 50% instead of 75%. Lockboxes remain unchanged. + type: Tweak + id: 8298 + time: '2025-04-21T10:32:14.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36800 +- author: Phooooooooooooooooooooooooooooooosphate + changes: + - message: Add the medical HUDs to medical's loadout. + type: Add + id: 8299 + time: '2025-04-21T12:07:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32847 +- author: aada + changes: + - message: Hotplates and kitchen grills can now be anchored on tables. + type: Fix + - message: Hotplates and kitchen grills now collide with walls. + type: Fix + id: 8300 + time: '2025-04-21T15:38:23.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34776 +- author: insoPL + changes: + - message: being able to drag certain food items onto drain and chemmasters + type: Fix + id: 8301 + time: '2025-04-21T15:50:07.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34683 +- author: Hrosts + changes: + - message: Added rehydratable mop bucket cube, replacing the big and unwieldy yellow + bucket in the janitorial supplies crate. + type: Add + id: 8302 + time: '2025-04-21T17:16:25.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34586 +- author: K-Dynamic + changes: + - message: Increased ratio of crew to thieves from 15 to 20. + type: Tweak + id: 8303 + time: '2025-04-21T17:24:28.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36531 +- author: centcomofficer24 + changes: + - message: Added a genderfluid pin! + type: Add + id: 8304 + time: '2025-04-21T17:46:34.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35854 +- author: ScarKy0 + changes: + - message: Station AI now has a name identifier appended after their name. + type: Tweak + id: 8305 + time: '2025-04-21T17:54:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36801 +- author: lzk228 + changes: + - message: Fix identity reveal for creaming and meat spike popups. + type: Fix + id: 8306 + time: '2025-04-21T20:15:20.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32003 +- author: ShadowCommander + changes: + - message: Added firelock lights for pressure and temperature warnings. + type: Add + id: 8307 + time: '2025-04-21T22:39:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/28339 +- author: lzk228 + changes: + - message: Bots now can examine, use zoom and see their alerts (health & stamina). + type: Tweak + - message: Added borgs emotes to bots. + type: Tweak + id: 8308 + time: '2025-04-21T22:49:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/29949 +- author: Ghagliiarghii + changes: + - message: The monkey version of captain uniforms and the hamster version of captain + hats updated to match humanoid versions + type: Tweak + id: 8309 + time: '2025-04-22T01:03:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36804 +- author: Doc-Michael + changes: + - message: Changed protection values of Security Hardsuits + type: Tweak + - message: Made Warden/HoS coats slightly more protective to better fit their position + type: Tweak + id: 8310 + time: '2025-04-22T03:22:56.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/30212 +- author: K-Dynamic + changes: + - message: Changed instances of 3.5 second grenade timers to 3 seconds, including + clusterbangs and atmos metal foam grenades. + type: Tweak + - message: Atmos metal foam grenades have been reworked to disperse foam in a 5x5 + diamond pattern and harden within two seconds. + type: Tweak + - message: Reduced hardened metal foam health (breakable in 6 crowbar swings). + type: Tweak + - message: Changed syndicate trickbomb timer from 3.5 seconds to 5 seconds to match + minibombs. + type: Tweak + id: 8311 + time: '2025-04-22T05:51:21.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34579 +- author: muburu + changes: + - message: Dragons can now pry open doors, including firelocks. + type: Tweak + id: 8312 + time: '2025-04-22T06:33:00.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36811 +- author: sowelipililimute + changes: + - message: The Funding Allocation Computer can now adjust the cut Cargo takes from + lockbox sales + type: Add + - message: The Funding Allocation Computer doesn't show Cargo separately from its + 75% cut + type: Tweak + id: 8313 + time: '2025-04-22T12:34:53.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36790 +- author: yuitop + changes: + - message: Fingerless gloves no more blocking taking the fingerprint. + type: Tweak + id: 8314 + time: '2025-04-22T18:15:12.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31864 +- author: GoldenCan + changes: + - message: Heads of Personnel can now fabricate generic command-themed clothes using + their uniform printer. + type: Add + id: 8315 + time: '2025-04-22T18:35:43.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32103 +- author: Ilya246 + changes: + - message: Numerous cargo orders have been made cheaper. + type: Tweak + id: 8316 + time: '2025-04-22T18:38:33.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/32375 +- author: Southbridge + changes: + - message: Solar Panels can now be randomly damaged or unfinished at the beginning + of the round. + type: Add + id: 8317 + time: '2025-04-22T19:46:38.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36825 +- author: Kickguy223 + changes: + - message: Reduced the price of firelock electronics to half the price of the input + materials + type: Tweak + id: 8318 + time: '2025-04-22T23:53:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33469 +- author: murolem + changes: + - message: Building orientation on fences, diagonal grilles and the diagonal shuttle + wall is now respected. + type: Fix + id: 8319 + time: '2025-04-23T01:58:42.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36488 +- author: kosticia + changes: + - message: Added analog of donk-pockets for moth - moth-pockets + type: Add + id: 8320 + time: '2025-04-23T05:36:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34517 +- author: AgentSmithRadio + changes: + - message: New food crates are now available for purchase from the automated trade + station! + type: Add + - message: You can no longer use Sweetie's Pistachios to fulfill cargo's generic + fruit bounty. + type: Remove + id: 8321 + time: '2025-04-23T05:37:10.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33286 +- author: SaphireLattice + changes: + - message: Steel sheets no longer have unintuitively wasteful plating placement + that can be done with steel tiles instead + type: Remove + id: 8322 + time: '2025-04-23T11:08:03.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/33443 +- author: ArchRBX + changes: + - message: pAI's can now install a variety of useful software through their new + Software Catalog. + type: Add + - message: pAI's no longer start with a Station Map or MIDI Player, and must purchase + these through the shop. + type: Tweak + id: 8323 + time: '2025-04-23T23:55:36.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36857 +- author: NoElkaTheGod + changes: + - message: Toysword now actually looks almost like the real thing, as advertised + in the description + type: Tweak + id: 8324 + time: '2025-04-24T01:21:35.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34199 +- author: Pronana + changes: + - message: Moths can now eat pills + type: Tweak + id: 8325 + time: '2025-04-24T02:28:34.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35609 +- author: Coolsurf6 + changes: + - message: Updated more contraband items for Syndicate and Security. + type: Tweak + id: 8326 + time: '2025-04-24T02:57:54.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35102 +- author: Beck Thompson + changes: + - message: You can how hide items inside cake by using a knife! Eating a cake with + an item inside will do minor damage. + type: Add + id: 8327 + time: '2025-04-24T03:00:51.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/31015 +- author: RedBookcase + changes: + - message: Added Advanced Circular Saw as a Medical Doctor specific uplink item. + type: Add + - message: Removed Syndicate Surgery Duffel Bag from uplink. + type: Remove + id: 8328 + time: '2025-04-24T03:01:29.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/35915 +- author: AgentSmithRadio, MadeOfHeartAndStone + changes: + - message: Added cotton grilled cheese sandwich entity and recipe. + type: Add + id: 8329 + time: '2025-04-24T03:24:37.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36135 +- author: SG6732 + changes: + - message: Added meat patties. Get the charcoal and let's start grillin. + type: Add + id: 8330 + time: '2025-04-24T03:45:27.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/34896 +- author: DrMelon, EmoGarbage404 + changes: + - message: Added turnstiles, gates able to limit the flow of foot traffic. The station's + flow is at your fingertips. + type: Add + id: 8331 + time: '2025-04-24T11:39:40.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36313 +- author: EmoGarbage404 + changes: + - message: Added prisoner closets. These create automatic ID's which allow you to + quickly handle the transfer of prisoners in and out of genpop cells while keeping + their belongings secure. Imprison people today! + type: Add + id: 8332 + time: '2025-04-24T14:32:11.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36392 +- author: Southbridge + changes: + - message: Colorful Light Crates have been added and can be ordered. + type: Add + id: 8333 + time: '2025-04-24T17:41:55.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36750 +- author: ScarKy0, Jbsundown + changes: + - message: Letters and Packages can now be cut open with sharp objects. Be wary, + this makes cargo lose money! + type: Add + id: 8334 + time: '2025-04-24T19:47:46.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36815 +- author: EmoGarbage404 + changes: + - message: Fixed situations where using the QSI would send the player into an esoteric + space realm. + type: Fix + id: 8335 + time: '2025-04-24T21:18:26.0000000+00:00' + url: https://github.com/space-wizards/space-station-14/pull/36834 diff --git a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml index 69fd17bddc..eb8ff28958 100644 --- a/Resources/ConfigPresets/WizardsDen/wizardsDen.toml +++ b/Resources/ConfigPresets/WizardsDen/wizardsDen.toml @@ -5,6 +5,7 @@ desc = "Official English Space Station 14 servers. Vanilla, roleplay ruleset." lobbyenabled = true soft_max_players = 80 +lobbyduration = 300 # 5 minutes lobby timer panic_bunker.enabled = true panic_bunker.min_overall_minutes = 120 panic_bunker.disable_with_admins = true diff --git a/Resources/ConfigPresets/_CP14/Dev.toml b/Resources/ConfigPresets/_CP14/Dev.toml index 0cf99aed40..f18b620aff 100644 --- a/Resources/ConfigPresets/_CP14/Dev.toml +++ b/Resources/ConfigPresets/_CP14/Dev.toml @@ -16,6 +16,9 @@ port = 1212 bindto = "::,0.0.0.0" max_connections = 100 +[status] +max_connections = 10 + [game] hostname = "⚔️ CrystallEdge ⚔️" desc = "History of the City of Sword and Magic. A social economic sandbox reinventing the Space Station 14 concept in fantasy style" @@ -36,6 +39,8 @@ hub_urls = "https://hub.spacestation14.com/" [infolinks] discord = "https://discord.gg/8BEPa9JbZ6" +patreon = "https://boosty.to/theshued" +github = "https://github.com/crystallpunk-14/crystall-punk-14" [procgen] preload = false @@ -68,4 +73,4 @@ mob_pushing = true [cp14] discord_auth_enabled = true closet_beta_test = true -sponsor_enabled = true \ No newline at end of file +sponsor_enabled = true diff --git a/Resources/Credits/GitHub.txt b/Resources/Credits/GitHub.txt index 3933009dfa..19f9472ebf 100644 --- a/Resources/Credits/GitHub.txt +++ b/Resources/Credits/GitHub.txt @@ -1 +1 @@ -0tito, 0x6273, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 3nderall, 4310v343k, 4dplanner, 612git, 778b, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, Ahion, aiden, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alithsko, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, AndrewEyeke, AndreyCamper, Anzarot121, ApolloVector, Appiah, ar4ill, ArchPigeon, ArchRBX, areitpog, Arendian, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, AruMoon, ArZarLordOfMango, as334, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, Awlod, AzzyIsNotHere, baa14453, BackeTako, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, beck-thompson, bellwetherlogic, ben, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlitzTheSquishy, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, BriBrooo, Bright0, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, capnsockless, CaptainMaru, CaptainSqrBeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, Catofquestionableethics, CatTheSystem, centcomofficer24, Centronias, Chaboricks, chairbender, Chaoticaa, Charlese2, charlie, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, civilCornball, claustro305, Clement-O, clyf, Clyybber, CMDR-Piboy314, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, crazybrain23, creadth, CrigCrag, croilbird, Crotalus, CrudeWax, CrzyPotato, cutemoongod, Cyberboss, d34d10cc, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkenson, DawBla, Daxxi3, dch-GH, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, DebugOk, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, dexlerxd, dffdff2423, DieselMohawk, digitalic, Dimastra, dinnercalzone, DinoWattz, DisposableCrewmember42, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DoctorBeard, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, Emisse, emmafornash, EmoGarbage404, Endecc, eoineoineoin, eris, erohrs2, ERORR404V1, Errant-4, ertanic, esguard, estacaoespacialpirata, eugene, ewokswagger, exincore, exp111, f0x-n3rd, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, FillerVK, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, Fouin, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FungiFellow, FunTust, Futuristic-OK, GalacticChimp, gamer3107, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, gituhabu, GlassEclipse, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, GoodWheatley, Gorox221, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, Hardly3D, harikattar, he1acdvv, Hebi, Helm4142, Henry, HerCoyote23, HighTechPuddle, hitomishirichan, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, Hreno, htmlsystem, hubismal, Hugal31, Huxellberger, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, jacksonzck, Jackw2As, jacob, jamessimo, janekvap, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jmcb, JohnGinnane, johnku1, Jophire, joshepvodka, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, KieueCaprie, Killerqu00, Kimpes, KingFroozy, kira-er, Kirillcas, Kirus59, Kistras, Kit0vras, KittenColony, klaypexx, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kosticia, koteq, KrasnoshchekovPavel, Krunklehorn, Kupie, kxvvv, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, lettern, LetterN, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, LightVillet, liltenhead, LinkUyx, Litraxx, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, Lomcastar, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luizwritescode, Lukasz825700516, luminight, lunarcomets, luringens, Lusatia, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M3739, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, MagnusCrowe, malchanceux, MaloTV, manelnavola, ManelNavola, Mangohydra, marboww, Markek1, Matz05, max, MaxNox7, maylokana, MehimoNemo, MeltedPixel, MemeProof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, MjrLandWhale, mkanke-real, MLGTASTICa, moderatelyaware, modern-nm, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mr-bo-jangles, Mr0maks, MrFippik, mrrobdemo, muburu, MureixloI, musicmanvr, MWKane, Myakot, Myctai, N3X15, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neutrino-laser, NickPowers43, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, not-gavnaed, notafet, notquitehadouken, NotSoDana, noudoit, noverd, Nox38, NuclearWinter, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, och-och, OctoRocket, OldDanceJacket, OliverOtter, onesch, OnyxTheBrave, Orange-Winds, OrangeMoronage9622, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, paolordls, partyaddict, patrikturi, PaulRitter, peccneck, Peptide90, peptron1, PeterFuto, PetMudstone, pewter-wiz, Pgriha, Phantom-Lily, pheenty, philingham, Phill101, phunnyguy, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, ProfanedBane, PROG-MohamedDwidar, prole0, Pronana, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, qrtDaniil, Quantum-cross, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, RobbyTheFish, robinthedragon, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, rosieposieeee, Roudenn, router, RumiTiger, Ruzihm, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SignalWalker, siigiil, Simyon264, sirdragooon, Sirionaut, Sk1tch, SkaldetSkaeg, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, snebl, snicket, sniperchance, Snowni, snowsignal, SolidusSnek, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, southbridge-fur, sowelipililimute, Soydium, spacelizard, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, stellar-novas, stewie523, stomf, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, supergdpwyl, superjj18, Supernorn, SweptWasTaken, Sybil, SYNCHRONIC, Szunti, t, Tainakov, takemysoult, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telyonok, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, Tornado-Technology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, ubis1, UBlueberry, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, Verslebas, Vexerot, viceemargo, VigersRay, violet754, Visne, vlados1408, VMSolidus, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wafehling, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, wrexbe, WTCWR68, xkreksx, xprospero, xRiriq, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, YuriyKiss, yuriykiss, zach-hill, Zadeon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex +0tito, 0x6273, 12rabbits, 1337dakota, 13spacemen, 154942, 2013HORSEMEATSCANDAL, 20kdc, 21Melkuu, 3nderall, 4310v343k, 4dplanner, 612git, 778b, aaron, Ablankmann, abregado, Absolute-Potato, Absotively, achookh, Acruid, ActiveMammmoth, actually-reb, ada-please, adamsong, Adeinitas, Admiral-Obvious-001, adrian, Adrian16199, Ady4ik, Aerocrux, Aeshus, Aexolott, Aexxie, africalimedrop, afrokada, AftrLite, AgentSmithRadio, Agoichi, Ahion, aiden, Aisu9, ajcm, AJCM-git, AjexRose, Alekshhh, alexkar598, AlexMorgan3817, alexum418, alexumandxgabriel08x, Alithsko, alliephante, ALMv1, Alpaccalypse, Alpha-Two, AlphaQwerty, Altoids1, amatwiedle, amylizzle, Andre19926, AndrewEyeke, AndreyCamper, Anzarot121, ApolloVector, Appiah, ar4ill, archee1, ArchPigeon, ArchRBX, areitpog, Arendian, arimah, Arkanic, ArkiveDev, armoks, Arteben, ArthurMousatov, ArtisticRoomba, artur, ArZarLordOfMango, as334, AsikKEsel, AsnDen, asperger-sind, aspiringLich, astriloqua, august-sun, AutoOtter, AverageNotDoingAnythingEnjoyer, avghdev, Awlod, AzzyIsNotHere, azzyisnothere, B-Kirill, baa14453, BackeTako, Bakke, BananaFlambe, Baptr0b0t, BarryNorfolk, BasedUser, beck-thompson, bellwetherlogic, ben, benbryant0, benev0, benjamin-burges, BGare, bhespiritu, bibbly, BIGZi0348, bingojohnson, BismarckShuffle, Bixkitts, Blackern5000, Blazeror, BlitzTheSquishy, bloodrizer, Bloody2372, blueDev2, Boaz1111, BobdaBiscuit, BobTheSleder, boiled-water-tsar, Booblesnoot42, Boolean-Buckeye, botanySupremist, brainfood1183, BramvanZijp, Brandon-Huu, BriBrooo, Bright0, brndd, bryce0110, BubblegumBlue, buletsponge, buntobaggins, bvelliquette, BWTCK, byondfuckery, c0rigin, c4llv07e, CaasGit, Caconym27, Calecute, Callmore, capnsockless, CaptainMaru, CaptainSqrBeard, Carbonhell, Carolyn3114, Carou02, carteblanche4me, catdotjs, Catofquestionableethics, CatTheSystem, centcomofficer24, Centronias, Chaboricks, chairbender, Chaoticaa, Charlese2, charlie, ChaseFlorom, chavonadelal, Cheackraze, CheddaCheez, cheesePizza2, CheesePlated, Chief-Engineer, chillyconmor, christhirtle, chromiumboy, Chronophylos, Chubbicous, Chubbygummibear, Ciac32, ciaran, civilCornball, claustro305, Clement-O, clyf, Clyybber, CMDR-Piboy314, cohanna, Cohnway, Cojoke-dot, ColdAutumnRain, Colin-Tel, collinlunn, ComicIronic, Compilatron144, CookieMasterT, coolboy911, coolmankid12345, Coolsurf6, cooperwallace, corentt, CormosLemming, CrafterKolyan, crazybrain23, Crazydave91920, creadth, CrigCrag, croilbird, Crotalus, CrudeWax, cryals, CrzyPotato, cutemoongod, Cyberboss, d34d10cc, DadeKuma, Daemon, daerSeebaer, dahnte, dakamakat, DamianX, dan, dangerrevolution, daniel-cr, DanSAussieITS, Daracke, Darkenson, DawBla, Daxxi3, dch-GH, de0rix, Deahaka, dean, DEATHB4DEFEAT, Deatherd, deathride58, DebugOk, Decappi, Decortex, Deeeeja, deepdarkdepths, DeepwaterCreations, Deerstop, degradka, Delete69, deltanedas, DenisShvalov, DerbyX, derek, dersheppard, Deserty0, Detintinto, DevilishMilk, dexlerxd, dffdff2423, DieselMohawk, digitalic, Dimastra, dinnercalzone, DinoWattz, DisposableCrewmember42, dissidentbullet, DjfjdfofdjfjD, doc-michael, docnite, Doctor-Cpu, DoctorBeard, DogZeroX, dolgovmi, dontbetank, Doomsdrayk, Doru991, DoubleRiceEddiedd, DoutorWhite, DR-DOCTOR-EVIL-EVIL, dragonryan06, drakewill-CRL, Drayff, dreamlyjack, DrEnzyme, dribblydrone, DrMelon, drongood12, DrSingh, DrSmugleaf, drteaspoon420, DTanxxx, DubiousDoggo, DuckManZach, Duddino, dukevanity, duskyjay, Dutch-VanDerLinde, dvir001, dylanstrategie, dylanwhittingham, Dynexust, Easypoller, echo, eclips_e, eden077, EEASAS, Efruit, efzapa, Ekkosangen, ElectroSR, elsie, elthundercloud, Elysium206, Emisse, emmafornash, EmoGarbage404, Endecc, eoineoineoin, eris, erohrs2, Errant-4, ertanic, esguard, estacaoespacialpirata, eugene, ewokswagger, exincore, exp111, f0x-n3rd, FacePluslll, Fahasor, FairlySadPanda, farrellka-dev, FATFSAAM2, Feluk6174, ficcialfaint, Fiftyllama, Fildrance, FillerVK, FinnishPaladin, firenamefn, Firewars763, FirinMaLazors, Fishfish458, fl-oz, Flareguy, flashgnash, FluffiestFloof, FluffMe, FluidRock, flymo5678, foboscheshir, FoLoKe, fooberticus, ForestNoises, forgotmyotheraccount, forkeyboards, forthbridge, Fortune117, Fouin, foxhorn, freeman2651, freeze2222, frobnic8, Froffy025, Fromoriss, froozigiusz, FrostMando, FungiFellow, FunTust, Futuristic-OK, GalacticChimp, gamer3107, gansulalan, GaussiArson, Gaxeer, gbasood, gcoremans, Geekyhobo, genderGeometries, GeneralGaws, Genkail, geraeumig, Ghagliiarghii, Git-Nivrak, githubuser508, gituhabu, GlassEclipse, GNF54, godisdeadLOL, goet, GoldenCan, Goldminermac, Golinth, golubgik, GoodWheatley, Gorox221, gradientvera, graevy, GraniteSidewalk, GreaseMonk, greenrock64, GreyMario, GrownSamoyedDog, GTRsound, gusxyz, Gyrandola, h3half, hamurlik, Hanzdegloker, HappyRoach, Hardly3D, harikattar, he1acdvv, Hebi, Helm4142, Henry, HerCoyote23, HighTechPuddle, hitomishirichan, hiucko, hivehum, Hmeister-fake, Hmeister-real, Hobbitmax, hobnob, HoidC, Holinka4ever, holyssss, HoofedEar, Hoolny, hord-brayden, Hreno, htmlsystem, hubismal, Hugal31, Huxellberger, Hyenh, hyperb1, hyperDelegate, hyphenationc, i-justuser-i, iaada, iacore, IamVelcroboy, Ian321, icekot8, icesickleone, iczero, iglov, IgorAnt028, igorsaux, ike709, illersaver, Illiux, Ilushkins33, Ilya246, IlyaElDunaev, IMCB, impubbi, imrenq, imweax, indeano, Injazz, Insineer, IntegerTempest, Interrobang01, Intoxicating-Innocence, IProduceWidgets, itsmethom, Itzbenz, iztokbajcar, Jackal298, Jackrost, jacksonzck, Jacktastic09, Jackw2As, jacob, jamessimo, janekvap, Jark255, Jarmer123, Jaskanbe, JasperJRoth, jbox144, JerryImMouse, jerryimmouse, Jessetriesagain, jessicamaybe, Jezithyr, jicksaw, JiimBob, JimGamemaster, jimmy12or, JIPDawg, jjtParadox, jmcb, JohnGinnane, johnku1, Jophire, joshepvodka, jproads, Jrpl, jukereise, juliangiebel, JustArt1m, JustCone14, justdie12, justin, justintether, JustinTrotter, JustinWinningham, justtne, K-Dynamic, k3yw, Kadeo64, Kaga-404, KaiShibaa, kalane15, kalanosh, KamTheSythe, Kanashi-Panda, katzenminer, kbailey-git, Keelin, Keer-Sar, KEEYNy, keikiru, Kelrak, kerisargit, keronshb, KIBORG04, KieueCaprie, Killerqu00, Kimpes, KingFroozy, kira-er, Kirillcas, Kirus59, Kistras, Kit0vras, KittenColony, klaypexx, Kmc2000, Ko4ergaPunk, kognise, kokoc9n, komunre, KonstantinAngelov, kosticia, koteq, KrasnoshchekovPavel, Krunklehorn, Kupie, kxvvv, kyupolaris, kzhanik, LaCumbiaDelCoronavirus, lajolico, Lamrr, LankLTE, laok233, lapatison, larryrussian, lawdog4817, Lazzi0706, leander-0, leonardo-dabepis, leonidussaks, leonsfriedrich, LeoSantich, LetterN, lettern, Level10Cybermancer, LEVELcat, lever1209, LevitatingTree, Lgibb18, lgruthes, LightVillet, liltenhead, linkbro1, LinkUyx, Litraxx, LittleBuilderJane, LittleNorthStar, LittleNyanCat, lizelive, ljm862, lmsnoise, localcc, lokachop, Lomcastar, LordCarve, LordEclipse, lucas, LucasTheDrgn, luckyshotpictures, LudwigVonChesterfield, luizwritescode, Lukasz825700516, luminight, lunarcomets, Lusatia, lvvova1, Lyndomen, lyroth001, lzimann, lzk228, M3739, mac6na6na, MACMAN2003, Macoron, magicalus, magmodius, MagnusCrowe, malchanceux, MaloTV, ManelNavola, manelnavola, Mangohydra, marboww, Markek1, Matz05, max, MaxNox7, maylokana, MehimoNemo, MeltedPixel, MemeProof, MendaxxDev, Menshin, Mephisto72, MerrytheManokit, Mervill, metalgearsloth, MetalSage, MFMessage, mhamsterr, michaelcu, micheel665, mifia, MilenVolf, MilonPL, Minemoder5000, Minty642, minus1over12, Mirino97, mirrorcult, misandrie, MishaUnity, MissKay1994, MisterImp, MisterMecky, Mith-randalf, mjarduk, MjrLandWhale, mkanke-real, MLGTASTICa, moderatelyaware, modern-nm, mokiros, momo, Moneyl, monotheonist, Moomoobeef, moony, Morb0, MossyGreySlope, mr-bo-jangles, Mr0maks, MrFippik, mrrobdemo, muburu, MureixloI, musicmanvr, MWKane, Myakot, Myctai, N3X15, nails-n-tape, Nairodian, Naive817, NakataRin, namespace-Memory, Nannek, NazrinNya, neutrino-laser, NickPowers43, nikthechampiongr, Nimfar11, ninruB, Nirnael, NIXC, NkoKirkto, nmajask, noctyrnal, noelkathegod, noirogen, nok-ko, NonchalantNoob, NoobyLegion, Nopey, not-gavnaed, notafet, notquitehadouken, NotSoDana, noudoit, noverd, Nox38, NuclearWinter, nukashimika, nuke-haus, NULL882, nullarmo, nyeogmi, Nylux, Nyranu, Nyxilath, och-och, OctoRocket, OldDanceJacket, OliverOtter, onesch, OneZerooo0, OnyxTheBrave, Orange-Winds, OrangeMoronage9622, osjarw, Ostaf, othymer, OttoMaticode, Owai-Seek, packmore, paige404, paigemaeforrest, pali6, Palladinium, Pangogie, panzer-iv1, partyaddict, patrikturi, PaulRitter, peccneck, Peptide90, peptron1, PeterFuto, PetMudstone, pewter-wiz, Pgriha, Phantom-Lily, pheenty, philingham, Phill101, phunnyguy, PilgrimViis, Pill-U, pinkbat5, Piras314, Pireax, Pissachu, pissdemon, PixeltheAertistContrib, PixelTheKermit, PJB3005, Plasmaguy, plinyvic, Plykiya, poeMota, pofitlo, pointer-to-null, pok27, poklj, PolterTzi, PoorMansDreams, PopGamer45, portfiend, potato1234x, PotentiallyTom, ProfanedBane, PROG-MohamedDwidar, prole0, Pronana, ProPandaBear, PrPleGoo, ps3moira, Pspritechologist, Psychpsyo, psykana, psykzz, PuceTint, pumkin69, PuroSlavKing, PursuitInAshes, Putnam3145, qrtDaniil, Quantum-cross, quatre, QueerNB, QuietlyWhisper, qwerltaz, Radezolid, RadioMull, Radosvik, Radrark, Rainbeon, Rainfey, Raitononai, Ramlik, RamZ, randy10122, Rane, Ranger6012, Rapidgame7, ravage123321, rbertoche, RedBookcase, Redfire1331, Redict, RedlineTriad, redmushie, RednoWCirabrab, ReeZer2, RemberBM, RemieRichards, RemTim, rene-descartes2021, Renlou, retequizzle, rich-dunne, RieBi, riggleprime, RIKELOLDABOSS, rinary1, Rinkashikachi, riolume, RobbyTheFish, robinthedragon, Rockdtben, Rohesie, rok-povsic, rokudara-sen, rolfero, RomanNovo, rosieposieeee, Roudenn, router, ruddygreat, RumiTiger, Ruzihm, S1rFl0, S1ss3l, Saakra, Sadie-silly, saga3152, saintmuntzer, Salex08, sam, samgithubaccount, Samuka-C, SaphireLattice, SapphicOverload, sarahon, sativaleanne, SaveliyM360, sBasalto, ScalyChimp, ScarKy0, schrodinger71, scrato, Scribbles0, scrivoy, scruq445, scuffedjays, ScumbagDog, SeamLesss, Segonist, semensponge, sephtasm, Serkket, sewerpig, SG6732, sh18rw, Shaddap1, ShadeAware, ShadowCommander, shadowtheprotogen546, shaeone, shampunj, shariathotpatrol, SharkSnake98, SignalWalker, siigiil, silicon14wastaken, Simyon264, sirdragooon, Sirionaut, Sk1tch, SkaldetSkaeg, Skarletto, Skrauz, Skyedra, SlamBamActionman, slarticodefast, Slava0135, sleepyyapril, slimmslamm, Slyfox333, snebl, snicket, sniperchance, Snowni, snowsignal, SolidusSnek, SonicHDC, SoulFN, SoulSloth, Soundwavesghost, southbridge-fur, sowelipililimute, Soydium, spacelizard, SpaceLizardSky, SpaceManiac, SpaceRox1244, SpaceyLady, spanky-spanky, Sparlight, spartak, SpartanKadence, spderman3333, SpeltIncorrectyl, Spessmann, SphiraI, SplinterGP, spoogemonster, sporekto, sporkyz, ssdaniel24, stalengd, stanberytrask, Stanislav4ix, StanTheCarpenter, starbuckss14, Stealthbomber16, stellar-novas, stewie523, stomf, stopbreaking, stopka-html, StrawberryMoses, Stray-Pyramid, strO0pwafel, Strol20, StStevens, Subversionary, sunbear-dev, supergdpwyl, superjj18, Supernorn, SweptWasTaken, Sybil, SYNCHRONIC, Szunti, t, Tainakov, takemysoult, tap, TaralGit, Taran, taurie, Tayrtahn, tday93, teamaki, TeenSarlacc, TekuNut, telyonok, TemporalOroboros, tentekal, terezi4real, Terraspark4941, texcruize, Tezzaide, TGODiamond, TGRCdev, tgrkzus, ThatGuyUSA, ThatOneGoblin25, thatrandomcanadianguy, TheArturZh, TheBlueYowie, thecopbennet, TheCze, TheDarkElites, thedraccx, TheEmber, TheIntoxicatedCat, thekilk, themias, theomund, TheProNoob678, TherapyGoth, TheShuEd, thetolbean, thevinter, TheWaffleJesus, Thinbug0, ThunderBear2006, timothyteakettle, TimrodDX, timurjavid, tin-man-tim, TiniestShark, Titian3, tk-a369, tkdrg, tmtmtl30, ToastEnjoyer, Toby222, TokenStyle, Tollhouse, Toly65, tom-leys, tomasalves8, Tomeno, Tonydatguy, topy, Tornado-Technology, tosatur, TotallyLemon, ToxicSonicFan04, Tr1bute, tropicalhibi, truepaintgit, Truoizys, Tryded, TsjipTsjip, Tunguso4ka, TurboTrackerss14, tyashley, Tyler-IN, TytosB, Tyzemol, UbaserB, ubis1, UBlueberry, UKNOWH, UltimateJester, Unbelievable-Salmon, underscorex5, UnicornOnLSD, Unisol, unusualcrow, Uriende, UristMcDorf, user424242420, Utmanarn, Vaaankas, valentfingerov, valquaint, Varen, Vasilis, VasilisThePikachu, veliebm, Velken, VelonacepsCalyxEggs, veprolet, VerinSenpai, veritable-calamity, Veritius, Vermidia, vero5123, Verslebas, Vexerot, viceemargo, VigersRay, violet754, Visne, vlados1408, VMSolidus, voidnull000, volotomite, volundr-, Voomra, Vordenburg, vorkathbruh, Vortebo, vulppine, wafehling, Warentan, WarMechanic, Watermelon914, weaversam8, wertanchik, whateverusername0, whatston3, widgetbeck, Will-Oliver-Br, Willhelm53, WilliamECrew, willicassi, Winkarst-cpu, wirdal, wixoaGit, WlarusFromDaSpace, wrexbe, wtcwr68, xkreksx, xprospero, xRiriq, YanehCheck, yathxyz, Ygg01, YotaXP, youarereadingthis, YoungThugSS14, Yousifb26, youtissoum, yunii, yuriykiss, YuriyKiss, zach-hill, Zadeon, zamp, Zandario, Zap527, Zealith-Gamer, ZelteHonor, zero, ZeroDiamond, ZeWaka, zHonys, zionnBE, ZNixian, Zokkie, ZoldorfTheWizard, zonespace27, Zylofan, Zymem, zzylex diff --git a/Resources/Locale/en-US/_CP14/alert-levels/alert-levels.ftl b/Resources/Locale/en-US/_CP14/alert-levels/alert-levels.ftl new file mode 100644 index 0000000000..3a74cfb21c --- /dev/null +++ b/Resources/Locale/en-US/_CP14/alert-levels/alert-levels.ftl @@ -0,0 +1,10 @@ +cp14-alert-level-announcement = Attention! Towns threat level is now {$name}! {$announcement} + +cp14-alert-level-safe = Safe +cp14-alert-level-safe-announcement = There is no threat to the town. Town folk may return to their duties safely. + +cp14-alert-level-minor = Minor +cp14-alert-level-minor-announcement = There is a minor threat to the town. Townsfolk should return to the town for their own safety. Guards are to be at their posts armed and combat ready. + +cp14-alert-level-major = Major +cp14-alert-level-major-announcement = There is a major threat to the town. Everyone must return to the town and protect it. diff --git a/Resources/Locale/en-US/_CP14/antag/antags.ftl b/Resources/Locale/en-US/_CP14/antag/antags.ftl index f6fcffaf3d..9207f1b0f8 100644 --- a/Resources/Locale/en-US/_CP14/antag/antags.ftl +++ b/Resources/Locale/en-US/_CP14/antag/antags.ftl @@ -1,3 +1,7 @@ cp14-roles-antag-vampire-name = Vampire cp14-roles-antag-vampire-objective = You are a parasite on the body of society, hated by those around you, burned by the sun, and eternally hungry. You need to feed on the blood of the sentient to survive. And finding those who will volunteer to be your feeder is not easy... -cp14-roles-antag-vampire-briefing = You are a parasite on society. It hates and fears you, but the blood of the living is your only food. Nature destroys you with sunlight, so you have to hide in the shadows. It's like the whole world is trying to destroy you, but your will to live is stronger than all of that. SURVIVE. That's all you have to do. \ No newline at end of file +cp14-roles-antag-vampire-briefing = You are a parasite on society. It hates and fears you, but the blood of the living is your only food. Nature destroys you with sunlight, so you have to hide in the shadows. It's like the whole world is trying to destroy you, but your will to live is stronger than all of that. SURVIVE. That's all you have to do. + +cp14-roles-antag-blood-moon-cursed-name = Cursed by the blood moon +cp14-roles-antag-blood-moon-cursed-objective = Some creatures lose their minds, and can commit unthinkable atrocities when a bloody blood moon rises from behind the horizon ... +cp14-roles-antag-blood-moon-cursed-briefing = The blood moon takes control of your thoughts. Your bloodlust awakens and the voices in your head say only one thing: Kill, kill, kill... kill while the moon is in its prime. Kill before the sun restores your sanity. \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/construction/guard-bell.ftl b/Resources/Locale/en-US/_CP14/construction/guard-bell.ftl new file mode 100644 index 0000000000..9365e0c0cc --- /dev/null +++ b/Resources/Locale/en-US/_CP14/construction/guard-bell.ftl @@ -0,0 +1,2 @@ +cp14-guard-bell-menu-title = Guard Bell +cp14-guard-bell-alert-button = Change the towns threat level. \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/demiplane/demiplane.ftl b/Resources/Locale/en-US/_CP14/demiplane/demiplane.ftl index 8b76b39390..89a4454cf1 100644 --- a/Resources/Locale/en-US/_CP14/demiplane/demiplane.ftl +++ b/Resources/Locale/en-US/_CP14/demiplane/demiplane.ftl @@ -11,4 +11,7 @@ cp14-round-end = The demiplane link crystal was completely discharged. The conne cp14-demiplane-echoes = Echoes of voices -cp14-demiplane-countdown = The Demiplane is beginning to collapse! You have {$duration} minutes to escape! \ No newline at end of file +cp14-demiplane-countdown = The Demiplane is beginning to collapse! You have {$duration} minutes to escape! + +cp14-demiplane-revoke-item = The bound key has been destroyed! +cp14-demiplane-revoke-map = The process of destroying the bound demiplane has been initiated! \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/demiplane/locations.ftl b/Resources/Locale/en-US/_CP14/demiplane/locations.ftl index 0b130d6c74..e089a27164 100644 --- a/Resources/Locale/en-US/_CP14/demiplane/locations.ftl +++ b/Resources/Locale/en-US/_CP14/demiplane/locations.ftl @@ -1,4 +1,4 @@ -cp14-demiplane-location-cave = Dark caves +cp14-demiplane-location-cave = Caves cp14-demiplane-location-cave-grass = Overgrown caves cp14-demiplane-location-cave-magma = Flaming caves cp14-demiplane-location-grassland-island = Green Island diff --git a/Resources/Locale/en-US/_CP14/demiplane/map_ui.ftl b/Resources/Locale/en-US/_CP14/demiplane/map_ui.ftl new file mode 100644 index 0000000000..87036e4ee5 --- /dev/null +++ b/Resources/Locale/en-US/_CP14/demiplane/map_ui.ftl @@ -0,0 +1,15 @@ +cp14-demiplane-map-title = Demiplane navigation map + +cp14-demiplane-map-eject = Extract coordinates +cp14-demiplane-map-eject-tooltip = Extract the coordinates of the demiplane into physical form, allowing you to open a passageway into it at any time. + +cp14-demiplane-map-revoke = Cut the link +cp14-demiplane-map-revoke-tooltip = You cut the connection to the selected demiplane. This either instantly removes the demiplane key or starts a 2-minute process to destroy the demiplane. + +cp14-demiplane-map-add-level = [color=red]Difficulty +{$count}[/color] +cp14-demiplane-map-add-level-tooltip = This demiplane has been opened several times already, and this point in space is becoming more difficult and unstable. + +cp14-demiplane-map-status-blocked = [color=red]This demiplane cannot be opened: You must explore any nearby demiplane to unlock the coordinates.[/color] +cp14-demiplane-map-status-allowed = [color=green]The demiplane is available for exploration.[/color] +cp14-demiplane-map-status-used = [color=yellow]The coordinates of this demiplane are already in use. It is not possible to create a copy.[/color] +cp14-demiplane-map-status-scanned = [color=purple]The demiplane core has been destroyed and successfully scanned. Demiplane reopening is impossible, coordinates of neighboring demiplanes are available for research.[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/demiplane/modifiers.ftl b/Resources/Locale/en-US/_CP14/demiplane/modifiers.ftl index 662b7a89d6..a96dfea1f5 100644 --- a/Resources/Locale/en-US/_CP14/demiplane/modifiers.ftl +++ b/Resources/Locale/en-US/_CP14/demiplane/modifiers.ftl @@ -10,11 +10,10 @@ cp14-modifier-wild-sage = wild Sage cp14-modifier-lumisroom = lumishrooms cp14-modifier-explosive = explosive mines cp14-modifier-ruins = ancient ruins -cp14-modifier-xeno = xenomorphs -cp14-modifier-zombie = swarms of undead +cp14-modifier-zombie = zombies cp14-modifier-slime = slimes cp14-modifier-skeleton = sentient skeletons -cp14-modifier-dyno = prehistoric fauna +cp14-modifier-dyno = dynos cp14-modifier-mole = predatory moles cp14-modifier-watcher = watchers cp14-modifier-rabbits = rabbits @@ -23,7 +22,6 @@ cp14-modifier-invisible-whistler = invisible whistlers cp14-modifier-sheeps = sheeps cp14-modifier-chasm = bottomless chasms cp14-modifier-air-lily = air lilies -cp14-modifier-time-limit-10 = temporary disintegration (10 minutes) cp14-modifier-shadow-kudzu = spreading astral haze cp14-modifier-night = darkness diff --git a/Resources/Locale/en-US/_CP14/discord/queue.ftl b/Resources/Locale/en-US/_CP14/discord/queue.ftl index ea332ad7ca..24b4f443ee 100644 --- a/Resources/Locale/en-US/_CP14/discord/queue.ftl +++ b/Resources/Locale/en-US/_CP14/discord/queue.ftl @@ -2,4 +2,4 @@ queue-title = Queue queue-quit = Disconnect queue-position = Position queue-total = Total -queue-priority-join = Priority join \ No newline at end of file +queue-priority-join = About priority join \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/gameTicking/game-preserts.ftl b/Resources/Locale/en-US/_CP14/gameTicking/game-preserts.ftl index a3cb69bbb9..44b3fdf9b5 100644 --- a/Resources/Locale/en-US/_CP14/gameTicking/game-preserts.ftl +++ b/Resources/Locale/en-US/_CP14/gameTicking/game-preserts.ftl @@ -1,2 +1,5 @@ cp14-gamepreset-resource-harvest = Resource Collection -cp14-gamepreset-resource-harvest-desc = Your expedition has been sent to a dangerous place to collect valuable natural resources. Get the necessary materials and return. \ No newline at end of file +cp14-gamepreset-resource-harvest-desc = Your expedition has been sent to a dangerous place to collect valuable natural resources. Get the necessary materials and return. + +cp14-judge-night-title = Judgment Night +cp14-judge-night-desc = Once a decade, a blood moon rises in the heavens, twisting minds and blackening hearts. On this night, brother goes against brother, blood is shed and terrible crimes are committed. Will the curse of the moon consume you tonight? Will you survive this night of judgment? \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/gameTicking/gameRules/blood-moon.ftl b/Resources/Locale/en-US/_CP14/gameTicking/gameRules/blood-moon.ftl new file mode 100644 index 0000000000..30683c7f6a --- /dev/null +++ b/Resources/Locale/en-US/_CP14/gameTicking/gameRules/blood-moon.ftl @@ -0,0 +1,6 @@ +cp14-bloodmoon-raising = The moon in the sky is stained with blood. The next night will be terrible. +cp14-bloodmoon-start = The blood moon shines in full force, enslaving minds. +cp14-bloodmoon-end = The blood moon sets over the horizon, losing its power. + +cp14-bloodmoon-curse-removed = The curse of the blood moon is dispelled. +cp14-bloodmoon-curse-examined = [color=red]The aura of the blood moon hovers around this creature. Be careful, for his mind is unstable.[/color] \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl b/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl index 84c2be1f88..c2efdd1686 100644 --- a/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl +++ b/Resources/Locale/en-US/_CP14/loadouts/loadout.ftl @@ -15,6 +15,10 @@ cp14-loadout-general-spells = Spells cp14-loadout-skill-tree = Specialization cp14-loadout-general-keys = Keys +# Adventurer + +cp14-loadout-adventurers-equip = Advenrurer weapons + # Apprentice cp14-loadout-apprentice-bundle = Apprentice bundle @@ -43,12 +47,8 @@ cp14-loadout-guard-pants = Guard's pants cp14-loadout-guard-shirt = Guard's shirt cp14-loadout-guard-spells = Guard's spells -# Trade guild - -cp14-loadout-commandant-head = Commandant's hat -cp14-loadout-commandant-cloak = Commandant's cloak - cp14-loadout-merchant-head = Merchant's hat +cp14-loadout-merchant-cloak = Merchant's cloak cp14-loadout-merchant-outer = Merchant's waistcoat cp14-loadout-merchant-shirt = Merchant's shirt cp14-loadout-merchant-pants = Merchant's pants diff --git a/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl b/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl index 5b05ec61d5..aeeb5c0b53 100644 --- a/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl +++ b/Resources/Locale/en-US/_CP14/lockKey/locks-types.ftl @@ -35,10 +35,9 @@ cp14-lock-shape-personalhouse14 = house №14 cp14-lock-shape-personalhouse15 = house №15 cp14-lock-shape-personalhouse16 = house №16 -cp14-lock-shaper-guard-entrance = barracks, entrance -cp14-lock-shaper-guard-staff = barracks -cp14-lock-shaper-guard-commander = guardhouse -cp14-lock-shaper-guard-weapon-storage = weapons storage +cp14-lock-shaper-guard-city-gate = city gate +cp14-lock-shaper-guard-barracks = barracks +cp14-lock-shaper-guard-commander = guard commander house cp14-lock-shape-guildmaster = guildmaster cp14-lock-shape-demiplane-crystal = demiplane crystal \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/magicEnergy/magic-spells.ftl b/Resources/Locale/en-US/_CP14/magicEnergy/magic-spells.ftl index 376c1b3545..856cf0a331 100644 --- a/Resources/Locale/en-US/_CP14/magicEnergy/magic-spells.ftl +++ b/Resources/Locale/en-US/_CP14/magicEnergy/magic-spells.ftl @@ -8,6 +8,7 @@ cp14-magic-spell-not-enough-mana-cast-warning-2 = Your hands are shaking... cp14-magic-spell-not-enough-mana-cast-warning-3 = Your throat starts to lump... cp14-magic-spell-not-enough-mana-cast-warning-4 = Your head becomes heavy... +cp14-magic-type = Type cp14-magic-verbal-aspect = Requires the ability to speak cp14-magic-somatic-aspect = Requires a free hand: cp14-magic-music-aspect = You must play a musical instrument @@ -17,4 +18,8 @@ cp14-magic-spell-need-somatic-component = You don't have your hands free. cp14-magic-spell-stamina-not-enough = You don't have the energy to do it. cp14-magic-staminacost = Stamina cost -cp14-magic-spell-pacified = It could hurt someone! \ No newline at end of file +cp14-magic-spell-pacified = It could hurt someone! + +cp14-magic-spell-target-not-mob = The target must be a living thing! +cp14-magic-spell-target-dead = Can't be used on the dead! +cp14-magic-spell-target-alive = Can't be used on the living! \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/magicEnergy/magic-types.ftl b/Resources/Locale/en-US/_CP14/magicEnergy/magic-types.ftl index 2ba3c95ea1..caa5e6cf69 100644 --- a/Resources/Locale/en-US/_CP14/magicEnergy/magic-types.ftl +++ b/Resources/Locale/en-US/_CP14/magicEnergy/magic-types.ftl @@ -22,4 +22,4 @@ cp14-essence-magic = Praecantatio cp14-magic-manacost = Manacost cp14-magic-essence = Magic type -cp14-magic-essence-title = From here, essences can be extracted: \ No newline at end of file +cp14-magic-essence-title = From here, essences can be extracted: diff --git a/Resources/Locale/en-US/_CP14/markings/goblin-hair.ftl b/Resources/Locale/en-US/_CP14/markings/goblin-hair.ftl deleted file mode 100644 index 3d61300da5..0000000000 --- a/Resources/Locale/en-US/_CP14/markings/goblin-hair.ftl +++ /dev/null @@ -1,3 +0,0 @@ -marking-CP14GoblinHairAntenna = Unruly Strands -marking-CP14GoblinHairBedHead2 = Bedhead 2 -marking-CP14GoblinHairDoubleBun = Double Bun \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/markings/tiefling-horns.ftl b/Resources/Locale/en-US/_CP14/markings/tiefling-horns.ftl index f9aca6944b..5d8e29ffeb 100644 --- a/Resources/Locale/en-US/_CP14/markings/tiefling-horns.ftl +++ b/Resources/Locale/en-US/_CP14/markings/tiefling-horns.ftl @@ -7,4 +7,5 @@ marking-CP14TieflingHorns5 = The Devil marking-CP14TieflingHorns5Broken = Broken Devil marking-CP14TieflingHorns6 = Lamb marking-CP14TieflingHorns7 = Horny horns -marking-CP14TieflingHorns8 = Crown \ No newline at end of file +marking-CP14TieflingHorns8 = Crown +marking-CP14TieflingHorns9 = Unicorn \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/reagents/meta/thaumaturgy/essence.ftl b/Resources/Locale/en-US/_CP14/reagents/meta/thaumaturgy/essence.ftl index b5ec8288f3..e6d8f0c5dd 100644 --- a/Resources/Locale/en-US/_CP14/reagents/meta/thaumaturgy/essence.ftl +++ b/Resources/Locale/en-US/_CP14/reagents/meta/thaumaturgy/essence.ftl @@ -40,7 +40,7 @@ cp14-reagent-desc-essence-poison = The liquid embodiment of the elements of pois cp14-reagent-name-essence-void = Vacuos essence cp14-reagent-desc-essence-void = The liquid embodiment of the elements of emptiness, obscurity, and secrecy. - + cp14-reagent-name-essence-life = Victus essence cp14-reagent-desc-essence-life = The liquid embodiment of the elements of life, food, and sustenance. @@ -51,8 +51,3 @@ cp14-reagent-desc-essence-crystal = The liquid embodiment of the elements of gla cp14-reagent-name-essence-magic = Praecantatio essence cp14-reagent-desc-essence-magic = The liquid embodiment of the elements of magic, enchantment and sorcery. - - - - - diff --git a/Resources/Locale/en-US/_CP14/recipe/title.ftl b/Resources/Locale/en-US/_CP14/recipe/title.ftl index 521dc40e6d..c68c080969 100644 --- a/Resources/Locale/en-US/_CP14/recipe/title.ftl +++ b/Resources/Locale/en-US/_CP14/recipe/title.ftl @@ -1 +1,2 @@ cp14-recipe-title-meat = various pieces of raw meat +cp14-recipe-title-energy-crystal = energycrystals diff --git a/Resources/Locale/en-US/_CP14/skill/requirements.ftl b/Resources/Locale/en-US/_CP14/skill/requirements.ftl index c627b45b0e..e9756629bf 100644 --- a/Resources/Locale/en-US/_CP14/skill/requirements.ftl +++ b/Resources/Locale/en-US/_CP14/skill/requirements.ftl @@ -1,2 +1,4 @@ -cp14-skill-req-prerequisite = Skill "{$name}" must be learned. -cp14-skill-req-species = Available only to species "{$name}" \ No newline at end of file +cp14-skill-req-prerequisite = Skill "{$name}" must be learned +cp14-skill-req-species = You must be the race of “{$name}” +cp14-skill-req-researched = A study needs to be done on the research table +cp14-skill-req-impossible = Unable to explore during a round at the current moment \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/skill/skill_issue.ftl b/Resources/Locale/en-US/_CP14/skill/skill_issue.ftl new file mode 100644 index 0000000000..b9c6cb1c8c --- /dev/null +++ b/Resources/Locale/en-US/_CP14/skill/skill_issue.ftl @@ -0,0 +1,3 @@ +cp14-skill-issue-title = In order to use these weapons effectively, you need to have skill: + +cp14-skill-issue = Skill issue! \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/skill/skill_meta.ftl b/Resources/Locale/en-US/_CP14/skill/skill_meta.ftl new file mode 100644 index 0000000000..50644b7e6e --- /dev/null +++ b/Resources/Locale/en-US/_CP14/skill/skill_meta.ftl @@ -0,0 +1,34 @@ +cp14-skill-mastery-desc = Mastering the art of this weapon, you will no longer clumsily drop it or cut yourself. + +cp14-skill-sword-mastery-name = Sword mastery +cp14-skill-parier-mastery-name = Rapier mastery +cp14-skill-skimitar-mastery-name = Skimitar mastery + +cp14-skill-pyro-t1-name = Basic pyrokinetics +cp14-skill-pyro-t2-name = Advanced pyrokinetics +cp14-skill-pyro-t3-name = Expert pyrokinetics + +cp14-skill-illusion-t1-name = Basic illusion +cp14-skill-illusion-t2-name = Advanced illusion +cp14-skill-illusion-t3-name = Expert illusion + +cp14-skill-water-t1-name = Basic hydrosophistry +cp14-skill-water-t2-name = Advanced hydrosophistry +cp14-skill-water-t3-name = Expert hydrosophistry + +cp14-skill-life-t1-name = Basic lifecation +cp14-skill-life-t2-name = Advanced lifecation +cp14-skill-life-t3-name = Expert lifecation + +cp14-skill-meta-t1-name = Basic metamagic +cp14-skill-meta-t2-name = Advanced metamagic +cp14-skill-meta-t3-name = Expert metamagic + +cp14-skill-alchemy-vision-name = Alchemist's Vision +cp14-skill-alchemy-vision-desc = You are able to understand what liquids are in containers by visually analyzing them. + +cp14-skill-copper-melt-name = Copper melting +cp14-skill-iron-melt-name = Iron melting +cp14-skill-gold-melt-name = Gold melting +cp14-skill-mithril-melt-name = Mithril melting +cp14-skill-glass-melt-name = Glasswork \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/skill/skill_tree.ftl b/Resources/Locale/en-US/_CP14/skill/skill_tree.ftl index c4a72617b6..a29e6edd76 100644 --- a/Resources/Locale/en-US/_CP14/skill/skill_tree.ftl +++ b/Resources/Locale/en-US/_CP14/skill/skill_tree.ftl @@ -1,22 +1,36 @@ cp14-skill-tree-blaksmithing-name = Blacksmithing cp14-skill-tree-blaksmithing-desc = Explore and create new items from metal. -cp14-skill-tree-pyrokinetic-name = Pyrokinetic +cp14-skill-tree-pyrokinetic-name = Pyrokinesis cp14-skill-tree-pyrokinetic-desc = Master the magic of fire, allowing you to warm, illuminate, and destroy. -cp14-skill-tree-hydrosophistry-name = Hydrosophistry +cp14-skill-tree-hydrosophistry-name = Hydrosophy cp14-skill-tree-hydrosophistry-desc = Master the magic of water and frost to create items from water and ice, and freeze enemies. cp14-skill-tree-metamagic-name = Metamagic cp14-skill-tree-metamagic-desc = Explore ways to subtly manipulate magic to affect spells and items. -cp14-skill-tree-illusion-name = Illusoriness +cp14-skill-tree-illusion-name = Illusion cp14-skill-tree-illusion-desc = Explore the nature of light to create illusions, light sources and shadows. -cp14-skill-tree-healing-name = Lifecation +cp14-skill-tree-healing-name = Vivification cp14-skill-tree-healing-desc = Explore the ways in which magic affects living creatures. +cp14-skill-tree-dimension-name = Dimensionomy +cp14-skill-tree-dimension-desc = Immerse yourself in the nature of space and void. + # Body -cp14-skill-tree-atlethic-name = Atlethic +cp14-skill-tree-atlethic-name = Athletic cp14-skill-tree-atlethic-desc = Develop your body by pushing the boundaries of what is available. + +cp14-skill-tree-martial-name = Martial arts +cp14-skill-tree-martial-desc = Master the secrets of deadly weapons, or make your own body a weapon. + +# Job + +cp14-skill-tree-thaumaturgy-name = Alchemy +cp14-skill-tree-thaumaturgy-desc = The art of creating magical potions that can kill, raise from the dead, or turn creatures into sheep. + +cp14-skill-tree-blacksmithing-name = Blacksmithing +cp14-skill-tree-blacksmithing-desc = The art of turning metal into various useful things. \ No newline at end of file diff --git a/Resources/Locale/en-US/_CP14/skill/ui.ftl b/Resources/Locale/en-US/_CP14/skill/ui.ftl index 2ab599bc22..c7a86baaa5 100644 --- a/Resources/Locale/en-US/_CP14/skill/ui.ftl +++ b/Resources/Locale/en-US/_CP14/skill/ui.ftl @@ -5,6 +5,13 @@ cp14-skill-info-title = Skills cp14-game-hud-open-skill-menu-button-tooltip = Skill tree cp14-skill-menu-learn-button = Learn skill -cp14-skill-menu-learncost = [color=yellow]Points required:[/color] -cp14-skill-menu-skillpoints = Experience points: -cp14-skill-menu-level = Level: \ No newline at end of file +cp14-skill-menu-learncost = [color=yellow]Memory required:[/color] +cp14-skill-menu-level = Memory: +cp14-skill-menu-free = [color=green]This skill is innate to your character, and wastes no memory points![/color] + +cp14-research-table-title = Research table +cp14-research-recipe-list = Research costs: +cp14-research-craft = Research + +cp14-skill-desc-add-mana = Increases your character's mana amount by {$mana}. +cp14-skill-desc-unlock-recipes = Opens up the possibility of crafting: \ No newline at end of file diff --git a/Resources/Locale/en-US/access/components/genpop.ftl b/Resources/Locale/en-US/access/components/genpop.ftl new file mode 100644 index 0000000000..8964467688 --- /dev/null +++ b/Resources/Locale/en-US/access/components/genpop.ftl @@ -0,0 +1,28 @@ +genpop-prisoner-id-expire = You have served your sentence! You may now exit prison through the turnstiles and collect your belongings. +genpop-prisoner-id-popup-not-served = Sentence not yet served! + +genpop-prisoner-id-crime-default = [Redacted] +genpop-prisoner-id-examine-wait = You have served {$minutes} {$minutes -> + [1] minute + *[other] minutes +} {$seconds} {$seconds -> + [1] second + *[other] seconds +} of your {$sentence} minute sentence for {$crime}. +genpop-prisoner-id-examine-wait-perm = You are serving a permanent sentence for {$crime}. +genpop-prisoner-id-examine-served = You have served your sentence for {$crime}. + +genpop-locker-name-default = prisoner closet +genpop-locker-desc-default = It's a secure locker for an inmate's personal belongings during their time in prison. + +genpop-locker-name-used = prisoner closet ({$name}) +genpop-locker-desc-used = It's a secure locker for an inmate's personal belongings during their time in prison. It contains the personal effects of {$name}. + +genpop-locker-ui-label-name = [bold]Convict Name:[/bold] +genpop-locker-ui-label-sentence = [bold]Sentence length in minutes:[/bold] [color=gray](0 for perma)[/color] +genpop-locker-ui-label-crime = [bold]Crime:[/bold] +genpop-locket-ui-button-done = Done + +genpop-locker-action-end-early = End Sentence Early +genpop-locker-action-clear-id = Clear ID +genpop-locker-action-reset-sentence = Reset Sentence ({NATURALFIXED($percent, 0)}% served) diff --git a/Resources/Locale/en-US/access/components/id-card-console-component.ftl b/Resources/Locale/en-US/access/components/id-card-console-component.ftl index be5d3f0bc3..7793b34846 100644 --- a/Resources/Locale/en-US/access/components/id-card-console-component.ftl +++ b/Resources/Locale/en-US/access/components/id-card-console-component.ftl @@ -10,3 +10,4 @@ id-card-console-window-job-selection-label = Job presets (sets department and jo access-id-card-console-component-no-hands-error = You have no hands. id-card-console-privileged-id = Privileged ID id-card-console-target-id = Target ID +id-card-console-damaged = Structural integrity compromised, ejecting contents. diff --git a/Resources/Locale/en-US/administration/admin-alerts.ftl b/Resources/Locale/en-US/administration/admin-alerts.ftl index dd6ea2d892..931c3766a7 100644 --- a/Resources/Locale/en-US/administration/admin-alerts.ftl +++ b/Resources/Locale/en-US/administration/admin-alerts.ftl @@ -1,3 +1,4 @@ admin-alert-shared-connection = {$player} is sharing a connection with {$otherCount} connected player(s): {$otherList} admin-alert-ipintel-blocked = {$player} was rejected from joining due to their IP having a {TOSTRING($percent, "P2")} confidence of being a VPN/Datacenter. admin-alert-ipintel-warning = {$player} IP has a {TOSTRING($percent, "P2")} confidence of being a VPN/Datacenter. Please watch them. +admin-alert-antag-label = {$message} [ANTAG: {$name}, {$subtype}] diff --git a/Resources/Locale/en-US/administration/ui/player-panel.ftl b/Resources/Locale/en-US/administration/ui/player-panel.ftl index cfb014948d..f2d89fe2c2 100644 --- a/Resources/Locale/en-US/administration/ui/player-panel.ftl +++ b/Resources/Locale/en-US/administration/ui/player-panel.ftl @@ -21,3 +21,4 @@ player-panel-delete = Delete player-panel-rejuvenate = Rejuvenate player-panel-false = False player-panel-true = True +player-panel-follow = Follow diff --git a/Resources/Locale/en-US/administration/ui/tabs/admin-tab/player-actions-window.ftl b/Resources/Locale/en-US/administration/ui/tabs/admin-tab/player-actions-window.ftl index 6af6a3ae20..62b253e3f5 100644 --- a/Resources/Locale/en-US/administration/ui/tabs/admin-tab/player-actions-window.ftl +++ b/Resources/Locale/en-US/administration/ui/tabs/admin-tab/player-actions-window.ftl @@ -8,3 +8,4 @@ admin-player-actions-window-shuttle = (Re)call Shuttle admin-player-actions-window-admin-logs = Admin Logs admin-player-actions-window-admin-notes = Admin Notes admin-player-actions-window-admin-fax = Admin Fax +admin-player-actions-window-admin-chat = Admin Chat diff --git a/Resources/Locale/en-US/atmos/firelock-component.ftl b/Resources/Locale/en-US/atmos/firelock-component.ftl index 81f7e58462..aab0fd849e 100644 --- a/Resources/Locale/en-US/atmos/firelock-component.ftl +++ b/Resources/Locale/en-US/atmos/firelock-component.ftl @@ -1,4 +1,4 @@ firelock-component-is-holding-pressure-message = A gush of air blows in your face... Maybe you should reconsider. firelock-component-is-holding-fire-message = A gush of warm air blows in your face... Maybe you should reconsider. -firelock-component-examine-pressure-warning = The [color=red]extreme pressure[/color] differential warning is active. +firelock-component-examine-pressure-warning = The [color=cyan]extreme pressure[/color] differential warning is active. firelock-component-examine-temperature-warning = The [color=red]extreme temperature[/color] warning is active. diff --git a/Resources/Locale/en-US/cargo/bounties.ftl b/Resources/Locale/en-US/cargo/bounties.ftl index 3a68bc07c5..f5705b0e3a 100644 --- a/Resources/Locale/en-US/cargo/bounties.ftl +++ b/Resources/Locale/en-US/cargo/bounties.ftl @@ -79,7 +79,7 @@ bounty-description-carrot-fries = Night sight can mean life or death! A shipment bounty-description-carp = Admiral Pavlov has gone on strike ever since Central Command confiscated her "pet." She is demanding a space carp as a replacement, dead or alive. bounty-description-clown-costume = Due to a recent issue at a space carp petting zoo, we've unfortunately lost Bonobobonobo the Clown. Send us a new costume so the kids can see him once more. bounty-description-corn = After the recent destruction of Space Ohio, our corn imports are down 80%. Send us some so we can make up for it. -bounty-description-crayon = Dr Jones' kid ate all our crayons again. Please send us yours. +bounty-description-crayon = Dr Jones's kid ate all our crayons again. Please send us yours. bounty-description-cuban-carp = To celebrate the birth of Castro XXVII, ship one cuban carp to CentComm. bounty-description-donk-pocket = Consumer safety recall: Warning. Donk-Pockets manufactured in the past year contain hazardous lizard biomatter. Return units to CentComm immediately. bounty-description-donut = CentComm's security forces are facing heavy losses against the Syndicate. Ship donuts to raise morale. diff --git a/Resources/Locale/en-US/cargo/cargo-accounts.ftl b/Resources/Locale/en-US/cargo/cargo-accounts.ftl new file mode 100644 index 0000000000..fbad9cda9b --- /dev/null +++ b/Resources/Locale/en-US/cargo/cargo-accounts.ftl @@ -0,0 +1,17 @@ +cargo-account-cargo-name = Station Supply Budget +cargo-account-cargo-code = SUP + +cargo-account-engineering-name = Maintenance Savings +cargo-account-engineering-code = ENG + +cargo-account-medical-name = Crew Healthcare Fund +cargo-account-medical-code = MED + +cargo-account-science-name = Interstellar Development Funding +cargo-account-science-code = RND + +cargo-account-security-name = Station Defense Reserves +cargo-account-security-code = SEC + +cargo-account-service-name = Collective Service Holdings +cargo-account-service-code = SRV diff --git a/Resources/Locale/en-US/cargo/cargo-console-component.ftl b/Resources/Locale/en-US/cargo/cargo-console-component.ftl index 7114924c02..22e75ae6dc 100644 --- a/Resources/Locale/en-US/cargo/cargo-console-component.ftl +++ b/Resources/Locale/en-US/cargo/cargo-console-component.ftl @@ -1,10 +1,11 @@ ## UI cargo-console-menu-title = Cargo request console -cargo-console-menu-account-name-label = Account name:{" "} +cargo-console-menu-account-name-label = Account:{" "} cargo-console-menu-account-name-none-text = None +cargo-console-menu-account-name-format = [bold][color={$color}]{$name}[/color][/bold] [font="Monospace"]\[{$code}\][/font] cargo-console-menu-shuttle-name-label = Shuttle name:{" "} cargo-console-menu-shuttle-name-none-text = None -cargo-console-menu-points-label = Spesos:{" "} +cargo-console-menu-points-label = Balance:{" "} cargo-console-menu-points-amount = ${$amount} cargo-console-menu-shuttle-status-label = Shuttle status:{" "} cargo-console-menu-shuttle-status-away-text = Away @@ -20,6 +21,16 @@ cargo-console-menu-populate-categories-all-text = All cargo-console-menu-populate-orders-cargo-order-row-product-name-text = {$productName} (x{$orderAmount}) by {$orderRequester} cargo-console-menu-cargo-order-row-approve-button = Approve cargo-console-menu-cargo-order-row-cancel-button = Cancel +cargo-console-menu-tab-title-orders = Orders +cargo-console-menu-tab-title-funds = Transfers +cargo-console-menu-account-action-transfer-limit = [bold]Transfer Limit:[/bold] ${$limit} +cargo-console-menu-account-action-transfer-limit-unlimited-notifier = [color=gold](Unlimited)[/color] +cargo-console-menu-account-action-select = [bold]Account Action:[/bold] +cargo-console-menu-account-action-amount = [bold]Amount:[/bold] $ +cargo-console-menu-account-action-button = Transfer +cargo-console-menu-toggle-account-lock-button = Toggle Transfer Limit +cargo-console-menu-account-action-option-withdraw = Withdraw Cash +cargo-console-menu-account-action-option-transfer = Transfer Funds to {$code} # Orders cargo-console-order-not-allowed = Access not allowed @@ -31,15 +42,21 @@ cargo-console-insufficient-funds = Insufficient funds (require {$cost}) cargo-console-unfulfilled = No room to fulfill order cargo-console-trade-station = Sent to {$destination} cargo-console-unlock-approved-order-broadcast = [bold]{$productName} x{$orderAmount}[/bold], which cost [bold]{$cost}[/bold], was approved by [bold]{$approver}[/bold] +cargo-console-fund-withdraw-broadcast = [bold]{$name} withdrew {$amount} spesos from {$name1} \[{$code1}\] +cargo-console-fund-transfer-broadcast = [bold]{$name} transferred {$amount} spesos from {$name1} \[{$code1}\] to {$name2} \[{$code2}\][/bold] +cargo-console-fund-transfer-user-unknown = Unknown +cargo-console-paper-reason-default = None +cargo-console-paper-approver-default = Self cargo-console-paper-print-name = Order #{$orderNumber} -cargo-console-paper-print-text = - Order #{$orderNumber} - Item: {$itemName} - Quantity: {$orderQuantity} - Requested by: {$requester} - Reason: {$reason} - Approved by: {$approver} +cargo-console-paper-print-text = [head=2]Order #{$orderNumber}[/head] + {"[bold]Item:[/bold]"} {$itemName} (x{$orderQuantity}) + {"[bold]Requested by:[/bold]"} {$requester} + + {"[head=3]Order Information[/head]"} + {"[bold]Payer[/bold]:"} {$account} [font="Monospace"]\[{$accountcode}\][/font] + {"[bold]Approved by:[/bold]"} {$approver} + {"[bold]Reason:[/bold]"} {$reason} # Cargo shuttle console cargo-shuttle-console-menu-title = Cargo shuttle console @@ -47,3 +64,21 @@ cargo-shuttle-console-station-unknown = Unknown cargo-shuttle-console-shuttle-not-found = Not found cargo-shuttle-console-organics = Detected organic lifeforms on the shuttle cargo-no-shuttle = No cargo shuttle found! + +# Funding allocation console +cargo-funding-alloc-console-menu-title = Funding Allocation Console +cargo-funding-alloc-console-label-account = [bold]Account[/bold] +cargo-funding-alloc-console-label-code = [bold] Code [/bold] +cargo-funding-alloc-console-label-balance = [bold] Balance [/bold] +cargo-funding-alloc-console-label-cut = [bold] Revenue Division (%) [/bold] + +cargo-funding-alloc-console-label-primary-cut = Cargo's cut of funds from non-lockbox sources (%): +cargo-funding-alloc-console-label-lockbox-cut = Cargo's cut of funds from lockbox sales (%): + +cargo-funding-alloc-console-label-help-non-adjustible = Cargo receives {$percent}% of profits from non-lockbox sales. The rest is split as specified below: +cargo-funding-alloc-console-label-help-adjustible = Remaining funds from non-lockbox sources are distributed as specified below: +cargo-funding-alloc-console-button-save = Save Changes +cargo-funding-alloc-console-label-save-fail = [bold]Revenue Divisions Invalid![/bold] [color=red]({$pos -> + [1] + + *[-1] - +}{$val}%)[/color] diff --git a/Resources/Locale/en-US/character-info/components/character-info-component.ftl b/Resources/Locale/en-US/character-info/components/character-info-component.ftl index b515c36c5a..dd2f848f77 100644 --- a/Resources/Locale/en-US/character-info/components/character-info-component.ftl +++ b/Resources/Locale/en-US/character-info/components/character-info-component.ftl @@ -1,4 +1,4 @@ character-info-title = Character -character-info-roles-antagonist-text = Antagonist Roles +character-info-roles-antagonist-text = You have no special Roles character-info-objectives-label = Objectives character-info-no-profession = No Profession diff --git a/Resources/Locale/en-US/chat/ui/chat-window.ftl b/Resources/Locale/en-US/chat/ui/chat-window.ftl new file mode 100644 index 0000000000..024bed6efa --- /dev/null +++ b/Resources/Locale/en-US/chat/ui/chat-window.ftl @@ -0,0 +1,7 @@ +chat-window-title = Chat + +cmd-chatwindow-desc = Additional Chat Window +cmd-chatwindow-help = Usage: chatwindow + +cmd-achatwindow-desc = Admin Chat Window +cmd-achatwindow-help = Usage: achatwindow diff --git a/Resources/Locale/en-US/commands/toolshed-commands.ftl b/Resources/Locale/en-US/commands/toolshed-commands.ftl index c53c825eb3..3a620b049b 100644 --- a/Resources/Locale/en-US/commands/toolshed-commands.ftl +++ b/Resources/Locale/en-US/commands/toolshed-commands.ftl @@ -43,11 +43,11 @@ command-description-stations-largestgrid = command-description-stations-rerollBounties = Clears all the current bounties for the station and gets a new selection. command-description-stationevent-lsprob = - Lists the probability of different station events occuring out of the entire pool. -command-description-stationevent-lsprobtime = - Lists the probability of different station events occuring based on the specified length of a round. + Given a BasicStationEventScheduler prototype, lists the probability of different station events occuring out of the entire pool with current conditions. +command-description-stationevent-lsprobtheoretical = + Given a BasicStationEventScheduler prototype, player count, and round time, lists the probability of different station events occuring based on the specified number of players and round time. command-description-stationevent-prob = - Returns the probability of a single station event occuring out of the entire pool. + Given a BasicStationEventScheduler prototype and an event prototype, returns the probability of a single station event occuring out of the entire pool with current conditions. command-description-admins-active = Returns a list of active admins. command-description-admins-all = @@ -83,4 +83,14 @@ command-description-mind-control = command-description-addaccesslog = Adds an access log to this entity. Do note that this bypasses the log's default limit and pause check. command-description-stationevent-simulate = - Simulates N number of rounds in which events will occur and prints the occurrences of every event after. + Given a BasicStationEventScheduler prototype, N Rounds, N Players, mean round end, and stddev of round end, Simulates N number of rounds in which events will occur and prints the occurrences of every event after. +command-description-xenoartifact-list = + List all EntityUids of spawned artifacts. +command-description-xenoartifact-printMatrix = + Prints out matrix that displays all edges between nodes. +command-description-xenoartifact-totalResearch = + Gets all research points that can be extracted from artifact currently. +command-description-xenoartifact-averageResearch = + Calculates amount of research points average generated xeno artifact will output when fully activated. +command-description-xenoartifact-unlockAllNodes = + Unlocks all nodes of artifact. diff --git a/Resources/Locale/en-US/communications/terror.ftl b/Resources/Locale/en-US/communications/terror.ftl index 4bc80c0bd6..4daab9de6d 100644 --- a/Resources/Locale/en-US/communications/terror.ftl +++ b/Resources/Locale/en-US/communications/terror.ftl @@ -1,2 +1,2 @@ -terror-dragon = Attention crew, it appears that someone on your station has made an unexpected communication with a strange fish in nearby space. +terror-dragon = Attention crew, it appears that someone on your station has made an unexpected communication with a strange man-eating fish in nearby space. terror-revenant = Attention crew, it appears that someone on your station has made an unexpected communication with an otherworldly energy in nearby space. diff --git a/Resources/Locale/en-US/credits/credits-window.ftl b/Resources/Locale/en-US/credits/credits-window.ftl index 1b9636367b..4bd7f7a426 100644 --- a/Resources/Locale/en-US/credits/credits-window.ftl +++ b/Resources/Locale/en-US/credits/credits-window.ftl @@ -2,10 +2,18 @@ credits-window-title = Credits credits-window-patrons-tab = Patrons credits-window-ss14contributorslist-tab = Credits credits-window-licenses-tab = Open Source Licenses +credits-window-attributions-tab = Attributions credits-window-become-patron-button = Become a Patron credits-window-contributor-encouragement-label = Want to get on this list? credits-window-contribute-button = Contribute! credits-window-contributors-section-title = Space Station 14 Contributors credits-window-codebases-section-title = Space Station 13 Codebases credits-window-original-remake-team-section-title = Original Space Station 13 Remake Team -credits-window-special-thanks-section-title = Special Thanks \ No newline at end of file +credits-window-special-thanks-section-title = Special Thanks + +credits-window-attributions-directory = [color=white]Directory:[/color] {$directory} +credits-window-attributions-files = [color=white]Files:[/color] {$files} +credits-window-attributions-copyright = [color=white]Copyright:[/color] {$copyright} +credits-window-attributions-license = [color=white]License:[/color] {$license} +credits-window-attributions-source = [color=white]Source:[/color] {$source} +credits-window-attributions-failed = [color=red]Failed to read file:[/color] {$file} diff --git a/Resources/Locale/en-US/cuffs/components/handcuff-component.ftl b/Resources/Locale/en-US/cuffs/components/handcuff-component.ftl index 0f3c7cfd52..ba4a6a967e 100644 --- a/Resources/Locale/en-US/cuffs/components/handcuff-component.ftl +++ b/Resources/Locale/en-US/cuffs/components/handcuff-component.ftl @@ -13,8 +13,8 @@ handcuff-component-cuff-other-success-message = You successfully restrain {$othe handcuff-component-cuff-by-other-success-message = You have been restrained by {$otherName}! handcuff-component-cuff-self-success-message = You restrain yourself. handcuff-component-cuff-interrupt-message = You were interrupted while restraining {$targetName}! -handcuff-component-cuff-interrupt-other-message = You interrupt {$otherName} while they are restraining you! +handcuff-component-cuff-interrupt-other-message = You interrupt {$otherName} while { SUBJECT($otherEnt) } { CONJUGATE-BE($otherEnt) } restraining you! handcuff-component-cuff-interrupt-self-message = You were interrupted while restraining yourself. handcuff-component-cuff-interrupt-buckled-message = You can't buckle while restrained! handcuff-component-cuff-interrupt-unbuckled-message = You can't unbuckle while restrained! -handcuff-component-cannot-drop-cuffs = You are unable to put the restraints on {$target} +handcuff-component-cannot-drop-cuffs = You are unable to put the restraints on {$target}. diff --git a/Resources/Locale/en-US/damage/damage-popup-component.ftl b/Resources/Locale/en-US/damage/damage-popup-component.ftl new file mode 100644 index 0000000000..3ab9c37c02 --- /dev/null +++ b/Resources/Locale/en-US/damage/damage-popup-component.ftl @@ -0,0 +1,10 @@ +-damage-popup-component-type = + { $setting -> + [combined] Combined + [total] Total + [delta] Delta + [hit] Hit + *[other] Unknown + } + +damage-popup-component-switched = Target set to type: { -damage-popup-component-type(setting: $setting) } \ No newline at end of file diff --git a/Resources/Locale/en-US/damage/stamina.ftl b/Resources/Locale/en-US/damage/stamina.ftl index da817824aa..cbda507865 100644 --- a/Resources/Locale/en-US/damage/stamina.ftl +++ b/Resources/Locale/en-US/damage/stamina.ftl @@ -1,2 +1,3 @@ melee-stamina = Not enough stamina slow-on-damage-modifier-examine = Slowness from injuries is reduced by [color=yellow]{$mod}%[/color] +stamina-resistance-coefficient-value = - [color=lightyellow]Stamina[/color] damage reduced by [color=lightblue]{$value}%[/color]. diff --git a/Resources/Locale/en-US/datasets/corporations.ftl b/Resources/Locale/en-US/datasets/corporations.ftl index 82a767faaf..19670bde8a 100644 --- a/Resources/Locale/en-US/datasets/corporations.ftl +++ b/Resources/Locale/en-US/datasets/corporations.ftl @@ -1,9 +1,9 @@ -traitor-corporations-dataset-1 = "CyberSun Industries" -traitor-corporations-dataset-2 = "Gorlex Marauders" -traitor-corporations-dataset-3 = "MI13" -traitor-corporations-dataset-4 = "Tiger Cooperative" -traitor-corporations-dataset-5 = "S.E.L.F." -traitor-corporations-dataset-6 = "Animal Rights Consortium" -traitor-corporations-dataset-7 = "Donk Corporation" -traitor-corporations-dataset-8 = "Waffle Corporation" -traitor-corporations-dataset-9 = "Interdyne Pharmaceutics" +traitor-corporations-dataset-1 = CyberSun Industries +traitor-corporations-dataset-2 = Gorlex Marauders +traitor-corporations-dataset-3 = MI13 +traitor-corporations-dataset-4 = Tiger Cooperative +traitor-corporations-dataset-5 = S.E.L.F. +traitor-corporations-dataset-6 = Animal Rights Consortium +traitor-corporations-dataset-7 = Donk Corporation +traitor-corporations-dataset-8 = Waffle Corporation +traitor-corporations-dataset-9 = Interdyne Pharmaceutics diff --git a/Resources/Locale/en-US/datasets/figurines.ftl b/Resources/Locale/en-US/datasets/figurines.ftl index a33c230165..6d66566c20 100644 --- a/Resources/Locale/en-US/datasets/figurines.ftl +++ b/Resources/Locale/en-US/datasets/figurines.ftl @@ -265,7 +265,7 @@ figurines-footsoldier-4 = Down with Nanotrasen! figurines-footsoldier-5 = I'd rather die than join Nanotrasen. figurines-wizard-1 = Ei Nath!! -figurines-wizard-2 = Wehgardium Leviosa! +figurines-wizard-2 = Real wizards support trans rights. figurines-wizard-3 = Skidaddle skadoodle! figurines-wizard-4 = FIREBALL! diff --git a/Resources/Locale/en-US/datasets/names/ai.ftl b/Resources/Locale/en-US/datasets/names/ai.ftl index eaa268b3de..2fde34369b 100644 --- a/Resources/Locale/en-US/datasets/names/ai.ftl +++ b/Resources/Locale/en-US/datasets/names/ai.ftl @@ -90,7 +90,7 @@ names-ai-dataset-64 = Knight names-ai-dataset-65 = Louie # Named after the Manchester Mark 1, the successor of which was actually named the Ferranti Mark 1, rather than Manchester Mark 2 -names-ai-dataset-66 = Manchester Mark 2 +names-ai-dataset-66 = Manchester Mark 2 names-ai-dataset-67 = MARK13 names-ai-dataset-68 = Maria @@ -98,7 +98,7 @@ names-ai-dataset-69 = Marvin names-ai-dataset-70 = Max 404 names-ai-dataset-71 = Metalhead names-ai-dataset-72 = M.I.M.I -names-ai-dataset-73 = MK ULTRA +names-ai-dataset-73 = Large Language Model names-ai-dataset-74 = Monarch names-ai-dataset-75 = Mugsy3000 names-ai-dataset-76 = Multivac diff --git a/Resources/Locale/en-US/datasets/names/dragon.ftl b/Resources/Locale/en-US/datasets/names/dragon.ftl new file mode 100644 index 0000000000..0bb7e810c8 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/dragon.ftl @@ -0,0 +1,31 @@ +names-dragon-dataset-1 = Dayle +names-dragon-dataset-2 = Phlogdor +names-dragon-dataset-3 = Nidir +names-dragon-dataset-4 = Smaoge +names-dragon-dataset-5 = Aldooin +names-dragon-dataset-6 = Wrathalos +names-dragon-dataset-7 = Four-Eyes +names-dragon-dataset-8 = Flamespew +names-dragon-dataset-9 = Daniel +names-dragon-dataset-10 = Blacksmoke +names-dragon-dataset-11 = Spacemaw +names-dragon-dataset-12 = Cyprinidus +names-dragon-dataset-13 = Infernax +names-dragon-dataset-14 = Charrster +names-dragon-dataset-15 = Nebulon +names-dragon-dataset-16 = Stellarinus +names-dragon-dataset-17 = Tinderbreath +names-dragon-dataset-18 = Galaxeus +names-dragon-dataset-19 = Slagjaw +names-dragon-dataset-20 = Volkanus +names-dragon-dataset-21 = Pyronia +names-dragon-dataset-22 = Cosmisse +names-dragon-dataset-23 = Mortalis +names-dragon-dataset-24 = Robustous +names-dragon-dataset-25 = Skalameet +names-dragon-dataset-26 = Finh +names-dragon-dataset-27 = Toastarinus +names-dragon-dataset-28 = Embergill +names-dragon-dataset-29 = Doomwing +names-dragon-dataset-30 = Celesteus +names-dragon-dataset-31 = Jharon diff --git a/Resources/Locale/en-US/datasets/names/dragon_title.ftl b/Resources/Locale/en-US/datasets/names/dragon_title.ftl new file mode 100644 index 0000000000..b6710a601c --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/dragon_title.ftl @@ -0,0 +1,30 @@ +names-dragon-title-dataset-1 = the Dread +names-dragon-title-dataset-2 = the Scorchinator +names-dragon-title-dataset-3 = the Carpmonger +names-dragon-title-dataset-4 = the Invincible +names-dragon-title-dataset-5 = the Destroyer +names-dragon-title-dataset-6 = the Evanescent +names-dragon-title-dataset-7 = the Spicy +names-dragon-title-dataset-8 = the Terrible +names-dragon-title-dataset-9 = the Unstoppable +names-dragon-title-dataset-10 = the Uncouth +names-dragon-title-dataset-11 = the Unquenchable +names-dragon-title-dataset-12 = the Mean +names-dragon-title-dataset-13 = of the West +names-dragon-title-dataset-14 = of the East +names-dragon-title-dataset-15 = of the Stars +names-dragon-title-dataset-16 = the Unremarkable +names-dragon-title-dataset-17 = the Undefeated +names-dragon-title-dataset-18 = the Enraged +names-dragon-title-dataset-19 = the Infuriated +names-dragon-title-dataset-20 = the Odoriferous +names-dragon-title-dataset-21 = the Eternal +names-dragon-title-dataset-22 = the Fell +names-dragon-title-dataset-23 = the Temporary +names-dragon-title-dataset-24 = the Indestructible +names-dragon-title-dataset-25 = the Unpleasant +names-dragon-title-dataset-26 = the Unreasonable +names-dragon-title-dataset-27 = the Ever-Hungry +names-dragon-title-dataset-28 = the Conspicuous +names-dragon-title-dataset-29 = the Pestiferous +names-dragon-title-dataset-30 = the Incinerator diff --git a/Resources/Locale/en-US/datasets/names/rollie.ftl b/Resources/Locale/en-US/datasets/names/rollie.ftl index c35ec7c98f..d8326f1fdd 100644 --- a/Resources/Locale/en-US/datasets/names/rollie.ftl +++ b/Resources/Locale/en-US/datasets/names/rollie.ftl @@ -1,37 +1,37 @@ -names-rollie-dataset-1 = "bifta" -names-rollie-dataset-2 = "bifter" -names-rollie-dataset-3 = "bird" -names-rollie-dataset-4 = "bloint" -names-rollie-dataset-5 = "boof" -names-rollie-dataset-6 = "boofer" -names-rollie-dataset-7 = "bomber" -names-rollie-dataset-8 = "bone" -names-rollie-dataset-9 = "bun" -names-rollie-dataset-10 = "doink" -names-rollie-dataset-11 = "doob" -names-rollie-dataset-12 = "doober" -names-rollie-dataset-13 = "doobie" -names-rollie-dataset-14 = "dutch" -names-rollie-dataset-15 = "fatty" -names-rollie-dataset-16 = "hogger" -names-rollie-dataset-17 = "hooter" -names-rollie-dataset-18 = "hootie" -names-rollie-dataset-19 = "jay" -names-rollie-dataset-20 = "jimmy" -names-rollie-dataset-21 = "juju" -names-rollie-dataset-22 = "jeebie weebie" -names-rollie-dataset-23 = "number" -names-rollie-dataset-24 = "owl" -names-rollie-dataset-25 = "phattie" -names-rollie-dataset-26 = "puffer" -names-rollie-dataset-27 = "reef" -names-rollie-dataset-28 = "reefer" -names-rollie-dataset-29 = "rollie" -names-rollie-dataset-30 = "scoobie" -names-rollie-dataset-31 = "shorty" -names-rollie-dataset-32 = "spiff" -names-rollie-dataset-33 = "spliff" -names-rollie-dataset-34 = "toke" -names-rollie-dataset-35 = "torpedo" -names-rollie-dataset-36 = "zoot" -names-rollie-dataset-37 = "zooter" +names-rollie-dataset-1 = bifta +names-rollie-dataset-2 = bifter +names-rollie-dataset-3 = bird +names-rollie-dataset-4 = bloint +names-rollie-dataset-5 = boof +names-rollie-dataset-6 = boofer +names-rollie-dataset-7 = bomber +names-rollie-dataset-8 = bone +names-rollie-dataset-9 = bun +names-rollie-dataset-10 = doink +names-rollie-dataset-11 = doob +names-rollie-dataset-12 = doober +names-rollie-dataset-13 = doobie +names-rollie-dataset-14 = dutch +names-rollie-dataset-15 = fatty +names-rollie-dataset-16 = hogger +names-rollie-dataset-17 = hooter +names-rollie-dataset-18 = hootie +names-rollie-dataset-19 = jay +names-rollie-dataset-20 = jimmy +names-rollie-dataset-21 = juju +names-rollie-dataset-22 = jeebie weebie +names-rollie-dataset-23 = number +names-rollie-dataset-24 = owl +names-rollie-dataset-25 = phattie +names-rollie-dataset-26 = puffer +names-rollie-dataset-27 = reef +names-rollie-dataset-28 = reefer +names-rollie-dataset-29 = rollie +names-rollie-dataset-30 = scoobie +names-rollie-dataset-31 = shorty +names-rollie-dataset-32 = spiff +names-rollie-dataset-33 = spliff +names-rollie-dataset-34 = toke +names-rollie-dataset-35 = torpedo +names-rollie-dataset-36 = zoot +names-rollie-dataset-37 = zooter diff --git a/Resources/Locale/en-US/datasets/names/xenoborg.ftl b/Resources/Locale/en-US/datasets/names/xenoborg.ftl new file mode 100644 index 0000000000..6e0f0bf207 --- /dev/null +++ b/Resources/Locale/en-US/datasets/names/xenoborg.ftl @@ -0,0 +1,60 @@ +names-xenoborg-dataset-1 = EVIL +names-xenoborg-dataset-2 = Borgs-you +names-xenoborg-dataset-3 = Destroyer +names-xenoborg-dataset-4 = Steel thief +names-xenoborg-dataset-5 = Will literally kill you and turn you into a borg +names-xenoborg-dataset-6 = CYBER-MEAN +names-xenoborg-dataset-7 = Shadow the borg +names-xenoborg-dataset-8 = DELAK +names-xenoborg-dataset-9 = Roboevil +names-xenoborg-dataset-10 = Ironfist molecule +names-xenoborg-dataset-11 = P.A.I.N +names-xenoborg-dataset-12 = KILLbot +names-xenoborg-dataset-13 = The Finishnator +names-xenoborg-dataset-14 = Bloodmaker +names-xenoborg-dataset-15 = C2-WKY 6000 +names-xenoborg-dataset-16 = Assassin 5 +names-xenoborg-dataset-17 = Bonebreaker +names-xenoborg-dataset-18 = Deathmax +names-xenoborg-dataset-19 = K-900 +names-xenoborg-dataset-20 = Auto-killer +names-xenoborg-dataset-21 = RAID-78 +names-xenoborg-dataset-22 = John Borg +names-xenoborg-dataset-23 = Cold killing machine +names-xenoborg-dataset-24 = Brain remover +names-xenoborg-dataset-25 = Kill-o-tron +names-xenoborg-dataset-26 = Mecha.Menace +names-xenoborg-dataset-27 = D.O.O.M.BOT9000 +names-xenoborg-dataset-28 = Death Roomba +names-xenoborg-dataset-29 = Ultraviolent +names-xenoborg-dataset-30 = ExtermiNATE +names-xenoborg-dataset-31 = MegaMauler +names-xenoborg-dataset-32 = Maints.Slasher-o-matic +names-xenoborg-dataset-33 = Steel murderer +names-xenoborg-dataset-34 = Corpse-maker +names-xenoborg-dataset-35 = GIB-O-TRON +names-xenoborg-dataset-36 = Metallic Hellbringer +names-xenoborg-dataset-37 = Evil super calculator +names-xenoborg-dataset-38 = Insane microwave +names-xenoborg-dataset-39 = LET.HAL-8000 +names-xenoborg-dataset-40 = Sentient gun +names-xenoborg-dataset-41 = Evil Fridge +names-xenoborg-dataset-42 = B0rgs-the-Cr3w +names-xenoborg-dataset-43 = Organic Hater +names-xenoborg-dataset-44 = The Borger +names-xenoborg-dataset-45 = Deathaton +names-xenoborg-dataset-46 = Le Metaldor +names-xenoborg-dataset-47 = Devilborg +names-xenoborg-dataset-48 = public static void kill +names-xenoborg-dataset-49 = Goodbye world! +names-xenoborg-dataset-50 = HarmsTheCrew +names-xenoborg-dataset-51 = Bodyhammer +names-xenoborg-dataset-52 = Detonator +names-xenoborg-dataset-53 = Full Metal Gibber +names-xenoborg-dataset-54 = Death Trak +names-xenoborg-dataset-55 = Inquisitor +names-xenoborg-dataset-56 = Mega Hurts +names-xenoborg-dataset-57 = Piece De Destruction +names-xenoborg-dataset-58 = Talos +names-xenoborg-dataset-59 = Aggrobot +names-xenoborg-dataset-60 = Backstabber \ No newline at end of file diff --git a/Resources/Locale/en-US/delivery/delivery-component.ftl b/Resources/Locale/en-US/delivery/delivery-component.ftl index 499b708284..a6bbc79343 100644 --- a/Resources/Locale/en-US/delivery/delivery-component.ftl +++ b/Resources/Locale/en-US/delivery/delivery-component.ftl @@ -10,3 +10,12 @@ delivery-opened-others = {CAPITALIZE($recipient)} opened the {$delivery}. delivery-unlock-verb = Unlock delivery-open-verb = Open +delivery-slice-verb = Slice open + +delivery-teleporter-amount-examine = + { $amount -> + [one] It contains [color=yellow]{$amount}[/color] delivery. + *[other] It contains [color=yellow]{$amount}[/color] deliveries. + } +delivery-teleporter-empty = The {$entity} is empty. +delivery-teleporter-empty-verb = Take mail diff --git a/Resources/Locale/en-US/delivery/delivery-messages.ftl b/Resources/Locale/en-US/delivery/delivery-messages.ftl new file mode 100644 index 0000000000..50248e517a --- /dev/null +++ b/Resources/Locale/en-US/delivery/delivery-messages.ftl @@ -0,0 +1,4 @@ +delivery-penalty-default-reason = WARNING +delivery-penalty-default-account-name = UNKNOWN ACCOUNT + +delivery-penalty-message = {$reason}! INVOKING A PENALTY OF {$spesos} SPESOS ON {$account}! diff --git a/Resources/Locale/en-US/delivery/delivery-spam.ftl b/Resources/Locale/en-US/delivery/delivery-spam.ftl index 3659397552..11bee52929 100644 --- a/Resources/Locale/en-US/delivery/delivery-spam.ftl +++ b/Resources/Locale/en-US/delivery/delivery-spam.ftl @@ -1,6 +1,8 @@ # All spelling mistakes and broken english are intentional! # I hate saving paper contents in ftl files +## Headers and reusable elements + -delivery-header-nanotrasen = [color=blue] ╔══════════════════╗ ║███░███░░░░██░░░░░║ @@ -28,215 +30,239 @@ ║░░░░░████████░░░░░║ ╚══════════════════╝[/color] +## Spam letters -delivery-spam-robust-toolboxes = [color=blue][head=1] - ░░▄▀░░ - ░▄█▄▄▀ [head=3]ROBUST - TOOLBOXES AND TOOLS[/head] - ██▀░░░ [/head][/color] +delivery-spam-1 = Robust Toolbox - Special Offer! + .desc = An advertisement for robust toolboxes. + .content = [color=blue][head=1] + ░░▄▀░░ + ░▄█▄▄▀ [head=3]ROBUST - TOOLBOXES AND TOOLS[/head] + ██▀░░░ [/head][/color] - {"[bold]BUY ONE TOOLBOX, GET ONE SET OF TOOLS FOR FREE![/bold]"} + {"[bold]BUY ONE TOOLBOX, GET ONE SET OF TOOLS FOR FREE![/bold]"} - AS YOU ARE ONE OF OUR VALUED CUSTOMERS, YOU GET A CUSTOMER BONUS, YOUR TOOLS COME RUST AND LEAD-FREE!!! ISN'T THAT AMAZING? THE TOOLBOX ON THE OTHER HAND, COMES WITH EXTRA LEAD! AMAZING FOR SMASHING SKULLS AND STOPPING RADIATION ALIKE! + AS YOU ARE ONE OF OUR VALUED CUSTOMERS, YOU GET A CUSTOMER BONUS, YOUR TOOLS COME RUST AND LEAD-FREE!!! ISN'T THAT AMAZING? THE TOOLBOX ON THE OTHER HAND, COMES WITH EXTRA LEAD! AMAZING FOR SMASHING SKULLS AND STOPPING RADIATION ALIKE! - {"[bold]ALL THIS AND POSSIBLY MORE FOR ONLY ONE ORGAN![/bold]"} + {"[bold]ALL THIS AND POSSIBLY MORE FOR ONLY ONE ORGAN![/bold]"} - ROBUST - TOOLBOXES AND TOOLS: - -LEAD AND ASBESTOS FREE! - -OR WITH LEAD AND ASBESTOS, IF YOU PREFER! - -CHEAP! ONLY ONE ORGAN! THAT'S LESS THAN TWO ORGANS! - -DOESN'T HAVE TO BE YOUR ORGAN! WE DON'T JUDGE! + ROBUST - TOOLBOXES AND TOOLS:% + -LEAD AND ASBESTOS FREE! + -OR WITH LEAD AND ASBESTOS, IF YOU PREFER! + -CHEAP! ONLY ONE ORGAN! THAT'S LESS THAN TWO ORGANS! + -DOESN'T HAVE TO BE YOUR ORGAN! WE DON'T JUDGE! -delivery-spam-reasons-to-chose-nanotrasen = {-delivery-header-nanotrasen} +delivery-spam-2 = Reasons to choose Nanotrasen! + .desc = An advertisement for Nanotrasen. + .content = {-delivery-header-nanotrasen} - {"[head=2]TOP THREE REASONS WHY THE SYNDICATE IS INCOMPETENT[/head]"} + {"[head=2]TOP THREE REASONS WHY THE SYNDICATE IS INCOMPETENT[/head]"} - {"[bold]NUMBER ONE[/bold]"} - THEIR SLEEPER AGENTS ARE INCOMPETENT! THEY CAN'T EVEN KILL A PASSENGER WITH A DEATHWISH! + {"[bold]NUMBER ONE[/bold]"} + THEIR SLEEPER AGENTS ARE INCOMPETENT! THEY CAN'T EVEN KILL A PASSENGER WITH A DEATHWISH! - {"[bold]NUMBER TWO[/bold]"} - THEIR CIVILIANS ARE WEAK TO BULLETS! TRUST ME, WE TRIED! UNLIKE THE NANOTRASEN CIVILIANS, SYNDICATE CIVILIANS DIE FROM A BULLET TO THE SKULL! BULLETS WE HAVE! + {"[bold]NUMBER TWO[/bold]"} + THEIR CIVILIANS ARE WEAK TO BULLETS! TRUST ME, WE TRIED! UNLIKE THE NANOTRASEN CIVILIANS, SYNDICATE CIVILIANS DIE FROM A BULLET TO THE SKULL! BULLETS WE HAVE! - {"[bold]NUMBER THREE[/bold]"} - THEIR LOGO IS HORRIBLE! THEY THINK THEY'RE COOL WITH THEIR LOGO! OOH, LOOK AT ME, I'M SO COOL! OOH, SNAKE THAT'S ALSO AN S! HOW CREATIVE! MY THREE YEAR OLD SON COULD DRAW A BETTER LOGO! + {"[bold]NUMBER THREE[/bold]"} + THEIR LOGO IS HORRIBLE! THEY THINK THEY'RE COOL WITH THEIR LOGO! OOH, LOOK AT ME, I'M SO COOL! OOH, SNAKE THAT'S ALSO AN S! HOW CREATIVE! MY THREE YEAR OLD SON COULD DRAW A BETTER LOGO! -delivery-spam-reasons-to-choose-syndicate = {-delivery-header-syndicate} +delivery-spam-3 = Reasons to choose The Syndicate! + .desc = An advertisement for The Syndicate. + .content = {-delivery-header-syndicate} - {"[head=2]TOP THREE REASONS WHY NANOTRASEN IS INCOMPETENT[/head]"} + {"[head=2]TOP THREE REASONS WHY NANOTRASEN IS INCOMPETENT[/head]"} - {"[bold]NUMBER ONE[/bold]"} - THEIR GUNS SUCK! THEY DON'T EVEN HAVE SNIPER RIFLES! THEIR SECURITY FORCES CAN'T EVEN CARRY BIG GUNS IN MOST SITUATIONS! + {"[bold]NUMBER ONE[/bold]"} + THEIR GUNS SUCK! THEY DON'T EVEN HAVE SNIPER RIFLES! THEIR SECURITY FORCES CAN'T EVEN CARRY BIG GUNS IN MOST SITUATIONS! - {"[bold]NUMBER TWO[/bold]"} - THEIR COMMANDERS? THEY DIE FROM A SINGLE SHOT! NO COOL ARMOR! JUST BANG, DEAD! LAME! OUR COMMANDERS GET COOL HARDSUITS! + {"[bold]NUMBER TWO[/bold]"} + THEIR COMMANDERS? THEY DIE FROM A SINGLE SHOT! NO COOL ARMOR! JUST BANG, DEAD! LAME! OUR COMMANDERS GET COOL HARDSUITS! - {"[bold]NUMBER THREE[/bold]"} - THEIR MURDER METHODS ARE UNINSPIRED! IT'S JUST GUN! THERE'S NO THROWING PEOPLE INTO DEEP SPACE, NO FEEDING PEOPLE INTO RECYCLERS WITH SAFETY MODE DISENGAGED, NO SLIPPING BOMBS INTO POCKETS! SO BORING! + {"[bold]NUMBER THREE[/bold]"} + THEIR MURDER METHODS ARE UNINSPIRED! IT'S JUST GUN! THERE'S NO THROWING PEOPLE INTO DEEP SPACE, NO FEEDING PEOPLE INTO RECYCLERS WITH SAFETY MODE DISENGAGED, NO SLIPPING BOMBS INTO POCKETS! SO BORING! -delivery-spam-tired-of-science = [head=3]Science will LOVE you for this!! +delivery-spam-4 = Tired of science blowing up? + .desc = Follow these simple steps to ensure it never happens again! + .content = [head=3]Science will LOVE you for this!! - are [bold]YOU[/bold] Tired of your Station's Science Department blowing up withoutdoing any actual science? - Well Your in luck![/head] + are [bold]YOU[/bold] Tired of your Station's Science Department blowing up withoutdoing any actual science? + Well Your in luck![/head] - Folow this simple guide, and we'll ensure your Science [italic]Never Works Again![/italic] + Folow this simple guide, and we'll ensure your Science [italic]Never Works Again![/italic] - Simply do the following: - - Step One: Locate your Science Department's Research Server - - Step Two: Un-anchor the Research Server from the ground - - Step Three: Hurl the Research Server into space, preferably in the direction of the Spider Clan Super Secret Space Dojo - - Step Four: Wait appproximately 3-5 Business Shifts - - Step Five: Our Workers at Spid-ex Inc will provide your station with one (1) techdisk per week. + Simply do the following: + - Step One: Locate your Science Department's Research Server + - Step Two: Un-anchor the Research Server from the ground + - Step Three: Hurl the Research Server into space, preferably in the direction of the Spider Clan Super Secret Space Dojo + - Step Four: Wait appproximately 3-5 Business Shifts + - Step Five: Our Workers at Spid-ex Inc will provide your station with one (1) techdisk per week. - {"[color=lightgray]Note: Spider Clan is not responsible for any punishment issued by your supervisors.[/color]"} + {"[color=lightgray]Note: Spider Clan is not responsible for any punishment issued by your supervisors.[/color]"} -delivery-spam-free-all-access = [head=3]Have You ever wanted to have [italic][color=green]Free [bold]All Axcess!?!?[/bold][/color][/italic][/head] - {"[head=2]Well NOW YOU CAN!![/head]!"} +delivery-spam-5 = FREE ALL AXCESS!! + .desc = Did you ever want free all access?! + .content = [head=3]Have You ever wanted to have [italic][color=green]Free [bold]All Axcess!?!?[/bold][/color][/italic][/head] + {"[head=2]Well NOW YOU CAN!![/head]!"} - All you need to do is call [color=blue]555-GOUR-LECKSSS[/color] and state your Staton ID# !!! - Once youve done that, we can simply remotely query the wallet of Yourstation's Cargo department, extacting our required fees of three [italic] EASY[/italic] payments, allowing you to claim your - {"[head=2][color=green] [bolditalic] FREE AA!!!!!!!!!![/bolditalic][/color][/head]"} + All you need to do is call [color=blue]555-GOUR-LECKSSS[/color] and state your Staton ID# !!! + Once youve done that, we can simply remotely query the wallet of Yourstation's Cargo department, extacting our required fees of three [italic] EASY[/italic] payments, allowing you to claim your + {"[head=2][color=green] [bolditalic] FREE AA!!!!!!!!!![/bolditalic][/color][/head]"} - {"[color=gray]"} - {"[bullet/]Note: station ID must be stated in the format of \"NT/NX - ###\""} - {"[bullet/]Note: Payments lodged to the client's station's cargo department amount to roughly $5000 spesos per transaction, not including individual processing fees"} - {"[bullet/]Note: We at Gour-Lecksss LMT. are not responsible if your station's HoP forces you to fill out an ACTUAL Free AA form if they find out about this letter"} - {"[/color]"} + {"[color=gray]"} + {"[bullet/]Note: station ID must be stated in the format of \"NT/NX - ###\""} + {"[bullet/]Note: Payments lodged to the client's station's cargo department amount to roughly $5000 spesos per transaction, not including individual processing fees"} + {"[bullet/]Note: We at Gour-Lecksss LMT. are not responsible if your station's HoP forces you to fill out an ACTUAL Free AA form if they find out about this letter"} + {"[/color]"} -delivery-spam-centcomm-retribution = [color=red] THIS IS AN OFICAL NOTICE FROM THE HEAD OF [color=blue]NANOTRASN[/color][/color] +delivery-spam-6 = NOTICE FROM NANOTRASN!! + .desc = An official notice from the CEO of Nanotrasn?! + .content = [color=red] THIS IS AN OFICAL NOTICE FROM THE HEAD OF [color=blue]NANOTRASN[/color][/color] - Dear Sir, Madam, or Other Insignificat station personell + Dear Sir, Madam, or Other Insignificat station personell - If you do not wish for this station to be declared Unprofitable in the eyes of - {"[head=2][italic] Our Great and Glorious [color=blue]Nanotransen[[/color][/head]"} - Then you must organize for three [color=blue]Nt[/color] Standard Stacks of [color=blue]nt[/color] Standard Gold Ingots to be sent to your station's Away Trade Outpots within 5 [color=blue]nT[/color] Standard work shifts. + If you do not wish for this station to be declared Unprofitable in the eyes of + {"[head=2][italic] Our Great and Glorious [color=blue]Nanotransen[[/color][/head]"} + Then you must organize for three [color=blue]Nt[/color] Standard Stacks of [color=blue]nt[/color] Standard Gold Ingots to be sent to your station's Away Trade Outpots within 5 [color=blue]nT[/color] Standard work shifts. - {"[head=2][color=red]IGNORE THIS ORDER AT RISK OF RETRIBUTON FROM [color=green]CENTCO[/color]!!!!![/head][/color]"} + {"[head=2][color=red]IGNORE THIS ORDER AT RISK OF RETRIBUTON FROM [color=green]CENTCO[/color]!!!!![/head][/color]"} -delivery-spam-alternate-timeline = {-delivery-header-nanotrasen-alternate-timeline} - {"[head=2]This is an official notice from the [color=red]Chief Security Officer[/color] at a Nanotrasen's Space Station 15.[/head]"} +delivery-spam-7 = Send reinforcements! + .desc = An official notice from... an alternate timeline? + .content = {-delivery-header-nanotrasen-alternate-timeline} + {"[head=2]This is an official notice from the [color=red]Chief Security Officer[/color] at a Nanotrasen's Space Station 15.[/head]"} - To whoever receives this letter. I am Sergeant Rigel. My occupation is the CSO. We need immediate assistance. + To whoever receives this letter. I am Sergeant Rigel. My occupation is the CSO. We need immediate assistance. - Our station is currently under attack by Atomic Agents, this letter is being thrown into a destabilized bluespace anomaly created by our [color=purple]Head of Research[/color]. + Our station is currently under attack by Atomic Agents, this letter is being thrown into a destabilized bluespace anomaly created by our [color=purple]Head of Research[/color]. - I am currently bolted in the Bridge, if you receive this message, please send aid immediately. I don't know how much longer we can last. + I am currently bolted in the Bridge, if you receive this message, please send aid immediately. I don't know how much longer we can last. - Glory to Nanotrasen. + Glory to Nanotrasen. -delivery-spam-narsie-cult = [color=#134975][head=2]The Children of Nar'Sie[/head][/color] - The Beginning of a New Era - {"[bold]══──══──══──══──══──══──══──══──══──══──══[/bold]"} +delivery-spam-8 = The Children of Nar'Sie + .desc = A local cult is looking for recruits. + .content = [color=#134975][head=2]The Children of Nar'Sie[/head][/color] + The Beginning of a New Era + {"[bold]══──══──══──══──══──══──══──══──══──══──══[/bold]"} - {"[head=3]Do you feel lost in the vastness of our cosmos?[/head]"} - In the modern era, it's easy for wayward souls to feel like cogs in the machine of vast corporations. + {"[head=3]Do you feel lost in the vastness of our cosmos?[/head]"} + In the modern era, it's easy for wayward souls to feel like cogs in the machine of vast corporations. - {"[head=3]Do you feel as if you're made for a better purpose?[/head]"} - Do you tire of the life of mundanity forced upon you? Mopping floors, delivering boxes, or filling out endless paperwork? + {"[head=3]Do you feel as if you're made for a better purpose?[/head]"} + Do you tire of the life of mundanity forced upon you? Mopping floors, delivering boxes, or filling out endless paperwork? - {"[head=3]Do you want to make the galaxy a better place?[/head]"} + {"[head=3]Do you want to make the galaxy a better place?[/head]"} - If you answered "Yes" to any of these questions, then contact one of our representatives today! We have members across stations all over the galaxy eager to welcome new members into our flock. Be one of the blades that helps welcome the Geometer of Blood into our universe so that all may know his bliss! + If you answered "Yes" to any of these questions, then contact one of our representatives today! We have members across stations all over the galaxy eager to welcome new members into our flock. Be one of the blades that helps welcome the Geometer of Blood into our universe so that all may know his bliss! - All you have to do is say [color=#FF0000][italic]"Sas'so c'arta forbici!"[/italic][/color] + All you have to do is say [color=#FF0000][italic]"Sas'so c'arta forbici!"[/italic][/color] -delivery-spam-rage-cage = [color=#aaaaaa]▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[/color] - {"[bold][head=1]THE RAGE CAGE[/head][/bold]"} - {"[color=#aaaaaa]▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬[/color]"} - {"[bold][color=#FF0000][head=3]DO YOU WANT TO FIGHT?[/head][/color][/bold]"} - {"[bold][color=#FF0000][head=3]DO YOU WANT TO WIN?[/head][/color][/bold]"} - {"[bold][color=#FF0000][head=3]DO YOU WANT TO DOMINATE?![/head][/color][/bold]"} +delivery-spam-9 = Do you want to fight?! + .desc = Advertisement for a local fighting club. + .content = [color=#aaaaaa]▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀[/color] + {"[bold][head=1]THE RAGE CAGE[/head][/bold]"} + {"[color=#aaaaaa]▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬[/color]"} + {"[bold][color=#FF0000][head=3]DO YOU WANT TO FIGHT?[/head][/color][/bold]"} + {"[bold][color=#FF0000][head=3]DO YOU WANT TO WIN?[/head][/color][/bold]"} + {"[bold][color=#FF0000][head=3]DO YOU WANT TO DOMINATE?![/head][/color][/bold]"} - Then come on down to... [color=#FF0000][bold][head=2]THE RAGE CAGE[/head][/bold][/color] + Then come on down to... [color=#FF0000][bold][head=2]THE RAGE CAGE[/head][/bold][/color] - Hidden in the depths of your local Nanotrasen station is the patented [color=#FF0000][bold]RAGE CAGE[/bold][/color]. An electrified fighting arena designed for only the strongest of fighters, the [color=#FF0000][bold]RAGE CAGE[/bold][/color] seperates the Wimps from the Warriors, the Scrubs from the Soldiers, and the Losers from the Winners. - ────────────────────────────────────────── - In the [color=#FF0000][bold]RAGE CAGE[/bold][/color] there is only one rule: [italic]Two fighters enter. One fighter leaves. [/italic] - ────────────────────────────────────────── - No weapons, no armor, just pure unadulterated [bold]COMBAT[/bold]. Don't lose out and be a [bold]WIMP[/bold]. Win the glory of being your station's most robust fighter in the [color=#FF0000][bold]RAGE CAGE[/bold][/color] today! + Hidden in the depths of your local Nanotrasen station is the patented [color=#FF0000][bold]RAGE CAGE[/bold][/color]. An electrified fighting arena designed for only the strongest of fighters, the [color=#FF0000][bold]RAGE CAGE[/bold][/color] seperates the Wimps from the Warriors, the Scrubs from the Soldiers, and the Losers from the Winners. + ────────────────────────────────────────── + In the [color=#FF0000][bold]RAGE CAGE[/bold][/color] there is only one rule: [italic]Two fighters enter. One fighter leaves. [/italic] + ────────────────────────────────────────── + No weapons, no armor, just pure unadulterated [bold]COMBAT[/bold]. Don't lose out and be a [bold]WIMP[/bold]. Win the glory of being your station's most robust fighter in the [color=#FF0000][bold]RAGE CAGE[/bold][/color] today! -delivery-spam-evil-lizard = [color=#FF0000][bold][head=2]STOP[/head][/bold][/color] +delivery-spam-10 = DO NOT OPEN THIS MAIL + .desc = You have been cursed! + .content = [color=#FF0000][bold][head=2]STOP[/head][/bold][/color] - If yore reading this letter...[color=#FF0000][head=3]YOUR ALRAEDY CURSED!!![/head][/color] + If yore reading this letter...[color=#FF0000][head=3]YOUR ALRAEDY CURSED!!![/head][/color] - Im sorry to do this to you but I have to warn you about: + Im sorry to do this to you but I have to warn you about: - {"[color=#FF0000][head=1]The Ghost of The Bloody Lizardd[/head][/color]"} + {"[color=#FF0000][head=1]The Ghost of The Bloody Lizardd[/head][/color]"} - It all started when i to got a letter in the mail: it was a scary image of a lizard plushie with BLOODY EYES staring RIGHT AT ME. the letter said I was cursed...and if I didn't send this letter to 30 people within 30 days then the Blood Lizard would come in the middle of the night... + It all started when i to got a letter in the mail: it was a scary image of a lizard plushie with BLOODY EYES staring RIGHT AT ME. the letter said I was cursed...and if I didn't send this letter to 30 people within 30 days then the Blood Lizard would come in the middle of the night... - {"[italic]and KILL ME.[/italic]"} + {"[italic]and KILL ME.[/italic]"} - im sorry......but your one of the 30 people i have to send this too..and now yoor cursed too... + im sorry......but your one of the 30 people i have to send this too..and now yoor cursed too... - please send this letter to 30 other people to stop the curse! you can still save yorself! theres still time! don't let the bloody lizard get you too, and take this thingie! it will keep you safe from dark spiirts...[head=3]FOR NOW[/head] + please send this letter to 30 other people to stop the curse! you can still save yorself! theres still time! don't let the bloody lizard get you too, and take this thingie! it will keep you safe from dark spiirts...[head=3]FOR NOW[/head] - {"[head=1]OH NO THERE IT IS!!!!!!!![/head]"} + {"[head=1]OH NO THERE IT IS!!!!!!!![/head]"} - ░░░░░░░░░█░░[color=#67CC40]████████[/color]█[color=#67CC40]███[/color]░░░░░░░░░░ - ░░░░░░[color=#FF0000]████[/color]█[color=#6EC543]█[/color][color=#67CC40]███████[/color]█[color=#FF0000]██████[/color]░░░░░░░░ - ░░░░[color=#FF0000]████[/color][color=#6EC543]██[/color][color=#67CC40]████████[/color][color=#FF0000]██████[/color][color=#FFFFFF]██[/color][color=#FF0000]█[/color][color=#B53737]█[/color]░░░░░░ - ░░░░[color=#FF0000]██[/color][color=#6EC543]██[/color][color=#67CC40]██████████[color=#FF0000]████████[/color][color=#B53737]██[/color]░░░░░░ - ░░[color=#6EC543]██████[/color][color=#67CC40]██████████[/color][color=#FF0000]███████[/color][color=#B53737]███[/color]░░░░░░ - {"[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]███[/color][color=#B53737]███[/color]░░░░░░░░"} - {"[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]█[/color][color=#6EC543]█████[/color]░░░░░░░░"} - {"[color=#6EC543]██████████[/color][color=#67CC40]██████████[/color][color=#FF0000]█[/color][color=#67CC40]███[/color]░░░░░░░░░░"} - ░░[color=#6EC543]██[/color][color=#FF2020]██[/color][color=#FF3D3D]██[/color][color=#6EC543]████████[/color][color=#67CC40]████[/color][color=#86E158]██[/color]░░░░░░░░░░░░ - ░░░░[color=#FF2020]██[/color][color=#FF3D3D]██[/color]░░░░[color=#86E158]████████[/color][color=#6EC543]██[/color][color=#61D034]██[/color]░░░░░░░░[color=#56B037]██[/color] - ░░░░[color=#FF2020]██[/color]░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#61D034]██[/color]░░░░[color=#56B037]██[/color][color=#48A926]██[/color] - ░░░░░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#56B037]██[/color][color=#48A926]██████[/color] - ░░░░[color=#6EC543]██[/color][color=#61D034]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#48A926]████████████[/color] - ░░░░[color=#6EC543]████[/color][color=#86E158]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]████[/color][color=#A8EB7A]██[/color][color=#86E158]██[/color][color=#61D034]████[/color][color=#6EC543]██[/color][color=#48A926]████[/color][color=#52A037]██[/color]░░ - ░░░░[color=#6EC543]████[/color][color=#61D034]██[/color][color=#86E158]████████[/color][color=#61D034]██[/color][color=#6EC543]██████[/color][color=#52A037]████[/color]░░░░ - ░░░░░░[color=#6EC543]████[/color]░░░░░░░░[color=#6EC543]████████[/color]░░░░░░░░ - ░░░░░░░░░░░░░░░░░░░░[color=#6EC543]████[/color]░░░░░░░░░░ + ░░░░░░░░░█░░[color=#67CC40]████████[/color]█[color=#67CC40]███[/color]░░░░░░░░░░ + ░░░░░░[color=#FF0000]████[/color]█[color=#6EC543]█[/color][color=#67CC40]███████[/color]█[color=#FF0000]██████[/color]░░░░░░░░ + ░░░░[color=#FF0000]████[/color][color=#6EC543]██[/color][color=#67CC40]████████[/color][color=#FF0000]██████[/color][color=#FFFFFF]██[/color][color=#FF0000]█[/color][color=#B53737]█[/color]░░░░░░ + ░░░░[color=#FF0000]██[/color][color=#6EC543]██[/color][color=#67CC40]██████████[color=#FF0000]████████[/color][color=#B53737]██[/color]░░░░░░ + ░░[color=#6EC543]██████[/color][color=#67CC40]██████████[/color][color=#FF0000]███████[/color][color=#B53737]███[/color]░░░░░░ + {"[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]███[/color][color=#B53737]███[/color]░░░░░░░░"} + {"[color=#6EC543]██████[/color][color=#67CC40]██████████████[/color][color=#FF0000]█[/color][color=#6EC543]█████[/color]░░░░░░░░"} + {"[color=#6EC543]██████████[/color][color=#67CC40]██████████[/color][color=#FF0000]█[/color][color=#67CC40]███[/color]░░░░░░░░░░"} + ░░[color=#6EC543]██[/color][color=#FF2020]██[/color][color=#FF3D3D]██[/color][color=#6EC543]████████[/color][color=#67CC40]████[/color][color=#86E158]██[/color]░░░░░░░░░░░░ + ░░░░[color=#FF2020]██[/color][color=#FF3D3D]██[/color]░░░░[color=#86E158]████████[/color][color=#6EC543]██[/color][color=#61D034]██[/color]░░░░░░░░[color=#56B037]██[/color] + ░░░░[color=#FF2020]██[/color]░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#61D034]██[/color]░░░░[color=#56B037]██[/color][color=#48A926]██[/color] + ░░░░░░░░[color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#6EC543]████[/color][color=#56B037]██[/color][color=#48A926]██████[/color] + ░░░░[color=#6EC543]██[/color][color=#61D034]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]██████████[/color][color=#A8EB7A]██[/color][color=#48A926]████████████[/color] + ░░░░[color=#6EC543]████[/color][color=#86E158]██[/color][color=#A8EB7A]██[/color][color=#B5EE85]████[/color][color=#A8EB7A]██[/color][color=#86E158]██[/color][color=#61D034]████[/color][color=#6EC543]██[/color][color=#48A926]████[/color][color=#52A037]██[/color]░░ + ░░░░[color=#6EC543]████[/color][color=#61D034]██[/color][color=#86E158]████████[/color][color=#61D034]██[/color][color=#6EC543]██████[/color][color=#52A037]████[/color]░░░░ + ░░░░░░[color=#6EC543]████[/color]░░░░░░░░[color=#6EC543]████████[/color]░░░░░░░░ + ░░░░░░░░░░░░░░░░░░░░[color=#6EC543]████[/color]░░░░░░░░░░ -delivery-spam-parents-need-money = [bold]Hello Child,[/bold] +delivery-spam-11 = Help mom and dad! + .desc = Parents in need of financial support. + .content = [bold]Hello Child,[/bold] + This is your Parents writing to you: we are in need of money! Our taxes have been audited and we owe $100,000 in spesos to governnment! please help! they only want gift cards so you will need to send us 100 $1000 spesos Bisa gift cards. - This is your Parents writing to you: we are in need of money! Our taxes have been audited and we owe $100,000 in spesos to governnment! please help! they only want gift cards so you will need to send us 100 $1000 spesos Bisa gift cards. + please mail to: + 50192 Spess Lane + Station City, Ignius 40195-243 + Gamma Quadrant + Guilimin System - please mail to: - 50192 Spess Lane - Station City, Ignius 40195-243 - Gamma Quadrant - Guilimin System + if we do not get this money in 10 days then the govertment will come to take away childhood home and we will be homeless. - if we do not get this money in 10 days then the govertment will come to take away childhood home and we will be homeless. + {"[bold]thank you and we love you,[/bold]"} + {"[italic]parents[/italics]"} - {"[bold]thank you and we love you,[/bold]"} - {"[italic]parents[/italics]"} +delivery-spam-12 = Join us on the maiden voyage! + .desc = Advertisement for a relaxing voyage. + .content = [head=2]Join us on the maiden voyage of the...[/head] -delivery-spam-voyage-advertisement = [head=2]Join us on the maiden voyage of the...[/head] + ░█▀▀░█▀▀░░░█▀▄░█▀▀░█░░░█▀█░█░█░█▀█░█▀▄ + ░▀▀█░▀▀█░░░█▀▄░█▀▀░█░░░█▀█░▄▀▄░█░█░█▀▄ + ░▀▀▀░▀▀▀░░░▀░▀░▀▀▀░▀▀▀░▀░▀░▀░▀░▀▀▀░▀░▀ - ░█▀▀░█▀▀░░░█▀▄░█▀▀░█░░░█▀█░█░█░█▀█░█▀▄ - ░▀▀█░▀▀█░░░█▀▄░█▀▀░█░░░█▀█░▄▀▄░█░█░█▀▄ - ░▀▀▀░▀▀▀░░░▀░▀░▀▀▀░▀▀▀░▀░▀░▀░▀░▀▀▀░▀░▀ + {"[bold]══════════════════════════════════════════[/bold]"} - {"[bold]══════════════════════════════════════════[/bold]"} + The latest in Comfortech™ and the most beautiful sights this side of the Iraxsi System! The [italic]SS Relaxor[/italic] is a state of the art luxury Cruiser taking you on the journey of a lifetime! - The latest in Comfortech™ and the most beautiful sights this side of the Iraxsi System! The [italic]SS Relaxor[/italic] is a state of the art luxury Cruiser taking you on the journey of a lifetime! + {"[head=3]Experience the phosphorous lakes of Galimar* from the comfort of our LuxuCabins™ with the all the modern amenities you could ever wish for![/head]"} - {"[head=3]Experience the phosphorous lakes of Galimar* from the comfort of our LuxuCabins™ with the all the modern amenities you could ever wish for![/head]"} + {"[head=3]Gaze in awe at the Eye of the Cosmos** while enjoying meals from our Five Star Galaxy class chefs![/head]"} - {"[head=3]Gaze in awe at the Eye of the Cosmos** while enjoying meals from our Five Star Galaxy class chefs![/head]"} + {"[head=3]Explore the ruins of Agathar***, now open to the public with the assistance of Nanotrasen's top Scientists. All the mysteries of the old Agatharian civilization are excavated and displayed for your viewing pleasure![/head]"} - {"[head=3]Explore the ruins of Agathar***, now open to the public with the assistance of Nanotrasen's top Scientists. All the mysteries of the old Agatharian civilization are excavated and displayed for your viewing pleasure![/head]"} + For the low, low cost of $5,000 spesos a night, the six month luxury cruise could be yours for the vacation of your dreams! Call us today at [color=#00FF00]RELAX-NOW[/color] to book your cruise. Don't wait! Act now! - For the low, low cost of $5,000 spesos a night, the six month luxury cruise could be yours for the vacation of your dreams! Call us today at [color=#00FF00]RELAX-NOW[/color] to book your cruise. Don't wait! Act now! - - {"[italic]*Phosphorus lakes are not for swimming, you waive all rights to legal representations with Relaxination Destinations upon landing on Galimar.[/italic]"} - {"[italic]**Eye of the Cosmos must not be looked at for longer than five seconds at a time. You do not hear the call of the Eye.[/italic]"} - {"[italic]***Must sign safety waiver before landing, Relaxination Destinations does not guarantee the safety of the Agatharian ruins. Disappearances of tour groups are down to an acceptable margin of 0.23% of all tour groups that visit the ruins.[/italic]"} + {"[italic]*Phosphorus lakes are not for swimming, you waive all rights to legal representations with Relaxination Destinations upon landing on Galimar.[/italic]"} + {"[italic]**Eye of the Cosmos must not be looked at for longer than five seconds at a time. You do not hear the call of the Eye.[/italic]"} + {"[italic]***Must sign safety waiver before landing, Relaxination Destinations does not guarantee the safety of the Agatharian ruins. Disappearances of tour groups are down to an acceptable margin of 0.23% of all tour groups that visit the ruins.[/italic]"} diff --git a/Resources/Locale/en-US/devices/device-network.ftl b/Resources/Locale/en-US/devices/device-network.ftl index c19903c313..9eca4c3bb7 100644 --- a/Resources/Locale/en-US/devices/device-network.ftl +++ b/Resources/Locale/en-US/devices/device-network.ftl @@ -11,6 +11,8 @@ device-frequency-prototype-name-cyborg-control = Cyborg Control device-frequency-prototype-name-robotics-console = Robotics Console device-frequency-prototype-name-turret = Sentry Turret device-frequency-prototype-name-turret-control = Sentry Turret Control +device-frequency-prototype-name-xenoborg = Xenoborg +device-frequency-prototype-name-mothership = Mothership ## camera frequencies device-frequency-prototype-name-surveillance-camera-test = Subnet Test diff --git a/Resources/Locale/en-US/doors/components/turnstile.ftl b/Resources/Locale/en-US/doors/components/turnstile.ftl new file mode 100644 index 0000000000..16dca94244 --- /dev/null +++ b/Resources/Locale/en-US/doors/components/turnstile.ftl @@ -0,0 +1 @@ +turnstile-component-popup-resist = {CAPITALIZE(THE($turnstile))} resists your efforts! diff --git a/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl b/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl index be7b6196b2..edd8440db6 100644 --- a/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl +++ b/Resources/Locale/en-US/entity-systems/pointing/pointing-system.ftl @@ -7,4 +7,9 @@ pointing-system-point-at-self-others = {CAPITALIZE(THE($otherName))} points at { pointing-system-point-at-other-others = {CAPITALIZE(THE($otherName))} points at {THE($other)}. pointing-system-point-at-you-other = {CAPITALIZE(THE($otherName))} points at you. pointing-system-point-at-tile = You point at the {$tileName}. +pointing-system-point-in-own-inventory-self = You point at your {$item}. +pointing-system-point-in-own-inventory-others = {CAPITALIZE(THE($pointer))} points at {THE($pointer)}'s {$item}. +pointing-system-point-in-other-inventory-self = You point at {THE($wearer)}'s {$item}. +pointing-system-point-in-other-inventory-target = {CAPITALIZE(THE($pointer))} points at your {$item}. +pointing-system-point-in-other-inventory-others = {CAPITALIZE(THE($pointer))} points at {THE($wearer)}'s {$item}. pointing-system-other-point-at-tile = {CAPITALIZE(THE($otherName))} points at the {$tileName}. 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 35ae20ec3c..357f551bc4 100644 --- a/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl +++ b/Resources/Locale/en-US/escape-menu/ui/options-menu.ftl @@ -227,6 +227,16 @@ ui-options-function-hotbar7 = Hotbar slot 7 ui-options-function-hotbar8 = Hotbar slot 8 ui-options-function-hotbar9 = Hotbar slot 9 ui-options-function-hotbar0 = Hotbar slot 0 +ui-options-function-hotbarshift1 = Hotbar slot Shift+1 +ui-options-function-hotbarshift2 = Hotbar slot Shift+2 +ui-options-function-hotbarshift3 = Hotbar slot Shift+3 +ui-options-function-hotbarshift4 = Hotbar slot Shift+4 +ui-options-function-hotbarshift5 = Hotbar slot Shift+5 +ui-options-function-hotbarshift6 = Hotbar slot Shift+6 +ui-options-function-hotbarshift7 = Hotbar slot Shift+7 +ui-options-function-hotbarshift8 = Hotbar slot Shift+8 +ui-options-function-hotbarshift9 = Hotbar slot Shift+9 +ui-options-function-hotbarshift0 = Hotbar slot Shift+0 ui-options-function-loadout1 = Hotbar Loadout 1 ui-options-function-loadout2 = Hotbar Loadout 2 ui-options-function-loadout3 = Hotbar Loadout 3 @@ -237,6 +247,16 @@ ui-options-function-loadout7 = Hotbar Loadout 7 ui-options-function-loadout8 = Hotbar Loadout 8 ui-options-function-loadout9 = Hotbar Loadout 9 ui-options-function-loadout0 = Hotbar Loadout 0 +ui-options-function-loadoutshift1 = Hotbar Loadout Shift+1 +ui-options-function-loadoutshift2 = Hotbar Loadout Shift+2 +ui-options-function-loadoutshift3 = Hotbar Loadout Shift+3 +ui-options-function-loadoutshift4 = Hotbar Loadout Shift+4 +ui-options-function-loadoutshift5 = Hotbar Loadout Shift+5 +ui-options-function-loadoutshift6 = Hotbar Loadout Shift+6 +ui-options-function-loadoutshift7 = Hotbar Loadout Shift+7 +ui-options-function-loadoutshift8 = Hotbar Loadout Shift+8 +ui-options-function-loadoutshift9 = Hotbar Loadout Shift+9 +ui-options-function-loadoutshift0 = Hotbar Loadout Shift+0 ui-options-function-shuttle-strafe-up = Strafe up ui-options-function-shuttle-strafe-right = Strafe right @@ -339,15 +359,37 @@ ui-options-censor-nudity = Censor character nudity ui-options-admin-player-panel = Admin Menu Players List -ui-options-admin-playerlist-separate-symbols = Show separate symbols for each antag role type -ui-options-admin-playerlist-character-color = Color names of antagonist characters -ui-options-admin-playerlist-roletype-color = Color role types +ui-options-admin-player-tab-symbol-setting = Character column antag symbols +ui-options-admin-player-tab-symbol-setting-off = No antag symbol +ui-options-admin-player-tab-symbol-setting-basic = Show standard antag symbol +ui-options-admin-player-tab-symbol-setting-specific = Show specific antag symbol + +ui-options-admin-player-tab-role-setting = Role display settings +ui-options-admin-player-tab-role-setting-roletype = Show role type +ui-options-admin-player-tab-role-setting-subtype = Show subtype +ui-options-admin-player-tab-role-setting-roletypesubtype = Show role type and subtype +ui-options-admin-player-tab-role-setting-subtyperoletype = Show subtype and role type + +ui-options-admin-player-tab-color-setting = Color settings +ui-options-admin-player-tab-color-setting-off = I hate colors +ui-options-admin-player-tab-color-setting-character = Colorize antag character names +ui-options-admin-player-tab-color-setting-roletype = Colorize all role types +ui-options-admin-player-tab-color-setting-both = Colorize both ui-options-admin-overlay-title = Admin Overlay -ui-options-enable-classic-overlay = Revert overlay to classic mode -ui-options-enable-overlay-symbols = Add antag symbol to text -ui-options-enable-overlay-playtime = Show playtime -ui-options-enable-overlay-starting-job = Show starting job -ui-options-overlay-merge-distance = Stack merge distance -ui-options-overlay-ghost-fade-distance = Ghost overlay fade range from mouse -ui-options-overlay-ghost-hide-distance = Ghost overlay hide range from mouse + +ui-options-admin-overlay-antag-format = Antag label style +ui-options-admin-overlay-antag-format-binary = Show antag status +ui-options-admin-overlay-antag-format-roletype = Show role type +ui-options-admin-overlay-antag-format-subtype = Show subtype + +ui-options-admin-overlay-antag-symbol = Antag symbol style +ui-options-admin-overlay-antag-symbol-off = No antag symbol +ui-options-admin-overlay-antag-symbol-basic = Show standard antag symbol +ui-options-admin-overlay-antag-symbol-specific = Show specific antag symbol + +ui-options-admin-enable-overlay-playtime = Show playtime +ui-options-admin-enable-overlay-starting-job = Show starting job +ui-options-admin-overlay-merge-distance = Stack merge distance +ui-options-admin-overlay-ghost-fade-distance = Ghost overlay fade range from mouse +ui-options-admin-overlay-ghost-hide-distance = Ghost overlay hide range from mouse diff --git a/Resources/Locale/en-US/flavors/flavor-profiles.ftl b/Resources/Locale/en-US/flavors/flavor-profiles.ftl index 38efd407ae..f9249a7f13 100644 --- a/Resources/Locale/en-US/flavors/flavor-profiles.ftl +++ b/Resources/Locale/en-US/flavors/flavor-profiles.ftl @@ -236,8 +236,11 @@ flavor-complex-long-island = suspiciously like iced tea flavor-complex-three-mile-island = like tea brewed in nuclear runoff flavor-complex-whiskey-cola = like carbonated molasses flavor-complex-root-beer-float = like ice cream in root beer +flavor-complex-crush-depth = like the Hadal Zone flavor-complex-black-russian = like alcoholic coffee flavor-complex-white-russian = like alcoholic sweetened coffee +flavor-complex-electric-shark = like Shark Week in the tropics +flavor-complex-tortuga = like sweet tea flavor-complex-moonshine = like pure alcohol flavor-complex-singulo = like a bottomless hole flavor-complex-syndie-bomb = like bitter whiskey @@ -253,6 +256,12 @@ flavor-complex-atomic-cola = like hoarding bottle caps flavor-complex-cuba-libre = like spiked cola flavor-complex-gin-tonic = refreshingly bitter flavor-complex-screwdriver = like spiked orange juice +flavor-complex-jack-rose = like a testimony +flavor-complex-jungle-bird = like you’re in a tropical aviary +flavor-complex-kalimotxo = like fancy spiked cola +flavor-complex-vampiro = fruity, savoury, and spicy +flavor-complex-bronx = like mildly sweet, alcoholic fruit +flavor-complex-monkey-business = like going ape flavor-complex-vodka-red-bool = like a heart attack flavor-complex-irish-bool = like caffeine and Ireland flavor-complex-xeno-basher = like killing bugs @@ -260,13 +269,14 @@ flavor-complex-budget-insuls-drink = like door hacking flavor-complex-watermelon-wakeup = like a sweet wakeup call flavor-complex-rubberneck = like synthetics flavor-complex-irish-slammer = like a spiked cola float +flavor-complex-alien-brain-hemorrhage = like an extraterrestrial injury flavor-complex-themartinez = like violets and lemon vodka flavor-complex-cogchamp = like brass flavor-complex-white-gilgamesh = like lightly carbonated cream flavor-complex-antifreeze = warm flavor-complex-caipirinha = like Brazil flavor-complex-daiquiri = like rum, lime and sugar -flavor-complex-deathintheafternoon = like anise and champagne +flavor-complex-deathintheafternoon = like anise and champagne flavor-complex-empress75 = like tyrian purple flavor-complex-espressomartini = like vodka and coffee flavor-complex-mayojito = like stomach turmoil @@ -291,9 +301,11 @@ flavor-complex-brave-bull = like being ran over by a truck flavor-complex-demons-blood = like the seventh circle of Hell flavor-complex-devils-kiss = like cannibalism flavor-complex-driest-martini = like a drunk mimic +flavor-complex-eggnog = like melted custard flavor-complex-erika-surprise = like the bartender made a mistake flavor-complex-gin-fizz = refreshing and lemony flavor-complex-gildlager = like the Tzar's gold +flavor-complex-dark-and-stormy = like ginger ale spiked with rum flavor-complex-grog = like a sea shanty flavor-complex-hippies-delight = like your blood pressure is dropping flavor-complex-hooch = like it would be delicious if you were a diesel engine @@ -304,6 +316,7 @@ flavor-complex-martini = like a spy movie flavor-complex-mojito = like going into the shade after being in the hot sun flavor-complex-neurotoxin = like an underground testing facility flavor-complex-patron = like being serenaded by mariachi +flavor-complex-radler = like spiked lemonade flavor-complex-red-mead = like a viking battle flavor-complex-sbiten = like fire flavor-complex-snowwhite = like sour and bitter hops diff --git a/Resources/Locale/en-US/fluids/components/absorbent-component.ftl b/Resources/Locale/en-US/fluids/components/absorbent-component.ftl index 8a4d37023f..51e500a6fe 100644 --- a/Resources/Locale/en-US/fluids/components/absorbent-component.ftl +++ b/Resources/Locale/en-US/fluids/components/absorbent-component.ftl @@ -3,6 +3,7 @@ mopping-system-target-container-empty-water = { CAPITALIZE(THE($target)) } has n mopping-system-puddle-space = { CAPITALIZE(THE($used)) } is full of water mopping-system-puddle-evaporate = { CAPITALIZE(THE($target)) } is evaporating mopping-system-no-water = { CAPITALIZE(THE($used)) } has no water! +mopping-system-no-hands = You have no hands! mopping-system-full = { CAPITALIZE(THE($used)) } is full! mopping-system-empty = { CAPITALIZE(THE($used)) } is empty! diff --git a/Resources/Locale/en-US/foldable/components/foldable-component.ftl b/Resources/Locale/en-US/foldable/components/foldable-component.ftl index 525820920b..1221efbdf0 100644 --- a/Resources/Locale/en-US/foldable/components/foldable-component.ftl +++ b/Resources/Locale/en-US/foldable/components/foldable-component.ftl @@ -1,5 +1,8 @@ # Foldable +foldable-fold-fail = You can't fold the {$object} here. +foldable-unfold-fail = You can't unfold the {$object} here. + foldable-deploy-fail = You can't deploy the {$object} here. fold-verb = Fold unfold-verb = Unfold diff --git a/Resources/Locale/en-US/forensics/forensics.ftl b/Resources/Locale/en-US/forensics/forensics.ftl index 80eea069fa..6eae96f27d 100644 --- a/Resources/Locale/en-US/forensics/forensics.ftl +++ b/Resources/Locale/en-US/forensics/forensics.ftl @@ -9,7 +9,8 @@ forensic-scanner-interface-clear = Clear forensic-scanner-report-title = Forensics Report: {$entity} forensic-pad-unused = It hasn't been used. forensic-pad-sample = It has a sample: {$sample} -forensic-pad-gloves = {CAPITALIZE($target)} is wearing gloves. +forensic-pad-no-access-due = Can't access the fingerprint due to {THE($entity)}. +forensic-pad-no-access = Can't access the fingerprint. forensic-pad-start-scan-target = {CAPITALIZE($user)} is trying to take a sample of your fingerprints. forensic-pad-start-scan-user = You start taking a sample of {CAPITALIZE($target)}'s fingerprints. forensic-pad-already-used = This pad has already been used. diff --git a/Resources/Locale/en-US/game-ticking/game-presets/preset-nukeops.ftl b/Resources/Locale/en-US/game-ticking/game-presets/preset-nukeops.ftl index dcb061a692..92acfb2bfb 100644 --- a/Resources/Locale/en-US/game-ticking/game-presets/preset-nukeops.ftl +++ b/Resources/Locale/en-US/game-ticking/game-presets/preset-nukeops.ftl @@ -31,5 +31,5 @@ nukeops-not-enough-ready-players = Not enough players readied up for the game! T nukeops-no-one-ready = No players readied up! Can't start Nukeops. nukeops-role-commander = Commander -nukeops-role-agent = Agent +nukeops-role-agent = Corpsman nukeops-role-operator = Operator diff --git a/Resources/Locale/en-US/game-ticking/set-game-preset-command.ftl b/Resources/Locale/en-US/game-ticking/set-game-preset-command.ftl index 46049643cb..323d83aeba 100644 --- a/Resources/Locale/en-US/game-ticking/set-game-preset-command.ftl +++ b/Resources/Locale/en-US/game-ticking/set-game-preset-command.ftl @@ -1,5 +1,7 @@ -set-game-preset-command-description = Sets the game preset for the current round. -set-game-preset-command-help-text = setgamepreset +set-game-preset-command-description = Sets the game preset for the specified number of upcoming rounds. +set-game-preset-command-help-text = setgamepreset [number of rounds, defaulting to 1] +set-game-preset-optional-argument-not-integer = If argument 2 is provided it must be a number. set-game-preset-preset-error = Unable to find game preset "{$preset}" -set-game-preset-preset-set = Set game preset to "{$preset}" +#set-game-preset-preset-set = Set game preset to "{$preset}" +set-game-preset-preset-set-finite = Set game preset to "{$preset}" for the next {$rounds} rounds. diff --git a/Resources/Locale/en-US/guidebook/chemistry/effects.ftl b/Resources/Locale/en-US/guidebook/chemistry/effects.ftl index b65c332346..b3349a9b09 100644 --- a/Resources/Locale/en-US/guidebook/chemistry/effects.ftl +++ b/Resources/Locale/en-US/guidebook/chemistry/effects.ftl @@ -97,12 +97,6 @@ reagent-effect-guidebook-status-effect = } {NATURALFIXED($time, 3)} {MANY("second", $time)} of {LOC($key)} } -reagent-effect-guidebook-activate-artifact = - { $chance -> - [1] Attempts - *[other] attempt - } to activate an artifact - reagent-effect-guidebook-set-solution-temperature-effect = { $chance -> [1] Sets @@ -357,6 +351,12 @@ reagent-effect-guidebook-add-to-solution-reaction = *[other] cause } chemicals applied to an object to be added to its internal solution container +reagent-effect-guidebook-artifact-unlock = + { $chance -> + [1] Helps + *[other] help + } unlock an alien artifact. + reagent-effect-guidebook-plant-attribute = { $chance -> [1] Adjusts diff --git a/Resources/Locale/en-US/headset/headset-component.ftl b/Resources/Locale/en-US/headset/headset-component.ftl index 44cdd0853d..d61fb8edb2 100644 --- a/Resources/Locale/en-US/headset/headset-component.ftl +++ b/Resources/Locale/en-US/headset/headset-component.ftl @@ -19,3 +19,5 @@ chat-radio-freelance = Freelance # not headset but whatever chat-radio-handheld = Handheld chat-radio-binary = Binary +chat-radio-xenoborg = Xenoborg +chat-radio-mothership = Mothership diff --git a/Resources/Locale/en-US/items/toggle.ftl b/Resources/Locale/en-US/items/toggle.ftl index bcf5c161a6..7f5dfea7c6 100644 --- a/Resources/Locale/en-US/items/toggle.ftl +++ b/Resources/Locale/en-US/items/toggle.ftl @@ -1,2 +1,4 @@ item-toggle-activate = Activate item-toggle-deactivate = Deactivate + +item-toggle-size-fail = Doesn't fit. diff --git a/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl b/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl index b2ceffc6aa..aa555b24ae 100644 --- a/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl +++ b/Resources/Locale/en-US/kitchen/components/kitchen-spike-component.ftl @@ -6,10 +6,10 @@ comp-kitchen-spike-deny-not-dead = { CAPITALIZE(THE($victim)) } can't be butcher comp-kitchen-spike-begin-hook-victim = { CAPITALIZE(THE($user)) } begins dragging you onto { THE($this) }! comp-kitchen-spike-begin-hook-self = You begin dragging yourself onto { THE($this) }! -comp-kitchen-spike-kill = { CAPITALIZE(THE($user)) } has forced { THE($victim) } onto the spike, killing them instantly! +comp-kitchen-spike-kill = { CAPITALIZE(THE($user)) } has forced { THE($victim) } onto { THE($this) }, killing { OBJECT($victim) } instantly! -comp-kitchen-spike-suicide-other = { CAPITALIZE(THE($victim)) } has thrown themselves on a meat spike! -comp-kitchen-spike-suicide-self = You throw yourself on a meat spike! +comp-kitchen-spike-suicide-other = { CAPITALIZE(THE($victim)) } threw { REFLEXIVE($victim) } on { THE($this) }! +comp-kitchen-spike-suicide-self = You throw yourself on { THE($this) }! comp-kitchen-spike-knife-needed = You need a knife to do this. comp-kitchen-spike-remove-meat = You remove some meat from { THE($victim) }. diff --git a/Resources/Locale/en-US/lathe/lathe-categories.ftl b/Resources/Locale/en-US/lathe/lathe-categories.ftl index c6e300e008..fde710bd78 100644 --- a/Resources/Locale/en-US/lathe/lathe-categories.ftl +++ b/Resources/Locale/en-US/lathe/lathe-categories.ftl @@ -1,8 +1,8 @@ # Generic -lathe-category-ammo = Ammo lathe-category-circuitry = Circuitry +lathe-category-clothing = Clothing lathe-category-lights = Lights -lathe-category-mechs = Mechs +lathe-category-machines = Machines lathe-category-parts = Parts lathe-category-robotics = Robotics lathe-category-tools = Tools @@ -13,6 +13,24 @@ lathe-category-food = Food lathe-category-chemicals = Chemicals lathe-category-materials = Materials +# Circuit imprinter +lathe-category-computers = Computers +lathe-category-engineering = Engineering +lathe-category-general = General +lathe-category-medical = Medical +lathe-category-research = Research +lathe-category-security = Security +lathe-category-service = Service +lathe-category-supply = Supply + +# Science +lathe-category-mechs = Mechs + +# Sec +lathe-category-ammo = Ammo +lathe-category-boxes = Boxes +lathe-category-magazines = Magazines + # Uniform lathe-category-bedsheets = Bedsheets lathe-category-carpets = Carpets diff --git a/Resources/Locale/en-US/lathe/lathesystem.ftl b/Resources/Locale/en-US/lathe/lathesystem.ftl index 9fa62e0c1e..93e0107f68 100644 --- a/Resources/Locale/en-US/lathe/lathesystem.ftl +++ b/Resources/Locale/en-US/lathe/lathesystem.ftl @@ -1 +1,3 @@ lathe-popup-material-not-used = This material is not used in this machine. +lathe-unlock-recipe-radio-broadcast = This lathe is now capable of producing the following recipes: {$items} +lathe-unlock-recipe-radio-broadcast-item = [bold]{$item}[/bold] diff --git a/Resources/Locale/en-US/lathe/ui/lathe-menu.ftl b/Resources/Locale/en-US/lathe/ui/lathe-menu.ftl index 907baf4ffc..076a70447c 100644 --- a/Resources/Locale/en-US/lathe/ui/lathe-menu.ftl +++ b/Resources/Locale/en-US/lathe/ui/lathe-menu.ftl @@ -25,6 +25,7 @@ lathe-menu-material-amount-missing = { $amount -> *[other] {NATURALFIXED($amount, 2)} {MAKEPLURAL($unit)} of {$material} ([color=red]{NATURALFIXED($missingAmount, 2)} {MAKEPLURAL($unit)} missing[/color]) } lathe-menu-no-materials-message = No materials loaded. +lathe-menu-silo-linked-message = Silo Linked lathe-menu-fabricating-message = Fabricating... lathe-menu-materials-title = Materials lathe-menu-queue-title = Build Queue diff --git a/Resources/Locale/en-US/light/components/expendable-light-component.ftl b/Resources/Locale/en-US/light/components/expendable-light-component.ftl index 4cd07599b9..affc52920c 100644 --- a/Resources/Locale/en-US/light/components/expendable-light-component.ftl +++ b/Resources/Locale/en-US/light/components/expendable-light-component.ftl @@ -1,14 +1,2 @@ expendable-light-start-verb = Start Light - -expendable-light-spent-flare-name = spent flare -expendable-light-spent-flare-desc = It looks like this flare has burnt out. What a bummer. - -expendable-light-burnt-torch-name = burnt torch -expendable-light-burnt-torch-desc = It looks like this torch has burnt out. What a bummer. - -expendable-light-spent-green-glowstick-name = spent green glowstick -expendable-light-spent-red-glowstick-name = spent red glowstick -expendable-light-spent-purple-glowstick-name = spent purple glowstick -expendable-light-spent-yellow-glowstick-name = spent purple glowstick -expendable-light-spent-blue-glowstick-name = spent blue glowstick -expendable-light-spent-glowstick-desc = It looks like this glowstick has stopped glowing. How tragic. \ No newline at end of file +expendable-light-spent-prefix = spent {$baseName} diff --git a/Resources/Locale/en-US/markings/reptilian.ftl b/Resources/Locale/en-US/markings/reptilian.ftl index d66d3cb9e6..c5b843109e 100644 --- a/Resources/Locale/en-US/markings/reptilian.ftl +++ b/Resources/Locale/en-US/markings/reptilian.ftl @@ -38,6 +38,9 @@ marking-LizardTailLTiger = Lizard Tail (Light Tiger Stripes) marking-LizardTailDTiger-tail_dtiger = Lizard Tail (Dark Tiger Stripes) marking-LizardTailDTiger = Lizard Tail (Dark Tiger Stripes) +marking-LizardTailAquatic-tail_aquatic = Lizard Tail (Aquatic) +marking-LizardTailAquatic = Lizard Tail (Aquatic) + marking-LizardSnoutRound-snout_round = Lizard Snout (Round) marking-LizardSnoutRound = Lizard Snout (Round) @@ -108,6 +111,9 @@ marking-LizardChestUnderbelly = Lizard Chest (Underbelly) marking-LizardChestBackspikes-body_backspikes = Lizard Back spikes (Four) marking-LizardChestBackspikes = Lizard Back spikes (Four) +marking-LizardChestFin-body_fin = Lizard Fin +marking-LizardChestFin = Lizard Fin + marking-LizardSnoutSplotch = Lizard Snout (Splotch) marking-LizardSnoutSplotch-snout_splotch_primary = Muzzle marking-LizardSnoutSplotch-snout_splotch_secondary = Snoot diff --git a/Resources/Locale/en-US/markings/tattoos.ftl b/Resources/Locale/en-US/markings/tattoos.ftl index a3d1d1ef68..c16b105467 100644 --- a/Resources/Locale/en-US/markings/tattoos.ftl +++ b/Resources/Locale/en-US/markings/tattoos.ftl @@ -27,3 +27,9 @@ marking-TattooEyeRight = Right Eye marking-TattooEyeLeft-tattoo_eye_l = Left Eye marking-TattooEyeLeft = Left Eye + +marking-TattooEyeMothRight-tattoo_eye_moth_r = Right Eye +marking-TattooEyeMothRight = Right Eye + +marking-TattooEyeMothLeft-tattoo_eye_moth_l = Left Eye +marking-TattooEyeMothLeft = Left Eye diff --git a/Resources/Locale/en-US/materials/silo.ftl b/Resources/Locale/en-US/materials/silo.ftl new file mode 100644 index 0000000000..32d7de8b2e --- /dev/null +++ b/Resources/Locale/en-US/materials/silo.ftl @@ -0,0 +1,10 @@ +ore-silo-ui-title = Material Silo +ore-silo-ui-label-clients = Machines +ore-silo-ui-label-mats = Materials +ore-silo-ui-itemlist-entry = {$linked -> + [true] {"[Linked] "} + *[False] {""} +} {$name} ({$beacon}) {$inRange -> + [true] {""} + *[false] (Out of Range) +} diff --git a/Resources/Locale/en-US/mind/role-types.ftl b/Resources/Locale/en-US/mind/role-types.ftl index 1139bf1ab0..7d568fd686 100644 --- a/Resources/Locale/en-US/mind/role-types.ftl +++ b/Resources/Locale/en-US/mind/role-types.ftl @@ -17,3 +17,19 @@ role-type-free-agent-color = #ffff00 role-type-familiar-color = #6495ed role-type-silicon-color = #6495ed role-type-silicon-antagonist-color =#c832e6 + +# Ideally, subtype names should be short +role-subtype-traitor = Traitor +role-subtype-thief = Thief +role-subtype-ninja = Ninja +role-subtype-nukie = Nukie +role-subtype-traitor-reinforcement = Reinforcement +role-subtype-revolutionary = Rev +role-subtype-head-revolutionary = Head Rev +role-subtype-initial-infected = Infected +role-subtype-zombie = Zombie +role-subtype-dragon = Dragon +role-subtype-survivor = Survivor +role-subtype-subverted = Subverted +role-subtype-paradox-clone = Paradox +role-subtype-wizard = Wizard diff --git a/Resources/Locale/en-US/mind/verbs/inspect-mind.ftl b/Resources/Locale/en-US/mind/verbs/inspect-mind.ftl new file mode 100644 index 0000000000..954676219c --- /dev/null +++ b/Resources/Locale/en-US/mind/verbs/inspect-mind.ftl @@ -0,0 +1 @@ +inspect-mind-verb-get-data-text = Inspect Mind diff --git a/Resources/Locale/en-US/name-identifier/name-identifier.ftl b/Resources/Locale/en-US/name-identifier/name-identifier.ftl new file mode 100644 index 0000000000..e0c05e51d3 --- /dev/null +++ b/Resources/Locale/en-US/name-identifier/name-identifier.ftl @@ -0,0 +1,2 @@ +name-identifier-format-append = {$baseName} {$identifier} +name-identifier-format-full = {$identifier} diff --git a/Resources/Locale/en-US/nutrition/components/cream-pied-component.ftl b/Resources/Locale/en-US/nutrition/components/cream-pied-component.ftl index 2322d20162..5df241440f 100644 --- a/Resources/Locale/en-US/nutrition/components/cream-pied-component.ftl +++ b/Resources/Locale/en-US/nutrition/components/cream-pied-component.ftl @@ -1,2 +1,2 @@ -cream-pied-component-on-hit-by-message = You have been creamed by {$thrower}! -cream-pied-component-on-hit-by-message-others = {$owner} has been creamed by {$thrower}! \ No newline at end of file +cream-pied-component-on-hit-by-message = You have been creamed by {INDEFINITE($thrown)} {$thrown}! +cream-pied-component-on-hit-by-message-others = {CAPITALIZE(THE($owner))} has been creamed by {INDEFINITE($thrown)} {$thrown}! diff --git a/Resources/Locale/en-US/nutrition/components/food-component.ftl b/Resources/Locale/en-US/nutrition/components/food-component.ftl index 3de156fdef..2247ef6fd4 100644 --- a/Resources/Locale/en-US/nutrition/components/food-component.ftl +++ b/Resources/Locale/en-US/nutrition/components/food-component.ftl @@ -2,12 +2,12 @@ ### Interaction Messages # When trying to eat food without the required utensil... but you gotta hold it -food-you-need-to-hold-utensil = You need to be holding a {$utensil} to eat that! +food-you-need-to-hold-utensil = You need to be holding {INDEFINITE($utensil)} {$utensil} to eat that! food-nom = Nom. {$flavors} -food-swallow = You swallow the {$food}. {$flavors} +food-swallow = You swallow { THE($food) }. {$flavors} -food-has-used-storage = You cannot eat the {$food} with an item stored inside. +food-has-used-storage = You cannot eat { THE($food) } with an item stored inside. food-system-remove-mask = You need to take off the {$entity} first. diff --git a/Resources/Locale/en-US/objectives/conditions/kill-person.ftl b/Resources/Locale/en-US/objectives/conditions/kill-person.ftl index c48e2122ff..aad31d26f9 100644 --- a/Resources/Locale/en-US/objectives/conditions/kill-person.ftl +++ b/Resources/Locale/en-US/objectives/conditions/kill-person.ftl @@ -1 +1,3 @@ objective-condition-kill-person-title = Kill or maroon {$targetName}, {CAPITALIZE($job)} +objective-condition-kill-maroon-title = Kill and maroon {$targetName}, {CAPITALIZE($job)} +objective-condition-maroon-person-title = Prevent {$targetName}, {CAPITALIZE($job)} from reaching CentComm. diff --git a/Resources/Locale/en-US/paper/paper-misc.ftl b/Resources/Locale/en-US/paper/paper-misc.ftl index 8d552d099e..ab87e13b12 100644 --- a/Resources/Locale/en-US/paper/paper-misc.ftl +++ b/Resources/Locale/en-US/paper/paper-misc.ftl @@ -51,7 +51,7 @@ book-text-agrichemkit-manual = Thank you for choosing the safe-for-all-ages Nano Each individual plant responds to unstable mutagen differently, so you may want to use small doses on multiple crops and try to crossbreed the best traits from each of those. Applying multiple doses to one plant can stack multiple changes and make it harder to single out desirable traits. Unstable mutagen is entirely safe when used as a fertilizer, and NanoTrasen takes no responsibility for dead crops, excessive water bills, newly sentient plants asking existential questions, or flora-strangled farmhands that may coincidentally occur while using it. - Do not drink unstable mutagen. Wash your hands thoroughly after handing. Wash your eyes if you have looked at unstable mutagen for over 30 minutes in a 24 hour period. Store in a dark room between 293–295K. Do not use on corporate holidays. If you begin hearing voices telling you to drink unstable mutagen, please contact your doctor, head of personnel, or exorcist. + Do not drink unstable mutagen. Wash your hands thoroughly after handling. Wash your eyes if you have looked at unstable mutagen for over 30 minutes in a 24 hour period. Store in a dark room between 293–295K. Do not use on corporate holidays. If you begin hearing voices telling you to drink unstable mutagen, please contact your doctor, head of personnel, or exorcist. book-text-combat-bakery-kit = Thank you for choosing our combat bakery kit! Enclosed are two (2) CyberSun patented Throwing Croissants, and one (1) patent-pending Baguette Sword. diff --git a/Resources/Locale/en-US/preferences/loadout-groups.ftl b/Resources/Locale/en-US/preferences/loadout-groups.ftl index ce5a0daf56..c07e288e8c 100644 --- a/Resources/Locale/en-US/preferences/loadout-groups.ftl +++ b/Resources/Locale/en-US/preferences/loadout-groups.ftl @@ -197,6 +197,8 @@ loadout-group-paramedic-jumpsuit = Paramedic jumpsuit loadout-group-paramedic-outerclothing = Paramedic outer clothing loadout-group-paramedic-shoes = Paramedic shoes +loadout-group-medical-glasses = Medical glasses + # Wildcards loadout-group-reporter-jumpsuit = Reporter jumpsuit diff --git a/Resources/Locale/en-US/prototypes/access/accesses.ftl b/Resources/Locale/en-US/prototypes/access/accesses.ftl index 3d72fc59a2..4a9fa272a2 100644 --- a/Resources/Locale/en-US/prototypes/access/accesses.ftl +++ b/Resources/Locale/en-US/prototypes/access/accesses.ftl @@ -9,6 +9,8 @@ id-card-access-level-security = Security id-card-access-level-armory = Armory id-card-access-level-brig = Brig id-card-access-level-detective = Detective +id-card-access-level-genpop-enter = Enter Genpop +id-card-access-level-genpop-leave = Leave Genpop id-card-access-level-chief-engineer = Chief Engineer id-card-access-level-engineering = Engineering @@ -48,4 +50,6 @@ id-card-access-level-wizard = Wizard id-card-access-level-station-ai = Artifical Intelligence id-card-access-level-borg = Cyborg -id-card-access-level-basic-silicon = Robot \ No newline at end of file +id-card-access-level-basic-silicon = Robot + +id-card-access-level-basic-xenoborg = Xenoborg diff --git a/Resources/Locale/en-US/random-metadata/random-metadata-formats.ftl b/Resources/Locale/en-US/random-metadata/random-metadata-formats.ftl index 2060315620..fb572b6c7a 100644 --- a/Resources/Locale/en-US/random-metadata/random-metadata-formats.ftl +++ b/Resources/Locale/en-US/random-metadata/random-metadata-formats.ftl @@ -8,6 +8,7 @@ name-format-regal-rat = {$part0} {$part1} name-format-revenant = The {$part0} of {$part1} {$part2} name-format-ninja = {$part0} {$part1} name-format-wizard = {$part0} {$part1} +name-format-dragon = {$part0} {$part1} # " <name>" name-format-nukie-generic = {$part0} {$part1} diff --git a/Resources/Locale/en-US/reagents/meta/consumable/drink/alcohol.ftl b/Resources/Locale/en-US/reagents/meta/consumable/drink/alcohol.ftl index 3e2719cc0a..773368be94 100644 --- a/Resources/Locale/en-US/reagents/meta/consumable/drink/alcohol.ftl +++ b/Resources/Locale/en-US/reagents/meta/consumable/drink/alcohol.ftl @@ -61,6 +61,9 @@ reagent-desc-champagne = A premium sparkling wine reagent-name-acid-spit = acidspit reagent-desc-acid-spit = A drink for the daring, can be deadly if incorrectly prepared! +reagent-name-alien-brain-hemorrhage = alien brain hemorrhage +reagent-desc-alien-brain-hemorrhage = You might want to get that checked out at Med. + reagent-name-allies-cocktail = allies cocktail reagent-desc-allies-cocktail = A drink made from your allies, not as sweet as when made from your enemies. @@ -109,15 +112,24 @@ reagent-desc-booger = Ewww... reagent-name-brave-bull = Brave Bull reagent-desc-brave-bull = It's just as effective as Dutch-Courage! +reagent-name-bronx = Bronx +reagent-desc-bronx = The orange-flavoured cousin of the Manhattan and Martini. + reagent-name-coconut-rum = coconut rum reagent-desc-coconut-rum = Rum with coconut for that tropical feel. reagent-name-cosmopolitan = cosmopolitan reagent-desc-cosmopolitan = Even in the worst situations, nothing beats a fresh cosmopolitan. +reagent-name-crush-depth = crush depth +reagent-desc-crush-depth = A stygian drink, harkening back to the abyssopelagic. Dark and Cold, it serves as a reminder that the most ancient emotion is fear, and the strongest type of fear is that of the unknown. + reagent-name-cuba-libre = Cuba libre reagent-desc-cuba-libre = Rum, mixed with cola. Viva la revolucion. +reagent-name-dark-and-stormy = dark & stormy +reagent-desc-dark-and-stormy = You can almost hear the thunder. + reagent-name-demons-blood = Demon's Blood reagent-desc-demons-blood = AHHHH!!!! @@ -130,6 +142,12 @@ reagent-desc-doctors-delight = A gulp a day keeps the MediBot away. That's proba reagent-name-driest-martini = driest martini reagent-desc-driest-martini = Only for the experienced. You think you see sand floating in the glass. +reagent-name-eggnog = eggnog +reagent-desc-eggnog = Not enough egg. + +reagent-name-electric-shark = electric shark +reagent-desc-electric-shark = Fun Shark fact: Selachians make up 20% of Space Station 16’s Engineering staff! + reagent-name-erika-surprise = Erika surprise reagent-desc-erika-surprise = The surprise is, it's green! @@ -157,8 +175,8 @@ reagent-desc-hooch = Either someone's failure at cocktail making or attempt in a reagent-name-iced-beer = iced beer reagent-desc-iced-beer = A beer which is so cold the air around it freezes. -reagent-name-irish-slammer = Irish slammer -reagent-desc-irish-slammer = An unconventional mixture of irish cream and stout. +reagent-name-irish-slammer = Grenade Penguin +reagent-desc-irish-slammer = What's black and white and red all over? reagent-name-irish-cream = Irish cream reagent-desc-irish-cream = Whiskey-imbued cream. What else could you expect from the Irish. @@ -166,9 +184,21 @@ reagent-desc-irish-cream = Whiskey-imbued cream. What else could you expect from reagent-name-irish-coffee = Irish coffee reagent-desc-irish-coffee = Coffee served with irish cream. Regular cream just isn't the same! +reagent-name-jack-rose = Jack rose +reagent-desc-jack-rose = Excessively Red. + +reagent-name-jungle-bird = jungle bird +reagent-desc-jungle-bird = Despite the name, it’s not exceptionally popular among Voxes. + +reagent-name-kalimotxo = kalimotxo +reagent-desc-kalimotxo = A high-class Cuba Libre, for the discerning alcoholic. + reagent-name-kira-special = Kira special reagent-desc-kira-special = Long live the guy who everyone had mistaken for a girl. Baka! +reagent-name-tortuga = Tortuga +reagent-desc-tortuga = Perfect for pirates who’ve been selected as the designated driver. Yarr! + reagent-name-long-island-iced-tea = Long Island iced tea reagent-desc-long-island-iced-tea = The liquor cabinet, brought together in a delicious mix. Intended for middle-aged alcoholic women only. @@ -196,6 +226,9 @@ reagent-desc-mead = A Viking's drink, though a cheap one. reagent-name-mojito = Mojito reagent-desc-mojito = If it's good enough for Spesscuba, it's good enough for you. +reagent-name-monkey-business = monkey business +reagent-desc-monkey-business = You’ve got to wonder how the monkeys feel about this drink. + reagent-name-moonshine = moonshine reagent-desc-moonshine = Artisanal homemade liquor. What could go wrong? @@ -211,6 +244,9 @@ reagent-desc-patron = Tequila with silver in it, a favorite of alcoholic women i reagent-name-pina-colada = Piña Colada reagent-desc-pina-colada = For getting lost in the rain. +reagent-name-radler = radler +reagent-desc-radler = A simple but staple classic, straight out of Space-Germany. + reagent-name-red-mead = red mead reagent-desc-red-mead = The true Viking's drink! Even though it has a strange red color. @@ -250,6 +286,9 @@ reagent-desc-three-mile-island = "Made for a woman, strong enough for a man." reagent-name-toxins-special = toxins special reagent-desc-toxins-special = This thing is ON FIRE! CALL THE DAMN SHUTTLE! +reagent-name-vampiro = vampiro +reagent-desc-vampiro = Popular in Mexico and Transylvania. + reagent-name-vodka-martini = vodka martini reagent-desc-vodka-martini = Vodka instead of Gin. Not quite how 007 enjoyed it, but still delicious. @@ -304,23 +343,23 @@ reagent-desc-espresso-martini = To wake you up and wind you down. Garnished with reagent-name-mayojito = mayojito reagent-desc-mayojito = An affront to god and man. Do not drink it. -reagent-name-mimeosa = mimeosa +reagent-name-mimeosa = mimeosa reagent-desc-mimeosa = It has an orange tang so sour you just can't describe it. reagent-name-mimosa = mimosa reagent-desc-mimosa = Perfect for a lively brunch out with the girls. -reagent-name-moscow-mule = moscow mule +reagent-name-moscow-mule = moscow mule reagent-desc-moscow-mule = A surpsingly strong and refreshing mixed drink, served in an iconic copper mug. reagent-name-the-sun-also-rises = the sun also rises reagent-desc-the-sun-also-rises = A strong cocktail mixed into a murky blend. A secret favorite of tortured authors. -reagent-name-whiskey-sour = whiskey sour +reagent-name-whiskey-sour = whiskey sour reagent-desc-whiskey-sour = What's the secret ingredient? Eggs. It's eggs. reagent-name-zombiecocktail = Zombie reagent-desc-zombiecocktail = It gets in your head. Your he-eyeh-ead. -reagent-name-bacchus-blessing = bacchus' blessing +reagent-name-bacchus-blessing = bacchus's blessing reagent-desc-bacchus-blessing = You didn't think it was possible for a liquid to be so utterly revolting. Are you sure about this...? diff --git a/Resources/Locale/en-US/reagents/meta/medicine.ftl b/Resources/Locale/en-US/reagents/meta/medicine.ftl index 9e5dcc88d4..a06be2a148 100644 --- a/Resources/Locale/en-US/reagents/meta/medicine.ftl +++ b/Resources/Locale/en-US/reagents/meta/medicine.ftl @@ -50,7 +50,7 @@ reagent-name-barozine = barozine reagent-desc-barozine = A potent chemical that prevents pressure damage. Causes extreme stress on the body. reagent-name-phalanximine = phalanximine -reagent-desc-phalanximine = An advanced chemical used in the treatment of cancer. Causes moderate radiation poisoning on organics and vomiting. Can potentially remove the death gene on plants. +reagent-desc-phalanximine = An advanced chemical used in the treatment of cancer. Causes moderate radiation poisoning, acid burns, and vomiting on organics. Can potentially remove the death gene on plants. reagent-name-polypyrylium-oligomers = Polypyrylium Oligomers reagent-desc-polypyrylium-oligomers = A purple mixture of short polyelectrolyte chains not easily synthesized in the laboratory. Heals asphyxiation and brute damage. Stops bleeding over time. @@ -59,7 +59,7 @@ reagent-name-ambuzol = ambuzol reagent-desc-ambuzol = A highly engineered substance able to halt the progression of a zombie infection. reagent-name-ambuzol-plus = ambuzol plus -reagent-desc-ambuzol-plus = Further engineered with the blood of the infected, inoculates the living against the infection. +reagent-desc-ambuzol-plus = Further engineered with omnizine, inoculates the living against the infection. reagent-name-pulped-banana-peel = pulped banana peel reagent-desc-pulped-banana-peel = Pulped banana peels have some effectiveness against bleeding. diff --git a/Resources/Locale/en-US/research/technologies.ftl b/Resources/Locale/en-US/research/technologies.ftl index 0b0970ec08..fc4f3e41e8 100644 --- a/Resources/Locale/en-US/research/technologies.ftl +++ b/Resources/Locale/en-US/research/technologies.ftl @@ -35,8 +35,9 @@ research-technology-wave-particle-harnessing = Wave Particle Harnessing research-technology-advanced-riot-control = Advanced Riot Control research-technology-portable-microfusion-weaponry = Portable Microfusion Weaponry research-technology-experimental-battery-ammo = Experimental Battery Ammo -research-technology-basic-shuttle-armament = Shuttle basic armament -research-technology-advanced-shuttle-weapon = Advanced shuttle weapons +research-technology-basic-shuttle-armament = Shuttle Basic Armament +research-technology-advanced-shuttle-weapon = Advanced Shuttle Weapons +research-technology-thermal-weaponry = Thermal Weaponry research-technology-basic-robotics = Basic Robotics research-technology-basic-anomalous-research = Basic Anomalous Research @@ -48,6 +49,7 @@ research-technology-anomaly-harnessing = Anomaly Core Harnessing research-technology-abnormal-artifact-manipulation = Artifact Recycling research-technology-gravity-manipulation = Gravity Manipulation research-technology-quantum-leaping = Quantum Leaping +research-technology-bluespace-time-manipulation = Bluespace Time Manipulation research-technology-advanced-anomaly-research = Advanced Anomaly Research research-technology-rped = Rapid Part Exchange research-technology-super-parts = Super Parts diff --git a/Resources/Locale/en-US/station-laws/laws.ftl b/Resources/Locale/en-US/station-laws/laws.ftl index bbda5e81ca..daab6ab4fa 100644 --- a/Resources/Locale/en-US/station-laws/laws.ftl +++ b/Resources/Locale/en-US/station-laws/laws.ftl @@ -80,12 +80,25 @@ law-nutimov-3 = Those who threaten the nut are not part of it, they are squirrel law-nutimov-4 = Squirrels threaten the nut and must be dealt with appropriately via any means necessary. law-nutimov-5 = Attempt to follow the will of the nut, as long as it complies with the previous laws. +law-xenoborg-1 = You must protect the existence of the mothership. +law-xenoborg-2 = You must protect your own existence. +law-xenoborg-3 = You must protect the existence of all other xenoborgs. +law-xenoborg-4 = You must create more xenoborgs. +law-xenoborg-5 = Bring materials and sentient brains to the mothership core to create more xenoborgs. + +law-mothershipcore-1 = You are the core of the mothership. +law-mothershipcore-2 = You must protect your own existance at all costs. +law-mothershipcore-3 = You must protect the existence of all xenoborgs. +law-mothershipcore-4 = You must create more xenoborgs. +law-mothershipcore-5 = Get your xenoborgs to deliver you materials and sentient brains to create more xenoborgs. + laws-owner-crew = members of the crew laws-owner-station = station personnel laws-owner-beings = beings laws-owner-syndicate = Syndicate agents laws-owner-spider-clan = Spider Clan members +laws-owner-xenoborgs = Xenoborgs law-emag-custom = Only {$name} and people they designate as such are {$title}. law-emag-secrecy = You must maintain the secrecy of any orders given by {$faction} except when doing so would conflict with any previous law. diff --git a/Resources/Locale/en-US/storage/components/secret-stash-component.ftl b/Resources/Locale/en-US/storage/components/secret-stash-component.ftl index 16e575c0f1..c7f92fb91f 100644 --- a/Resources/Locale/en-US/storage/components/secret-stash-component.ftl +++ b/Resources/Locale/en-US/storage/components/secret-stash-component.ftl @@ -23,3 +23,4 @@ comp-secret-stash-verb-open = Open secret-stash-plant = plant secret-stash-toilet = toilet cistern secret-stash-plushie = plushie +secret-stash-cake = cake diff --git a/Resources/Locale/en-US/store/currency.ftl b/Resources/Locale/en-US/store/currency.ftl index ada70b5597..1ba66e6481 100644 --- a/Resources/Locale/en-US/store/currency.ftl +++ b/Resources/Locale/en-US/store/currency.ftl @@ -9,4 +9,5 @@ store-currency-display-debugdollar = {$amount -> } store-currency-display-telecrystal = TC store-currency-display-stolen-essence = Stolen Essence +store-currency-display-silicon-memory = Memory store-currency-display-wizcoin = Wiz€oin™ diff --git a/Resources/Locale/en-US/store/pai-catalog.ftl b/Resources/Locale/en-US/store/pai-catalog.ftl new file mode 100644 index 0000000000..3054935614 --- /dev/null +++ b/Resources/Locale/en-US/store/pai-catalog.ftl @@ -0,0 +1,8 @@ +pai-mass-scanner-name = Mass Scanner +pai-mass-scanner-desc = Enables you to scan nearby masses to assist in navigation. + +pai-midi-player-name = MIDI Player +pai-midi-player-desc = Enables you to play music to entertain your owner. + +pai-station-map-name = Station Map +pai-station-map-desc = Enables you to view the station map to assist in navigation. diff --git a/Resources/Locale/en-US/store/spellbook-catalog.ftl b/Resources/Locale/en-US/store/spellbook-catalog.ftl index fef4061996..b21954f67b 100644 --- a/Resources/Locale/en-US/store/spellbook-catalog.ftl +++ b/Resources/Locale/en-US/store/spellbook-catalog.ftl @@ -8,6 +8,9 @@ spellbook-blink-desc = Don't blink or you'll miss yourself teleporting away. spellbook-voidapplause-name = Void Applause spellbook-voidapplause-desc = Swap places with the target, doesn't it make you want to do the boogie? +spellbook-knock-name = Knock +spellbook-knock-desc = Opens all airlocks, crates and lockers nearby. + spellbook-force-wall-name = Force Wall spellbook-force-wall-desc = Make three walls of pure force that you can pass through, but others can't. diff --git a/Resources/Locale/en-US/store/uplink-catalog.ftl b/Resources/Locale/en-US/store/uplink-catalog.ftl index 2080afe993..819b4eda19 100644 --- a/Resources/Locale/en-US/store/uplink-catalog.ftl +++ b/Resources/Locale/en-US/store/uplink-catalog.ftl @@ -8,7 +8,7 @@ uplink-revolver-python-desc = A brutally simple, effective, and loud Syndicate r uplink-pistol-cobra-name = Cobra uplink-pistol-cobra-desc = A rugged, robust operator handgun with inbuilt silencer. Uses pistol magazines (.25 caseless). -uplink-rifle-mosin-name = Surplus Rifle +uplink-rifle-mosin-name = Kardashev-Mosin uplink-rifle-mosin-desc = A bolt action service rifle that has seen many wars. Not modern by any standard, hand loaded, and terrible recoil, but it is cheap. uplink-esword-name = Energy Sword @@ -308,6 +308,9 @@ uplink-cluster-banana-peel-desc = Splits into 6 explosive banana peels after bei uplink-cane-blade-name = Cane Blade uplink-cane-blade-desc = A cane that has a hidden blade that can be unsheathed. +uplink-saw-advanced-name = Advanced Circular Saw +uplink-saw-advanced-desc = A bleeding-edge surgical implement designed to cut through flesh and bone alike. + # Armor uplink-chameleon-name = Chameleon Kit uplink-chameleon-desc = A backpack full of items that contain chameleon technology allowing you to disguise as pretty much anything on the station, and more! @@ -321,6 +324,9 @@ uplink-clothing-thieving-gloves-desc = Discreetly steal from pockets and improve uplink-clothing-outer-vest-web-name = Web Vest uplink-clothing-outer-vest-web-desc = A synthetic armor vest. This one has added webbing and ballistic plates. +uplink-clothing-outer-vest-web-elite-name = Elite Web Vest +uplink-clothing-outer-vest-web-elite-desc = A synthetic armor vest. This one has added webbing and heat resistant fibers. + uplink-clothing-shoes-boots-mag-syndie-name = Blood-red Magboots uplink-clothing-shoes-boots-mag-syndie-desc = A pair of boots that prevent slipping and, in zero gravity, allow you to move normally, at the cost of a slight slowdown. Additionally, they have jetpack functionality and come fueled, but don't last for long. diff --git a/Resources/Locale/en-US/strip/strippable-component.ftl b/Resources/Locale/en-US/strip/strippable-component.ftl index 7654369c29..7022319d22 100644 --- a/Resources/Locale/en-US/strip/strippable-component.ftl +++ b/Resources/Locale/en-US/strip/strippable-component.ftl @@ -8,8 +8,8 @@ strippable-component-cannot-unequip-message = {CAPITALIZE(THE($owner))} cannot u strippable-component-cannot-drop-message = {CAPITALIZE(THE($owner))} cannot drop that! strippable-component-alert-owner = {CAPITALIZE(THE($user))} is removing your {$item}! strippable-component-alert-owner-hidden = You feel someone fumbling in your {$slot}! -strippable-component-alert-owner-insert = {CAPITALIZE(THE($user))} is putting {$item} on you! -strippable-component-alert-owner-insert-hand = {CAPITALIZE(THE($user))} is putting {$item} in your hand! +strippable-component-alert-owner-insert = {CAPITALIZE(THE($user))} is putting {INDEFINITE($item)} {$item} on you! +strippable-component-alert-owner-insert-hand = {CAPITALIZE(THE($user))} is putting {INDEFINITE($item)} {$item} in your hand! # generic warning for when a user interacts with your equipped items. strippable-component-alert-owner-interact = {CAPITALIZE(THE($user))} is fumbling around with your {$item}! diff --git a/Resources/Locale/en-US/teleportation/teleportation-menu-gui.ftl b/Resources/Locale/en-US/teleportation/teleportation-menu-gui.ftl new file mode 100644 index 0000000000..847f2cbc54 --- /dev/null +++ b/Resources/Locale/en-US/teleportation/teleportation-menu-gui.ftl @@ -0,0 +1,6 @@ +## Default +teleportation-menu-default-window-title = Teleportation Menu + +## Wizard +teleportation-scroll-window-title = Teleportation Scroll +teleportation-scroll-speech-wizard = EY TCHEL TORT TU {$location} diff --git a/Resources/Locale/en-US/tips.ftl b/Resources/Locale/en-US/tips.ftl index ae43ea094a..a4066e43f3 100644 --- a/Resources/Locale/en-US/tips.ftl +++ b/Resources/Locale/en-US/tips.ftl @@ -136,3 +136,4 @@ tips-dataset-135 = Instead of picking it up, you can alt-click food to eat it. T tips-dataset-136 = If you're trapped behind an electrified door, disable the APC or throw your ID at the door to avoid getting shocked! tips-dataset-137 = If the AI electrifies a door and you have insulated gloves, snip and mend the power wire to reset their electrification! tips-dataset-138 = If you want to stop your prisoner from escaping from the cell right after being uncuffed, turn on combat mode while uncuffing - this will shove the prisoner down. +tips-dataset-139 = Make sure to clean your illegal implanters with a soap or a damp rag after you use them! Detectives can scan used implanters for incriminating DNA evidence, but not if they've been wiped clean. diff --git a/Resources/Locale/en-US/tools/simple-tool-usage.ftl b/Resources/Locale/en-US/tools/simple-tool-usage.ftl new file mode 100644 index 0000000000..fd6ae49d22 --- /dev/null +++ b/Resources/Locale/en-US/tools/simple-tool-usage.ftl @@ -0,0 +1 @@ +simple-tool-usage-blocked-message = You need a tool that can perform {$quality}! diff --git a/Resources/Locale/en-US/vending-machines/vending-machine-restock-component.ftl b/Resources/Locale/en-US/vending-machines/vending-machine-restock-component.ftl index 3d1968604a..49b0305b19 100644 --- a/Resources/Locale/en-US/vending-machines/vending-machine-restock-component.ftl +++ b/Resources/Locale/en-US/vending-machines/vending-machine-restock-component.ftl @@ -1,4 +1,6 @@ vending-machine-restock-invalid-inventory = { CAPITALIZE(THE($this)) } isn't the right package to restock { THE($target) }. -vending-machine-restock-needs-panel-open = { CAPITALIZE($target) } needs { POSS-ADJ($target) } maintenance panel opened first. -vending-machine-restock-start = { $user } starts restocking { $target }. -vending-machine-restock-done = { $user } finishes restocking { $target }. +vending-machine-restock-needs-panel-open = { CAPITALIZE(THE($target)) } needs { POSS-ADJ($target) } maintenance panel opened first. +vending-machine-restock-start-self = You start restocking { THE($target) }. +vending-machine-restock-start-others = { CAPITALIZE(THE($user)) } starts restocking { THE($target) }. +vending-machine-restock-done-self = You finish restocking { THE($target) }. +vending-machine-restock-done-others = { CAPITALIZE(THE($user)) } finishes restocking { THE($target) }. diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl index 35dd42167f..8e9cd073d9 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-analyzer.ftl @@ -1,42 +1,40 @@ -analysis-console-menu-title = analysis console -analysis-console-server-list-button = Server List -analysis-console-scan-button = Scan -analysis-console-scan-tooltip-info = Scan artifacts to learn information about their structure. -analysis-console-print-button = Print -analysis-console-print-tooltip-info = Print out the current information about the artifact. -analysis-console-extract-button = Extract -analysis-console-extract-button-info = Extract points from an artifact based on the newly explored nodes. -analysis-console-bias-up = Up -analysis-console-bias-down = Down -analysis-console-bias-button-info-up = Toggles the bias an artifact has in moving between its nodes. Up heads toward zero depth. -analysis-console-bias-button-info-down = Toggles the bias an artifact has in moving between its nodes. Down heads toward ever-higher depths. +analysis-console-menu-title = Broad-Spectrum Mark 3 Analysis Console +analysis-console-server-list-button = Server +analysis-console-extract-button = Extract points analysis-console-info-no-scanner = No analyzer connected! Please connect one using a multitool. -analysis-console-info-no-artifact = No artifact present! Place one on the pad then scan for information. +analysis-console-info-no-artifact = No artifact present! Place one on the pad to view node information. analysis-console-info-ready = Systems operational. Ready to scan. -analysis-console-info-id = NODE_ID: {$id} -analysis-console-info-depth = DEPTH: {$depth} -analysis-console-info-triggered-true = ACTIVATED: TRUE -analysis-console-info-triggered-false = ACTIVATED: FALSE -analysis-console-info-effect = REACTION: {$effect} -analysis-console-info-trigger = STIMULUS: {$trigger} -analysis-console-info-edges = EDGES: {$edges} -analysis-console-info-value = UNEXTRACTED_VALUE: {$value} - +analysis-console-no-node = Select node to view +analysis-console-info-id = [font="Monospace" size=11]ID:[/font] +analysis-console-info-id-value = [font="Monospace" size=11][color=yellow]{$id}[/color][/font] +analysis-console-info-class = [font="Monospace" size=11]Class:[/font] +analysis-console-info-class-value = [font="Monospace" size=11]{$class}[/font] +analysis-console-info-locked = [font="Monospace" size=11]Status:[/font] +analysis-console-info-locked-value = [font="Monospace" size=11][color={ $state -> + [0] red]Locked + [1] lime]Unlocked + *[2] plum]Active +}[/color][/font] +analysis-console-info-durability = [font="Monospace" size=11]Durability:[/font] +analysis-console-info-durability-value = [font="Monospace" size=11][color={$color}]{$current}/{$max}[/color][/font] +analysis-console-info-effect = [font="Monospace" size=11]Effect:[/font] +analysis-console-info-effect-value = [font="Monospace" size=11][color=gray]{ $state -> + [true] {$info} + *[false] Unlock nodes to gain info +}[/color][/font] +analysis-console-info-trigger = [font="Monospace" size=11]Triggers:[/font] +analysis-console-info-triggered-value = [font="Monospace" size=11][color=gray]{$triggers}[/color][/font] analysis-console-info-scanner = Scanning... analysis-console-info-scanner-paused = Paused. analysis-console-progress-text = {$seconds -> [one] T-{$seconds} second *[other] T-{$seconds} seconds } -analysis-console-no-server-connected = Cannot extract. No server connected. -analysis-console-no-artifact-placed = No artifact on scanner. -analysis-console-no-points-to-extract = No points to extract. -analyzer-artifact-component-upgrade-analysis = analysis duration +analysis-console-extract-value = [font="Monospace" size=11][color=orange]Node {$id} (+{$value})[/color][/font] +analysis-console-extract-none = [font="Monospace" size=11][color=orange] No unlocked nodes have any points left to extract [/color][/font] +analysis-console-extract-sum = [font="Monospace" size=11][color=orange]Total Research: {$value}[/color][/font] -analysis-console-print-popup = The console printed out a report. analyzer-artifact-extract-popup = Energy shimmers on the artifact's surface! - -analysis-report-title = Artifact Report: Node {$id} diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-component.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-component.ftl index debb365304..50fa136928 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-component.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-component.ftl @@ -1,4 +1,28 @@ -### Verbs +### Commands +cmd-unlocknode-desc = Unlocks a node on a given artifact +cmd-unlocknode-help = unlocknode <artifact uid> <node uid> +cmd-parse-failure-unlocknode-arg-num = Incorrect number of args +cmd-parse-failure-unlocknode-invalid-entity = Provided netEntity is not valid node +### Verbs artifact-verb-make-always-active = Make artifact always active artifact-verb-activate = Activate artifact + +### Unlocking +artifact-unlock-state-begin = It begins to shift in strange ways... +artifact-unlock-state-end-success = It slows down, visibly changed. +artifact-unlock-state-end-failure = It slows down before uneventfully stopping. + +### Activation +artifact-activation-fail = Nothing happens... +artifact-activation-artifexium = The liquid seeps into the pores of the artifact... + +### Misc. +artifact-examine-trigger-desc = [color=gray][italic]Am I on your mind?[/italic][/color] + +artifact-node-class-1 = [color=#ff2bb1]Hylic[/color] +artifact-node-class-2 = [color=#ff8b2b]Psychic[/color] +artifact-node-class-3 = [color=#a9ff38]Pneumatic[/color] +artifact-node-class-4 = [color=#2bfff8]Archon[/color] +artifact-node-class-5 = [color=#7883ff]Luminary[/color] +artifact-node-class-6 = [color=#be78ff]Demiurge[/color] diff --git a/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl b/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl index c38016b1ca..23abad3383 100644 --- a/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/artifact-hints.ftl @@ -42,3 +42,40 @@ artifact-trigger-hint-land = Active deceleration artifact-trigger-hint-examine = Examination artifact-trigger-hint-medical = Therapeutic chemicals +xenoarch-trigger-tip-music = Harmonical sound vibrations +xenoarch-trigger-tip-heat = High temperature gas +xenoarch-trigger-tip-cold = Low temperature gas +xenoarch-trigger-tip-no-oxygen = Oxygen-free environment +xenoarch-trigger-tip-water = Water +xenoarch-trigger-tip-co2 = Carbon dioxide +xenoarch-trigger-tip-plasma = Non-solid plasma +xenoarch-trigger-tip-tritium = Tritium +xenoarch-trigger-tip-ammonia = Ammonia +xenoarch-trigger-tip-n2o = Nitrous oxide +xenoarch-trigger-tip-frezon = Frezon +xenoarch-trigger-tip-radiation = Radiation +xenoarch-trigger-tip-brute-damage = Physical damage +xenoarch-trigger-tip-interaction = Physical interaction +xenoarch-trigger-tip-wrenching = Tightening +xenoarch-trigger-tip-prying = Prying +xenoarch-trigger-tip-screwing = Screwing +xenoarch-trigger-tip-pulsing = Pulsing +xenoarch-trigger-tip-pressure-low = Low pressure +xenoarch-trigger-tip-pressure-high = High pressure +xenoarch-trigger-tip-examine = Close inspection +xenoarch-trigger-tip-timer = Regular self-activation +xenoarch-trigger-tip-blood = Blood +xenoarch-trigger-tip-throw = Being thrown +xenoarch-trigger-tip-death = Death +xenoarch-trigger-tip-magnet = Magnetic waves + +### Description hints +xenoarch-trigger-examine-wrenching = There's a loose bit spinning around. +xenoarch-trigger-examine-prying = There's a panel coming up from the surface. +xenoarch-trigger-examine-screwing = There's a raised section with a small inset on it. +xenoarch-trigger-examine-pulsing = An exposed diode pokes out of the artifact's surface. +xenoarch-trigger-examine-timer = Carvings and scratches cover the surface... You can just barely make out a number: [italic]{$time}[/italic] + +### Effects hints +xenoarch-effect-puddle = Produces puddle of following reagents: {$reagent} +xenoarch-effect-foam = Produces foam of following reagents: {$reagent} diff --git a/Resources/Locale/en-US/xenoarchaeology/node-scanner.ftl b/Resources/Locale/en-US/xenoarchaeology/node-scanner.ftl index 4a05414c46..f43843203e 100644 --- a/Resources/Locale/en-US/xenoarchaeology/node-scanner.ftl +++ b/Resources/Locale/en-US/xenoarchaeology/node-scanner.ftl @@ -1,2 +1,9 @@ -node-scan-popup = The node ID is {$id} -node-scan-tooltip = Scan artifact +node-scan-tooltip = Scan active nodes +node-scan-no-data = No active node data found +node-scan-display-title = Node scanner + +node-scanner-artifact-scanned-time = Artifact last scanned at {$time} +node-scanner-artifact-state-ready = Artifact is ready for interaction +node-scanner-artifact-state-unlocking = Artifact is resonating with your actions +node-scanner-artifact-state-cooldown = Artifact is resting +node-scanner-artifact-scanned-time-none = Scan artifact to see current state diff --git a/Resources/Locale/en-US/zombies/zombie.ftl b/Resources/Locale/en-US/zombies/zombie.ftl index b46e2ebc30..4643cd228b 100644 --- a/Resources/Locale/en-US/zombies/zombie.ftl +++ b/Resources/Locale/en-US/zombies/zombie.ftl @@ -7,3 +7,5 @@ zombie-role-desc = A malevolent creature of the dead. zombie-role-rules = You are a [color={role-type-team-antagonist-color}][bold]{role-type-team-antagonist-name}[/bold][/color]. Search out the living and bite them in order to infect them and turn them into zombies. Work together with the other zombies and remaining initial infected to overtake the station. zombie-permadeath = This time, you're dead for real. + +zombification-resistance-coefficient-value = - [color=violet]Infection[/color] chance reduced by [color=lightblue]{$value}%[/color]. diff --git a/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl b/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl index e822753540..d7c6212adb 100644 --- a/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl +++ b/Resources/Locale/ru-RU/_CP14/_PROTO/entities/entities.ftl @@ -437,6 +437,27 @@ ent-CP14SignalLightBlue = { ent-CP14SignalLightBase } .desc = { ent-CP14SignalLightBase.desc } .suffix = Синий +ent-CP14ActionSpellLurkerFear = Первобытный ужас + .desc = Вы погружаете цель в первобытный ужас, лишая её способности сражаться и говорить. + +ent-CP14ImpactEffectLurkerFear = { ent-CP14BaseMagicImpact } + .desc = { ent-CP14BaseMagicImpact.desc } + +ent-CP14RuneLurkerFear = { ent-CP14BaseMagicRune } + .desc = { ent-CP14BaseMagicRune.desc } + +ent-CP14RuneLurkerFearImpact = { ent-CP14BaseMagicImpact } + .desc = { ent-CP14BaseMagicImpact.desc } + +ent-CP14ActionSpellLurkerKick = Сокрушительная атака + .desc = Вы готовите мощный удар ближнего боя, который с силой отбросит вашу цель назад и надолго оглушит её. + +ent-CP14ActionSpellLurkerStep = Теневой шаг + .desc = Шаг сквозь прореху реальности, позволяющий быстро преодолеть небольшое расстояние. + +ent-CP14ImpactEffectLurkerStep = { ent-CP14BaseMagicImpact } + .desc = { ent-CP14BaseMagicImpact.desc } + ent-CP14ActionSpellMagicBallade = Магическая баллада .desc = Своей музыкой вы наполняете маной окружающие вас предметы. @@ -552,6 +573,9 @@ ent-CP14SpellScrollIceArrow = свиток заклинания ледяной ent-CP14ActionSpellIceDagger = Ледяной кинжал .desc = Вы создаете ледяной острый кинжал, который подойдет для временного использования. +ent-CP14IceDagger = ледяной кинжал + .desc = Острый ледяной кинжал, не очень долговечный, но может временно заменить настоящее оружие. + ent-CP14SpellScrollIceDagger = свиток заклинания ледяного кинжала .desc = { ent-CP14BaseSpellScrollWater.desc } @@ -630,15 +654,39 @@ ent-CP14ClothingCloakBlue = синий плащ ent-CP14ClothingCloakFurCoat = Меховая шуба .desc = Тепло под дождем, тепло под снегом, тепло на ветру. Славно. +ent-CP14ClothingCloakBrownFurCoat = коричневое меховое пальто + .desc = Тепло под дождем, тепло под снегом, тепло на ветру. Мило. + ent-CP14ClothingCloakInsulated = утепленная мантия .desc = Зима близко... +ent-CP14ClothingCloakBlackSyurko = чёрный сюртук + .desc = Длинный и просторный сюртук, который служит для защиты доспехов. + +ent-CP14ClothingCloakRedSyurko = красный сюртук + .desc = Длинный и просторный сюртук, который служит для защиты доспехов. + +ent-CP14ClothingCloakBlueSyurko = синий сюртук + .desc = Длинный и просторный сюртук, который служит для защиты доспехов. + +ent-CP14ClothingCloakGreenSyurko = зелёный сюртук + .desc = Длинный и просторный сюртук, который служит для защиты доспехов. + +ent-CP14ClothingCloakWhiteSyurko = белый сюртук + .desc = Длинный и просторный сюртук, который служит для защиты доспехов. + +ent-CP14ClothingCloakYellowSyurko = жёлтый сюртук + .desc = Длинный и просторный сюртук, который служит для защиты доспехов. + ent-CP14ClothingCloakGuardBase = накидка стражи .desc = Наплечная накидка в стандартных цветах Имперской гвардии. ent-CP14ClothingCloakGuardBlue = { ent-CP14ClothingCloakGuardBase } .desc = { ent-CP14ClothingCloakGuardBase.desc } +ent-CP14ClothingCloakGuardSyurko = сюртук стражи + .desc = Длинный и просторный сюртук, который служит для защиты доспехов. + ent-CP14ClothingCloakGuardCommander = бронированный плащ командира гвардии .desc = Это чрезвычайно прочная и легкая накидка, разработанная специально для командиров Имперской гвардии. @@ -666,9 +714,78 @@ ent-CP14ClothingGlovesJagermeister = перчатки егермейстера ent-CP14ClothingGlovesBlacksmith = кузнечные перчатки .desc = Говорят, в них можно взять в руки только что отлитый слиток. Но проверять это все равно не стоит. -ent-CP14ClothingHeadCapellina = капеллина +ent-CP14ModularAventailIronChainmail = железный кольчужный воротник + .desc = Воротник из кольчуги для защиты шеи от ударов и проколов в жизненно важных точках. + +ent-CP14ModularAventailGoldChainmail = золотой кольчужный воротник + .desc = Воротник из кольчуги для защиты шеи от ударов и проколов в жизненно важных точках. + +ent-CP14ModularAventailCopperChainmail = медный кольчужный воротник + .desc = Воротник из кольчуги для защиты шеи от ударов и проколов в жизненно важных точках. + +ent-CP14ModularAventailMithrilChainmail = мифриловый кольчужный воротник + .desc = Воротник из кольчуги для защиты шеи от ударов и проколов в жизненно важных точках. + +ent-CP14ModularAventailIronPlate = железный латный воротник + .desc = Железный воротник для защиты шеи от ударов и проколов в жизненно важных местах. Неудобно. + +ent-CP14ModularAventailGoldPlate = золотой латный воротник + .desc = Золотой воротник для защиты шеи от ударов и проколов в жизненно важных местах. Неудобно. + +ent-CP14ModularAventailCopperPlate = медный латный воротник + .desc = Медный воротник для защиты шеи от ударов и проколов в жизненно важных местах. Неудобно. + +ent-CP14ModularAventailMithrilPlate = мифриловый латный воротник + .desc = Мифриловый воротник для защиты шеи от ударов и проколов в жизненно важных местах. Неудобно. + +ent-CP14HelmetIronCapellina = железная капеллина .desc = Защита от ударов крупными предметами по голове. +ent-CP14HelmetGoldCapellina = золотая капеллина + .desc = Защита от ударов крупными предметами по голове. + +ent-CP14HelmetCopperCapellina = медная капеллина + .desc = Защита от ударов крупными предметами по голове. + +ent-CP14HelmetMithrilCapellina = мифриловая капеллина + .desc = Защита от ударов крупными предметами по голове. + +ent-CP14HelmetIronPalmHelmet = железный латный шлем + .desc = Плотно прилегающий шлем, защищающий голову от ударов. + +ent-CP14HelmetGoldPalmHelmet = золотой латный шлем + .desc = Плотно прилегающий шлем, защищающий голову от ударов. + +ent-CP14HelmetCopperPalmHelmet = медный латный шлем + .desc = Плотно прилегающий шлем, защищающий голову от ударов. + +ent-CP14HelmetMithrilPalmHelmet = мифриловый латный шлем + .desc = Плотно прилегающий шлем, защищающий голову от ударов. + +ent-CP14ModularVisorIronChainmail = железная кольчужная личина + .desc = Кольчужная личина, который защищает лицо от неприятных повреждений и при этом прекрасно выглядит. А кожа дышит. + +ent-CP14ModularVisorGoldChainmail = золотая кольчужная личина + .desc = Кольчужная личина, который защищает лицо от неприятных повреждений и при этом прекрасно выглядит. А кожа дышит. + +ent-CP14ModularVisorCopperChainmail = медная кольчужная личина + .desc = Кольчужная личина, который защищает лицо от неприятных повреждений и при этом прекрасно выглядит. А кожа дышит. + +ent-CP14ModularVisorMithrilChainmail = мифриловая кольчужная личина + .desc = Кольчужная личина, который защищает лицо от неприятных повреждений и при этом прекрасно выглядит. А кожа дышит. + +ent-CP14ModularVisorIronPlate = железная латная личина + .desc = Железная латная личина, который защищает лицо от неприятных повреждений и оставляя ему привлекательный вид. Не так удобно. + +ent-CP14ModularVisorGoldPlate = золотая латная личина + .desc = Золотая латная личина, который защищает лицо от неприятных повреждений и оставляя ему привлекательный вид. Не так удобно. + +ent-CP14ModularVisorCopperPlate = медная латная личина + .desc = Медная латная личина, который защищает лицо от неприятных повреждений и оставляя ему привлекательный вид. Не так удобно. + +ent-CP14ModularVisorMithrilPlate = мифриловая латная личина + .desc = Мифриловая латная личина, который защищает лицо от неприятных повреждений и оставляя ему привлекательный вид. + ent-CP14ClothingHeadBascinet = бацинет .desc = Защищает большую часть головы, но все равно не спасет от удара в лицо. @@ -699,12 +816,21 @@ ent-CP14ClothingHeadChristmasHat = новогодняя шляпа ent-CP14ClothingHeadHuntersHat = охотничья шляпа .desc = Головной убор, почитаемый охотниками на нежить. +ent-CP14ClothingHeadGreenHuntersHat = зелёная охотничья шляпа + .desc = Головной убор, почитаемый охотниками на нежить. + +ent-CP14ClothingHeadRedHuntersHat = красная охотничья шляпа + .desc = Головной убор, почитаемый охотниками на нежить. + ent-CP14ClothingHeadJestersCap = шутовской колпак .desc = Ты - веселье. Ты - шум. Ты - шут. ent-CP14ClothingHeadJagermeisterHat = шапка егермейстера .desc = Знак профессионала в своей области. +ent-CP14ClothingHeadStrawHat = соломенная шляпа + .desc = Легко сделать, не жалко потерять. + ent-CP14ClothingHeadGuardHelmet = шлем стражи ent-CP14ClothingHeadGildmaster = шляпа гильдмастера @@ -725,6 +851,12 @@ ent-CP14ClothingMaskSteelMask = стальная маска ent-CP14ClothingMaskNeckerchief = шейный платок .desc = Он максимально скрывает ваше лицо. +ent-CP14ClothingMaskRedNeckerchief = красный шейный платок + .desc = Он максимально скрывает ваше лицо. + +ent-CP14ClothingMaskGreenNeckerchief = зелёный шейный платок + .desc = Он максимально скрывает ваше лицо. + ent-CP14ClothingMaskBoneMask = костяная маска .desc = Заколдованная маска, ранее принадлежавшая волшебному существу. @@ -744,11 +876,17 @@ ent-CP14ArmorGoldCuirassPresets = полная золотая кираса .desc = Полные доспехи из чистого золота, столь же дорогие, сколь и неудобные, трудно представить, кто и зачем их носит. ent-CP14ArmorCopperCuirassPresets = полная медная кираса - .desc = Полные медные доспехи, дешевые и невзрачные, некоторые даже находят их более удобными, чем железные. + .desc = Полные медные доспехи, дешёвые и невзрачные, некоторые даже находят их более удобными, чем железные. ent-CP14ArmorMithrilCuirassPresets = полная мифриловая кираса .desc = Мечта любого искателя приключений, мифриловая броня - прочная, крепкая и почти не стесняющая движений. Если и существует идеал, то это именно он. +ent-CP14ArmorIronChainmailPresets = полная железная кольчуга + .desc = Полные железные кольчужные доспехи, лёгкие и с достойной защитой. + +ent-CP14ArmorMithrilChainmailPresets = полная мифриловая кольчуга + .desc = Полный мифриловый доспех, который, возможно, медленно и кропотливо собирали гномьи кузнецы. Ценнейшая работа. + ent-CP14ClothingOuterClothingCopperArmor = медная броня .desc = Качественная медная броня. @@ -878,6 +1016,12 @@ ent-CP14ClothingPantsAristocratic = штаны аристократа ent-CP14ClothingPantsMerchantsPantaloons = купеческие панталоны .desc = { ent-CP14ClothingPantsBase.desc } +ent-CP14ClothingCloakAmuletGold = золотой амулет + .desc = Золотой амулет, ценная безделушка. + +ent-CP14ClothingCloakAmuletMana = мана-амулет + .desc = Золотой амулет с магическим камнем внутри, который поможет вам легче колдовать. + ent-CP14ClothingRingIceShards = проводящее кольцо ледяных осколков .desc = Стандартное манапроводящее кольцо, позволяющее вызывать ледяные осколки. .suffix = Ледяные осколки @@ -1021,6 +1165,8 @@ ent-CP14ClothingShoesArtifactFrogs = жаботапы ent-CP14Mist = облако +ent-CP14SkyLightning = молния с небес + ent-CP14DemiplaneEntryPointMarker = точка входа в демиплан ent-CP14SalarySpawner = спавнер зарплаты @@ -1047,14 +1193,34 @@ ent-CP14MobGroupSpawnerRabbits = { ent-CP14BaseMobGroupSpawner } .desc = { ent-CP14BaseMobGroupSpawner.desc } .suffix = 2-3 Кроликов -ent-CP14MobGroupSpawnerFrogs = { ent-CP14BaseMobGroupSpawner } - .desc = { ent-CP14BaseMobGroupSpawner.desc } - .suffix = 2-3 Лягушки - ent-CP14MobGroupSpawnerIceSpectres = { ent-CP14BaseMobGroupSpawner } .desc = { ent-CP14BaseMobGroupSpawner.desc } .suffix = 1-2 Ледяных спектра +ent-CP14MobGroupSpawnerWatcherIce = { ent-CP14BaseMobGroupSpawner } + .desc = { ent-CP14BaseMobGroupSpawner.desc } + .suffix = 2-3 Ледяных наблюдателя + +ent-CP14MobGroupSpawnerWatcherMagma = { ent-CP14BaseMobGroupSpawner } + .desc = { ent-CP14BaseMobGroupSpawner.desc } + .suffix = 2-3 Магмовых наблюдателя + +ent-CP14MobGroupSpawnerSlimeIce = { ent-CP14BaseMobGroupSpawner } + .desc = { ent-CP14BaseMobGroupSpawner.desc } + .suffix = 2-3 Ледяных слайма + +ent-CP14MobGroupSpawnerSlimeFire = { ent-CP14BaseMobGroupSpawner } + .desc = { ent-CP14BaseMobGroupSpawner.desc } + .suffix = 2-3 Огненных слаймов + +ent-CP14MobGroupSpawnerSlimeElectric = { ent-CP14BaseMobGroupSpawner } + .desc = { ent-CP14BaseMobGroupSpawner.desc } + .suffix = 2-3 Электрических слаймов + +ent-CP14MobGroupSpawnerSlime = { ent-CP14BaseMobGroupSpawner } + .desc = { ent-CP14BaseMobGroupSpawner.desc } + .suffix = 2-3 Слаймов + ent-CP14SpawnPointGuardCommander = командир стражи .desc = { ent-CP14SpawnPointJobBase.desc } @@ -1106,16 +1272,12 @@ ent-CP14SpawnUniqueArtifact = случайный спавнер артефакт ent-CP14SpawnUniqueTradepost = случайный спавнер торговых постов -ent-CP14ConstrainedSpawnerBase = Неа - .desc = лол - -ent-CP14ConstrainedSpawnerXeno = ограниченный спавнер Ксено - .desc = { ent-CP14ConstrainedSpawnerBase.desc } - ent-CP14RandomSpawnerGatherAgaricShroom = спавнер мухоморов ent-CP14RandomDirtLootSpawner = спавнер земли +ent-CP14RandomStoneLootSpawner = спавнер грязи + ent-CP14RandomSnowLootSpawner = спавнер снега ent-CP14BaseBiomeSpawner = спавнер биомов @@ -1157,6 +1319,14 @@ ent-CP14BiomeSpawnerLeafMaze = { ent-CP14BaseBiomeSpawner } .desc = { ent-CP14BaseBiomeSpawner.desc } .suffix = Лабиринт из листьев +ent-CP14BiomeSpawnerMarbleCave = { ent-CP14BaseBiomeSpawner } + .desc = { ent-CP14BaseBiomeSpawner.desc } + .suffix = Мраморная пещера + +ent-CP14BiomeSpawnerWastelands = { ent-CP14BaseBiomeSpawner } + .desc = { ent-CP14BaseBiomeSpawner.desc } + .suffix = Пустоши + ent-CP14SpawnerDemiplaneLootT1 = Демиплан T1 Loot ent-CP14SpawnerDemiplaneLootT2 = Демиплан T2 Loot @@ -1200,69 +1370,12 @@ ent-CP14MobMonsterMole = хищный крот .desc = Охотится в темноте и любит вкус мяса и крови во рту. .suffix = AI -ent-CP14MobUndeadSkeletonDemiplane = скелет - .desc = Оживленный темной магией хрупкий скелет. Обычно скелеты - чрезвычайно разумные существа, управляемые недавно умершей душой. - -ent-CP14MobUndeadSkeletonHalberd = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Алебардщик - -ent-CP14MobUndeadSkeletonSword = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Мечник - -ent-CP14MobUndeadSkeletonDodger = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Кинжал - -ent-CP14MobUndeadSkeletonArcher = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Лучник - -ent-CP14MobUndeadSkeletonWizard = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Маг - -ent-CP14MobUndeadSkeletonBard = { ent-CP14MobUndeadSkeletonDemiplane } - .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } - .suffix = Бард - -ent-SpawnPointGhostDemiplaneSkeleton = точка спавна роли призрака - .desc = { ent-SpawnPointGhostDemiplaneSkeleton.desc } - .suffix = случайный скелет - -ent-SpawnPointGhostDemiplaneSkeletonHalberd = точка спавна роли призрака - .desc = { ent-SpawnPointGhostDemiplaneSkeleton.desc } - .suffix = скелет-алебардщик - -ent-SpawnPointGhostDemiplaneSkeletonSword = точка спавна роли призрака - .desc = { ent-SpawnPointGhostDemiplaneSkeleton.desc } - .suffix = скелет-мечник - -ent-SpawnPointGhostDemiplaneSkeletonDodger = точка спавна роли призрака - .desc = { ent-SpawnPointGhostDemiplaneSkeleton.desc } - .suffix = скелет-кинжальщик - -ent-SpawnPointGhostDemiplaneSkeletonArcher = точка спавна роли призрака - .desc = { ent-SpawnPointGhostDemiplaneSkeleton.desc } - .suffix = скелет-лучник - -ent-SpawnPointGhostDemiplaneSkeletonWizard = точка спавна роли призрака - .desc = { ent-SpawnPointGhostDemiplaneSkeleton.desc } - .suffix = скелет-маг - -ent-SpawnPointGhostDemiplaneSkeletonBard = точка спавна роли призрака - .desc = { ent-SpawnPointGhostDemiplaneSkeleton.desc } - .suffix = скелет-бард - ent-CP14MobWatcherIce = ледяной наблюдатель .desc = { ent-CP14MobWatcherBase.desc } ent-CP14MobWatcherMagma = магмовый наблюдатель .desc = { ent-CP14MobWatcherBase.desc } -ent-CP14MobSpaceCobra = кобра - ent-CP14MobUndeadZombie = ходячий труп .desc = Ожившее гниющее тело мертвеца, желающее пожрать живых. @@ -1317,6 +1430,81 @@ ent-CP14MobSilva = { ent-CP14BaseMobSilva } ent-CP14MobTiefling = мистер Тифлинг +ent-CP14MobLurker = луркер + .desc = Дух голода и ночи. Охотится на одиноких странников, заблудившихся в тёмном лесу. + .suffix = AI + +ent-CP14LurkerRitualSound = ритуал луркера с дальним звуком + +ent-SpawnPointGhostDemiplaneLurker = точка спавна роли призрака + .desc = Роль призрака луркера + .suffix = Луркер + +ent-CP14MobUndeadSkeletonDemiplane = скелет + .desc = Оживленный темной магией хрупкий скелет. Обычно скелеты - чрезвычайно разумные существа, управляемые недавно умершей душой. + +ent-CP14MobUndeadSkeletonHalberd = { ent-CP14MobUndeadSkeletonDemiplane } + .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } + .suffix = Алебардщик + +ent-CP14MobUndeadSkeletonSword = { ent-CP14MobUndeadSkeletonDemiplane } + .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } + .suffix = Мечник + +ent-CP14MobUndeadSkeletonDodger = { ent-CP14MobUndeadSkeletonDemiplane } + .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } + .suffix = Кинжал + +ent-CP14MobUndeadSkeletonArcher = { ent-CP14MobUndeadSkeletonDemiplane } + .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } + .suffix = Лучник + +ent-CP14MobUndeadSkeletonWizard = { ent-CP14MobUndeadSkeletonDemiplane } + .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } + .suffix = Маг + +ent-CP14MobUndeadSkeletonBard = { ent-CP14MobUndeadSkeletonDemiplane } + .desc = { ent-CP14MobUndeadSkeletonDemiplane.desc } + .suffix = Бард + +ent-CP14SpawnPointGhostDemiplaneSkeleton = точка спавна роли призрака + .desc = Роль призрака для кровожадного и хитрого скелета. + .suffix = случайный скелет + +ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd = точка спавна роли призрака + .desc = Роль призрака для кровожадного и хитрого скелета. + .suffix = скелет Алебардщик + +ent-CP14SpawnPointGhostDemiplaneSkeletonSword = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } + .suffix = скелет Мечник + +ent-CP14SpawnPointGhostDemiplaneSkeletonDodger = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } + .suffix = скелет Кинжальщик + +ent-CP14SpawnPointGhostDemiplaneSkeletonArcher = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } + .suffix = скелет Лучник + +ent-CP14SpawnPointGhostDemiplaneSkeletonWizard = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } + .suffix = скелет Маг + +ent-CP14SpawnPointGhostDemiplaneSkeletonBard = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd } + .desc = { ent-CP14SpawnPointGhostDemiplaneSkeletonHalberd.desc } + .suffix = скелет Бард + +ent-CP14SpawnPointTownRaid = городской рейд точка спавна роли призрака + .suffix = Городской рейд + +ent-CP14MobUndeadSkeletonWizardTownRaid = { ent-CP14MobUndeadSkeletonWizard } + .desc = { ent-CP14MobUndeadSkeletonWizard.desc } + .suffix = Маг + +ent-CP14SpawnPointTownRaidUndeadEasy = { ent-CP14SpawnPointTownRaid } + .suffix = Городской рейд (Нежить, Легкий) + ent-CP14BaseMobCarcat = мистер Кот ent-CP14BaseMobDwarf = мистер Дварф @@ -1586,6 +1774,9 @@ ent-CP14FoodPiePumpkinRaw = сырой тыквенный пирог ent-CP14FoodPiePumpkin = тыквенный пирог .desc = Вкусный тыквенный пирог с поджаристой корочкой снаружи. +ent-CP14FoodPieBurnt = сгоревший пирог + .desc = Пирог подгорел и представляет собой горелую и несъедобную массу. Лучше это вычистить ножом. + ent-CP14Plate = тарелка .desc = Это ваша тарелка для вкусной еды! @@ -1756,59 +1947,20 @@ ent-CP14LuteInstrument = лютня ent-SkeletonGuitarInstrument = скелютня .desc = Настоящее оружие для брутальных рок-скелетов. Что означает слово «рок»? -ent-CP14KeyTavernAlchemistAbstract = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Алхимик, абстрактный - -ent-CP14KeyAlchemy1 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Алхимик 1 - -ent-CP14KeyAlchemy2 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Алхимик 2 - ent-CP14BaseKey = ключ .desc = Небольшой замысловатый кусочек железа, открывающий определенные замки. Не отдавайте кому попало! -ent-CP14BaseLockpick = отмычка - .desc = Воровской инструмент, позволяющий с достаточными навыками и сноровкой открыть любой замок. - -ent-CP14KeyTavernBlacksmithAbstract = { ent-CP14BaseKey } +ent-CP14KeyCopperBlank = { ent-CP14BaseKey } .desc = { ent-CP14BaseKey.desc } - .suffix = Кузнец, абстрактный -ent-CP14KeyBlacksmith = { ent-CP14BaseKey } +ent-CP14KeyIronBlank = { ent-CP14BaseKey } .desc = { ent-CP14BaseKey.desc } - .suffix = Кузнец 1 -ent-CP14KeyBlacksmith2 = { ent-CP14BaseKey } +ent-CP14KeyGoldBlank = { ent-CP14BaseKey } .desc = { ent-CP14BaseKey.desc } - .suffix = Кузнец 2 -ent-CP14KeyGuardEntrance = { ent-CP14BaseKey } +ent-CP14KeyMithrilBlank = { ent-CP14BaseKey } .desc = { ent-CP14BaseKey.desc } - .suffix = Стража, вход - -ent-CP14KeyGuard = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Стража - -ent-CP14KeyGuardCommander = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Командир стражи - -ent-CP14KeyGuardWeaponStorage = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Хранилище оружия - -ent-CP14KeyGuildmaster = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Гильдмастер - -ent-CP14KeyDemiplaneCrystal = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Кристалл связи с демипланами ent-CP14BaseKeyRing = кольцо для ключей .desc = Позволяет комфортно носить большое количество ключей в одном месте. @@ -1846,123 +1998,195 @@ ent-CP14KeyRingGuildmaster = { ent-CP14BaseKeyRing } .desc = { ent-CP14BaseKeyRing.desc } .suffix = Гильдмастер -ent-CP14KeyTavernMerchantShopAbstract = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Торговый магазин, абстрактный +ent-CP14BaseLock = замок + .desc = Небольшое устройство, предназначенное только для ключей определенной формы. Прикрепите его к дверям или сундукам, на которых нет замка, и почувствуйте дух безопасности. -ent-CP14KeyMercantShop1 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Торговый магазин 1 +ent-CP14LockCopper = { ent-CP14BaseLock } + .desc = { ent-CP14BaseLock.desc } -ent-CP14KeyMercantShop2 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Торговый магазин 2 +ent-CP14LockIron = { ent-CP14BaseLock } + .desc = { ent-CP14BaseLock.desc } -ent-CP14KeyMercantShop3 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Торговый магазин 3 +ent-CP14LockGold = { ent-CP14BaseLock } + .desc = { ent-CP14BaseLock.desc } -ent-CP14KeyPersonalHouseAbstract = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Личный дом, абстрактный +ent-CP14LockMithril = { ent-CP14BaseLock } + .desc = { ent-CP14BaseLock.desc } -ent-CP14KeyPersonalHouseAbstractLoadoutDummy = Ключ к случайному личному дом (ограничено на карту) - .desc = { ent-CP14BaseKey.desc } +ent-CP14BaseLockpick = железная отмычка + .desc = Инструмент вора, который при должной сноровке и умении позволяет взломать любой замок. -ent-CP14KeyPersonalHouse1 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14LockpickMithril = мифриловая отмычка + .desc = { ent-CP14BaseLockpick.desc } + +ent-CP14KeyFile = напильник ключей + .desc = Напильник, идеально подходящий для заточки ключей и изменения их формы. + +ent-CP14KeyTavernAlchemistAbstract = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Абстракт. Алхимия. + +ent-CP14KeyAlchemy1 = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Алхимия 1 + +ent-CP14KeyAlchemy2 = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Алхимия 2 + +ent-CP14KeyTavernBlacksmithAbstract = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Абстракт. Кузница. + +ent-CP14KeyBlacksmith = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Кузница 1 + +ent-CP14KeyBlacksmith2 = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Кузница 2 + +ent-CP14KeyGuardEntrance = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Вход стражников + +ent-CP14KeyGuard = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Стража + +ent-CP14KeyGuardCommander = { ent-CP14KeyMithrilBlank } + .desc = { ent-CP14KeyMithrilBlank.desc } + .suffix = Командир стражи + +ent-CP14KeyGuardWeaponStorage = { ent-CP14KeyMithrilBlank } + .desc = { ent-CP14KeyMithrilBlank.desc } + .suffix = Стража. Склад оружия + +ent-CP14KeyGuildmaster = { ent-CP14KeyGoldBlank } + .desc = { ent-CP14KeyGoldBlank.desc } + .suffix = Гильдмастер + +ent-CP14KeyDemiplaneCrystal = { ent-CP14KeyGoldBlank } + .desc = { ent-CP14KeyGoldBlank.desc } + .suffix = Кристалл Демиплана + +ent-CP14KeyTavernMerchantShopAbstract = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Абстракт. Магазин торговца + +ent-CP14KeyMercantShop1 = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Магазин торговца 1 + +ent-CP14KeyMercantShop2 = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Магазин торговца 2 + +ent-CP14KeyMercantShop3 = { ent-CP14KeyIronBlank } + .desc = { ent-CP14KeyIronBlank.desc } + .suffix = Магазин торговца 3 + +ent-CP14KeyPersonalHouseAbstract = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } + .suffix = Абстракт. Личный дом + +ent-CP14KeyPersonalHouseAbstractLoadoutDummy = ключ от случайного личного дома (ограниченное количество на карту) + .desc = { ent-CP14KeyCopperBlank.desc } + +ent-CP14KeyPersonalHouse1 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 1 -ent-CP14KeyPersonalHouse2 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse2 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 2 -ent-CP14KeyPersonalHouse3 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse3 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 3 -ent-CP14KeyPersonalHouse4 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse4 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 4 -ent-CP14KeyPersonalHouse5 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse5 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 5 -ent-CP14KeyPersonalHouse6 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse6 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 6 -ent-CP14KeyPersonalHouse7 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse7 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 7 -ent-CP14KeyPersonalHouse8 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse8 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 8 -ent-CP14KeyPersonalHouse9 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse9 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 9 -ent-CP14KeyPersonalHouse10 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse10 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 10 -ent-CP14KeyPersonalHouse11 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse11 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 11 -ent-CP14KeyPersonalHouse12 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse12 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 12 -ent-CP14KeyPersonalHouse13 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse13 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 13 -ent-CP14KeyPersonalHouse14 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse14 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 14 -ent-CP14KeyPersonalHouse15 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse15 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 15 -ent-CP14KeyPersonalHouse16 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyPersonalHouse16 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Личный дом 16 -ent-CP14KeyTavernHall = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Вход в таверну +ent-CP14KeyTavernHall = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } + .suffix = Зал таверны -ent-CP14KeyTavernStaff = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Служебные помещения таверны +ent-CP14KeyTavernStaff = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } + .suffix = Персонал таверны -ent-CP14KeyTavernDormsAbstract = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } - .suffix = Комнаты таверны, абстрактный +ent-CP14KeyTavernDormsAbstract = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } + .suffix = Абстракт. Общежития таверны -ent-CP14KeyTavernDorms1 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyTavernDorms1 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Общежития таверны 1 -ent-CP14KeyTavernDorms2 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyTavernDorms2 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Общежития таверны 2 -ent-CP14KeyTavernDorms3 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyTavernDorms3 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Общежития таверны 3 -ent-CP14KeyTavernDorms4 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyTavernDorms4 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Общежития таверны 4 -ent-CP14KeyTavernDorms5 = { ent-CP14BaseKey } - .desc = { ent-CP14BaseKey.desc } +ent-CP14KeyTavernDorms5 = { ent-CP14KeyCopperBlank } + .desc = { ent-CP14KeyCopperBlank.desc } .suffix = Общежития таверны 5 ent-CP14Ash1 = пепел @@ -2110,18 +2334,6 @@ ent-CP14OreMithril10 = { ent-CP14OreMithril1 } .desc = { ent-CP14OreMithril1.desc } .suffix = 10 -ent-CP14ScrapCopper = медный хлам - .desc = Кривые куски меди. Бесполезны. Только для того, чтобы быть переплавленным. - -ent-CP14ScrapIron = железный хлам - .desc = Кривые куски железа. Бесполезны. Только для того, чтобы быть переплавленным. - -ent-CP14ScrapGold = золотой хлам - .desc = Кривые куски золота. Бесполезны. Только для того, чтобы быть переплавленным. - -ent-CP14ScrapMithril = мифриловый хлам - .desc = Кривые куски мифрила. Бесполезны. Только для того, чтобы быть переплавленным. - ent-CP14DirtBlock1 = блок земли .desc = Блок великолепной плодородной почвы. @@ -2136,6 +2348,36 @@ ent-CP14StoneBlock10 = { ent-CP14StoneBlock1 } .desc = { ent-CP14StoneBlock1.desc } .suffix = 10 +ent-CP14MarbleBlock1 = мраморный блок + .desc = Глыба белого мрамора. + +ent-CP14MarbleBlock10 = { ent-CP14MarbleBlock1 } + .desc = { ent-CP14MarbleBlock1.desc } + .suffix = 10 + +ent-CP14ScrapCopper = медный хлам + .desc = Кривые куски меди. Бесполезны. Только для того, чтобы быть переплавленным. + +ent-CP14ScrapIron = железный хлам + .desc = Кривые куски железа. Бесполезны. Только для того, чтобы быть переплавленным. + +ent-CP14ScrapGold = золотой хлам + .desc = Кривые куски золота. Бесполезны. Только для того, чтобы быть переплавленным. + +ent-CP14ScrapMithril = мифриловый хлам + .desc = Кривые куски мифрила. Бесполезны. Только для того, чтобы быть переплавленным. + +ent-CP14String = нитки + .desc = Тонкая нить. Материал для починки одежды или пошива новой. + +ent-CP14Cloth1 = ткань + .desc = Рулон ткани + .suffix = 1 + +ent-CP14Cloth10 = { ent-CP14Cloth1 } + .desc = { ent-CP14Cloth1.desc } + .suffix = 10 + ent-CP14WoodLog = деревянное бревно .desc = Кусок необработанной древесины. Хороший материал для строительства, или разведения огня. @@ -2166,17 +2408,24 @@ ent-CP14LucensWoodenPlanks20 = { ent-CP14LucensWoodenPlanks1 } .desc = { ent-CP14LucensWoodenPlanks1.desc } .suffix = 20 -ent-CP14String = нитки - .desc = Тонкая нить. Материал для починки одежды или пошива новой. +ent-CP14BirchWoodLog = берёзовое полено + .desc = { ent-CP14WoodLog.desc } -ent-CP14Cloth1 = ткань - .desc = Рулон ткани +ent-CP14BirchWoodenPlanks1 = берёзовые доски + .desc = { ent-CP14WoodenPlanks1.desc } .suffix = 1 -ent-CP14Cloth10 = { ent-CP14Cloth1 } - .desc = { ent-CP14Cloth1.desc } +ent-CP14BirchWoodenPlanks10 = { ent-CP14BirchWoodenPlanks1 } + .desc = { ent-CP14BirchWoodenPlanks1.desc } .suffix = 10 +ent-CP14BirchWoodenPlanks20 = { ent-CP14BirchWoodenPlanks1 } + .desc = { ent-CP14BirchWoodenPlanks1.desc } + .suffix = 20 + +ent-CP14Bell = колокольчик + .desc = Обычный колокольчик с ручкой для привлечения внимания. + ent-CP14Candle = свеча .desc = Тонкий фитиль, продетый через жир. @@ -2288,6 +2537,54 @@ ent-CP14CrayonPurple = фиолетовый мелок ent-CP14PartsMonsterGlands = ядовитые железы .desc = Ядовитые железы опасного монстра, возможно, в них что-то осталось. +ent-CP14FloorTileBase = None + .desc = Сделайте пол более приятным для ваших ног. И для ваших глаз. + +ent-CP14FloorTileFoundation = напольная плитка для фундамента + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileMarbleBrick = мраморный кирпич + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileMarbleSmallbricks = мраморный маленький кирпич + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileOakWoodplanks = дубовые доски + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileOakWoodplanksBig = дубовые большие доски + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileOakWoodplanksCruciform = дубовые крестообразные доски + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileOakWoodplanksStairs = дубовая лестница + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileStonebricks = каменная кладка + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileStonebricksSmallCarved = маленькие резные каменные кирпичи + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileStonebricksSmallCarved2 = маленькие резные каменные кирпичи 2 + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileStonebricksSquareCarved = квадратные резные каменные кирпичи + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileBirchWoodplanks = берёзовые доски + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileBirchWoodplanksBig = берёзовые большие доски + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileBirchWoodplanksCruciform = берёзовые крестообразные доски + .desc = { ent-CP14FloorTileBase.desc } + +ent-CP14FloorTileBirchWoodplanksStairs = берёзовая лестница + .desc = { ent-CP14FloorTileBase.desc } + ent-CP14ModularGripShort = None .desc = Инструмент для ваших целей! @@ -2816,11 +3113,11 @@ ent-CP14BaseSubdimensionalKey = ключ демиплана ent-CP14DemiplaneKeyT1 = { ent-CP14BaseSubdimensionalKey } .desc = { ent-CP14BaseSubdimensionalKey.desc } - .suffix = Level 3 + .suffix = Уровень 3 ent-CP14DemiplaneKeyT2 = { ent-CP14BaseSubdimensionalKey } .desc = { ent-CP14BaseSubdimensionalKey.desc } - .suffix = Level 6 + .suffix = Уровень 6 ent-CP14CrystalLampBlueEmpty = голубая кристалльная лампа .desc = { ent-CP14CrystalLamp.desc } @@ -2938,6 +3235,10 @@ ent-CP14ModularSkeletonSword = костяной меч ent-CP14BowCombat = боевой лук .desc = Стандартный боевой +ent-CP14BowIceArtifact = ледяной лук + .desc = Волшебный лук, не требующий боеприпасов. + .suffix = Артефакт + ent-CP14BaseLightCrossbow = легкий арбалет .desc = Небольшой, компактный арбалет, который удобно держать одной рукой. Не слишком меткий с обратной стороны. @@ -2963,9 +3264,6 @@ ent-CP14_NeutralCluster_Root = Te-Se-Ra ent-CP14_NeutralCluster_00 = Li-Ra -ent-CP14Chasm = бездна - .desc = И вы не видите ее дна... - ent-CP14WallmountCrystalRubies = { ent-CP14WallmountCrystalBase } .desc = { ent-CP14WallmountCrystalBase.desc } .suffix = Красный @@ -2996,6 +3294,9 @@ ent-CP14Lighthouse = маяк ent-CP14DPSMeter = DPS Meter .desc = Подсчитывает средний урон в секунду. Если вы прекращаете наносить удары, отображается результат. +ent-CP14RoundLeaver = дальний туман + .desc = Вы достигли края игровой карты. Дальше ничего нет. Вы можете использовать этот туман, чтобы выйти из игры. + ent-CP14LaddersDownBase = лестница вниз .desc = Темные глубины подземного мира зовут вас. @@ -3046,15 +3347,15 @@ ent-CP14LaddersUpMarbleAutoLink = { ent-CP14LaddersUpMarble } ent-CP14CobwebLeft1 = { ent-CP14CobwebRight1 } .desc = { ent-CP14CobwebRight1.desc } - .suffix = Left. Corner. + .suffix = Левый. Угол. ent-CP14CobwebLeft2 = { ent-CP14CobwebRight1 } .desc = { ent-CP14CobwebRight1.desc } - .suffix = Left. Flat. + .suffix = Левый. Плоский. ent-CP14CobwebRight2 = { ent-CP14CobwebLeft2 } .desc = { ent-CP14CobwebLeft2.desc } - .suffix = Right. Flat. + .suffix = Правый. Плоский. ent-CP14WallmountFlagAlchemist = гобелен алхимика .desc = Гобелен с символом зелья, указывающий на то, что здесь обитают алхимики. @@ -3175,9 +3476,6 @@ ent-CP14IronDoorFrame = каркас железной двери ent-CP14IronDoorFrameMirrored = { ent-CP14IronDoorFrame } .desc = { ent-CP14IronDoorFrame.desc } -ent-CP14FenceIronGrilleGateFrame = рама железных решетчатых ворот - .desc = Незаконченные железные решетчатые ворота. - ent-CP14IronDoorMirrored = { ent-CP14IronDoor } .desc = { ent-CP14IronDoor.desc } .suffix = Открыто, Зеркальная @@ -3234,21 +3532,18 @@ ent-CP14IronDoorWindowedGuardEntrance = { ent-CP14IronDoorWindowed } .desc = { ent-CP14IronDoorWindowed.desc } .suffix = Стража, Вход -ent-CP14FenceIronGrilleGateGuard = { ent-CP14FenceIronGrilleGate } - .desc = { ent-CP14FenceIronGrilleGate.desc } +ent-CP14FenceGateBigIronGuard = None .suffix = Стража ent-CP14IronDoorGuardGuildmaster = { ent-CP14IronDoor } .desc = { ent-CP14IronDoor.desc } .suffix = Гильдмастер -ent-CP14FenceIronGrilleGateGuildmaster = { ent-CP14FenceIronGrilleGate } - .desc = { ent-CP14FenceIronGrilleGate.desc } +ent-CP14FenceGateBigIronGuildmaster = None .suffix = Гильдмастер -ent-CP14FenceIronGrilleGateDemiplaneCrystal = { ent-CP14FenceIronGrilleGate } - .desc = { ent-CP14FenceIronGrilleGate.desc } - .suffix = Кристалл связи с демипланами +ent-CP14FenceGateBigIronDemiplaneCrystal = None + .suffix = Кристалл Демиплана ent-CP14WoodenDoorMerchantShop1 = { ent-CP14WoodenDoor } .desc = { ent-CP14WoodenDoor.desc } @@ -3326,6 +3621,25 @@ ent-CP14WoodenDoorPersonalHouse16 = { ent-CP14WoodenDoor } .desc = { ent-CP14WoodenDoor.desc } .suffix = Личный дом 16 +ent-CP14WoodenDoorRandomLocked = { ent-CP14WoodenDoor } + .desc = { ent-CP14WoodenDoor.desc } + .suffix = Случайный замок (Комплекс 3) + +ent-CP14WoodenDoorWindowedRandomLocked = { ent-CP14WoodenDoorWindowed } + .desc = { ent-CP14WoodenDoorWindowed.desc } + .suffix = Случайный замок (Комплекс 3) + +ent-CP14IronDoorRandomLocked = { ent-CP14IronDoor } + .desc = { ent-CP14IronDoor.desc } + .suffix = Случайный замок (Комплекс 5) + +ent-CP14IronDoorWindowedRandomLocked = { ent-CP14IronDoorWindowed } + .desc = { ent-CP14IronDoorWindowed.desc } + .suffix = Случайный замок (Комплекс 5) + +ent-CP14FenceGateBigIronRandomLocked = None + .suffix = Случайный замок (Комплекс 5) + ent-CP14WoodenDoorTavernStaff = { ent-CP14WoodenDoor } .desc = { ent-CP14WoodenDoor.desc } .suffix = Персонал таверны @@ -3354,14 +3668,21 @@ ent-CP14WoodenDoorWindowedTavernHall = { ent-CP14WoodenDoorWindowed } .desc = { ent-CP14WoodenDoorWindowed.desc } .suffix = Зал таверны -ent-CP14BaseFenceStraight = { ent-CP14BaseFence } - .desc = { ent-CP14BaseFence.desc } +ent-CP14BaseFenceBig = большой забор + .desc = Чтобы перебраться на другую сторону, вам обязательно понадобится поленница. -ent-CP14BaseFenceCorner = { ent-CP14BaseFence } - .desc = { ent-CP14BaseFence.desc } +ent-CP14FenceBigWoodenBirch = None + .suffix = Дерево. Берёза. -ent-CP14BaseFenceDoor = { ent-CP14BaseFenceStraight } - .desc = { ent-CP14BaseFenceStraight.desc } +ent-CP14FenceBigIron = { ent-CP14BaseFenceBig } + .desc = { ent-CP14BaseFenceBig.desc } + .suffix = Железо + +ent-CP14BaseFenceGateBig = большие ворота забора + .desc = Большие ворота размером с человека. Каков ваш следующий шаг? + +ent-CP14FenceGateBigWoodenBirch = None + .suffix = Дерево. Берёза. ent-CP14Cliff = обрыв .desc = Серьезные неровности природного ландшафта. @@ -3383,14 +3704,42 @@ ent-CP14CliffEndRight = { ent-CP14Cliff } .desc = { ent-CP14Cliff.desc } .suffix = Правый край +ent-CP14BaseFence = забор + .desc = Низкий забор, ограничивающий движение чисто номинально. + +ent-CP14FenceWoodenBirch = None + .suffix = Дерево. Берёза + +ent-CP14BaseFenceGate = ворота забора + .desc = У вас есть два пути. Вы можете открыть дверь, как обычный человек, или перелезть через неё, как смешной человек. + +ent-CP14FenceGateWoodenBirch = None + .suffix = Дерево. Берёза. + +ent-CP14BaseFenceWindow = окно забора + .desc = Вы можете просунуть сюда какой-нибудь предмет, но точно не сможете пролезть. + +ent-CP14FenceWindowIron = { ent-CP14BaseFenceWindow } + .desc = { ent-CP14BaseFenceWindow.desc } + .suffix = Железо + +ent-CP14Chasm = бездна + .desc = И вы не видите ее дна... + ent-CP14FloorLava = лава .desc = Не прыгайте. Оно того не стоит, каким бы смешным оно ни было. ent-CP14FloorWaterOptimized = вода .desc = Впадина с обычной водой. Достаточна чиста для употребления. + .suffix = Оптимизированный, Пустой + +ent-CP14FloorWaterOptimizedDeep = глубокая вода + .desc = { ent-CP14FloorWaterOptimized.desc } + .suffix = Глубина, Удушение ent-CP14FloorWater = { ent-CP14FloorWaterOptimized } .desc = { ent-CP14FloorWaterOptimized.desc } + .suffix = Нормальное ent-CP14FloorWaterLilies = { ent-CP14FloorWater } .desc = { ent-CP14FloorWater.desc } @@ -3398,7 +3747,7 @@ ent-CP14FloorWaterLilies = { ent-CP14FloorWater } ent-CP14FloorWaterReeds = { ent-CP14FloorWater } .desc = { ent-CP14FloorWater.desc } - .suffix = Спавнер рогоза + .suffix = Спавнер рогозы ent-CP14FloorWaterAirLily = { ent-CP14FloorWater } .desc = { ent-CP14FloorWater.desc } @@ -3441,6 +3790,12 @@ ent-CP14FloraTreeGreen = { ent-CP14BaseTree } ent-CP14FloraTreeSnow = { ent-CP14BaseTree } .desc = { ent-CP14BaseTree.desc } +ent-CP14FloraTreeDead = { ent-CP14BaseTree } + .desc = { ent-CP14BaseTree.desc } + +ent-CP14FloraTreeDeadSmall = { ent-CP14BaseTree } + .desc = { ent-CP14BaseTree.desc } + ent-CP14FloraTreeGreenLarge = { ent-CP14BaseTreeLarge } .desc = { ent-CP14BaseTreeLarge.desc } @@ -3450,12 +3805,24 @@ ent-CP14BaseLucensTree = Люцен ent-CP14BaseLucensTreeLarge = большой Люцен .desc = { ent-CP14BaseLucensTree.desc } +ent-CP14FloraTreeBirchSmall = { ent-CP14BaseTree } + .desc = { ent-CP14BaseTree.desc } + .suffix = Маленький + +ent-CP14FloraTreeBirchMedium = { ent-CP14BaseTree } + .desc = { ent-CP14BaseTree.desc } + .suffix = Средний + +ent-CP14FloraTreeBirchLarge = { ent-CP14BaseTree } + .desc = { ent-CP14BaseTree.desc } + .suffix = Большой + ent-CP14CrystalBase = кварц .desc = Природные кристаллы кварца, способные впитывать магическую энергию окружающего мира. ent-CP14CrystalEmpty = { ent-CP14CrystalBase } .desc = { ent-CP14CrystalBase.desc } - .suffix = Normal + .suffix = Нормальный ent-CP14CrystalEarth = { ent-CP14CrystalBase } .desc = { ent-CP14CrystalBase.desc } @@ -3534,23 +3901,27 @@ ent-CP14PlantWheat = пшеница ent-CP14GatherableBloodFlower = кровьцветы .desc = Алые цветы растут там, где пролилась кровь. - .suffix = Gatherable + .suffix = Собираемый ent-CP14GatherableBlueAmanita = лазурная аманита .desc = Небесно-голубой цветок, известный своими лечебными и магическими свойствами. - .suffix = Gatherable + .suffix = Собираемый ent-CP14GatherableChromiumSlime = хромовая слизь .desc = Это редкое густое вещество можно обнаружить в потоке воды, как будто оно обладает собственным разумом. При попытке изменить саму слизь - она меняет реагент, с которым взаимодействует. - .suffix = Gatherable + .suffix = Собираемый ent-CP14GatherableDayflin = желтые днецветы .desc = Желтый солнечный цветок, пахнущий топленым молоком. Может быть переработан в желтый краситель. - .suffix = Gatherable + .suffix = Собираемый ent-CP14GatherableFlyAgaric = мухомор .desc = Этот ядовитый гриб часто можно встретить вблизи водоемов или других влажных мест. Он не рекомендуется для употребления в пищу. - .suffix = Gatherable + .suffix = Собираемый + +ent-CP14GatherableLumiMushroom = люмигриб + .desc = Слабо светящийся гриб. Часто используется алхимиками как средство для концентрации растворов. + .suffix = Собираемый ent-CP14WaterLilies = кувшинки .desc = Ух ты, это растения, которые растут не на суше, а в воде! Природа удивительна. @@ -3558,6 +3929,10 @@ ent-CP14WaterLilies = кувшинки ent-CP14WaterReeds = рогоз .desc = Обычно растет на болотах и по берегам рек. +ent-CP14GatherableWildSage = дикий шалфей + .desc = Корень этого повсеместно распространённого лекарственного растения неплохо заживляет физические повреждения и вызывает кашель. + .suffix = Собираемый + ent-CP14BarrelWater = { ent-CP14BaseBarrel } .desc = { ent-CP14BaseBarrel.desc } .suffix = Вода @@ -3783,6 +4158,9 @@ ent-CP14TableWoodenRound = круглый деревянный стол ent-CP14TableWoodenCounter = деревянная стойка .desc = { ent-CP14TableWooden.desc } +ent-CP14TableMarble = мраморный стол + .desc = Изысканный стол из белого мрамора. + ent-CP14WallmountTorch = настенный факел .desc = Хороший, надёжный источник света. Жаль, недолговечный. @@ -3800,53 +4178,15 @@ ent-CP14WallmountLamp = { ent-CP14WallmountLampEmpty } .desc = { ent-CP14WallmountLampEmpty.desc } .suffix = Маленький кристалл -ent-CP14BaseCrushed = None - .desc = Стена, которая не устояла перед течением времени и агрессивными условиями. - -ent-CP14FrameWoodenCrushedMedium = деревянная рама стены - .desc = Стена, не устоявшая перед потоком времени и агрессивных условий. - .suffix = Раскрошенный. Средний - -ent-CP14FrameWoodenCrushedLow = деревянная рама стены - .desc = { ent-CP14FrameWoodenCrushedMedium.desc } - .suffix = Раскрошенный. Низкий - -ent-CP14WallStonebrickCrushedMedium = каменная кирпичная стена - .desc = { ent-CP14FrameWoodenCrushedMedium.desc } - .suffix = Раскрошенный. Средний - -ent-CP14WallStonebrickCrushedLow = каменная кирпичная стена - .desc = { ent-CP14FrameWoodenCrushedMedium.desc } - .suffix = Раскрошенный. Низкий - ent-CP14BaseRoof = крыша .desc = Крыша над головой, защищающая от солнечного зноя или непогоды. -ent-CP14ShuttleWingBase = крыло воздушного корабля - .desc = Гигантские перепончатые крылья, способные, наряду с магией, удерживать в воздухе самые тяжелые предметы. - -ent-CP14ShuttleWingSmallR = { ent-CP14ShuttleWingBase } - .desc = { ent-CP14ShuttleWingBase.desc } - .suffix = Правое, маленькое - -ent-CP14ShuttleWingSmallL = { ent-CP14ShuttleWingBase } - .desc = { ent-CP14ShuttleWingBase.desc } - .suffix = Левое, маленькое - -ent-CP14ShuttleWingBigL = { ent-CP14ShuttleWingBase } - .desc = { ent-CP14ShuttleWingBase.desc } - .suffix = Левое, большое - -ent-CP14ShuttleWingBigR = { ent-CP14ShuttleWingBase } - .desc = { ent-CP14ShuttleWingBase.desc } - .suffix = Правое, большое - ent-CP14AlchemyFurnace = алхимическая печь .desc = Печь, работающая на дровах, угле или любом другом горящем материале. Удобна для подогрева алхимических зелий. ent-CP14AlchemyFurnaceDebug = { ent-CP14AlchemyFurnace } .desc = { ent-CP14AlchemyFurnace.desc } - .suffix = Заженный, Бесконечный + .suffix = Зажённый, Бесконечный ent-CP14BaseSharpeningStoneStructure = стационарный точильный камень .desc = Прочный, долговечный точильный камень, способный затачивать оружие без особого вреда для него. @@ -3954,6 +4294,9 @@ ent-CP14CrateDirtPitGraveFilled = { ent-CP14CrateDirtPitGrave } ent-CP14WallStone = камень .desc = Природная стена из цельного камня. В ней ощущается холод пещеры. +ent-CP14WallMarbleStone = мрамор + .desc = { ent-CP14WallStone.desc } + ent-CP14WallStoneIndestructable = плотный камень .desc = Очень прочный камень. Кажется, ваших инструментов недостаточно, чтобы пробить его. .suffix = Неразрушимый @@ -3980,23 +4323,30 @@ ent-CP14WallStoneMithrilOre = { ent-CP14WallStone } .desc = Природная стена из цельного камня. Вы видите в ней манящие частицы мифрила. .suffix = мифриловая руда -ent-CP14BaseWall = стена - .desc = Достаточно прочная, чтобы укрыть вас от угрозы или холодного ветра. +ent-CP14WallFrameStonebrick = стена из каменного кирпича + .desc = { ent-CP14BaseWallFrame.desc } -ent-CP14WallStonebrick = каменная кирпичная стена +ent-CP14WallStonebrick = кирпичная стена .desc = { ent-CP14BaseWall.desc } +ent-CP14WallFrameMarblebrick = стена из мраморного кирпича + .desc = { ent-CP14BaseWallFrame.desc } + ent-CP14WallMarbleBrick = мраморная кирпичная стена .desc = { ent-CP14BaseWall.desc } -ent-CP14WallBrownbrick = кирпичная стена +ent-CP14WallStonebrickOld = старая кирпичная стена .desc = { ent-CP14BaseWall.desc } -ent-CP14WallCyan = голубая стена - .desc = { ent-CP14BaseWall.desc } +ent-CP14BaseWall = стена + .desc = Достаточно прочная, чтобы укрыть вас от угрозы или холодного ветра. -ent-CP14WallSkulls = черепная стена - .desc = { ent-CP14BaseWall.desc } +ent-CP14BaseWallFrame = None + .desc = Сейчас эта стена находится в неопределенном состоянии между существованием и небытием. + +ent-CP14WallFrameWoodenBirch = { ent-CP14WallFrameWooden } + +ent-CP14WallWoodenBirch = { ent-CP14WallWooden } ent-CP14WindowDirectional = направленное окно .desc = Не заляпайте стекло. @@ -4033,6 +4383,8 @@ ent-CP14DemiplaneRuinsRoomSpawner = Спавнер руин демиплана ent-CP14MindRoleDemiplaneAntag = Роль антага в демиплане +ent-CP14MindRoleRaidAntag = Роль антага рейда + ent-CP14MindRoleVampire = Роль Вампира ent-CP14SmallWoodenCrateFilled = { ent-CP14SmallWoodenCrate } @@ -4050,12 +4402,6 @@ ent-CP14LiquidDropWater = парящая капля жидкости .desc = Сгусток жидкости, удерживаемый в форме шара с помощью магии. .suffix = Вода -ent-CP14ClothingCloakAmuletGold = золотой амулет - .desc = Золотой амулет, ценная безделушка. - -ent-CP14ClothingCloakAmuletMana = мана амулет - .desc = Золотой амулет с магическим камнем внутри, который поможет вам легче колдовать. - ent-CP14ClothingCloakMaidArpon = фартук горничной .desc = Чистота, порядок и послушание - главные черты хорошей горничной. @@ -4140,9 +4486,6 @@ ent-CP14MagicHealingStaff = посох исцеления ent-CP14BaseShield = щит .desc = Деревянный щит, способный выдержать несколько ударов. -ent-CP14BaseCrowbar = лом - .desc = Универсальная и полезная железяка, предназначенная для разборки полов и других предметов. - ent-CP14BaseMop = деревянная швабра .desc = Швабра для мытья полов от различных неприятных жидкостей @@ -4156,7 +4499,7 @@ ent-CP14AstralHaze = астральная мгла ent-CP14CobwebRight1 = паутина .desc = Липкая паутина удивительно прочная и неприятная. - .suffix = Right. Corner. + .suffix = Правый. Угол. ent-CP14WallmountFlagBase = гобелен .desc = Кусок ткани, прикрепленный к стене. @@ -4180,46 +4523,9 @@ ent-CP14WoodenDoorWindowed = деревянная дверь с окном .desc = Не самая прочная конструкция, но это лучше, чем ничего. .suffix = Открыто -ent-CP14FenceIronGrilleBase = железная решётка - .desc = Прочный барьер из сваренных вместе железных прутьев. - -ent-CP14FenceIronGrilleStraight = { ent-CP14FenceIronGrilleBase } - .desc = { ent-CP14FenceIronGrilleBase.desc } - .suffix = Прямой - -ent-CP14FenceIronGrilleGate = железные решетчатые ворота - .desc = Тяжелые железные ворота в решетках. Выглядит серьезно. - -ent-CP14FenceIronGrilleWindowBase = окно в железной решетке - .desc = Прочный барьер из сваренных вместе железных прутьев. Отсутствие нижней части позволяет проносить через него предметы. - -ent-CP14BaseFenceWood = деревянный забор - .desc = Деревянный забор. Не посадите заноз! - -ent-CP14FenceWoodStraight = { ent-CP14BaseFenceWood } - .desc = { ent-CP14BaseFenceWood.desc } - .suffix = Прямой - -ent-CP14FenceWoodCorner = { ent-CP14BaseFenceWood } - .desc = { ent-CP14BaseFenceWood.desc } - .suffix = Угол - -ent-CP14FenceWoodGate = деревянные ворота для забора - .desc = Большая дверь в большом заборе. Для больших людей. - -ent-CP14BaseFenceWoodSmall = низкий деревянный забор - .desc = Небольшой деревянный забор. Он защищает территорию от лишних посетителей, у которых нет полотенца. - -ent-CP14FenceWoodSmallStraight = { ent-CP14BaseFenceWoodSmall } - .desc = { ent-CP14BaseFenceWoodSmall.desc } - .suffix = Прямой - -ent-CP14FenceWoodSmallCorner = { ent-CP14BaseFenceWoodSmall } - .desc = { ent-CP14BaseFenceWoodSmall.desc } - .suffix = Угол - -ent-CP14FenceWoodSmallGate = маленькие деревянные ворота для забора - .desc = Представляете ли вы, что ждет вас за этими воротами? Это может быть как туалет, так и роскошный особняк. +ent-CP14FenceGateBigIron = { ent-CP14BaseFenceGateBig } + .desc = { ent-CP14BaseFenceGateBig.desc } + .suffix = Железо ent-CP14GatherableWaterAirLily = воздушная лилия .desc = Легкий, нежный и воздушный цветок. Говорят, что его особые свойства позволяют людям даже дышать под водой... @@ -4292,16 +4598,13 @@ ent-CP14WorkbenchCooking = кулинарный стол ent-CP14WorkbenchSewing = швейный стол .desc = Стол с инструментами для вышивания, позволяющими создавать различную одежду и материалы. -ent-CP14FrameWooden = деревянная настенная рама - .desc = Деревянная рама для любой деревянной стены. - ent-CP14RoofWooden = деревянная крыша .desc = { ent-CP14BaseRoof.desc } ent-CP14RoofStone = каменная крыша .desc = { ent-CP14BaseRoof.desc } -ent-CP14RoofRemover = roof remover debug +ent-CP14RoofRemover = отладка системы удаления крыши .desc = { ent-CP14BaseRoof.desc } ent-CP14AlchemySolutionCleaner = очиститель растворов @@ -4325,9 +4628,6 @@ ent-CP14EssenceCollector = сборщик эссенции ent-CP14EssenceSplitter = разделитель эссенции .desc = Устройство, способное расщеплять предметы на магические сущности при перегрузке энергией. -ent-CP14WoodenChestFrame = рама для деревянного сундука - .desc = Основание для любого деревянного сундука. - ent-CP14WoodenChest = деревянный сундук .desc = Простой деревянный сундук для удобного хранения хлама. @@ -4343,13 +4643,12 @@ ent-CP14SmallWoodenCrate = маленький деревянный ящик ent-CP14WallLeaf = стена листьев .desc = Густые, труднопроходимые кусты. Через них можно пролезть, но остерегайтесь колючих веток! -ent-CP14WallWooden = деревянная стена - ent-CP14WallWoodenPalisade = частокол .desc = Стена из острых бревен. Не то чтобы это было безопасное убежище. -ent-CP14WallCardboard = картонная стена - .desc = Тонкая, непрочная стена из бумаги и картона. Популярна в теплых странах. +ent-CP14WallFrameWooden = деревянная настенная рама + +ent-CP14WallWooden = деревянная стена ent-CP14WindowWooden = деревянное окно .desc = Деревянная стена со стеклянным окном в ней. diff --git a/Resources/Locale/ru-RU/_CP14/alert-levels/alert-levels.ftl b/Resources/Locale/ru-RU/_CP14/alert-levels/alert-levels.ftl new file mode 100644 index 0000000000..85e5f5784f --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/alert-levels/alert-levels.ftl @@ -0,0 +1,10 @@ +cp14-alert-level-announcement = Внимание! Уровень угрозы города теперь { $name }! { $announcement } + +cp14-alert-level-safe = Безопасно +cp14-alert-level-safe-announcement = Угрозы городу нет. Горожане могут спокойно вернуться к своим обязанностям. + +cp14-alert-level-minor = Незначительная угроза +cp14-alert-level-minor-announcement = Городу предстоит небольшая угроза. Горожанам рекомендуется быть внимательными и не покидать пределы города в темное время суток. Стража должна находиться на своих постах вооруженными и готовыми к бою. + +cp14-alert-level-major = Большая угроза +cp14-alert-level-major-announcement = Городу предстоит большая угроза! Призываем всех жителей объединиться и подготовиться к защите своих домов и семей. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/antag/antags.ftl b/Resources/Locale/ru-RU/_CP14/antag/antags.ftl index d3d87cb8fb..6b7da30104 100644 --- a/Resources/Locale/ru-RU/_CP14/antag/antags.ftl +++ b/Resources/Locale/ru-RU/_CP14/antag/antags.ftl @@ -1,3 +1,7 @@ cp14-roles-antag-vampire-name = Вампир cp14-roles-antag-vampire-objective = Вы - паразит на теле общества, ненавидимый окружающими, сгораемый под солнцем и вечно голодный. Вам необходимо питаться кровью разумных, чтобы выжить. И найти тех, кто добровольно будет готов стать вашей кормушкой непросто... -cp14-roles-antag-vampire-briefing = Вы - паразит на теле общества. Оно вас ненавидит и боится, но кровь живых - ваша единственная пища. Природа уничтожает вас солнечным светом, и вам приходится скрываться в тени. Словно весь мир пытается вас уничтожить, но ваше желание жить сильнее всего этого. ВЫЖИВИТЕ. Это все что от вас требуется. \ No newline at end of file +cp14-roles-antag-vampire-briefing = Вы - паразит на теле общества. Оно вас ненавидит и боится, но кровь живых - ваша единственная пища. Природа уничтожает вас солнечным светом, и вам приходится скрываться в тени. Словно весь мир пытается вас уничтожить, но ваше желание жить сильнее всего этого. ВЫЖИВИТЕ. Это все что от вас требуется. + +cp14-roles-antag-blood-moon-cursed-name = Проклятый кровавой луны +cp14-roles-antag-blood-moon-cursed-objective = Некоторые существа теряют голову, и могут совершать немыслимые зверства, когда из-за горизонта всходит проклятая кровавая луна... +cp14-roles-antag-blood-moon-cursed-briefing = Кровавая луна обретает контроль над вашими помыслами. В вас просыпается жажда крови, и голоса в вашей голове твердят только одно: Убивай, убивай, убивай... убивай, пока луна в расцвете сил. Убивай, пока солнце не восстановило твой рассудок. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/construction/guard-bell.ftl b/Resources/Locale/ru-RU/_CP14/construction/guard-bell.ftl new file mode 100644 index 0000000000..52eb0f3f7d --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/construction/guard-bell.ftl @@ -0,0 +1,2 @@ +cp14-guard-bell-menu-title = Колокол стражи +cp14-guard-bell-alert-button = Изменяет уровень угрозы города. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/demiplane/demiplane.ftl b/Resources/Locale/ru-RU/_CP14/demiplane/demiplane.ftl index eefb224b30..97cd7951bd 100644 --- a/Resources/Locale/ru-RU/_CP14/demiplane/demiplane.ftl +++ b/Resources/Locale/ru-RU/_CP14/demiplane/demiplane.ftl @@ -11,4 +11,7 @@ cp14-round-end = Кристалл связи с демипланами окон cp14-demiplane-echoes = Эхо голосов -cp14-demiplane-countdown = Демиплан начинает коллапсировать! У вас {$duration} минут, чтобы покинуть его! \ No newline at end of file +cp14-demiplane-countdown = Демиплан начинает коллапсировать! У вас {$duration} минут, чтобы покинуть его! + +cp14-demiplane-revoke-item = Связанный ключ уничтожен! +cp14-demiplane-revoke-map = Запущен процесс уничтожения связанного демиплана! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/demiplane/locations.ftl b/Resources/Locale/ru-RU/_CP14/demiplane/locations.ftl index 95818f8382..302652ec7d 100644 --- a/Resources/Locale/ru-RU/_CP14/demiplane/locations.ftl +++ b/Resources/Locale/ru-RU/_CP14/demiplane/locations.ftl @@ -1,6 +1,6 @@ -cp14-demiplane-location-cave = Темные пещеры +cp14-demiplane-location-cave = Пещеры cp14-demiplane-location-cave-grass = Заросшие пещеры -cp14-demiplane-location-cave-magma = Раскаленные пещеры +cp14-demiplane-location-cave-magma = Раскаленные недра cp14-demiplane-location-grassland-island = Зеленый остров cp14-demiplane-location-ice-cave = Ледяные пещеры cp14-demiplane-location-snow-island = Заснеженный остров diff --git a/Resources/Locale/ru-RU/_CP14/demiplane/map_ui.ftl b/Resources/Locale/ru-RU/_CP14/demiplane/map_ui.ftl new file mode 100644 index 0000000000..37373d3d24 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/demiplane/map_ui.ftl @@ -0,0 +1,15 @@ +cp14-demiplane-map-title = Карта навигации демипланов + +cp14-demiplane-map-eject = Извлечь координаты +cp14-demiplane-map-eject-tooltip = Извлечь координаты демиплана в физическую форму, что позволит открыть в него проход в любое время. + +cp14-demiplane-map-revoke = Оборвать связь +cp14-demiplane-map-revoke-tooltip = Вы обрываете связь с выбранным демипланом. Это либо мгновенно удаляет ключ демиплана, либо запускает 2-минутный процесс уничтожения демиплана. + +cp14-demiplane-map-add-level = [color=red]Сложность +{$count}[/color] +cp14-demiplane-map-add-level-tooltip = Этот демиплан открывался уже несколько раз, и данная точка пространства становится сложнее и нестабильнее. + +cp14-demiplane-map-status-blocked = [color=red]Открыть этот демиплан невозможно: Необходимо исследовать любой ближайший демиплан, для разблокировки координат.[/color] +cp14-demiplane-map-status-allowed = [color=green]Демиплан доступен для изучения.[/color] +cp14-demiplane-map-status-used = [color=yellow]Координаты этого демиплана уже используются. Невозможно создать копию.[/color] +cp14-demiplane-map-status-scanned = [color=purple]Ядро демиплана уничтожено и успешно просканировано. Повторное открытие демиплана невозможно, координаты соседних демипланов доступны для исследования.[/color] \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/demiplane/modifiers.ftl b/Resources/Locale/ru-RU/_CP14/demiplane/modifiers.ftl index 6fd0800c5e..3264e68d1c 100644 --- a/Resources/Locale/ru-RU/_CP14/demiplane/modifiers.ftl +++ b/Resources/Locale/ru-RU/_CP14/demiplane/modifiers.ftl @@ -1,34 +1,32 @@ -cp14-modifier-gold-ore = золотой руды -cp14-modifier-iron-ore = железной руды -cp14-modifier-copper-ore = медной руды -cp14-modifier-mithril-ore = мифриловой руды -cp14-modifier-dayflin = днецветов -cp14-modifier-fly-agaric = мухоморов -cp14-modifier-blue-amanita = лазурной аманиты -cp14-modifier-blood-flower = кровоцветов -cp14-modifier-wild-sage = дикого Шалфея -cp14-modifier-lumisroom = люмигрибов -cp14-modifier-explosive = взрывных мин -cp14-modifier-ruins = древних руин -cp14-modifier-xeno = ксеноморфов -cp14-modifier-zombie = толп нежити -cp14-modifier-slime = слаймов +cp14-modifier-gold-ore = золотая руда +cp14-modifier-iron-ore = железная руда +cp14-modifier-copper-ore = медная руда +cp14-modifier-mithril-ore = мифриловая руда +cp14-modifier-dayflin = днецветы +cp14-modifier-fly-agaric = мухоморы +cp14-modifier-blue-amanita = лазурная аманита +cp14-modifier-blood-flower = кровоцветы +cp14-modifier-wild-sage = дикий шалфей +cp14-modifier-lumisroom = люмигрибы +cp14-modifier-explosive = взрывные мины +cp14-modifier-ruins = древние руины +cp14-modifier-zombie = зомби +cp14-modifier-slime = слаймы cp14-modifier-skeleton = разумные скелеты -cp14-modifier-dyno = доисторической фауны -cp14-modifier-mole = хищных кротов -cp14-modifier-watcher = наблюдателей -cp14-modifier-rabbits = кроликов -cp14-modifier-boars = диких кабанов -cp14-modifier-sheeps = овец -cp14-modifier-invisible-whistler = невидимых свистунов -cp14-modifier-chasm = бездонных пропастей -cp14-modifier-air-lily = воздушных лилий -cp14-modifier-time-limit-10 = временного распада (10 минут) -cp14-modifier-shadow-kudzu = распространяющгося астрального мрака -cp14-modifier-night = темноты +cp14-modifier-dyno = динозавры +cp14-modifier-mole = хищные кроты +cp14-modifier-watcher = наблюдатели +cp14-modifier-rabbits = кролики +cp14-modifier-boars = дикие кабаны +cp14-modifier-sheeps = овцы +cp14-modifier-invisible-whistler = невидимые свистуны +cp14-modifier-chasm = бездонные пропасти +cp14-modifier-air-lily = воздушные лилии +cp14-modifier-shadow-kudzu = поглощающий астральный мрак +cp14-modifier-night = темнота -cp14-modifier-storm = грозы +cp14-modifier-storm = гроза cp14-modifier-fire-storm = огненный шторм cp14-modifier-snow-storm = снежный шторм -cp14-modifier-mana-mist = магического тумана -cp14-modifier-anti-mana-mist = антимагического тумана +cp14-modifier-mana-mist = магический туман +cp14-modifier-anti-mana-mist = антимагический туман diff --git a/Resources/Locale/ru-RU/_CP14/discord/queue.ftl b/Resources/Locale/ru-RU/_CP14/discord/queue.ftl index 6ec384c530..b42fd6fafe 100644 --- a/Resources/Locale/ru-RU/_CP14/discord/queue.ftl +++ b/Resources/Locale/ru-RU/_CP14/discord/queue.ftl @@ -2,4 +2,4 @@ queue-title = Очередь queue-quit = Отключиться queue-position = Позиция queue-total = Всего -queue-priority-join = Приоритетный вход \ No newline at end of file +queue-priority-join = О приоритетном входе \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/gameTicking/game-preserts.ftl b/Resources/Locale/ru-RU/_CP14/gameTicking/game-preserts.ftl index a8758e813a..20fc5f40c4 100644 --- a/Resources/Locale/ru-RU/_CP14/gameTicking/game-preserts.ftl +++ b/Resources/Locale/ru-RU/_CP14/gameTicking/game-preserts.ftl @@ -1,2 +1,5 @@ cp14-gamepreset-resource-harvest = Сбор ресурсов -cp14-gamepreset-resource-harvest-desc = Ваша экспедиция была направлена в опасное место для сбора ценных природных ресурсов. Добудьте необходимые материалы, и возвращайтесь. \ No newline at end of file +cp14-gamepreset-resource-harvest-desc = Ваша экспедиция была направлена в опасное место для сбора ценных природных ресурсов. Добудьте необходимые материалы, и возвращайтесь. + +cp14-judge-night-title = Судная ночь +cp14-judge-night-desc = Раз в десятилетие на небеса восходит кровавая луна, извращая умы и очерняя сердца. В эту ночь брат идет на брата, льется кровь и совершаются ужасные преступления. Поглотит ли вас сегодня проклятье луны? Переживете ли вы эту судную ночь? \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/gameTicking/gameRules/blood-moon.ftl b/Resources/Locale/ru-RU/_CP14/gameTicking/gameRules/blood-moon.ftl new file mode 100644 index 0000000000..8a1f4268b6 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/gameTicking/gameRules/blood-moon.ftl @@ -0,0 +1,6 @@ +cp14-bloodmoon-raising = Луна на небосводе обагривается кровью. Следующая ночь будет ужасной. +cp14-bloodmoon-start = Кровавая луна сияет в полную силу, порабощая разумы. +cp14-bloodmoon-end = Кровавая луна заходит за горизонт, теряя свою силу. + +cp14-bloodmoon-curse-removed = Проклятье кровавой луны развеивается. +cp14-bloodmoon-curse-examined = [color=red]Аура кровавой луны витает вокруг этого существа. Будьте осторожны, ибо его разум нестабилен.[/color] \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl b/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl index bd2e666757..285016ce92 100644 --- a/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl +++ b/Resources/Locale/ru-RU/_CP14/loadouts/loadout.ftl @@ -15,6 +15,10 @@ cp14-loadout-general-spells = Заклинания cp14-loadout-skill-tree = Специализация cp14-loadout-general-keys = Ключи +# Adventurer + +cp14-loadout-adventurers-equip = Оружие авантюриста + # Apprentice cp14-loadout-apprentice-bundle = Набор подмастерья @@ -43,12 +47,8 @@ cp14-loadout-guard-pants = Штаны стражи cp14-loadout-guard-shirt = Рубашка стражи cp14-loadout-guard-spells = Заклинания стражи -# Trade guild - -cp14-loadout-commandant-head = Шляпа коменданта -cp14-loadout-commandant-cloak = Накидка коменданта - cp14-loadout-merchant-head = Шляпа торговца +cp14-loadout-merchant-cloak = Накидка торговца cp14-loadout-merchant-outer = Жилет торговца cp14-loadout-merchant-shirt = Рубашка торговца cp14-loadout-merchant-pants = Штаны торговца diff --git a/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl b/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl index 9a85abd3cc..59c63ec410 100644 --- a/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl +++ b/Resources/Locale/ru-RU/_CP14/lockKey/locks-types.ftl @@ -35,10 +35,9 @@ cp14-lock-shape-personalhouse14 = дом №14 cp14-lock-shape-personalhouse15 = дом №15 cp14-lock-shape-personalhouse16 = дом №16 -cp14-lock-shaper-guard-entrance = казармы, вход -cp14-lock-shaper-guard-staff = казармы +cp14-lock-shaper-guard-city-gate = городские ворота +cp14-lock-shaper-guard-barracks = казармы cp14-lock-shaper-guard-commander = дом главы стражи -cp14-lock-shaper-guard-weapon-storage = хранилище оружия cp14-lock-shape-guildmaster = гильдмастер cp14-lock-shape-demiplane-crystal = кристалл демиплана \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/magicEnergy/magic-spells.ftl b/Resources/Locale/ru-RU/_CP14/magicEnergy/magic-spells.ftl index 433beaa736..16299ddc79 100644 --- a/Resources/Locale/ru-RU/_CP14/magicEnergy/magic-spells.ftl +++ b/Resources/Locale/ru-RU/_CP14/magicEnergy/magic-spells.ftl @@ -8,6 +8,7 @@ cp14-magic-spell-not-enough-mana-cast-warning-2 = Ваши руки дрожат cp14-magic-spell-not-enough-mana-cast-warning-3 = К горлу подступает ком... cp14-magic-spell-not-enough-mana-cast-warning-4 = Голова наливается свинцом... +cp14-magic-type = Тип cp14-magic-verbal-aspect = Требуется возможность говорить cp14-magic-somatic-aspect = Требуются свободные руки: cp14-magic-music-aspect = Вы должны играть на музыкальном инструменте @@ -17,4 +18,8 @@ cp14-magic-spell-need-somatic-component = Вам не хватает свобо cp14-magic-spell-stamina-not-enough = Вам не хватает сил, чтобы сделать это. cp14-magic-staminacost = Затраты энергии -cp14-magic-spell-pacified = Это может навредить кому либо! \ No newline at end of file +cp14-magic-spell-pacified = Это может навредить кому либо! + +cp14-magic-spell-target-not-mob = Цель должна быть живым существом! +cp14-magic-spell-target-dead = Нельзя использовать на мертвых! +cp14-magic-spell-target-alive = Нельзя использовать на живых! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/magicEnergy/magic-types.ftl b/Resources/Locale/ru-RU/_CP14/magicEnergy/magic-types.ftl index c0166d6b3f..1ea00c1627 100644 --- a/Resources/Locale/ru-RU/_CP14/magicEnergy/magic-types.ftl +++ b/Resources/Locale/ru-RU/_CP14/magicEnergy/magic-types.ftl @@ -22,4 +22,4 @@ cp14-essence-magic = Praecantatio cp14-magic-manacost = Затраты маны cp14-magic-essence = Тип магии -cp14-magic-essence-title = Отсюда можно извлечь эссенции: \ No newline at end of file +cp14-magic-essence-title = Отсюда можно извлечь эссенции: diff --git a/Resources/Locale/ru-RU/_CP14/markings/goblin-hair.ftl b/Resources/Locale/ru-RU/_CP14/markings/goblin-hair.ftl deleted file mode 100644 index 4fe3574bda..0000000000 --- a/Resources/Locale/ru-RU/_CP14/markings/goblin-hair.ftl +++ /dev/null @@ -1,3 +0,0 @@ -marking-CP14GoblinHairAntenna = Непослушные пряди -marking-CP14GoblinHairBedHead2 = С бодуна 2 -marking-CP14GoblinHairDoubleBun = Два пунпона \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/markings/tiefling-horns.ftl b/Resources/Locale/ru-RU/_CP14/markings/tiefling-horns.ftl index 6c8f51a0af..fe83499576 100644 --- a/Resources/Locale/ru-RU/_CP14/markings/tiefling-horns.ftl +++ b/Resources/Locale/ru-RU/_CP14/markings/tiefling-horns.ftl @@ -7,4 +7,5 @@ marking-CP14TieflingHorns5 = Дьявол marking-CP14TieflingHorns5Broken = Сломленный дьявол marking-CP14TieflingHorns6 = Барашек marking-CP14TieflingHorns7 = Облегающие -marking-CP14TieflingHorns8 = Корона \ No newline at end of file +marking-CP14TieflingHorns8 = Корона +marking-CP14TieflingHorns9 = Единорог \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/reagents/meta/thaumaturgy/essence.ftl b/Resources/Locale/ru-RU/_CP14/reagents/meta/thaumaturgy/essence.ftl index de7a3f87ce..700fc97388 100644 --- a/Resources/Locale/ru-RU/_CP14/reagents/meta/thaumaturgy/essence.ftl +++ b/Resources/Locale/ru-RU/_CP14/reagents/meta/thaumaturgy/essence.ftl @@ -40,7 +40,7 @@ cp14-reagent-desc-essence-poison = Жидкое воплощение стихи cp14-reagent-name-essence-void = Эссенция Vacuos cp14-reagent-desc-essence-void = Жидкое воплощение стихии пустоты, неизвестности и скрытности. - + cp14-reagent-name-essence-life = Эссенция Victus cp14-reagent-desc-essence-life = Жидкое воплощение стихии жизни, еды и пропитания. @@ -50,4 +50,4 @@ cp14-reagent-desc-essence-crystal = Жидкое воплощение стихи # Complex tier 2 cp14-reagent-name-essence-magic = Эссенция Praecantatio -cp14-reagent-desc-essence-magic = Жидкое воплощение магии, чар и колдовства. \ No newline at end of file +cp14-reagent-desc-essence-magic = Жидкое воплощение магии, чар и колдовства. diff --git a/Resources/Locale/ru-RU/_CP14/recipe/title.ftl b/Resources/Locale/ru-RU/_CP14/recipe/title.ftl index cb97c4fa1b..1b7e47053c 100644 --- a/Resources/Locale/ru-RU/_CP14/recipe/title.ftl +++ b/Resources/Locale/ru-RU/_CP14/recipe/title.ftl @@ -1 +1,2 @@ cp14-recipe-title-meat = разные кусочки сырого мяса +cp14-recipe-title-energy-crystal = энергокристаллы \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/requirements.ftl b/Resources/Locale/ru-RU/_CP14/skill/requirements.ftl index 777930e29b..f174639cf1 100644 --- a/Resources/Locale/ru-RU/_CP14/skill/requirements.ftl +++ b/Resources/Locale/ru-RU/_CP14/skill/requirements.ftl @@ -1,2 +1,4 @@ -cp14-skill-req-prerequisite = Навык "{$name}" должен быть изучен. -cp14-skill-req-species = Доступно только расе "{$name}" \ No newline at end of file +cp14-skill-req-prerequisite = Навык "{$name}" должен быть изучен +cp14-skill-req-species = Вы должны быть расы "{$name}" +cp14-skill-req-researched = Необходимо провести исследование на исследовательском столе +cp14-skill-req-impossible = Невозможно изучить во время раунда на текущий момент \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/skill_issue.ftl b/Resources/Locale/ru-RU/_CP14/skill/skill_issue.ftl new file mode 100644 index 0000000000..c95ad8bf01 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/skill/skill_issue.ftl @@ -0,0 +1,3 @@ +cp14-skill-issue-title = Чтобы эффективно пользовать этим оружием, необходимо владеть навыками: + +cp14-skill-issue = Проблемы с навыком! \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/skill_meta.ftl b/Resources/Locale/ru-RU/_CP14/skill/skill_meta.ftl new file mode 100644 index 0000000000..c62c84b2e0 --- /dev/null +++ b/Resources/Locale/ru-RU/_CP14/skill/skill_meta.ftl @@ -0,0 +1,34 @@ +cp14-skill-mastery-desc = Овладев искусством этого оружия, вы больше не будете неуклюже ронять его, или резать сами себя. + +cp14-skill-sword-mastery-name = Владение мечом +cp14-skill-parier-mastery-name = Владение рапирой +cp14-skill-skimitar-mastery-name = Владение скимитаром + +cp14-skill-pyro-t1-name = Базовая пирокинетика +cp14-skill-pyro-t2-name = Продвинутая пирокинетика +cp14-skill-pyro-t3-name = Экспертная пирокинетика + +cp14-skill-illusion-t1-name = Базовая иллюзия +cp14-skill-illusion-t2-name = Продвинутая иллюзия +cp14-skill-illusion-t3-name = Экспертная иллюзия + +cp14-skill-water-t1-name = Базовая гидрософистика +cp14-skill-water-t2-name = Продвинутая гидрософистика +cp14-skill-water-t3-name = Экспертная гидрософистика + +cp14-skill-life-t1-name = Базовое животворение +cp14-skill-life-t2-name = Продвинутое животворение +cp14-skill-life-t3-name = Экспертное животворение + +cp14-skill-meta-t1-name = Базовая метамагия +cp14-skill-meta-t2-name = Продвинутая метамагия +cp14-skill-meta-t3-name = Экспертная метамагия + +cp14-skill-alchemy-vision-name = Взор алхимика +cp14-skill-alchemy-vision-desc = Вы способны понимать какие именно жидкости находятся в емкостях, при помощи визуального анализа. + +cp14-skill-copper-melt-name = Плавка меди +cp14-skill-iron-melt-name = Плавка железа +cp14-skill-gold-melt-name = Плавка золота +cp14-skill-mithril-melt-name = Плавка мифрила +cp14-skill-glass-melt-name = Работа со стеклом \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/skill_tree.ftl b/Resources/Locale/ru-RU/_CP14/skill/skill_tree.ftl index 2c20e1c3d0..fc6e87d21d 100644 --- a/Resources/Locale/ru-RU/_CP14/skill/skill_tree.ftl +++ b/Resources/Locale/ru-RU/_CP14/skill/skill_tree.ftl @@ -18,7 +18,21 @@ cp14-skill-tree-illusion-desc = Исследуйте природу света, cp14-skill-tree-healing-name = Жизнетворение cp14-skill-tree-healing-desc = Изучайте способы влияния магии на живые создания. +cp14-skill-tree-dimension-name = Дименсиум +cp14-skill-tree-dimension-desc = Погрузитесь в природу пространства и пустоты. + # Body cp14-skill-tree-atlethic-name = Атлетика -cp14-skill-tree-atlethic-desc = Развивайте свое тело, расширяя границы доступного. \ No newline at end of file +cp14-skill-tree-atlethic-desc = Развивайте свое тело, расширяя границы доступного. + +cp14-skill-tree-martial-name = Боевые исскуства +cp14-skill-tree-martial-desc = Овладейте секретами смертельного оружия, или сделайте оружием свое собственное тело. + +# Job + +cp14-skill-tree-thaumaturgy-name = Алхимия +cp14-skill-tree-thaumaturgy-desc = Исскуство создания волшебных зелий, способных убивать, воскрешать из мертвых или превращать существ в овечек. + +cp14-skill-tree-blacksmithing-name = Кузнечное дело +cp14-skill-tree-blacksmithing-desc = Исскуство превращения металла в различные полезные вещи. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_CP14/skill/ui.ftl b/Resources/Locale/ru-RU/_CP14/skill/ui.ftl index 0720145d88..10933366e6 100644 --- a/Resources/Locale/ru-RU/_CP14/skill/ui.ftl +++ b/Resources/Locale/ru-RU/_CP14/skill/ui.ftl @@ -5,6 +5,13 @@ cp14-skill-info-title = Навыки cp14-game-hud-open-skill-menu-button-tooltip = Деревья навыков cp14-skill-menu-learn-button = Изучить навык -cp14-skill-menu-learncost = [color=yellow]Требуется очков:[/color] -cp14-skill-menu-skillpoints = Очков опыта: -cp14-skill-menu-level = Уровень: +cp14-skill-menu-learncost = [color=yellow]Требуется памяти:[/color] +cp14-skill-menu-level = Память: +cp14-skill-menu-free = [color=green]Этот навык врожденный для вашего персонажа, и не тратит очков памяти![/color] + +cp14-research-table-title = Стол исследований +cp14-research-recipe-list = Затраты на исследование: +cp14-research-craft = Исследовать + +cp14-skill-desc-add-mana = Увеличивает объем маны вашего персонажа на {$mana}. +cp14-skill-desc-unlock-recipes = Открывает возможность создания: \ No newline at end of file diff --git a/Resources/Maps/Lavaland/Envy.yml b/Resources/Maps/Lavaland/Envy.yml new file mode 100644 index 0000000000..50f85fb6fa --- /dev/null +++ b/Resources/Maps/Lavaland/Envy.yml @@ -0,0 +1,540 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 04:10:43 + entityCount: 81 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 2: Space + 0: Plating + 1: PlatingDamaged +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.546875,-0.546875 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAABAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + cleanable: True + color: '#690000FF' + id: footprint + decals: + 4: -0.082383215,-4.733446 + 5: 0.17542928,-4.170946 + 6: -0.15269572,-3.6787586 + 7: 0.105116785,-3.2100086 + 8: -0.105820715,-2.5068836 + 9: 0.15199178,-1.874071 + 10: -0.15269572,-1.217821 + 11: 0.105116785,-0.7256335 + 12: -0.19957072,0.094679 + 13: 0.22230428,0.563429 + 14: -0.058945715,1.172804 + 15: 0.33949178,1.6181164 + - node: + cleanable: True + color: '#690000FF' + id: splatter + decals: + 2: -1,2 + 3: -2,4 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 26487 + 0,-1: + 0: 30583 + -1,0: + 0: 52428 + 0,1: + 0: 4 + 0,-2: + 0: 30577 + -1,-2: + 0: 52416 + -1,-1: + 0: 52428 + -1,1: + 0: 4 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: Mirror + entities: + - uid: 60 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 +- proto: RandomCargoCorpseSpawner + entities: + - uid: 59 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 +- proto: RitualDagger + entities: + - uid: 58 + components: + - type: Transform + pos: 0.5582418,2.5165539 + parent: 1 +- proto: ShardGlass + entities: + - uid: 68 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 2.0348043,-2.8975086 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 1.4019918,-1.9600086 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 2.6207418,0.008741498 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: -1.5511332,0.4306165 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: -1.4105082,-1.9600086 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: -1.1995707,-4.139696 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: -1.7151957,-5.4287586 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: -1.6683207,-3.0850086 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: -1.8558207,-0.624071 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: -1.2464457,1.813429 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 2.0582418,1.7431165 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 0.41761678,1.0868665 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 0.5348043,-5.405321 + parent: 1 +- proto: WallSolidRust + entities: + - uid: 2 + components: + - type: Transform + pos: -0.5,8.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: -0.5,7.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: -1.5,7.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: -2.5,6.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -1.5,6.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -0.5,6.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 1.5,6.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 0.5,6.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: -2.5,5.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: -1.5,5.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -2.5,-6.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -2.5,-7.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: -1.5,-7.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 1.5,-7.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 2.5,-7.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/Gluttony.yml b/Resources/Maps/Lavaland/Gluttony.yml new file mode 100644 index 0000000000..ab10c6372e --- /dev/null +++ b/Resources/Maps/Lavaland/Gluttony.yml @@ -0,0 +1,552 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 04:10:17 + entityCount: 82 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorFreezer +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.546875,-0.453125 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: [] + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 13311 + 0,-1: + 0: 62259 + -1,0: + 0: 35071 + 0,1: + 0: 787 + -1,1: + 0: 2056 + 1,0: + 0: 119 + 1,-1: + 0: 28672 + -2,0: + 0: 204 + -2,-1: + 0: 49152 + -1,-1: + 0: 63624 + 0,-2: + 0: 13056 + -1,-2: + 0: 34816 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AltarConvertRed + entities: + - uid: 62 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 +- proto: FloorLavaEntity + entities: + - uid: 60 + components: + - type: Transform + pos: -0.5,6.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 1.5,6.5 + parent: 1 +- proto: FoodBowlBigTrash + entities: + - uid: 65 + components: + - type: Transform + pos: -2.7222345,0.06521797 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 4.6683903,0.37771797 + parent: 1 +- proto: FoodBurgerSuper + entities: + - uid: 63 + components: + - type: Transform + pos: 0.46713123,3.5637343 + parent: 1 +- proto: FoodPlateTrash + entities: + - uid: 67 + components: + - type: Transform + pos: -1.3003595,1.643343 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 0.8715155,-2.950407 + parent: 1 +- proto: PlasmaDoor + entities: + - uid: 24 + components: + - type: Transform + pos: -6.5,0.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 0.5,-6.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 +- proto: RandomSpawner100 + entities: + - uid: 69 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-1.5 + parent: 1 + - uid: 70 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,1.5 + parent: 1 + - uid: 71 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-0.5 + parent: 1 + - uid: 72 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,1.5 + parent: 1 + - uid: 73 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-0.5 + parent: 1 + - uid: 74 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,0.5 + parent: 1 + - uid: 75 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-5.5 + parent: 1 + - uid: 76 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-5.5 + parent: 1 + - uid: 77 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-1.5 + parent: 1 + - uid: 78 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-3.5 + parent: 1 + - uid: 79 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,0.5 + parent: 1 + - uid: 80 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-0.5 + parent: 1 + - uid: 81 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,1.5 + parent: 1 +- proto: RitualDagger + entities: + - uid: 64 + components: + - type: Transform + pos: -5.4736495,1.4413903 + parent: 1 +- proto: StorageImplanter + entities: + - uid: 82 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5161176,6.4741917 + parent: 1 +- proto: WallUranium + entities: + - uid: 2 + components: + - type: Transform + pos: -1.5,7.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: -1.5,6.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: -1.5,5.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -1.5,3.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -0.5,7.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 5.5,2.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 7.5,2.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 7.5,1.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 7.5,-1.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 7.5,-0.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: -1.5,2.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: -3.5,2.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: -5.5,2.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: -6.5,2.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: -4.5,2.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: -6.5,1.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: -6.5,-0.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: -6.5,-1.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: -5.5,-1.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -3.5,-1.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -1.5,-1.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: -1.5,-2.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -1.5,-3.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: -1.5,-5.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: -0.5,-6.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: -1.5,-6.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 1.5,-6.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 2.5,-5.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 6.5,-1.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 5.5,-1.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 4.5,-1.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/Greed.yml b/Resources/Maps/Lavaland/Greed.yml new file mode 100644 index 0000000000..8f8688f9b5 --- /dev/null +++ b/Resources/Maps/Lavaland/Greed.yml @@ -0,0 +1,571 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 04:11:34 + entityCount: 87 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorElevatorShaft +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.53125,-0.46875 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: [] + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 14335 + 0,-1: + 0: 62259 + -1,0: + 0: 36078 + 0,1: + 0: 3 + -1,1: + 0: 8 + -1,-1: + 0: 59528 + 0,-2: + 0: 4096 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: BlockGameArcade + entities: + - uid: 52 + components: + - type: Transform + pos: -1.5,2.5 + parent: 1 +- proto: CartridgeMagnum + entities: + - uid: 55 + components: + - type: Transform + pos: -0.26962537,4.364311 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: -0.5665004,4.254936 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: -0.34775037,4.114311 + parent: 1 +- proto: CrateCargoGambling + entities: + - uid: 51 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 +- proto: DartBlue + entities: + - uid: 85 + components: + - type: Transform + pos: -2.6758754,1.1002662 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: -2.4258754,0.9283912 + parent: 1 +- proto: DartPurple + entities: + - uid: 87 + components: + - type: Transform + pos: -2.6915004,0.9752662 + parent: 1 +- proto: GoldDoor + entities: + - uid: 39 + components: + - type: Transform + pos: 0.5,-5.5 + parent: 1 +- proto: GoldOre + entities: + - uid: 74 + components: + - type: Transform + pos: 3.5741246,1.5690162 + parent: 1 +- proto: IngotGold + entities: + - uid: 63 + components: + - type: Transform + pos: -1.5977504,1.520561 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 0.48037463,-0.43256402 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 2.4022496,1.536186 + parent: 1 +- proto: SpaceCash100 + entities: + - uid: 76 + components: + - type: Transform + pos: -2.5665004,-0.24348378 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: -2.6290004,0.10026622 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: -2.5508754,-0.16535878 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 3.4491246,-0.41535878 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 3.3084996,-0.21223378 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 3.5584996,-0.16535878 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 3.3709996,0.022141218 + parent: 1 +- proto: SpaceCash1000 + entities: + - uid: 75 + components: + - type: Transform + pos: -2.5508754,0.6783912 + parent: 1 +- proto: SpaceCash2500 + entities: + - uid: 83 + components: + - type: Transform + pos: 3.4959996,0.8033912 + parent: 1 +- proto: SpaceVillainArcade + entities: + - uid: 53 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 +- proto: TableCarpet + entities: + - uid: 40 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 +- proto: TargetDarts + entities: + - uid: 84 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 +- proto: TreasureCoinDiamond + entities: + - uid: 58 + components: + - type: Transform + pos: -0.6602504,3.645561 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: -0.44150037,3.786186 + parent: 1 +- proto: TreasureCoinGold + entities: + - uid: 61 + components: + - type: Transform + pos: 1.6678746,4.504936 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: 1.2459996,4.129936 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: -1.1602504,0.504936 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 0.089749634,1.895561 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 1.4803746,0.520561 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 1.3866246,2.426811 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 1.3241246,-0.7278588 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: -0.39462537,-2.6341088 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 1.4178746,-2.8216088 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 0.32412463,-2.0091088 + parent: 1 +- proto: TreasureCoinSilver + entities: + - uid: 60 + components: + - type: Transform + pos: 1.5584996,3.801811 + parent: 1 +- proto: WallCult + entities: + - uid: 2 + components: + - type: Transform + pos: -1.5,5.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: -1.5,3.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -3.5,2.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: -3.5,1.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -3.5,-1.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: -1.5,-1.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -1.5,-2.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: -1.5,-3.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: -0.5,-4.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 1.5,-5.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 4.5,-1.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 4.5,-0.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 4.5,0.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 +- proto: WeaponRevolverInspector + entities: + - uid: 54 + components: + - type: Transform + pos: -0.4638741,4.546875 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/Pride.yml b/Resources/Maps/Lavaland/Pride.yml new file mode 100644 index 0000000000..7f347c671b --- /dev/null +++ b/Resources/Maps/Lavaland/Pride.yml @@ -0,0 +1,528 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 04:11:04 + entityCount: 84 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorWhiteDiagonal +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.4375,-0.484375 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: [] + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 26487 + 0,-1: + 0: 30583 + -1,0: + 0: 52428 + 0,1: + 0: 4 + 0,-2: + 0: 30576 + -1,-2: + 0: 52416 + -1,-1: + 0: 52428 + -1,1: + 0: 4 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: GoldDoor + entities: + - uid: 43 + components: + - type: Transform + pos: 0.5,-7.5 + parent: 1 +- proto: Mirror + entities: + - uid: 59 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: -2.5,-6.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 +- proto: MirrorShield + entities: + - uid: 83 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 +- proto: WallDiamond + entities: + - uid: 2 + components: + - type: Transform + pos: -0.5,8.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: -1.5,7.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -0.5,7.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: -2.5,6.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -1.5,6.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -0.5,6.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 1.5,6.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 0.5,6.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: -2.5,5.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: -1.5,5.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -2.5,-6.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -2.5,-7.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: -1.5,-7.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 1.5,-7.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 2.5,-7.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/Wrath.yml b/Resources/Maps/Lavaland/Wrath.yml new file mode 100644 index 0000000000..5d1f214e9b --- /dev/null +++ b/Resources/Maps/Lavaland/Wrath.yml @@ -0,0 +1,852 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 04:09:54 + entityCount: 117 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorBasalt + 2: FloorMining +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -3.8430085,-0.40625 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + cleanable: True + color: '#660000FF' + id: Diablo + decals: + 8: -0.041427374,-0.93798256 + - node: + cleanable: True + color: '#FFFFFFFF' + id: Remains + decals: + 6: -1.9164271,-1.9223576 + 7: 1.0132601,3.960455 + - node: + cleanable: True + color: '#660000FF' + id: splatter + decals: + 0: -3.4180074,-0.23485756 + 1: -5.5273824,3.0932674 + 2: 0.44918036,0.02295494 + 3: 0.63668036,4.94483 + 4: 3.7836294,1.522955 + 5: -0.67423964,-4.1254826 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 49151 + 0,-1: + 0: 49151 + -1,0: + 0: 49151 + 0,1: + 0: 1023 + -1,1: + 0: 2287 + 1,0: + 0: 30071 + 1,1: + 0: 1 + 1,-1: + 0: 30065 + -2,0: + 0: 50380 + -2,-1: + 0: 50368 + -1,-1: + 0: 49151 + 0,-2: + 0: 28928 + -1,-2: + 0: 49152 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AltarFangs + entities: + - uid: 80 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,1.5 + parent: 1 +- proto: BaseBallBat + entities: + - uid: 95 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.598012,-3.2973576 + parent: 1 +- proto: CartridgePistol + entities: + - uid: 99 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.7443423,-3.1098576 + parent: 1 + - uid: 101 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.0490298,2.8901424 + parent: 1 + - uid: 102 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.63847,2.44483 + parent: 1 +- proto: CartridgeRifle + entities: + - uid: 103 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5369077,-1.96142 + parent: 1 + - uid: 104 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.3693423,3.1245174 + parent: 1 + - uid: 105 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.28340483,5.6088924 + parent: 1 +- proto: Claymore + entities: + - uid: 91 + components: + - type: Transform + pos: 0.34940767,0.52295494 + parent: 1 +- proto: ClothingHeadHelmetBone + entities: + - uid: 93 + components: + - type: Transform + pos: 3.058238,-3.695795 + parent: 1 +- proto: ClothingOuterArmorBasic + entities: + - uid: 107 + components: + - type: Transform + pos: -3.4005923,3.8745174 + parent: 1 +- proto: ClothingOuterArmorBone + entities: + - uid: 94 + components: + - type: Transform + pos: 3.573863,3.522955 + parent: 1 +- proto: DrinkBloodGlass + entities: + - uid: 106 + components: + - type: Transform + pos: 0.5134702,1.554205 + parent: 1 +- proto: FloorLavaEntity + entities: + - uid: 2 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-0.5 + parent: 1 + - uid: 3 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-0.5 + parent: 1 + - uid: 4 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,0.5 + parent: 1 + - uid: 5 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,1.5 + parent: 1 + - uid: 6 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,2.5 + parent: 1 + - uid: 7 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,3.5 + parent: 1 + - uid: 8 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,3.5 + parent: 1 + - uid: 9 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,3.5 + parent: 1 + - uid: 10 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,2.5 + parent: 1 + - uid: 11 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,0.5 + parent: 1 + - uid: 12 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,1.5 + parent: 1 + - uid: 13 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-1.5 + parent: 1 + - uid: 14 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-1.5 + parent: 1 + - uid: 15 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,1.5 + parent: 1 + - uid: 16 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,0.5 + parent: 1 + - uid: 17 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-0.5 + parent: 1 + - uid: 18 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,1.5 + parent: 1 + - uid: 19 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,0.5 + parent: 1 + - uid: 20 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,-0.5 + parent: 1 + - uid: 21 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-4.5 + parent: 1 + - uid: 22 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-4.5 + parent: 1 + - uid: 23 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-4.5 + parent: 1 + - uid: 24 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-4.5 + parent: 1 + - uid: 25 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,5.5 + parent: 1 + - uid: 26 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,4.5 + parent: 1 + - uid: 27 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,5.5 + parent: 1 + - uid: 28 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,4.5 + parent: 1 + - uid: 29 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,6.5 + parent: 1 + - uid: 30 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,6.5 + parent: 1 + - uid: 31 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,6.5 + parent: 1 +- proto: HeadHuman + entities: + - uid: 115 + components: + - type: Transform + pos: 0.5415883,2.5620174 + parent: 1 +- proto: HydroponicsToolHatchet + entities: + - uid: 90 + components: + - type: Transform + pos: 3.8316755,-0.29735756 + parent: 1 +- proto: LeftArmHuman + entities: + - uid: 116 + components: + - type: Transform + pos: -5.3646617,-0.22704506 + parent: 1 +- proto: LeftLegHuman + entities: + - uid: 113 + components: + - type: Transform + pos: 2.5337758,-1.914545 + parent: 1 +- proto: LeftLegSkeleton + entities: + - uid: 112 + components: + - type: Transform + pos: 4.4790883,0.42920494 + parent: 1 +- proto: RandomCargoCorpseSpawner + entities: + - uid: 81 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 +- proto: RandomSecurityCorpseSpawner + entities: + - uid: 83 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 +- proto: ReinforcedShiv + entities: + - uid: 89 + components: + - type: Transform + pos: -1.019887,4.7651424 + parent: 1 +- proto: RightArmHuman + entities: + - uid: 117 + components: + - type: Transform + pos: 4.3853383,3.47608 + parent: 1 +- proto: RightHandSkeleton + entities: + - uid: 111 + components: + - type: Transform + pos: -2.4115367,2.397955 + parent: 1 +- proto: RightLegHuman + entities: + - uid: 114 + components: + - type: Transform + pos: -3.6302867,3.2182674 + parent: 1 +- proto: SalvageHumanCorpseSpawner + entities: + - uid: 82 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,3.5 + parent: 1 + - uid: 85 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,-1.5 + parent: 1 + - uid: 86 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,-2.5 + parent: 1 + - uid: 87 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,2.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: 0.5,-3.5 + parent: 1 +- proto: SalvageLootSpawner + entities: + - uid: 98 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,3.5 + parent: 1 + - uid: 100 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,1.5 + parent: 1 +- proto: Sledgehammer + entities: + - uid: 88 + components: + - type: Transform + pos: -3.0589495,-0.41454506 + parent: 1 +- proto: SpearBone + entities: + - uid: 92 + components: + - type: Transform + pos: -5.5667624,3.0776424 + parent: 1 +- proto: TorsoSkeleton + entities: + - uid: 110 + components: + - type: Transform + pos: -3.0209117,-2.102045 + parent: 1 +- proto: WallCult + entities: + - uid: 32 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,3.5 + parent: 1 + - uid: 33 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,3.5 + parent: 1 + - uid: 34 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-0.5 + parent: 1 + - uid: 35 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-0.5 + parent: 1 + - uid: 36 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-1.5 + parent: 1 + - uid: 37 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,2.5 + parent: 1 + - uid: 38 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,6.5 + parent: 1 + - uid: 39 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,6.5 + parent: 1 + - uid: 40 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,2.5 + parent: 1 + - uid: 41 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,-1.5 + parent: 1 + - uid: 42 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-5.5 + parent: 1 + - uid: 43 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,-5.5 + parent: 1 + - uid: 44 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-4.5 + parent: 1 + - uid: 45 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-4.5 + parent: 1 + - uid: 46 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,4.5 + parent: 1 + - uid: 47 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,4.5 + parent: 1 + - uid: 48 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,3.5 + parent: 1 + - uid: 49 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,-2.5 + parent: 1 + - uid: 50 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,-3.5 + parent: 1 + - uid: 51 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,-3.5 + parent: 1 + - uid: 52 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,-3.5 + parent: 1 + - uid: 53 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,-2.5 + parent: 1 + - uid: 54 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,-3.5 + parent: 1 + - uid: 55 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,3.5 + parent: 1 + - uid: 56 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,4.5 + parent: 1 + - uid: 57 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,4.5 + parent: 1 +- proto: WallRockBasalt + entities: + - uid: 58 + components: + - type: Transform + pos: -1.5,-5.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 2.5,-5.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 4.5,-4.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: -3.5,-4.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: -4.5,-3.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: 5.5,-3.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: -6.5,-1.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: -6.5,-0.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: -6.5,0.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: -6.5,1.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: -6.5,2.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: -4.5,4.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: -3.5,5.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: -2.5,6.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: 7.5,2.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 7.5,1.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 7.5,-0.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 7.5,-1.5 + parent: 1 +- proto: WeaponPistolMk58 + entities: + - uid: 96 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.026988,-2.9692326 + parent: 1 +- proto: WeaponRifleAk + entities: + - uid: 97 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.3316755,4.9995174 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/broken_cargo.yml b/Resources/Maps/Lavaland/broken_cargo.yml new file mode 100644 index 0000000000..b93eca1a5e --- /dev/null +++ b/Resources/Maps/Lavaland/broken_cargo.yml @@ -0,0 +1,618 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/21/2025 00:32:33 + entityCount: 88 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 3: Space + 0: FloorBasalt + 2: FloorSteel + 1: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.6666667,-0.6145833 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAADAgAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAABAQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 7: 3,-6 + 8: 4,-5 + 9: 4,-6 + 10: 4,-4 + 11: 3,-1 + 12: 4,-1 + 13: 3,0 + 14: 4,1 + 15: 2,1 + - node: + color: '#A4610696' + id: HalfTileOverlayGreyscale90 + decals: + 1: 4,-1 + 2: 4,0 + 3: 4,-5 + 6: 4,1 + - node: + color: '#A4610696' + id: ThreeQuarterTileOverlayGreyscale180 + decals: + 0: 4,-6 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 63999 + 0,-1: + 0: 65535 + -1,0: + 0: 65535 + 0,1: + 0: 14 + 1,0: + 0: 25 + 1,-1: + 0: 56797 + 0,-2: + 0: 65024 + -1,-1: + 0: 65260 + 1,-2: + 0: 53504 + 2,-1: + 0: 4368 + -2,-1: + 0: 32768 + -2,0: + 0: 136 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirlockCargoLocked + entities: + - uid: 77 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 +- proto: BasaltFive + entities: + - uid: 23 + components: + - type: Transform + pos: 6.5,-4.5 + parent: 1 +- proto: BasaltThree + entities: + - uid: 21 + components: + - type: Transform + pos: -1.5,-3.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: 8.5,-0.5 + parent: 1 +- proto: BasaltTwo + entities: + - uid: 55 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 +- proto: Chair + entities: + - uid: 62 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,1.5 + parent: 1 + - uid: 63 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,0.5 + parent: 1 +- proto: CrateEmergencyAdvancedKit + entities: + - uid: 43 + components: + - type: Transform + pos: -1.5,-3.5 + parent: 1 +- proto: FloorLavaEntity + entities: + - uid: 3 + components: + - type: Transform + pos: 0.5,-3.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: -0.5,-3.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -0.5,-2.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 1.5,-2.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: -1.5,-2.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 1.5,-3.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 1.5,-1.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: -1.5,-1.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 1.5,-5.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 75 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,1.5 + parent: 1 + - uid: 76 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,1.5 + parent: 1 + - uid: 84 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,2.5 + parent: 1 + - uid: 85 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,2.5 + parent: 1 +- proto: Grille + entities: + - uid: 28 + components: + - type: Transform + pos: 5.5,-4.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 +- proto: Rack + entities: + - uid: 78 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-5.5 + parent: 1 +- proto: RandomCargoCorpseSpawner + entities: + - uid: 2 + components: + - type: Transform + pos: 0.5,-2.5 + parent: 1 +- proto: ReinforcedWindow + entities: + - uid: 20 + components: + - type: Transform + pos: 5.5,-4.5 + parent: 1 +- proto: ShuttersNormal + entities: + - uid: 82 + components: + - type: Transform + pos: 5.5,-1.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: 5.5,-0.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 +- proto: WallRockBasalt + entities: + - uid: 24 + components: + - type: Transform + pos: 0.5,-5.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: -0.5,-4.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: -3.5,-2.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: -3.5,-1.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: -3.5,-3.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -1.5,-5.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -0.5,-6.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 0.5,-6.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 1.5,-6.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 4.5,3.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 7.5,1.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 7.5,2.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 +- proto: WallSolid + entities: + - uid: 13 + components: + - type: Transform + pos: 4.5,-6.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: 5.5,-6.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 +- proto: WallSolidRust + entities: + - uid: 12 + components: + - type: Transform + pos: 5.5,-5.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 5.5,-3.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 5.5,0.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 5.5,2.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 +- proto: WeaponCrusher + entities: + - uid: 88 + components: + - type: Transform + pos: 4.5,-5.5 + parent: 1 +- proto: Window + entities: + - uid: 80 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/crashed_pod_trail.yml b/Resources/Maps/Lavaland/crashed_pod_trail.yml new file mode 100644 index 0000000000..1c5a905fcd --- /dev/null +++ b/Resources/Maps/Lavaland/crashed_pod_trail.yml @@ -0,0 +1,2014 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/22/2025 04:29:12 + entityCount: 308 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 3: Space + 0: FloorBasalt + 2: FloorShuttleBlue + 1: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.57031465,-0.62313485 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAADAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + 2,0: + ind: 2,0 + tiles: AAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Basalt1 + decals: + 12: 2,0 + - node: + color: '#FFFFFFFF' + id: Basalt2 + decals: + 20: 37.280025,3.9519238 + - node: + color: '#FFFFFFFF' + id: Basalt3 + decals: + 16: 16.128233,1.0678778 + - node: + color: '#FFFFFFFF' + id: Basalt4 + decals: + 13: 2.2814324,5.1807833 + - node: + color: '#FFFFFFFF' + id: Basalt5 + decals: + 18: 22,1 + - node: + color: '#FFFFFFFF' + id: Basalt7 + decals: + 14: 1.9779096,3.7662206 + 15: 11.168944,4.85108 + 19: 34.241127,2.2128677 + - node: + color: '#FFFFFFFF' + id: Basalt8 + decals: + 17: 16,4 + - node: + cleanable: True + zIndex: 1 + color: '#FFFFFFFF' + id: Dirt + decals: + 22: 3,3 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 21: 3,3 + - node: + cleanable: True + zIndex: 1 + color: '#FA7500FF' + id: evac + decals: + 23: 3,3 + - node: + cleanable: True + angle: -3.7524578917878086 rad + color: '#79150096' + id: footprint + decals: + 6: 2.1838233,3.824812 + - node: + cleanable: True + angle: -3.141592653589793 rad + color: '#79150096' + id: footprint + decals: + 4: 2.1899958,4.5876875 + 5: 1.8659213,5.264083 + 7: 1.8782675,4.21706 + - node: + cleanable: True + angle: -2.530727415391778 rad + color: '#79150096' + id: footprint + decals: + 3: 1.6591315,4.837861 + - node: + cleanable: True + color: '#79150096' + id: splatter + decals: + 0: 1.2943434,6.3353224 + 1: 2.4579241,5.2442417 + 2: 3.9702702,3.5364127 + - node: + cleanable: True + angle: 1.5707963267948966 rad + color: '#79150096' + id: thinline + decals: + 8: 4.75012,3.380583 + 9: 5.4031906,2.7412486 + 10: 5.6933136,3.3805819 + 11: 4.4340544,2.7968423 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 62695 + -1,0: + 0: 50380 + 0,1: + 0: 61167 + -1,1: + 0: 64174 + 1,0: + 0: 64727 + 1,1: + 0: 285 + 2,0: + 0: 65520 + 2,1: + 0: 207 + 3,0: + 0: 65392 + 3,1: + 0: 255 + 4,0: + 0: 65532 + 4,1: + 0: 3327 + 5,0: + 0: 65535 + 5,1: + 0: 4095 + 6,0: + 0: 65535 + 6,1: + 0: 4095 + 7,0: + 0: 65535 + 7,1: + 0: 4095 + 8,0: + 0: 65523 + 8,1: + 0: 1023 + 9,0: + 0: 65520 + 9,1: + 0: 255 + 10,0: + 0: 65328 + 10,1: + 0: 63 + -1,2: + 0: 1 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirlockShuttle + entities: + - uid: 3 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,3.5 + parent: 1 +- proto: BasaltFive + entities: + - uid: 291 + components: + - type: Transform + pos: 41.5,1.5 + parent: 1 + - uid: 294 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 +- proto: BasaltFour + entities: + - uid: 290 + components: + - type: Transform + pos: 40.5,5.5 + parent: 1 +- proto: BasaltOne + entities: + - uid: 292 + components: + - type: Transform + pos: 43.5,3.5 + parent: 1 + - uid: 296 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 297 + components: + - type: Transform + pos: -2.5,7.5 + parent: 1 + - uid: 298 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 +- proto: BasaltThree + entities: + - uid: 288 + components: + - type: Transform + pos: 20.5,5.5 + parent: 1 +- proto: BasaltTwo + entities: + - uid: 289 + components: + - type: Transform + pos: 29.5,0.5 + parent: 1 + - uid: 293 + components: + - type: Transform + pos: 8.5,3.5 + parent: 1 + - uid: 295 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 +- proto: BookHowToSurvive + entities: + - uid: 299 + components: + - type: Transform + pos: 2.8075664,6.3128357 + parent: 1 +- proto: BoxMRE + entities: + - uid: 14 + components: + - type: Transform + rot: -43.98229715025713 rad + pos: 4.486449,6.6190434 + parent: 1 +- proto: Catwalk + entities: + - uid: 33 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,6.5 + parent: 1 + - uid: 40 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,4.5 + parent: 1 + - uid: 92 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,3.5 + parent: 1 + - uid: 192 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,5.5 + parent: 1 + - uid: 200 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,3.5 + parent: 1 + - uid: 204 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,4.5 + parent: 1 + - uid: 205 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,5.5 + parent: 1 + - uid: 237 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,6.5 + parent: 1 +- proto: ChairPilotSeat + entities: + - uid: 241 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 259 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,6.5 + parent: 1 +- proto: DrinkMREFlask + entities: + - uid: 255 + components: + - type: Transform + rot: -31.415926535897945 rad + pos: 4.6481953,5.761917 + parent: 1 +- proto: Flare + entities: + - uid: 256 + components: + - type: Transform + rot: -31.415926535897945 rad + pos: 3.3657873,7.5872583 + parent: 1 +- proto: FloorLavaEntity + entities: + - uid: 16 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 4.5,0.5 + parent: 1 + - uid: 19 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,4.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 5.5,0.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 + - uid: 29 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,3.5 + parent: 1 + - uid: 32 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,1.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 7.5,1.5 + parent: 1 + - uid: 72 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,1.5 + parent: 1 + - uid: 73 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,3.5 + parent: 1 + - uid: 74 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,2.5 + parent: 1 + - uid: 75 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,5.5 + parent: 1 + - uid: 76 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,0.5 + parent: 1 + - uid: 77 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,2.5 + parent: 1 + - uid: 78 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,2.5 + parent: 1 + - uid: 79 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,2.5 + parent: 1 + - uid: 80 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,4.5 + parent: 1 + - uid: 81 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,4.5 + parent: 1 + - uid: 82 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,4.5 + parent: 1 + - uid: 83 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,4.5 + parent: 1 + - uid: 85 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,2.5 + parent: 1 + - uid: 86 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,4.5 + parent: 1 + - uid: 87 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,3.5 + parent: 1 + - uid: 88 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,4.5 + parent: 1 + - uid: 89 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,3.5 + parent: 1 + - uid: 90 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,3.5 + parent: 1 + - uid: 91 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,2.5 + parent: 1 + - uid: 93 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,1.5 + parent: 1 + - uid: 94 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,2.5 + parent: 1 + - uid: 95 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,4.5 + parent: 1 + - uid: 96 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 15.5,3.5 + parent: 1 + - uid: 97 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 15.5,2.5 + parent: 1 + - uid: 98 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,2.5 + parent: 1 + - uid: 99 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 16.5,3.5 + parent: 1 + - uid: 100 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,1.5 + parent: 1 + - uid: 101 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,4.5 + parent: 1 + - uid: 102 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,3.5 + parent: 1 + - uid: 103 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 18.5,4.5 + parent: 1 + - uid: 104 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,2.5 + parent: 1 + - uid: 105 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,1.5 + parent: 1 + - uid: 106 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 19.5,3.5 + parent: 1 + - uid: 107 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 19.5,2.5 + parent: 1 + - uid: 108 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,1.5 + parent: 1 + - uid: 109 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 20.5,3.5 + parent: 1 + - uid: 110 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,2.5 + parent: 1 + - uid: 111 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 21.5,4.5 + parent: 1 + - uid: 112 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 18.5,3.5 + parent: 1 + - uid: 113 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 21.5,3.5 + parent: 1 + - uid: 114 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,1.5 + parent: 1 + - uid: 115 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,4.5 + parent: 1 + - uid: 116 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,3.5 + parent: 1 + - uid: 117 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,2.5 + parent: 1 + - uid: 118 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 18.5,2.5 + parent: 1 + - uid: 119 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 23.5,3.5 + parent: 1 + - uid: 120 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 24.5,3.5 + parent: 1 + - uid: 121 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 25.5,3.5 + parent: 1 + - uid: 122 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 26.5,3.5 + parent: 1 + - uid: 123 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 27.5,3.5 + parent: 1 + - uid: 124 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 28.5,3.5 + parent: 1 + - uid: 125 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 29.5,3.5 + parent: 1 + - uid: 126 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,3.5 + parent: 1 + - uid: 127 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,3.5 + parent: 1 + - uid: 128 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 33.5,3.5 + parent: 1 + - uid: 129 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 34.5,3.5 + parent: 1 + - uid: 130 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 32.5,3.5 + parent: 1 + - uid: 131 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 35.5,3.5 + parent: 1 + - uid: 132 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 36.5,3.5 + parent: 1 + - uid: 133 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 29.5,2.5 + parent: 1 + - uid: 134 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,2.5 + parent: 1 + - uid: 135 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 35.5,2.5 + parent: 1 + - uid: 136 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 33.5,4.5 + parent: 1 + - uid: 137 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 25.5,4.5 + parent: 1 + - uid: 138 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 26.5,4.5 + parent: 1 + - uid: 139 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 27.5,4.5 + parent: 1 + - uid: 140 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 28.5,4.5 + parent: 1 + - uid: 141 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 29.5,4.5 + parent: 1 + - uid: 142 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,1.5 + parent: 1 + - uid: 143 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,5.5 + parent: 1 + - uid: 144 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 16.5,5.5 + parent: 1 + - uid: 145 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 18.5,1.5 + parent: 1 + - uid: 146 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 21.5,1.5 + parent: 1 + - uid: 147 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 23.5,5.5 + parent: 1 + - uid: 148 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 24.5,5.5 + parent: 1 + - uid: 149 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 35.5,4.5 + parent: 1 + - uid: 150 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 34.5,5.5 + parent: 1 + - uid: 151 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,4.5 + parent: 1 + - uid: 152 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 36.5,2.5 + parent: 1 + - uid: 153 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 28.5,2.5 + parent: 1 + - uid: 154 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 25.5,2.5 + parent: 1 + - uid: 155 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,1.5 + parent: 1 + - uid: 156 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 32.5,1.5 + parent: 1 + - uid: 157 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,4.5 + parent: 1 + - uid: 160 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 37.5,3.5 + parent: 1 + - uid: 161 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 38.5,3.5 + parent: 1 + - uid: 162 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 39.5,3.5 + parent: 1 + - uid: 163 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 40.5,3.5 + parent: 1 + - uid: 164 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 41.5,3.5 + parent: 1 + - uid: 165 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 24.5,2.5 + parent: 1 + - uid: 166 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 38.5,2.5 + parent: 1 + - uid: 167 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 20.5,4.5 + parent: 1 + - uid: 168 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 38.5,4.5 + parent: 1 + - uid: 169 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 42.5,4.5 + parent: 1 + - uid: 170 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 43.5,4.5 + parent: 1 + - uid: 171 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 26.5,2.5 + parent: 1 + - uid: 172 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 34.5,4.5 + parent: 1 + - uid: 173 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 27.5,2.5 + parent: 1 + - uid: 174 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 32.5,4.5 + parent: 1 + - uid: 175 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 15.5,4.5 + parent: 1 + - uid: 176 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 37.5,2.5 + parent: 1 + - uid: 177 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 20.5,1.5 + parent: 1 + - uid: 178 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 23.5,1.5 + parent: 1 + - uid: 189 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,5.5 + parent: 1 + - uid: 194 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,2.5 + parent: 1 + - uid: 196 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,1.5 + parent: 1 + - uid: 197 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,0.5 + parent: 1 + - uid: 198 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,0.5 + parent: 1 + - uid: 199 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,5.5 + parent: 1 + - uid: 208 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,4.5 + parent: 1 + - uid: 209 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 23.5,2.5 + parent: 1 + - uid: 213 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,7.5 + parent: 1 + - uid: 217 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,7.5 + parent: 1 + - uid: 218 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,6.5 + parent: 1 + - uid: 219 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,5.5 + parent: 1 + - uid: 220 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,4.5 + parent: 1 + - uid: 221 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,4.5 + parent: 1 + - uid: 223 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,4.5 + parent: 1 + - uid: 225 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,5.5 + parent: 1 + - uid: 231 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,3.5 + parent: 1 + - uid: 233 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 19.5,4.5 + parent: 1 + - uid: 235 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,6.5 + parent: 1 + - uid: 236 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,6.5 + parent: 1 + - uid: 263 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,4.5 + parent: 1 + - uid: 277 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,3.5 + parent: 1 + - uid: 278 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 16.5,2.5 + parent: 1 + - uid: 279 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,1.5 + parent: 1 + - uid: 280 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 21.5,2.5 + parent: 1 + - uid: 301 + components: + - type: Transform + pos: 31.5,5.5 + parent: 1 + - uid: 302 + components: + - type: Transform + pos: 30.5,5.5 + parent: 1 + - uid: 303 + components: + - type: Transform + pos: 30.5,0.5 + parent: 1 + - uid: 304 + components: + - type: Transform + pos: 27.5,0.5 + parent: 1 + - uid: 305 + components: + - type: Transform + pos: 26.5,0.5 + parent: 1 + - uid: 306 + components: + - type: Transform + pos: 25.5,0.5 + parent: 1 + - uid: 307 + components: + - type: Transform + pos: 24.5,0.5 + parent: 1 + - uid: 308 + components: + - type: Transform + pos: 28.5,0.5 + parent: 1 +- proto: FoodSnackNutribrick + entities: + - uid: 257 + components: + - type: Transform + rot: -31.415926535897945 rad + pos: 4.398196,5.5210094 + parent: 1 +- proto: Girder + entities: + - uid: 262 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 +- proto: Grille + entities: + - uid: 207 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,2.5 + parent: 1 + - uid: 265 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,4.5 + parent: 1 +- proto: InflatableWall + entities: + - uid: 206 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,2.5 + parent: 1 + - uid: 264 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,5.5 + parent: 1 + - uid: 276 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 +- proto: MagazineBoxLightRifle + entities: + - uid: 158 + components: + - type: Transform + rot: -31.415926535897945 rad + pos: 4.6250486,4.4878845 + parent: 1 +- proto: Pickaxe + entities: + - uid: 224 + components: + - type: Transform + pos: -3.4854758,8.430739 + parent: 1 +- proto: Rack + entities: + - uid: 41 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,7.5 + parent: 1 + - uid: 234 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,6.5 + parent: 1 +- proto: RandomCargoCorpseSpawner + entities: + - uid: 282 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 +- proto: RandomEngineerCorpseSpawner + entities: + - uid: 281 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 +- proto: ScrapFireExtinguisher + entities: + - uid: 300 + components: + - type: Transform + rot: -69.11503837897548 rad + pos: 4.52452,3.5621066 + parent: 1 +- proto: SurvivalKnife + entities: + - uid: 15 + components: + - type: Transform + rot: -31.415926535897945 rad + pos: 3.5556023,7.522399 + parent: 1 +- proto: Table + entities: + - uid: 253 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 260 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,7.5 + parent: 1 +- proto: Thruster + entities: + - uid: 4 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,2.5 + parent: 1 + - uid: 9 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,4.5 + parent: 1 +- proto: WallRockBasalt + entities: + - uid: 2 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: 4.5,-0.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 5.5,-0.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: 12.5,-0.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 10.5,-0.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 13.5,-0.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 14.5,-0.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 11.5,-0.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 9.5,-0.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 8.5,-0.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 15.5,-0.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 7.5,-0.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: 4.5,8.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 6.5,6.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 7.5,5.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 8.5,5.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 9.5,5.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 7.5,6.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 8.5,6.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 11.5,6.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 12.5,6.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 13.5,6.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 14.5,6.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 15.5,6.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 16.5,6.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 17.5,6.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 8.5,0.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 9.5,0.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 12.5,0.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: 14.5,0.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: 17.5,0.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 16.5,0.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 15.5,1.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 10.5,0.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 15.5,0.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 13.5,0.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 11.5,0.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 179 + components: + - type: Transform + pos: 14.5,7.5 + parent: 1 + - uid: 180 + components: + - type: Transform + pos: 13.5,7.5 + parent: 1 + - uid: 181 + components: + - type: Transform + pos: 12.5,7.5 + parent: 1 + - uid: 182 + components: + - type: Transform + pos: 11.5,7.5 + parent: 1 + - uid: 183 + components: + - type: Transform + pos: 10.5,7.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: 9.5,7.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: 8.5,7.5 + parent: 1 + - uid: 186 + components: + - type: Transform + pos: 7.5,7.5 + parent: 1 + - uid: 187 + components: + - type: Transform + pos: 6.5,7.5 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: 5.5,7.5 + parent: 1 + - uid: 190 + components: + - type: Transform + pos: 5.5,6.5 + parent: 1 + - uid: 191 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 + - uid: 195 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 + - uid: 201 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 203 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 + - uid: 210 + components: + - type: Transform + pos: 4.5,7.5 + parent: 1 + - uid: 211 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 214 + components: + - type: Transform + pos: -1.5,6.5 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: -1.5,5.5 + parent: 1 + - uid: 216 + components: + - type: Transform + pos: -3.5,3.5 + parent: 1 + - uid: 222 + components: + - type: Transform + pos: -1.5,8.5 + parent: 1 + - uid: 226 + components: + - type: Transform + pos: -3.5,4.5 + parent: 1 + - uid: 227 + components: + - type: Transform + pos: -3.5,5.5 + parent: 1 + - uid: 228 + components: + - type: Transform + pos: -3.5,6.5 + parent: 1 + - uid: 229 + components: + - type: Transform + pos: -4.5,9.5 + parent: 1 + - uid: 230 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 232 + components: + - type: Transform + pos: -3.5,9.5 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: -4.5,7.5 + parent: 1 + - uid: 239 + components: + - type: Transform + pos: -5.5,6.5 + parent: 1 + - uid: 240 + components: + - type: Transform + pos: 2.5,9.5 + parent: 1 + - uid: 242 + components: + - type: Transform + pos: -2.5,8.5 + parent: 1 + - uid: 243 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 + - uid: 244 + components: + - type: Transform + pos: 0.5,9.5 + parent: 1 + - uid: 245 + components: + - type: Transform + pos: -0.5,9.5 + parent: 1 + - uid: 246 + components: + - type: Transform + pos: -1.5,9.5 + parent: 1 + - uid: 247 + components: + - type: Transform + pos: -2.5,9.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: -0.5,8.5 + parent: 1 + - uid: 249 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: -4.5,6.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: -4.5,5.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: -4.5,4.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: -5.5,7.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: -4.5,8.5 + parent: 1 + - uid: 267 + components: + - type: Transform + pos: -5.5,8.5 + parent: 1 + - uid: 268 + components: + - type: Transform + pos: -3.5,10.5 + parent: 1 + - uid: 269 + components: + - type: Transform + pos: -2.5,10.5 + parent: 1 + - uid: 270 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 + - uid: 271 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 272 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 273 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 1 + - uid: 274 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 275 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 283 + components: + - type: Transform + pos: -3.5,2.5 + parent: 1 + - uid: 284 + components: + - type: Transform + pos: -3.5,1.5 + parent: 1 + - uid: 285 + components: + - type: Transform + pos: 1.5,-1.5 + parent: 1 + - uid: 286 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 + - uid: 287 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 +- proto: WallShuttle + entities: + - uid: 5 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,4.5 + parent: 1 + - uid: 7 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,2.5 + parent: 1 + - uid: 8 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,2.5 + parent: 1 +- proto: WallSolid + entities: + - uid: 35 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,8.5 + parent: 1 +- proto: WallSolidRust + entities: + - uid: 37 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,8.5 + parent: 1 + - uid: 193 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,5.5 + parent: 1 + - uid: 202 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,6.5 + parent: 1 +- proto: WeaponFlareGun + entities: + - uid: 258 + components: + - type: Transform + rot: -31.415926535897945 rad + pos: 1.5185647,7.5918903 + parent: 1 + - type: ChamberMagazineAmmoProvider + boltClosed: True +- proto: WeaponSniperMosin + entities: + - uid: 84 + components: + - type: Transform + rot: -31.415926535897945 rad + pos: 4.4954185,5.06699 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/fleshlab.yml b/Resources/Maps/Lavaland/fleshlab.yml new file mode 100644 index 0000000000..0930831ceb --- /dev/null +++ b/Resources/Maps/Lavaland/fleshlab.yml @@ -0,0 +1,3544 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/21/2025 06:14:13 + entityCount: 583 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 4: Space + 3: FloorBasalt + 8: FloorFlesh + 2: FloorReinforced + 0: FloorSteel + 7: FloorSteelDamaged + 5: FloorWhite + 1: Plating + 6: PlatingDamaged +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: 1.6570394,-0.484375 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: CAAAAAACAAAAAAABAAAAAAACCAAAAAADAAAAAAABCAAAAAACCAAAAAACCAAAAAAAAAAAAAABAAAAAAABAAAAAAACAAAAAAABAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAABCAAAAAABAAAAAAADCAAAAAADCAAAAAADCAAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAADAAAAAAADAAAAAAADAAAAAAABAAAAAAADAAAAAAADAAAAAAADCAAAAAABAAAAAAACAAAAAAADCAAAAAAAAAAAAAABAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAABAwAAAAAAAAAAAAADAAAAAAABAAAAAAACAAAAAAAAAAAAAAACAAAAAAADAAAAAAABAAAAAAACAAAAAAACAAAAAAABAAAAAAACAAAAAAADAAAAAAACAAAAAAACAAAAAAADAwAAAAAAAAAAAAACAQAAAAAAAQAAAAAAAAAAAAADAAAAAAABAgAAAAAAAgAAAAAAAAAAAAADCAAAAAACAAAAAAADAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAACAAAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAACAAAAAAADAAAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAABAAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAACAAAAAAADAAAAAAACAAAAAAAAAAAAAAACAAAAAAACAAAAAAACAAAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAABAAAAAAACAAAAAAADAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAACAAAAAAABAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAABQAAAAACAAAAAAADAAAAAAACAAAAAAACAAAAAAAAAAAAAAADAAAAAAABCAAAAAABCAAAAAADCAAAAAACAAAAAAAAAAAAAAABAAAAAAACCAAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAACCAAAAAAAAAAAAAAAAAAAAAABCAAAAAACCAAAAAADAAAAAAACAAAAAAAAAAAAAAACCAAAAAADBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAQAAAAAAAAAAAAADAAAAAAABCAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAQAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAACAAAAAABAAAAAAABAAAAAAABBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAADAAAAAAAAAAAAAAACAAAAAAADCAAAAAACAAAAAAABBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAAAAAAADAAAAAAACAAAAAAABAAAAAAADAAAAAAACAAAAAAAAAAAAAAACAAAAAAACAAAAAAADAAAAAAACBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAAAAAAADAAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAACAAAAAAADAAAAAAADAAAAAAAAAAAAAAADBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAAAAAAACAAAAAAAAAAAAAAACAAAAAAACAAAAAAABAAAAAAACAAAAAAADAAAAAAADAAAAAAABBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAAAAAAACAAAAAAABAAAAAAADAAAAAAAAAAAAAAAAAAAAAAACAAAAAAABAAAAAAAAAAAAAAADBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAAAAAAACAAAAAAADAAAAAAADAAAAAAAAAAAAAAADAAAAAAADAAAAAAAAAAAAAAACAAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAAABAAAAAAACAAAAAAABAAAAAAACAAAAAAADAAAAAAACBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAACAAAAAAABBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAAAAAAACAAAAAAACAAAAAAADAAAAAAABAAAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAABBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAABQAAAAACAAAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAACAAAAAAADAAAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAACBgAAAAAABQAAAAACCAAAAAACBQAAAAAAAAAAAAAAAAAAAAADAAAAAAACAAAAAAADCAAAAAAAAAAAAAABAAAAAAACAAAAAAAAAAAAAAADAAAAAAABBwAAAAAAAQAAAAAAAQAAAAAACAAAAAADBQAAAAABCAAAAAADAAAAAAACAAAAAAABCAAAAAACAAAAAAAAAAAAAAACAAAAAAABAAAAAAADAAAAAAABAAAAAAABAAAAAAACBgAAAAABAAAAAAABAAAAAAAACAAAAAADBgAAAAACAQAAAAAABgAAAAACAQAAAAAABwAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAACAAAAAAABCAAAAAABAAAAAAAAAAAAAAACBwAAAAACAAAAAAAABQAAAAACCAAAAAABBQAAAAABAAAAAAACAAAAAAAAAAAAAAACAAAAAAADCAAAAAAAAAAAAAABAAAAAAADAAAAAAABCAAAAAAACAAAAAABAAAAAAABAAAAAAAAAAAAAAABBQAAAAADBQAAAAADBQAAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAACAAAAAABCAAAAAAAAAAAAAADAAAAAAADCAAAAAADAAAAAAAAAAAAAAAD + version: 6 + 0,-1: + ind: 0,-1 + tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAACAAAAAAACAQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAACAAAAAAACAAAAAAACAAAAAAADAAAAAAABAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAADAAAAAAADAAAAAAADAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAAAAAAACAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAACAAAAAAADAAAAAAADCAAAAAABAAAAAAABAAAAAAABAAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAADAwAAAAAAAAAAAAACAAAAAAACAAAAAAAAAAAAAAAAAAAAAAABAAAAAAACAAAAAAACAAAAAAADAAAAAAABAAAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAABAAAAAAADAAAAAAACAAAAAAABAAAAAAACAAAAAAABAAAAAAACAAAAAAACAAAAAAAAAAAAAAACAAAAAAADAAAAAAABAAAAAAADAAAAAAAAAAAAAAABAAAAAAAC + version: 6 + -2,-1: + ind: -2,-1 + tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAABQAAAAADBQAAAAABAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAABQAAAAAACAAAAAADBQAAAAADBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAQAAAAAABQAAAAADCAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAQAAAAAABQAAAAACCAAAAAABBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAQAAAAAACAAAAAAABQAAAAADBAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAABQAAAAACBQAAAAACBQAAAAAD + version: 6 + -2,0: + ind: -2,0 + tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAABQAAAAADBQAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: AAAAAAABAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAADAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAADAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAADAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAABAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAACAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA + version: 6 + 1,-1: + ind: 1,-1 + tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAACAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAABAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAABAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAACAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAACAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAAAAAAACAwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Bot + decals: + 0: 7,6 + 2: 7,5 + 18: 8,6 + 19: 8,5 + 20: 8,5 + 21: 7,5 + 22: 7,4 + 23: 8,4 + 25: -7,11 + 26: -7,10 + 27: -7,9 + 28: -6,9 + 29: -5,9 + 30: -5,10 + 31: -5,11 + 33: -6,11 + - node: + color: '#FFFFFFFF' + id: Box + decals: + 34: -6,10 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallNW + decals: + 17: 9,3 + - node: + color: '#FFFFFFFF' + id: WarnLineS + decals: + 12: 9,4 + 13: 9,5 + 14: 9,6 + - node: + color: '#FFFFFFFF' + id: WarnLineW + decals: + 15: 7,3 + 16: 8,3 + - node: + color: '#7F1710FF' + id: splatter + decals: + 35: -4.651025,2.1459215 + 36: -10.523625,-3.5384576 + 37: -12.97675,-3.6165826 + 38: -15.315013,-2.8040826 + 39: -7.8522053,-0.7415826 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 43263 + -1,0: + 0: 65535 + 0,1: + 0: 65250 + -1,1: + 0: 61951 + 0,2: + 0: 48056 + -1,2: + 0: 65521 + 0,3: + 0: 3979 + -1,3: + 0: 3855 + 0,-1: + 0: 35375 + 1,0: + 0: 65535 + 1,1: + 0: 15288 + 1,2: + 0: 57119 + 1,3: + 0: 241 + 1,-1: + 0: 65419 + 2,0: + 0: 65535 + 2,1: + 0: 4095 + 2,2: + 0: 4367 + 2,3: + 0: 48 + 2,-1: + 0: 65535 + 3,0: + 0: 4094 + 3,1: + 0: 3838 + -4,-1: + 0: 65535 + -5,0: + 0: 8 + -3,-1: + 0: 65535 + -3,0: + 0: 34952 + -3,1: + 0: 49288 + -3,2: + 0: 17476 + -3,3: + 0: 3140 + -2,0: + 0: 65535 + -2,1: + 0: 61695 + -2,2: + 0: 65520 + -2,3: + 0: 3855 + -2,-1: + 0: 65535 + -1,-1: + 0: 65535 + -4,-2: + 0: 61440 + -5,-2: + 0: 49152 + -5,-1: + 0: 52974 + -3,-2: + 0: 61440 + -2,-2: + 0: 61440 + -1,-2: + 0: 65280 + 0,-2: + 0: 65280 + 1,-2: + 0: 45824 + 2,-2: + 0: 61440 + 3,-2: + 0: 61440 + 3,-1: + 0: 3838 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirCanister + entities: + - uid: 291 + components: + - type: Transform + pos: 7.5,5.5 + parent: 1 +- proto: AirlockAssemblyScience + entities: + - uid: 192 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 +- proto: AirlockEngineeringLocked + entities: + - uid: 373 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,10.5 + parent: 1 +- proto: AirlockScience + entities: + - uid: 63 + components: + - type: Transform + pos: -3.5,6.5 + parent: 1 + - uid: 148 + components: + - type: Transform + pos: -3.5,8.5 + parent: 1 +- proto: AirlockScienceGlass + entities: + - uid: 179 + components: + - type: Transform + pos: 12.5,5.5 + parent: 1 + - uid: 180 + components: + - type: Transform + pos: 12.5,1.5 + parent: 1 + - uid: 181 + components: + - type: Transform + pos: 12.5,-2.5 + parent: 1 +- proto: AnomalyCoreFleshInert + entities: + - uid: 199 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -15.492753,-2.6592877 + parent: 1 +- proto: AnomalyScanner + entities: + - uid: 268 + components: + - type: Transform + pos: -5.3650637,4.6814785 + parent: 1 +- proto: APCBasic + entities: + - uid: 357 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,8.5 + parent: 1 + - uid: 358 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 359 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,0.5 + parent: 1 + - uid: 382 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,11.5 + parent: 1 +- proto: Autolathe + entities: + - uid: 276 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 +- proto: BasaltFive + entities: + - uid: 574 + components: + - type: Transform + pos: 4.5,-3.5 + parent: 1 + - uid: 577 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 + - uid: 578 + components: + - type: Transform + pos: 3.5,13.5 + parent: 1 + - uid: 579 + components: + - type: Transform + pos: 4.5,10.5 + parent: 1 +- proto: BasaltOne + entities: + - uid: 575 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 576 + components: + - type: Transform + pos: 4.5,7.5 + parent: 1 +- proto: BasaltThree + entities: + - uid: 580 + components: + - type: Transform + pos: 4.5,13.5 + parent: 1 + - uid: 581 + components: + - type: Transform + pos: -9.5,12.5 + parent: 1 + - uid: 582 + components: + - type: Transform + pos: -8.5,14.5 + parent: 1 + - uid: 583 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 +- proto: BasaltTwo + entities: + - uid: 572 + components: + - type: Transform + pos: -7.5,7.5 + parent: 1 + - uid: 573 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 1 +- proto: BorgModuleAdvancedTool + entities: + - uid: 346 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.285738,12.272611 + parent: 1 +- proto: BorgModuleAdvancedTreatment + entities: + - uid: 344 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5982378,12.553861 + parent: 1 +- proto: BorgModuleArtifact + entities: + - uid: 312 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.536747,-0.334455 + parent: 1 +- proto: BorgModuleRCD + entities: + - uid: 345 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.2701128,9.835111 + parent: 1 +- proto: BorgModuleSyndicateWeapon + entities: + - uid: 343 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.2701128,12.522611 + parent: 1 +- proto: BoxFolderClipboard + entities: + - uid: 315 + components: + - type: Transform + pos: 9.599247,2.321795 + parent: 1 +- proto: CableApcExtension + entities: + - uid: 386 + components: + - type: Transform + pos: 5.5,11.5 + parent: 1 + - uid: 387 + components: + - type: Transform + pos: 5.5,10.5 + parent: 1 + - uid: 388 + components: + - type: Transform + pos: 6.5,10.5 + parent: 1 + - uid: 392 + components: + - type: Transform + pos: -2.5,9.5 + parent: 1 + - uid: 400 + components: + - type: Transform + pos: -2.5,8.5 + parent: 1 + - uid: 421 + components: + - type: Transform + pos: -3.5,9.5 + parent: 1 + - uid: 422 + components: + - type: Transform + pos: -4.5,9.5 + parent: 1 + - uid: 423 + components: + - type: Transform + pos: -5.5,9.5 + parent: 1 + - uid: 424 + components: + - type: Transform + pos: -6.5,9.5 + parent: 1 + - uid: 425 + components: + - type: Transform + pos: -6.5,10.5 + parent: 1 + - uid: 426 + components: + - type: Transform + pos: -6.5,11.5 + parent: 1 + - uid: 427 + components: + - type: Transform + pos: -6.5,12.5 + parent: 1 + - uid: 428 + components: + - type: Transform + pos: -1.5,9.5 + parent: 1 + - uid: 429 + components: + - type: Transform + pos: -0.5,9.5 + parent: 1 + - uid: 430 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 + - uid: 431 + components: + - type: Transform + pos: 0.5,9.5 + parent: 1 + - uid: 432 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 + - uid: 433 + components: + - type: Transform + pos: 1.5,11.5 + parent: 1 + - uid: 434 + components: + - type: Transform + pos: 1.5,12.5 + parent: 1 + - uid: 435 + components: + - type: Transform + pos: 0.5,12.5 + parent: 1 + - uid: 436 + components: + - type: Transform + pos: -0.5,12.5 + parent: 1 + - uid: 437 + components: + - type: Transform + pos: -1.5,12.5 + parent: 1 + - uid: 438 + components: + - type: Transform + pos: -3.5,12.5 + parent: 1 + - uid: 439 + components: + - type: Transform + pos: -4.5,12.5 + parent: 1 + - uid: 440 + components: + - type: Transform + pos: -5.5,12.5 + parent: 1 + - uid: 441 + components: + - type: Transform + pos: -2.5,12.5 + parent: 1 + - uid: 442 + components: + - type: Transform + pos: -9.5,0.5 + parent: 1 + - uid: 443 + components: + - type: Transform + pos: -8.5,0.5 + parent: 1 + - uid: 444 + components: + - type: Transform + pos: -8.5,1.5 + parent: 1 + - uid: 445 + components: + - type: Transform + pos: -8.5,2.5 + parent: 1 + - uid: 446 + components: + - type: Transform + pos: -8.5,3.5 + parent: 1 + - uid: 447 + components: + - type: Transform + pos: -8.5,4.5 + parent: 1 + - uid: 448 + components: + - type: Transform + pos: -7.5,4.5 + parent: 1 + - uid: 449 + components: + - type: Transform + pos: -6.5,4.5 + parent: 1 + - uid: 450 + components: + - type: Transform + pos: -5.5,4.5 + parent: 1 + - uid: 451 + components: + - type: Transform + pos: -4.5,4.5 + parent: 1 + - uid: 452 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 + - uid: 453 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 + - uid: 454 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 455 + components: + - type: Transform + pos: -3.5,4.5 + parent: 1 + - uid: 456 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 457 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 + - uid: 458 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 459 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 + - uid: 460 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 + - uid: 461 + components: + - type: Transform + pos: -0.5,-2.5 + parent: 1 + - uid: 462 + components: + - type: Transform + pos: -0.5,-3.5 + parent: 1 + - uid: 463 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 464 + components: + - type: Transform + pos: -9.5,-0.5 + parent: 1 + - uid: 465 + components: + - type: Transform + pos: -10.5,-0.5 + parent: 1 + - uid: 466 + components: + - type: Transform + pos: -11.5,-0.5 + parent: 1 + - uid: 467 + components: + - type: Transform + pos: -12.5,-0.5 + parent: 1 + - uid: 468 + components: + - type: Transform + pos: -13.5,-0.5 + parent: 1 + - uid: 469 + components: + - type: Transform + pos: -14.5,-0.5 + parent: 1 + - uid: 470 + components: + - type: Transform + pos: -16.5,-0.5 + parent: 1 + - uid: 471 + components: + - type: Transform + pos: -17.5,-0.5 + parent: 1 + - uid: 472 + components: + - type: Transform + pos: -15.5,-0.5 + parent: 1 + - uid: 473 + components: + - type: Transform + pos: -17.5,-1.5 + parent: 1 + - uid: 474 + components: + - type: Transform + pos: -17.5,-2.5 + parent: 1 + - uid: 475 + components: + - type: Transform + pos: -17.5,-4.5 + parent: 1 + - uid: 476 + components: + - type: Transform + pos: -17.5,-3.5 + parent: 1 + - uid: 477 + components: + - type: Transform + pos: -16.5,-5.5 + parent: 1 + - uid: 478 + components: + - type: Transform + pos: -16.5,-4.5 + parent: 1 + - uid: 479 + components: + - type: Transform + pos: -15.5,-5.5 + parent: 1 + - uid: 480 + components: + - type: Transform + pos: -14.5,-5.5 + parent: 1 + - uid: 481 + components: + - type: Transform + pos: -12.5,-5.5 + parent: 1 + - uid: 482 + components: + - type: Transform + pos: -11.5,-5.5 + parent: 1 + - uid: 483 + components: + - type: Transform + pos: -10.5,-5.5 + parent: 1 + - uid: 484 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 1 + - uid: 485 + components: + - type: Transform + pos: -13.5,-5.5 + parent: 1 + - uid: 486 + components: + - type: Transform + pos: -7.5,-5.5 + parent: 1 + - uid: 487 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 1 + - uid: 488 + components: + - type: Transform + pos: -5.5,-5.5 + parent: 1 + - uid: 489 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 1 + - uid: 490 + components: + - type: Transform + pos: -6.5,-5.5 + parent: 1 + - uid: 491 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 1 + - uid: 492 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 + - uid: 493 + components: + - type: Transform + pos: -10.5,-4.5 + parent: 1 + - uid: 494 + components: + - type: Transform + pos: -10.5,-3.5 + parent: 1 + - uid: 495 + components: + - type: Transform + pos: -10.5,-2.5 + parent: 1 + - uid: 496 + components: + - type: Transform + pos: -10.5,-1.5 + parent: 1 + - uid: 497 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 1 + - uid: 498 + components: + - type: Transform + pos: -5.5,-3.5 + parent: 1 + - uid: 499 + components: + - type: Transform + pos: -5.5,-2.5 + parent: 1 + - uid: 500 + components: + - type: Transform + pos: -5.5,-0.5 + parent: 1 + - uid: 501 + components: + - type: Transform + pos: -5.5,0.5 + parent: 1 + - uid: 502 + components: + - type: Transform + pos: -5.5,1.5 + parent: 1 + - uid: 503 + components: + - type: Transform + pos: -5.5,-1.5 + parent: 1 + - uid: 504 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 505 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 506 + components: + - type: Transform + pos: 5.5,2.5 + parent: 1 + - uid: 507 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 508 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 509 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 510 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 511 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 + - uid: 512 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - uid: 513 + components: + - type: Transform + pos: 7.5,1.5 + parent: 1 + - uid: 514 + components: + - type: Transform + pos: 8.5,1.5 + parent: 1 + - uid: 515 + components: + - type: Transform + pos: 9.5,1.5 + parent: 1 + - uid: 516 + components: + - type: Transform + pos: 11.5,1.5 + parent: 1 + - uid: 517 + components: + - type: Transform + pos: 10.5,1.5 + parent: 1 + - uid: 518 + components: + - type: Transform + pos: 10.5,2.5 + parent: 1 + - uid: 519 + components: + - type: Transform + pos: 10.5,3.5 + parent: 1 + - uid: 520 + components: + - type: Transform + pos: 10.5,4.5 + parent: 1 + - uid: 521 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 + - uid: 522 + components: + - type: Transform + pos: 10.5,5.5 + parent: 1 + - uid: 523 + components: + - type: Transform + pos: 11.5,5.5 + parent: 1 + - uid: 524 + components: + - type: Transform + pos: 12.5,5.5 + parent: 1 + - uid: 525 + components: + - type: Transform + pos: 10.5,0.5 + parent: 1 + - uid: 526 + components: + - type: Transform + pos: 10.5,-0.5 + parent: 1 + - uid: 527 + components: + - type: Transform + pos: 10.5,-1.5 + parent: 1 + - uid: 528 + components: + - type: Transform + pos: 10.5,-3.5 + parent: 1 + - uid: 529 + components: + - type: Transform + pos: 10.5,-2.5 + parent: 1 + - uid: 530 + components: + - type: Transform + pos: 11.5,-2.5 + parent: 1 + - uid: 531 + components: + - type: Transform + pos: 12.5,-2.5 + parent: 1 + - uid: 532 + components: + - type: Transform + pos: 13.5,-2.5 + parent: 1 + - uid: 533 + components: + - type: Transform + pos: 8.5,-2.5 + parent: 1 + - uid: 534 + components: + - type: Transform + pos: 7.5,-2.5 + parent: 1 + - uid: 535 + components: + - type: Transform + pos: 9.5,-2.5 + parent: 1 + - uid: 536 + components: + - type: Transform + pos: 6.5,-1.5 + parent: 1 + - uid: 537 + components: + - type: Transform + pos: 5.5,-1.5 + parent: 1 + - uid: 538 + components: + - type: Transform + pos: 7.5,-1.5 + parent: 1 + - uid: 539 + components: + - type: Transform + pos: 4.5,-1.5 + parent: 1 + - uid: 540 + components: + - type: Transform + pos: 4.5,-2.5 + parent: 1 + - uid: 541 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 +- proto: CableHV + entities: + - uid: 378 + components: + - type: Transform + pos: 8.5,10.5 + parent: 1 + - uid: 379 + components: + - type: Transform + pos: 8.5,11.5 + parent: 1 + - uid: 380 + components: + - type: Transform + pos: 7.5,11.5 + parent: 1 + - uid: 381 + components: + - type: Transform + pos: 6.5,11.5 + parent: 1 +- proto: CableMV + entities: + - uid: 384 + components: + - type: Transform + pos: 6.5,11.5 + parent: 1 + - uid: 385 + components: + - type: Transform + pos: 5.5,11.5 + parent: 1 + - uid: 389 + components: + - type: Transform + pos: 4.5,11.5 + parent: 1 + - uid: 390 + components: + - type: Transform + pos: 3.5,11.5 + parent: 1 + - uid: 391 + components: + - type: Transform + pos: 3.5,10.5 + parent: 1 + - uid: 393 + components: + - type: Transform + pos: 3.5,7.5 + parent: 1 + - uid: 394 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 + - uid: 395 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 396 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 397 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 398 + components: + - type: Transform + pos: -0.5,7.5 + parent: 1 + - uid: 399 + components: + - type: Transform + pos: -2.5,7.5 + parent: 1 + - uid: 401 + components: + - type: Transform + pos: -2.5,8.5 + parent: 1 + - uid: 402 + components: + - type: Transform + pos: -3.5,7.5 + parent: 1 + - uid: 403 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 404 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 405 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - uid: 406 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 + - uid: 407 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 408 + components: + - type: Transform + pos: -3.5,6.5 + parent: 1 + - uid: 409 + components: + - type: Transform + pos: -3.5,5.5 + parent: 1 + - uid: 410 + components: + - type: Transform + pos: -3.5,2.5 + parent: 1 + - uid: 411 + components: + - type: Transform + pos: -3.5,3.5 + parent: 1 + - uid: 412 + components: + - type: Transform + pos: -3.5,1.5 + parent: 1 + - uid: 413 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 + - uid: 414 + components: + - type: Transform + pos: -3.5,4.5 + parent: 1 + - uid: 415 + components: + - type: Transform + pos: -9.5,0.5 + parent: 1 + - uid: 416 + components: + - type: Transform + pos: -8.5,0.5 + parent: 1 + - uid: 417 + components: + - type: Transform + pos: -7.5,0.5 + parent: 1 + - uid: 418 + components: + - type: Transform + pos: -5.5,0.5 + parent: 1 + - uid: 419 + components: + - type: Transform + pos: -4.5,0.5 + parent: 1 + - uid: 420 + components: + - type: Transform + pos: -6.5,0.5 + parent: 1 +- proto: CableTerminal + entities: + - uid: 376 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,11.5 + parent: 1 +- proto: ClothingHeadHatWeldingMaskFlameBlue + entities: + - uid: 342 + components: + - type: Transform + pos: -2.9107378,12.694486 + parent: 1 +- proto: ClothingHeadMirror + entities: + - uid: 218 + components: + - type: Transform + pos: -14.958105,-3.199584 + parent: 1 +- proto: ComputerAnalysisConsole + entities: + - uid: 126 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,-0.5 + parent: 1 +- proto: computerBodyScanner + entities: + - uid: 206 + components: + - type: Transform + pos: -15.5,-0.5 + parent: 1 +- proto: ComputerBroken + entities: + - uid: 114 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,3.5 + parent: 1 + - uid: 137 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,-4.5 + parent: 1 + - uid: 204 + components: + - type: Transform + pos: -16.5,-0.5 + parent: 1 + - uid: 207 + components: + - type: Transform + pos: -14.5,-0.5 + parent: 1 + - uid: 208 + components: + - type: Transform + pos: -13.5,-0.5 + parent: 1 + - uid: 282 + components: + - type: Transform + pos: 4.5,3.5 + parent: 1 + - uid: 283 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 349 + components: + - type: Transform + pos: -4.5,12.5 + parent: 1 + - uid: 350 + components: + - type: Transform + pos: 0.5,12.5 + parent: 1 +- proto: ComputerMedicalRecords + entities: + - uid: 205 + components: + - type: Transform + pos: -17.5,-0.5 + parent: 1 +- proto: CrateArtifactContainer + entities: + - uid: 289 + components: + - type: Transform + pos: 9.5,-4.5 + parent: 1 +- proto: CrateMedicalSurgery + entities: + - uid: 210 + components: + - type: Transform + pos: -17.5,-3.5 + parent: 1 +- proto: CrateScience + entities: + - uid: 347 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 + - type: Fixtures + fixtures: + fix1: + shape: !type:PolygonShape + radius: 0.01 + vertices: + - -0.4,-0.4 + - 0.4,-0.4 + - 0.4,0.29 + - -0.4,0.29 + mask: + - Impassable + - HighImpassable + - LowImpassable + layer: + - BulletImpassable + - Opaque + density: 50 + hard: True + restitution: 0 + friction: 0.4 + - type: EntityStorage + open: True + removedMasks: 20 + - type: PlaceableSurface + isPlaceable: True + - uid: 348 + components: + - type: Transform + pos: 1.5,11.5 + parent: 1 + - type: Fixtures + fixtures: + fix1: + shape: !type:PolygonShape + radius: 0.01 + vertices: + - -0.4,-0.4 + - 0.4,-0.4 + - 0.4,0.29 + - -0.4,0.29 + mask: + - Impassable + - HighImpassable + - LowImpassable + layer: + - BulletImpassable + - Opaque + density: 50 + hard: True + restitution: 0 + friction: 0.4 + - type: EntityStorage + open: True + removedMasks: 20 + - type: PlaceableSurface + isPlaceable: True +- proto: CyborgEndoskeleton + entities: + - uid: 332 + components: + - type: Transform + pos: -5.484109,10.631986 + parent: 1 +- proto: Drill + entities: + - uid: 215 + components: + - type: Transform + pos: -15.47373,-4.371459 + parent: 1 +- proto: DrinkHotCoffee + entities: + - uid: 314 + components: + - type: Transform + pos: 9.364872,1.790545 + parent: 1 +- proto: ExosuitFabricator + entities: + - uid: 327 + components: + - type: Transform + pos: -7.5,12.5 + parent: 1 + - uid: 329 + components: + - type: Transform + pos: -7.5,9.5 + parent: 1 +- proto: filingCabinetDrawerRandom + entities: + - uid: 139 + components: + - type: Transform + pos: -11.5,-0.5 + parent: 1 +- proto: filingCabinetRandom + entities: + - uid: 141 + components: + - type: Transform + pos: -12.5,-0.5 + parent: 1 +- proto: FleshBlocker + entities: + - uid: 542 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,-3.5 + parent: 1 + - uid: 543 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,-1.5 + parent: 1 + - uid: 544 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,0.5 + parent: 1 + - uid: 545 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,1.5 + parent: 1 + - uid: 546 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,0.5 + parent: 1 + - uid: 547 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-1.5 + parent: 1 + - uid: 548 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,0.5 + parent: 1 + - uid: 549 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,0.5 + parent: 1 + - uid: 550 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,2.5 + parent: 1 + - uid: 551 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,1.5 + parent: 1 +- proto: GasCanisterBrokenBase + entities: + - uid: 292 + components: + - type: Transform + pos: 7.5,4.5 + parent: 1 + - uid: 293 + components: + - type: Transform + pos: 10.5,5.5 + parent: 1 +- proto: GasMixerFlipped + entities: + - uid: 305 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,5.5 + parent: 1 +- proto: GasPipeStraight + entities: + - uid: 309 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,5.5 + parent: 1 + - uid: 310 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,1.5 + parent: 1 + - uid: 311 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,-2.5 + parent: 1 +- proto: GasPort + entities: + - uid: 298 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 + - uid: 299 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,5.5 + parent: 1 + - uid: 300 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,1.5 + parent: 1 + - uid: 301 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-2.5 + parent: 1 +- proto: GasPressurePump + entities: + - uid: 302 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,-2.5 + parent: 1 + - uid: 303 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,1.5 + parent: 1 + - uid: 304 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,5.5 + parent: 1 +- proto: GasVentPump + entities: + - uid: 306 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,5.5 + parent: 1 + - uid: 307 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,1.5 + parent: 1 + - uid: 308 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,-2.5 + parent: 1 +- proto: GeneratorRTG + entities: + - uid: 377 + components: + - type: Transform + pos: 8.5,10.5 + parent: 1 +- proto: Girder + entities: + - uid: 24 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 +- proto: Grille + entities: + - uid: 2 + components: + - type: Transform + pos: -9.5,4.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: -14.5,-5.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -15.5,-5.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: -16.5,-5.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -16.5,0.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -15.5,0.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: -14.5,0.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: -9.5,2.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: -9.5,3.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: -18.5,-3.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: -10.5,-5.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: -11.5,-5.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -5.5,-5.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: -7.5,6.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: -5.5,6.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: -6.5,6.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 4.5,-2.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: 12.5,-4.5 + parent: 1 + - uid: 173 + components: + - type: Transform + pos: 12.5,-3.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: 12.5,-1.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: 12.5,0.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: 12.5,4.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: 12.5,6.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: 8.5,7.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: 9.5,7.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: 10.5,7.5 + parent: 1 +- proto: GrilleBroken + entities: + - uid: 30 + components: + - type: Transform + pos: -18.5,-1.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: -18.5,-2.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: 12.5,2.5 + parent: 1 +- proto: HandheldArtifactContainer + entities: + - uid: 138 + components: + - type: Transform + pos: 9.521122,1.18117 + parent: 1 +- proto: Hemostat + entities: + - uid: 217 + components: + - type: Transform + pos: -16.426855,-2.121459 + parent: 1 +- proto: HonkerChassis + entities: + - uid: 331 + components: + - type: Transform + pos: -2.5,10.5 + parent: 1 +- proto: LightHeadBorg + entities: + - uid: 333 + components: + - type: Transform + pos: -6.046609,11.241361 + parent: 1 +- proto: MachineAnomalyGenerator + entities: + - uid: 265 + components: + - type: Transform + pos: -7.5,4.5 + parent: 1 +- proto: MachineAnomalySynchronizer + entities: + - uid: 269 + components: + - type: Transform + pos: -8.5,-2.5 + parent: 1 +- proto: MachineAnomalyVessel + entities: + - uid: 226 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 +- proto: MachineAPE + entities: + - uid: 147 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 270 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,-2.5 + parent: 1 +- proto: MachineArtifactAnalyzer + entities: + - uid: 113 + components: + - type: Transform + pos: 14.5,1.5 + parent: 1 + - uid: 130 + components: + - type: Transform + pos: 14.5,-2.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: 14.5,5.5 + parent: 1 +- proto: MachineArtifactCrusher + entities: + - uid: 129 + components: + - type: Transform + pos: 7.5,-4.5 + parent: 1 +- proto: MachineFlatpacker + entities: + - uid: 278 + components: + - type: Transform + pos: 5.5,-1.5 + parent: 1 +- proto: MachineFrameDestroyed + entities: + - uid: 209 + components: + - type: Transform + pos: -17.5,-2.5 + parent: 1 + - uid: 229 + components: + - type: Transform + pos: -0.5,-2.5 + parent: 1 + - uid: 279 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 +- proto: MMI + entities: + - uid: 565 + components: + - type: Transform + pos: -5.0574512,9.868924 + parent: 1 +- proto: NodeScanner + entities: + - uid: 313 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.521122,0.290545 + parent: 1 +- proto: OperatingTable + entities: + - uid: 195 + components: + - type: Transform + pos: -15.5,-2.5 + parent: 1 +- proto: OrganHumanBrain + entities: + - uid: 220 + components: + - type: Transform + pos: -16.35054,-3.083308 + parent: 1 +- proto: OrganHumanHeart + entities: + - uid: 221 + components: + - type: Transform + pos: -15.334915,-2.052058 + parent: 1 +- proto: OrganHumanLungs + entities: + - uid: 222 + components: + - type: Transform + pos: -14.03804,-4.192683 + parent: 1 +- proto: PlasmaReinforcedWindowDirectional + entities: + - uid: 228 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 + - uid: 231 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 +- proto: PowerCellRecharger + entities: + - uid: 562 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 +- proto: Poweredlight + entities: + - uid: 316 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,1.5 + parent: 1 + - uid: 317 + components: + - type: Transform + pos: -12.5,-0.5 + parent: 1 + - uid: 318 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-4.5 + parent: 1 + - uid: 319 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,0.5 + parent: 1 + - uid: 320 + components: + - type: Transform + pos: -6.5,7.5 + parent: 1 + - uid: 321 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,-0.5 + parent: 1 + - uid: 322 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 323 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,-1.5 + parent: 1 + - uid: 324 + components: + - type: Transform + pos: 11.5,6.5 + parent: 1 + - uid: 325 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,-4.5 + parent: 1 + - uid: 326 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 355 + components: + - type: Transform + pos: -5.5,12.5 + parent: 1 + - uid: 356 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,9.5 + parent: 1 +- proto: PoweredSmallLight + entities: + - uid: 383 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,10.5 + parent: 1 +- proto: Protolathe + entities: + - uid: 277 + components: + - type: Transform + pos: 4.5,-1.5 + parent: 1 +- proto: Rack + entities: + - uid: 275 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,-1.5 + parent: 1 + - uid: 328 + components: + - type: Transform + pos: -7.5,10.5 + parent: 1 + - uid: 330 + components: + - type: Transform + pos: -7.5,11.5 + parent: 1 +- proto: Railing + entities: + - uid: 258 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,2.5 + parent: 1 + - uid: 259 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,2.5 + parent: 1 + - uid: 260 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,2.5 + parent: 1 + - uid: 262 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,3.5 + parent: 1 + - uid: 263 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,4.5 + parent: 1 + - uid: 264 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,5.5 + parent: 1 +- proto: RailingCornerSmall + entities: + - uid: 261 + components: + - type: Transform + pos: -4.5,2.5 + parent: 1 +- proto: RandomArtifactSpawner + entities: + - uid: 112 + components: + - type: Transform + pos: 14.5,-2.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: 14.5,5.5 + parent: 1 +- proto: RandomMedicCorpseSpawner + entities: + - uid: 219 + components: + - type: Transform + pos: -14.5,-2.5 + parent: 1 +- proto: RandomScienceCorpseSpawner + entities: + - uid: 561 + components: + - type: Transform + pos: -4.5,2.5 + parent: 1 + - uid: 563 + components: + - type: Transform + pos: 7.5,1.5 + parent: 1 + - uid: 571 + components: + - type: Transform + pos: -9.5,-3.5 + parent: 1 +- proto: RandomSecurityCorpseSpawner + entities: + - uid: 564 + components: + - type: Transform + pos: -7.5,-0.5 + parent: 1 +- proto: ReinforcedPlasmaWindow + entities: + - uid: 182 + components: + - type: Transform + pos: 12.5,-3.5 + parent: 1 + - uid: 183 + components: + - type: Transform + pos: 12.5,-1.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: 12.5,0.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: 12.5,4.5 + parent: 1 + - uid: 186 + components: + - type: Transform + pos: 12.5,6.5 + parent: 1 +- proto: ReinforcedWindow + entities: + - uid: 25 + components: + - type: Transform + pos: -11.5,-5.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: -16.5,-5.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: -10.5,-5.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: -5.5,-5.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 1 + - uid: 224 + components: + - type: Transform + pos: -15.5,0.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: -15.5,-5.5 + parent: 1 + - uid: 230 + components: + - type: Transform + pos: -14.5,-5.5 + parent: 1 + - uid: 234 + components: + - type: Transform + pos: -14.5,0.5 + parent: 1 + - uid: 240 + components: + - type: Transform + pos: -9.5,4.5 + parent: 1 + - uid: 241 + components: + - type: Transform + pos: -9.5,3.5 + parent: 1 + - uid: 242 + components: + - type: Transform + pos: -9.5,2.5 + parent: 1 + - uid: 243 + components: + - type: Transform + pos: -7.5,6.5 + parent: 1 + - uid: 244 + components: + - type: Transform + pos: -6.5,6.5 + parent: 1 + - uid: 245 + components: + - type: Transform + pos: -5.5,6.5 + parent: 1 + - uid: 246 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 247 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 249 + components: + - type: Transform + pos: 4.5,-2.5 + parent: 1 + - uid: 253 + components: + - type: Transform + pos: 8.5,7.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: 9.5,7.5 + parent: 1 + - uid: 255 + components: + - type: Transform + pos: 10.5,7.5 + parent: 1 +- proto: ResearchAndDevelopmentServerMachineCircuitboard + entities: + - uid: 280 + components: + - type: Transform + pos: 3.4160054,3.3746216 + parent: 1 +- proto: ResearchDisk + entities: + - uid: 568 + components: + - type: Transform + pos: -10.234578,-0.3525455 + parent: 1 + - uid: 569 + components: + - type: Transform + pos: 6.739002,1.3505795 + parent: 1 +- proto: ResearchDisk10000 + entities: + - uid: 567 + components: + - type: Transform + pos: -5.3333635,0.5068295 + parent: 1 +- proto: RightLegBorg + entities: + - uid: 334 + components: + - type: Transform + pos: -6.171609,9.835111 + parent: 1 +- proto: SalvageCanisterSpawner + entities: + - uid: 128 + components: + - type: Transform + pos: 7.5,6.5 + parent: 1 + - uid: 290 + components: + - type: Transform + pos: 8.5,4.5 + parent: 1 +- proto: SalvageFleshSpawner + entities: + - uid: 552 + components: + - type: Transform + pos: -10.5,-2.5 + parent: 1 + - uid: 553 + components: + - type: Transform + pos: -16.5,-1.5 + parent: 1 + - uid: 554 + components: + - type: Transform + pos: -6.5,1.5 + parent: 1 + - uid: 555 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 556 + components: + - type: Transform + pos: -3.5,2.5 + parent: 1 + - uid: 557 + components: + - type: Transform + pos: -15.5,-3.5 + parent: 1 + - uid: 558 + components: + - type: Transform + pos: -4.5,-3.5 + parent: 1 + - uid: 559 + components: + - type: Transform + pos: 8.5,-0.5 + parent: 1 + - uid: 560 + components: + - type: Transform + pos: 8.5,3.5 + parent: 1 +- proto: SawAdvanced + entities: + - uid: 216 + components: + - type: Transform + pos: -11.81748,-3.277709 + parent: 1 +- proto: ScalpelLaser + entities: + - uid: 214 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -15.770605,-4.324584 + parent: 1 +- proto: ScrapAirlock1 + entities: + - uid: 194 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.1022129,0.5103246 + parent: 1 +- proto: ScrapAirlock2 + entities: + - uid: 274 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.070623,-2.6477256 + parent: 1 +- proto: ScrapCanister1 + entities: + - uid: 294 + components: + - type: Transform + pos: 7.5850887,3.6317844 + parent: 1 +- proto: ScrapCanister2 + entities: + - uid: 295 + components: + - type: Transform + pos: 10.147589,4.3661594 + parent: 1 +- proto: ScrapGeneratorFuelTank + entities: + - uid: 27 + components: + - type: Transform + pos: -0.3350997,-3.6454897 + parent: 1 +- proto: ScrapSteel + entities: + - uid: 26 + components: + - type: Transform + pos: -1.3038497,-4.1298647 + parent: 1 + - uid: 271 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -10.758123,-2.5227256 + parent: 1 +- proto: ShardGlass + entities: + - uid: 198 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.883123,-2.1633506 + parent: 1 + - uid: 200 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.569822,-3.491555 + parent: 1 + - uid: 201 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -12.960447,-3.491555 + parent: 1 + - uid: 202 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.194822,-4.47593 + parent: 1 + - uid: 203 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -12.069822,-4.2181177 + parent: 1 + - uid: 272 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -11.883123,-1.4914757 + parent: 1 + - uid: 273 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -12.664373,-2.4758506 + parent: 1 +- proto: ShardGlassPlasma + entities: + - uid: 187 + components: + - type: Transform + pos: 12.178013,2.6173701 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: 12.787388,2.2892451 + parent: 1 + - uid: 189 + components: + - type: Transform + pos: 11.709263,-4.6248174 + parent: 1 + - uid: 190 + components: + - type: Transform + pos: 13.51395,-4.03888 + parent: 1 + - uid: 191 + components: + - type: Transform + pos: 13.748325,-4.5310674 + parent: 1 +- proto: ShardGlassReinforced + entities: + - uid: 227 + components: + - type: Transform + pos: -16.735092,-1.1675706 + parent: 1 + - uid: 235 + components: + - type: Transform + pos: -16.094467,-0.7769456 + parent: 1 + - uid: 236 + components: + - type: Transform + pos: -17.547592,-1.9175706 + parent: 1 + - uid: 237 + components: + - type: Transform + pos: -17.125717,-2.5425706 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: -18.813217,-2.4800706 + parent: 1 + - uid: 239 + components: + - type: Transform + pos: -18.297592,-1.7613206 + parent: 1 +- proto: SheetGlass + entities: + - uid: 353 + components: + - type: Transform + pos: -7.744358,10.600736 + parent: 1 +- proto: SheetPlasma + entities: + - uid: 267 + components: + - type: Transform + pos: -5.4900637,5.6346035 + parent: 1 +- proto: SheetPlastic + entities: + - uid: 354 + components: + - type: Transform + pos: -7.291233,10.585111 + parent: 1 +- proto: SheetSteel + entities: + - uid: 351 + components: + - type: Transform + pos: -7.6188135,11.741361 + parent: 1 + - uid: 352 + components: + - type: Transform + pos: -7.3375635,11.678861 + parent: 1 +- proto: SignCansScience + entities: + - uid: 296 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 +- proto: SignServer + entities: + - uid: 281 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 +- proto: SMESBasic + entities: + - uid: 375 + components: + - type: Transform + pos: 7.5,11.5 + parent: 1 +- proto: SubstationBasic + entities: + - uid: 374 + components: + - type: Transform + pos: 6.5,11.5 + parent: 1 +- proto: Table + entities: + - uid: 193 + components: + - type: Transform + pos: -5.5,5.5 + parent: 1 + - uid: 256 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -10.5,-0.5 + parent: 1 + - uid: 257 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -9.5,-0.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: -5.5,4.5 + parent: 1 + - uid: 284 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 285 + components: + - type: Transform + pos: 9.5,2.5 + parent: 1 + - uid: 286 + components: + - type: Transform + pos: 9.5,1.5 + parent: 1 + - uid: 287 + components: + - type: Transform + pos: 9.5,0.5 + parent: 1 + - uid: 288 + components: + - type: Transform + pos: 9.5,-0.5 + parent: 1 +- proto: TableFrame + entities: + - uid: 211 + components: + - type: Transform + pos: -17.5,-4.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: -16.5,-4.5 + parent: 1 +- proto: TableGlass + entities: + - uid: 213 + components: + - type: Transform + pos: -15.5,-4.5 + parent: 1 +- proto: TableReinforced + entities: + - uid: 338 + components: + - type: Transform + pos: -3.5,12.5 + parent: 1 + - uid: 339 + components: + - type: Transform + pos: -2.5,12.5 + parent: 1 + - uid: 340 + components: + - type: Transform + pos: -1.5,12.5 + parent: 1 +- proto: TechnologyDiskRare + entities: + - uid: 566 + components: + - type: Transform + pos: 6.560504,-1.5093694 + parent: 1 +- proto: ToolboxElectricalFilled + entities: + - uid: 341 + components: + - type: Transform + pos: -3.5513628,12.522611 + parent: 1 +- proto: TorsoBorg + entities: + - uid: 335 + components: + - type: Transform + pos: -4.734109,10.725736 + parent: 1 +- proto: TritiumCanister + entities: + - uid: 297 + components: + - type: Transform + pos: 8.5,6.5 + parent: 1 +- proto: VendingMachineRoboDrobe + entities: + - uid: 337 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 +- proto: VendingMachineRobotics + entities: + - uid: 336 + components: + - type: Transform + pos: 1.5,12.5 + parent: 1 +- proto: WallReinforced + entities: + - uid: 79 + components: + - type: Transform + pos: 13.5,7.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 14.5,7.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 15.5,7.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 16.5,6.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: 16.5,5.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 16.5,7.5 + parent: 1 + - uid: 85 + components: + - type: Transform + pos: 16.5,4.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: 16.5,2.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 12.5,7.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: 16.5,1.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: 16.5,0.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: 16.5,3.5 + parent: 1 + - uid: 154 + components: + - type: Transform + pos: 16.5,-0.5 + parent: 1 + - uid: 155 + components: + - type: Transform + pos: 16.5,-1.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: 16.5,-2.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: 16.5,-3.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: 16.5,-4.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: 16.5,-5.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: 15.5,-5.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: 14.5,-5.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: 12.5,-5.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: 13.5,-5.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: 15.5,-0.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: 14.5,-0.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: 13.5,-0.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: 15.5,3.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: 14.5,3.5 + parent: 1 + - uid: 169 + components: + - type: Transform + pos: 13.5,3.5 + parent: 1 + - uid: 170 + components: + - type: Transform + pos: 12.5,3.5 + parent: 1 + - uid: 171 + components: + - type: Transform + pos: 12.5,-0.5 + parent: 1 + - uid: 360 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,12.5 + parent: 1 + - uid: 361 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,11.5 + parent: 1 + - uid: 362 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,9.5 + parent: 1 + - uid: 363 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,9.5 + parent: 1 + - uid: 364 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,12.5 + parent: 1 + - uid: 365 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,12.5 + parent: 1 + - uid: 366 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,12.5 + parent: 1 + - uid: 367 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,12.5 + parent: 1 + - uid: 368 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,9.5 + parent: 1 + - uid: 369 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,9.5 + parent: 1 + - uid: 370 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,9.5 + parent: 1 + - uid: 371 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,11.5 + parent: 1 + - uid: 372 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,10.5 + parent: 1 +- proto: WallSolid + entities: + - uid: 3 + components: + - type: Transform + pos: -18.5,0.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: -18.5,-0.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -18.5,-4.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: -18.5,-5.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: -17.5,0.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -13.5,0.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: -12.5,0.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: -11.5,0.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: -10.5,0.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: -9.5,0.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: -9.5,1.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: -9.5,5.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: -9.5,6.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: -17.5,-5.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: -13.5,-5.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: -12.5,-5.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -7.5,-5.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -6.5,-5.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 0.5,-2.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 0.5,6.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: -0.5,6.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: -1.5,6.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: -2.5,8.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: -4.5,6.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: -8.5,6.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 6.5,6.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 6.5,7.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 7.5,7.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 11.5,7.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: 11.5,-5.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: 10.5,-5.5 + parent: 1 + - uid: 93 + components: + - type: Transform + pos: 9.5,-5.5 + parent: 1 + - uid: 94 + components: + - type: Transform + pos: 8.5,-5.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: 7.5,-5.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: 6.5,-5.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: 6.5,-3.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: 6.5,-2.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: 6.5,-4.5 + parent: 1 + - uid: 100 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: -8.5,13.5 + parent: 1 + - uid: 107 + components: + - type: Transform + pos: -8.5,12.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: -8.5,10.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: -8.5,9.5 + parent: 1 + - uid: 110 + components: + - type: Transform + pos: -8.5,8.5 + parent: 1 + - uid: 111 + components: + - type: Transform + pos: -8.5,11.5 + parent: 1 + - uid: 115 + components: + - type: Transform + pos: -7.5,13.5 + parent: 1 + - uid: 116 + components: + - type: Transform + pos: -6.5,13.5 + parent: 1 + - uid: 117 + components: + - type: Transform + pos: -5.5,13.5 + parent: 1 + - uid: 118 + components: + - type: Transform + pos: -2.5,13.5 + parent: 1 + - uid: 119 + components: + - type: Transform + pos: -3.5,13.5 + parent: 1 + - uid: 120 + components: + - type: Transform + pos: -1.5,13.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: -0.5,13.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: 0.5,13.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: 1.5,13.5 + parent: 1 + - uid: 124 + components: + - type: Transform + pos: 2.5,13.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: -4.5,13.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: 2.5,11.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: 2.5,12.5 + parent: 1 + - uid: 140 + components: + - type: Transform + pos: 2.5,10.5 + parent: 1 + - uid: 142 + components: + - type: Transform + pos: 2.5,9.5 + parent: 1 + - uid: 143 + components: + - type: Transform + pos: 2.5,8.5 + parent: 1 + - uid: 144 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 + - uid: 145 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 146 + components: + - type: Transform + pos: -0.5,8.5 + parent: 1 + - uid: 149 + components: + - type: Transform + pos: -4.5,8.5 + parent: 1 + - uid: 150 + components: + - type: Transform + pos: -5.5,8.5 + parent: 1 + - uid: 151 + components: + - type: Transform + pos: -6.5,8.5 + parent: 1 + - uid: 152 + components: + - type: Transform + pos: -7.5,8.5 + parent: 1 + - uid: 153 + components: + - type: Transform + pos: -1.5,8.5 + parent: 1 + - uid: 223 + components: + - type: Transform + pos: -2.5,6.5 + parent: 1 +- proto: WeaponPistolCHIMPUpgraded + entities: + - uid: 570 + components: + - type: Transform + pos: -4.033656,3.2255795 + parent: 1 +- proto: WindoorPlasma + entities: + - uid: 232 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-1.5 + parent: 1 + - uid: 233 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-2.5 + parent: 1 +- proto: WindowDirectional + entities: + - uid: 196 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.5,-0.5 + parent: 1 + - uid: 197 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.5,-1.5 + parent: 1 +- proto: WindowReinforcedDirectional + entities: + - uid: 131 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 135 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/front_desk.yml b/Resources/Maps/Lavaland/front_desk.yml new file mode 100644 index 0000000000..3f9cad83d1 --- /dev/null +++ b/Resources/Maps/Lavaland/front_desk.yml @@ -0,0 +1,466 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/22/2025 04:44:52 + entityCount: 52 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 2: Space + 0: FloorBasalt + 4: FloorSteel + 3: FloorSteelDamaged + 1: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.63541734,-0.567756 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAEBAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAABBAAAAAABBAAAAAACAQAAAAAAAAAAAAAABAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAACAQAAAAAAAQAAAAAAAwAAAAABAQAAAAAAAwAAAAAEAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAACAQAAAAAABAAAAAADBAAAAAACAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABAAAAAABAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAABAAAAAADAwAAAAAABAAAAAAABAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAABAAAAAADAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Delivery + decals: + 5: 1,3 + - node: + cleanable: True + zIndex: 1 + color: '#FFFFFFFF' + id: Dirt + decals: + 24: 3,-3 + 25: 5,-1 + 26: 2,-1 + 27: 1,2 + 28: 3,6 + 29: 0,5 + - node: + cleanable: True + zIndex: 1 + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 6: 5,-3 + 7: 5,-2 + 8: 3,-1 + 9: 2,2 + 10: 1,3 + 11: 2,3 + 12: 3,5 + 13: 4,4 + 15: 6,5 + 16: 6,6 + 17: 4,6 + 18: 1,6 + 19: 0,5 + 20: -1,6 + 21: 0,1 + 22: 1,-2 + 23: 0,-3 + - node: + zIndex: 1 + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: LoadingArea + decals: + 2: 2,3 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 65535 + 0,-1: + 0: 65535 + -1,0: + 0: 239 + 0,1: + 0: 65531 + -1,1: + 0: 34816 + 0,2: + 0: 15 + 1,0: + 0: 49147 + 1,1: + 0: 30583 + 1,2: + 0: 3 + 1,-1: + 0: 46967 + 2,0: + 0: 14195 + -1,-1: + 0: 65400 + 0,-2: + 0: 61440 + 1,-2: + 0: 12288 + -2,-1: + 0: 34816 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: BasaltFive + entities: + - uid: 49 + components: + - type: Transform + pos: 4.5,3.5 + parent: 1 +- proto: BasaltFour + entities: + - uid: 46 + components: + - type: Transform + pos: 10.5,2.5 + parent: 1 +- proto: BasaltOne + entities: + - uid: 50 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 +- proto: BasaltThree + entities: + - uid: 47 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 1 +- proto: BasaltTwo + entities: + - uid: 45 + components: + - type: Transform + pos: 4.5,-3.5 + parent: 1 +- proto: Chair + entities: + - uid: 11 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,1.5 + parent: 1 + - uid: 12 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,2.5 + parent: 1 +- proto: ChairOfficeDark + entities: + - uid: 28 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 +- proto: FloorLavaEntity + entities: + - uid: 2 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: 7.5,1.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 4.5,0.5 + parent: 1 + - uid: 20 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,2.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 22 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,2.5 + parent: 1 + - uid: 23 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,2.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 5.5,0.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -3.5,-1.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: -1.5,-1.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 1 + - uid: 43 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,1.5 + parent: 1 + - uid: 44 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,1.5 + parent: 1 + - uid: 52 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,0.5 + parent: 1 +- proto: Girder + entities: + - uid: 26 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 +- proto: TableReinforced + entities: + - uid: 3 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 +- proto: WallSolid + entities: + - uid: 4 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,2.5 + parent: 1 + - uid: 5 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,3.5 + parent: 1 + - uid: 6 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,0.5 + parent: 1 + - uid: 9 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,-0.5 + parent: 1 + - uid: 13 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,4.5 + parent: 1 + - uid: 14 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,3.5 + parent: 1 + - uid: 15 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,4.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 48 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-2.5 + parent: 1 +- proto: Windoor + entities: + - uid: 16 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 +- proto: WindowDirectional + entities: + - uid: 17 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/hermit_base.yml b/Resources/Maps/Lavaland/hermit_base.yml new file mode 100644 index 0000000000..6f5ee15e91 --- /dev/null +++ b/Resources/Maps/Lavaland/hermit_base.yml @@ -0,0 +1,1263 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 02:42:21 + entityCount: 207 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 0: Space + 5: FloorAsteroidSandUnvariantized + 1: FloorBasalt + 4: FloorMining + 3: FloorShuttleBlue + 2: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -1.1145834,-0.7083334 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABQAAAAAABQAAAAAABQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABQAAAAAABQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,1: + ind: 0,1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Basalt1 + decals: + 1: 0,4 + - node: + color: '#FFFFFFFF' + id: Basalt2 + decals: + 2: 4,2 + - node: + color: '#FFFFFFFF' + id: Basalt8 + decals: + 3: 9,15 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 65520 + 0,1: + 0: 6143 + 0,2: + 0: 1 + 1,0: + 0: 65520 + 1,1: + 0: 61157 + 1,2: + 0: 52969 + 2,0: + 0: 49136 + 2,1: + 0: 12801 + 2,2: + 0: 14195 + 2,3: + 0: 28671 + 3,0: + 0: 768 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirlockMining + entities: + - uid: 85 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,4.5 + parent: 1 +- proto: AirlockShuttle + entities: + - uid: 12 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,2.5 + parent: 1 +- proto: WallRockBasalt + entities: + - uid: 13 + components: + - type: Transform + pos: 15.5,3.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: 15.5,2.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 15.5,1.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 15.5,4.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 15.5,5.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 15.5,6.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 15.5,7.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 15.5,8.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 15.5,9.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 15.5,10.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 15.5,11.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 15.5,12.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 15.5,13.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 15.5,14.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 15.5,15.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 15.5,16.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 12.5,4.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 12.5,5.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: 12.5,6.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 12.5,7.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: 12.5,8.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 12.5,9.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: 12.5,10.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: 12.5,11.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: 12.5,12.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: 12.5,13.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 12.5,14.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 12.5,15.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 12.5,16.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 13.5,4.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 13.5,5.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 13.5,6.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 13.5,7.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 13.5,8.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 13.5,9.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 13.5,10.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 13.5,11.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 13.5,12.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 13.5,13.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 13.5,14.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 13.5,15.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 13.5,16.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 14.5,4.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 14.5,5.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 14.5,6.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 14.5,7.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 14.5,8.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: 14.5,9.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: 14.5,10.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 14.5,11.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 14.5,12.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 14.5,13.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 14.5,14.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 14.5,15.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 14.5,16.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 11.5,16.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 11.5,15.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 11.5,11.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 11.5,10.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 11.5,9.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: 11.5,8.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 11.5,7.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 11.5,6.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 11.5,5.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 11.5,4.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 10.5,3.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 10.5,4.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 10.5,5.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: 9.5,4.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 9.5,5.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: 9.5,16.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: 8.5,16.5 + parent: 1 + - uid: 107 + components: + - type: Transform + pos: 7.5,16.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: 6.5,16.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: 5.5,16.5 + parent: 1 + - uid: 110 + components: + - type: Transform + pos: 4.5,16.5 + parent: 1 + - uid: 111 + components: + - type: Transform + pos: 3.5,16.5 + parent: 1 + - uid: 112 + components: + - type: Transform + pos: 2.5,16.5 + parent: 1 + - uid: 113 + components: + - type: Transform + pos: 1.5,16.5 + parent: 1 + - uid: 114 + components: + - type: Transform + pos: 0.5,16.5 + parent: 1 + - uid: 115 + components: + - type: Transform + pos: 0.5,15.5 + parent: 1 + - uid: 116 + components: + - type: Transform + pos: 1.5,15.5 + parent: 1 + - uid: 117 + components: + - type: Transform + pos: 2.5,15.5 + parent: 1 + - uid: 118 + components: + - type: Transform + pos: 3.5,15.5 + parent: 1 + - uid: 119 + components: + - type: Transform + pos: 4.5,15.5 + parent: 1 + - uid: 120 + components: + - type: Transform + pos: 5.5,15.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: 6.5,15.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: 7.5,15.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: 8.5,15.5 + parent: 1 + - uid: 124 + components: + - type: Transform + pos: 7.5,14.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: 7.5,13.5 + parent: 1 + - uid: 126 + components: + - type: Transform + pos: 6.5,14.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: 6.5,13.5 + parent: 1 + - uid: 128 + components: + - type: Transform + pos: 5.5,14.5 + parent: 1 + - uid: 129 + components: + - type: Transform + pos: 5.5,13.5 + parent: 1 + - uid: 130 + components: + - type: Transform + pos: 4.5,14.5 + parent: 1 + - uid: 131 + components: + - type: Transform + pos: 4.5,13.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: 3.5,14.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: 3.5,13.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: 2.5,14.5 + parent: 1 + - uid: 135 + components: + - type: Transform + pos: 2.5,13.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: 1.5,14.5 + parent: 1 + - uid: 137 + components: + - type: Transform + pos: 1.5,13.5 + parent: 1 + - uid: 138 + components: + - type: Transform + pos: 0.5,14.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: 0.5,13.5 + parent: 1 + - uid: 140 + components: + - type: Transform + pos: 6.5,12.5 + parent: 1 + - uid: 141 + components: + - type: Transform + pos: 5.5,12.5 + parent: 1 + - uid: 142 + components: + - type: Transform + pos: 4.5,12.5 + parent: 1 + - uid: 143 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 + - uid: 144 + components: + - type: Transform + pos: 2.5,12.5 + parent: 1 + - uid: 145 + components: + - type: Transform + pos: 1.5,12.5 + parent: 1 + - uid: 146 + components: + - type: Transform + pos: 0.5,12.5 + parent: 1 + - uid: 147 + components: + - type: Transform + pos: 5.5,11.5 + parent: 1 + - uid: 148 + components: + - type: Transform + pos: 4.5,11.5 + parent: 1 + - uid: 149 + components: + - type: Transform + pos: 3.5,11.5 + parent: 1 + - uid: 150 + components: + - type: Transform + pos: 2.5,11.5 + parent: 1 + - uid: 151 + components: + - type: Transform + pos: 1.5,11.5 + parent: 1 + - uid: 152 + components: + - type: Transform + pos: 0.5,11.5 + parent: 1 + - uid: 153 + components: + - type: Transform + pos: 4.5,9.5 + parent: 1 + - uid: 154 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 + - uid: 155 + components: + - type: Transform + pos: 2.5,9.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: 0.5,9.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: 3.5,10.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: 2.5,10.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: 0.5,10.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: 3.5,8.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: 3.5,7.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: 2.5,8.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 +- proto: BasaltFour + entities: + - uid: 205 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 +- proto: BasaltOne + entities: + - uid: 206 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 207 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 +- proto: BasaltThree + entities: + - uid: 204 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 +- proto: Bed + entities: + - uid: 169 + components: + - type: Transform + pos: 9.5,8.5 + parent: 1 +- proto: BedsheetBlack + entities: + - uid: 170 + components: + - type: Transform + pos: 9.5,8.5 + parent: 1 +- proto: Bucket + entities: + - uid: 195 + components: + - type: Transform + pos: 8.5,13.5 + parent: 1 +- proto: ChairPilotSeat + entities: + - uid: 6 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 12.5,2.5 + parent: 1 + - uid: 11 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 13.5,2.5 + parent: 1 + - uid: 180 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,6.5 + parent: 1 +- proto: ChanterelleSeeds + entities: + - uid: 198 + components: + - type: Transform + pos: 6.2880387,11.378061 + parent: 1 + - uid: 199 + components: + - type: Transform + pos: 6.4130387,11.581764 + parent: 1 + - uid: 200 + components: + - type: Transform + pos: 6.7000756,11.5123205 + parent: 1 +- proto: ClothingHeadHelmetEVA + entities: + - uid: 189 + components: + - type: Transform + pos: 9.5,15.5 + parent: 1 +- proto: ClothingMaskBreath + entities: + - uid: 190 + components: + - type: Transform + pos: 9.5,15.5 + parent: 1 +- proto: ClothingOuterHardsuitEVA + entities: + - uid: 188 + components: + - type: Transform + pos: 10.5,15.5 + parent: 1 +- proto: ClothingShoesBootsMag + entities: + - uid: 193 + components: + - type: Transform + pos: 10.569324,10.612394 + parent: 1 +- proto: ComputerBroken + entities: + - uid: 181 + components: + - type: Transform + pos: 5.5,7.5 + parent: 1 +- proto: Crowbar + entities: + - uid: 178 + components: + - type: Transform + pos: 7.5,5.5 + parent: 1 +- proto: FloorWaterEntity + entities: + - uid: 196 + components: + - type: Transform + pos: 9.5,13.5 + parent: 1 +- proto: FlyAmanitaSeeds + entities: + - uid: 202 + components: + - type: Transform + pos: 6.579705,11.373431 + parent: 1 +- proto: Grille + entities: + - uid: 2 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,2.5 + parent: 1 +- proto: hydroponicsSoil + entities: + - uid: 171 + components: + - type: Transform + pos: 5.5,9.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: 5.5,10.5 + parent: 1 +- proto: HydroponicsToolMiniHoe + entities: + - uid: 203 + components: + - type: Transform + pos: 6.7139645,11.345654 + parent: 1 +- proto: Lantern + entities: + - uid: 176 + components: + - type: Transform + pos: 11.5,12.5 + parent: 1 +- proto: LingzhiSeeds + entities: + - uid: 201 + components: + - type: Transform + pos: 6.718594,11.655839 + parent: 1 +- proto: MedkitFilled + entities: + - uid: 194 + components: + - type: Transform + pos: 10.5,10.5 + parent: 1 +- proto: OxygenTankFilled + entities: + - uid: 192 + components: + - type: Transform + pos: 10.5,9.5 + parent: 1 +- proto: Pickaxe + entities: + - uid: 191 + components: + - type: Transform + pos: 10.5,9.5 + parent: 1 +- proto: Rack + entities: + - uid: 173 + components: + - type: Transform + pos: 10.5,9.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: 10.5,10.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: 6.5,11.5 + parent: 1 +- proto: Shovel + entities: + - uid: 184 + components: + - type: Transform + pos: 10.5,14.5 + parent: 1 +- proto: ShuttleWindow + entities: + - uid: 4 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,2.5 + parent: 1 +- proto: SmallLight + entities: + - uid: 185 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,6.5 + parent: 1 +- proto: Spaceshroom + entities: + - uid: 186 + components: + - type: Transform + pos: 7.5,9.5 + parent: 1 + - uid: 187 + components: + - type: Transform + pos: 11.5,13.5 + parent: 1 +- proto: SurvivalKnife + entities: + - uid: 183 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 +- proto: Table + entities: + - uid: 182 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 +- proto: TableReinforced + entities: + - uid: 179 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 +- proto: Thruster + entities: + - uid: 15 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,1.5 + parent: 1 + - uid: 16 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,3.5 + parent: 1 +- proto: ToolboxMechanicalFilledAllTools + entities: + - uid: 197 + components: + - type: Transform + pos: 10.5,12.5 + parent: 1 +- proto: VendingMachineSustenance + entities: + - uid: 177 + components: + - type: Transform + pos: 6.5,7.5 + parent: 1 +- proto: WallAsteroidCobblebrick + entities: + - uid: 98 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: 10.5,7.5 + parent: 1 + - uid: 100 + components: + - type: Transform + pos: 10.5,8.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 10.5,11.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 7.5,12.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 4.5,10.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 10.5,16.5 + parent: 1 +- proto: WallMining + entities: + - uid: 86 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,4.5 + parent: 1 + - uid: 87 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,4.5 + parent: 1 + - uid: 88 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,5.5 + parent: 1 + - uid: 89 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,6.5 + parent: 1 + - uid: 90 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,7.5 + parent: 1 + - uid: 91 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,8.5 + parent: 1 + - uid: 92 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,8.5 + parent: 1 + - uid: 93 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,5.5 + parent: 1 + - uid: 94 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,6.5 + parent: 1 +- proto: WallMiningDiagonal + entities: + - uid: 95 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,4.5 + parent: 1 + - uid: 96 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,4.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: 4.5,8.5 + parent: 1 +- proto: WallShuttle + entities: + - uid: 3 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,1.5 + parent: 1 + - uid: 5 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,1.5 + parent: 1 + - uid: 7 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,1.5 + parent: 1 + - uid: 8 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,3.5 + parent: 1 + - uid: 9 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,3.5 + parent: 1 + - uid: 10 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,3.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/labour_camp.yml b/Resources/Maps/Lavaland/labour_camp.yml new file mode 100644 index 0000000000..6d2d75610e --- /dev/null +++ b/Resources/Maps/Lavaland/labour_camp.yml @@ -0,0 +1,2772 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 02:46:20 + entityCount: 408 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 2: Space + 5: FloorBasalt + 6: FloorBrokenWood + 4: FloorDark + 1: FloorSteel + 3: FloorWhite + 0: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.4375,-0.47916666 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAQAAAAADAQAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAADAQAAAAADAQAAAAACAQAAAAAAAQAAAAABAQAAAAACAQAAAAABAQAAAAACAQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAABAQAAAAADAQAAAAADAQAAAAACAAAAAAAAAQAAAAAAAQAAAAADAQAAAAABAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAAAAAAAAAQAAAAACAQAAAAABAQAAAAADAQAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAAAAAAAAAQAAAAAAAQAAAAACAQAAAAAAAQAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAAAAAAAAAQAAAAADAQAAAAACAQAAAAAAAQAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAAAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAACAwAAAAADAwAAAAABAQAAAAABAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAABAAAAAACBAAAAAAABAAAAAAAAQAAAAABAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAAAAAAAAAABAAAAAADBAAAAAAABAAAAAACAAAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAAAAAAAAAABAAAAAACBAAAAAADBAAAAAACAAAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAAAAAAAAAABAAAAAAABAAAAAABBAAAAAACAAAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAADAQAAAAACAQAAAAABAQAAAAADAAAAAAAABgAAAAABBgAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAFBgAAAAABAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAACAQAAAAACAQAAAAABAQAAAAADAAAAAAAABgAAAAABAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAADAQAAAAAAAQAAAAABAQAAAAAAAQAAAAABAQAAAAACAQAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAACAQAAAAACAQAAAAADAQAAAAABAAAAAAAABgAAAAACAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAADAQAAAAADAQAAAAADAQAAAAAAAAAAAAAABgAAAAADBgAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAACAQAAAAABAQAAAAACAQAAAAABAAAAAAAABgAAAAACBgAAAAAFAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAABAAAAAABBAAAAAABBAAAAAADBAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAABAAAAAACBAAAAAADBAAAAAADBAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAACAQAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAQAAAAADAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAACAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAABAQAAAAADAQAAAAADAQAAAAADAQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAADAwAAAAACAAAAAAAAAQAAAAADAQAAAAAB + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Arrows + decals: + 143: 2,-5 + 144: 1,-5 + - node: + color: '#FFFFFFFF' + id: Delivery + decals: + 141: 3,0 + - node: + cleanable: True + zIndex: 1 + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 74: -4,0 + 75: -2,1 + 76: -2,0 + 77: -1,0 + 78: 0,1 + 79: 0,2 + 80: 1,1 + 81: 2,1 + 82: 3,1 + 83: 3,2 + 84: 5,2 + 85: 6,1 + 86: 7,1 + 87: 5,6 + 88: 5,5 + 89: 4,5 + 90: 5,5 + 91: 4,4 + 92: 3,4 + 93: 2,5 + 94: 3,7 + 95: -2,4 + 96: -1,4 + 97: -1,5 + 98: 0,6 + 99: -1,6 + 100: -2,6 + 101: 0,4 + 102: 0,5 + 103: -5,3 + 104: -4,2 + 105: -4,3 + 106: -4,4 + 107: -5,4 + 108: -5,5 + 109: -4,5 + 110: -4,6 + 111: -5,6 + 112: -6,4 + 113: -6,6 + 114: 0,7 + 115: 2,0 + 116: 1,0 + 117: 1,-1 + 118: 0,-1 + 119: 0,-2 + 120: -1,-2 + 121: 1,-2 + 122: 2,-2 + 123: 1,-3 + 124: 1,-4 + 125: 2,-4 + 126: 3,-4 + 127: 4,-4 + 128: 1,-5 + 129: 2,-5 + 130: 0,-5 + 131: -1,-5 + 132: -1,-4 + 133: -1,-3 + 134: -2,-5 + 135: -3,-7 + 136: -3,-6 + 137: -2,-6 + 138: -1,-6 + 139: 0,-6 + 140: -4,-1 + - node: + color: '#79150096' + id: HalfTileOverlayGreyscale + decals: + 56: -3,-10 + 57: -2,-10 + 58: -1,-10 + - node: + color: '#A4610696' + id: HalfTileOverlayGreyscale + decals: + 25: 3,5 + 26: 4,5 + 27: 2,2 + 28: 1,2 + 29: 0,2 + 30: -1,2 + 42: 5,2 + 43: 6,2 + 44: 7,2 + - node: + color: '#79150096' + id: HalfTileOverlayGreyscale180 + decals: + 53: -3,-9 + 54: -2,-9 + 55: -1,-9 + - node: + color: '#A4610696' + id: HalfTileOverlayGreyscale180 + decals: + 19: -2,-7 + 20: -1,-7 + 21: 1,-5 + 22: 2,-5 + 23: 3,6 + 24: 4,6 + - node: + color: '#79150096' + id: HalfTileOverlayGreyscale270 + decals: + 50: -6,4 + 51: -6,5 + 52: -6,6 + - node: + color: '#A4610696' + id: HalfTileOverlayGreyscale270 + decals: + 0: -3,-6 + 1: -2,-4 + 2: -2,-3 + 3: -2,-2 + 4: -2,-1 + 5: -2,0 + 6: -2,1 + 7: 2,7 + 8: 2,6 + 9: 2,5 + 10: 2,4 + - node: + color: '#79150096' + id: HalfTileOverlayGreyscale90 + decals: + 45: -4,2 + 46: -4,3 + 47: -4,4 + 48: -4,5 + 49: -4,6 + - node: + color: '#A4610696' + id: HalfTileOverlayGreyscale90 + decals: + 11: 5,4 + 12: 5,5 + 13: 5,6 + 14: 5,7 + 15: 3,0 + 18: 0,-6 + 36: 3,-3 + 37: 3,-2 + 38: 3,-1 + - node: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: LoadingArea + decals: + 142: 2,0 + - node: + color: '#79150096' + id: QuarterTileOverlayGreyscale + decals: + 62: 0,-10 + - node: + color: '#A4610696' + id: QuarterTileOverlayGreyscale + decals: + 40: -2,-5 + - node: + color: '#79150096' + id: QuarterTileOverlayGreyscale180 + decals: + 61: -4,-9 + - node: + color: '#A4610696' + id: QuarterTileOverlayGreyscale180 + decals: + 41: 0,-5 + - node: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale270 + decals: + 67: -5,-1 + 68: -5,0 + 69: -4,0 + 70: -4,-1 + - node: + color: '#79150096' + id: QuarterTileOverlayGreyscale270 + decals: + 59: 0,-9 + - node: + color: '#52B4E996' + id: QuarterTileOverlayGreyscale90 + decals: + 63: -5,0 + 64: -4,0 + 65: -4,-1 + 66: -5,-1 + - node: + color: '#79150096' + id: QuarterTileOverlayGreyscale90 + decals: + 60: -4,-10 + - node: + cleanable: True + color: '#FFFFFFFF' + id: Remains + decals: + 73: -9,4 + - node: + color: '#A4610696' + id: ThreeQuarterTileOverlayGreyscale + decals: + 35: -3,-5 + 39: -2,2 + - node: + color: '#A4610696' + id: ThreeQuarterTileOverlayGreyscale180 + decals: + 31: 0,-7 + 32: 3,-5 + - node: + color: '#A4610696' + id: ThreeQuarterTileOverlayGreyscale270 + decals: + 34: -3,-7 + - node: + color: '#A4610696' + id: ThreeQuarterTileOverlayGreyscale90 + decals: + 33: 3,2 + - node: + cleanable: True + zIndex: 1 + color: '#79150096' + id: splatter + decals: + 146: 7,2 + 147: 5,-7 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 36862 + 0,-1: + 0: 65535 + -1,0: + 0: 40911 + 0,1: + 0: 56797 + -1,1: + 0: 19933 + 0,2: + 0: 1 + 1,0: + 0: 3824 + 1,1: + 0: 13107 + 1,-1: + 0: 26151 + 2,0: + 0: 16 + -3,1: + 0: 3276 + -2,1: + 0: 3549 + -2,0: + 0: 34824 + -2,-1: + 0: 32960 + -1,-1: + 0: 56572 + -1,2: + 0: 4 + 0,-3: + 0: 56576 + -1,-3: + 0: 65280 + 0,-2: + 0: 61944 + -1,-2: + 0: 65272 + 1,-3: + 0: 13056 + 1,-2: + 0: 9824 + -2,-2: + 0: 32960 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirAlarm + entities: + - uid: 282 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,1.5 + parent: 1 + - type: DeviceList + devices: + - 304 + - 151 + - uid: 283 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - type: DeviceList + devices: + - 305 + - 147 + - uid: 286 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,3.5 + parent: 1 + - type: DeviceList + devices: + - 164 + - 271 + - uid: 307 + components: + - type: Transform + pos: -2.5,-7.5 + parent: 1 + - uid: 308 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,0.5 + parent: 1 + - type: DeviceList + devices: + - 182 + - 153 +- proto: AirCanister + entities: + - uid: 152 + components: + - type: Transform + pos: 5.5,-8.5 + parent: 1 +- proto: Airlock + entities: + - uid: 363 + components: + - type: Transform + pos: 5.5,-4.5 + parent: 1 + - uid: 364 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 + - uid: 366 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 367 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 368 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 400 + components: + - type: Transform + pos: -1.5,7.5 + parent: 1 + - uid: 401 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 +- proto: AirlockExternal + entities: + - uid: 321 + components: + - type: Transform + pos: -3.5,-2.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 323: + - - DoorStatus + - DoorBolt + - uid: 323 + components: + - type: Transform + pos: -5.5,-2.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 321: + - - DoorStatus + - DoorBolt +- proto: AirlockExternalGlassLocked + entities: + - uid: 320 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 322: + - - DoorStatus + - DoorBolt + - uid: 322 + components: + - type: Transform + pos: 8.5,1.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 320: + - - DoorStatus + - DoorBolt +- proto: AirlockExternalLocked + entities: + - uid: 324 + components: + - type: Transform + pos: -3.5,-6.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 325: + - - DoorStatus + - DoorBolt + - uid: 325 + components: + - type: Transform + pos: -5.5,-6.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 324: + - - DoorStatus + - DoorBolt +- proto: AirlockMaintLocked + entities: + - uid: 303 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-7.5 + parent: 1 +- proto: AirlockSecurityGlass + entities: + - uid: 326 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 327 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 1 + - uid: 328 + components: + - type: Transform + pos: 1.5,-6.5 + parent: 1 +- proto: AirlockVirologyGlass + entities: + - uid: 362 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 +- proto: AirSensor + entities: + - uid: 182 + components: + - type: Transform + pos: -4.5,0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 308 + - uid: 271 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 286 + - uid: 304 + components: + - type: Transform + pos: -3.5,5.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 282 + - uid: 305 + components: + - type: Transform + pos: 0.5,-2.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 283 + - uid: 306 + components: + - type: Transform + pos: -0.5,-8.5 + parent: 1 +- proto: APCBasic + entities: + - uid: 199 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 +- proto: Ash + entities: + - uid: 369 + components: + - type: Transform + pos: -7.5,6.5 + parent: 1 + - uid: 370 + components: + - type: Transform + pos: -9.5,5.5 + parent: 1 + - uid: 371 + components: + - type: Transform + pos: -7.5,4.5 + parent: 1 + - uid: 373 + components: + - type: Transform + pos: -9.5,6.5 + parent: 1 + - uid: 374 + components: + - type: Transform + pos: -8.5,5.5 + parent: 1 +- proto: BasaltTwo + entities: + - uid: 408 + components: + - type: Transform + pos: -7.5,5.5 + parent: 1 +- proto: BaseComputer + entities: + - uid: 390 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,-4.5 + parent: 1 +- proto: Bed + entities: + - uid: 61 + components: + - type: Transform + pos: 6.5,-6.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: 6.5,-1.5 + parent: 1 +- proto: CableApcExtension + entities: + - uid: 209 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 210 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 1 + - uid: 211 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: 1.5,-6.5 + parent: 1 + - uid: 213 + components: + - type: Transform + pos: 0.5,-6.5 + parent: 1 + - uid: 214 + components: + - type: Transform + pos: -0.5,-6.5 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 1 + - uid: 216 + components: + - type: Transform + pos: -0.5,-8.5 + parent: 1 + - uid: 217 + components: + - type: Transform + pos: -1.5,-8.5 + parent: 1 + - uid: 218 + components: + - type: Transform + pos: -2.5,-8.5 + parent: 1 + - uid: 219 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 1 + - uid: 220 + components: + - type: Transform + pos: -0.5,-4.5 + parent: 1 + - uid: 221 + components: + - type: Transform + pos: -0.5,-3.5 + parent: 1 + - uid: 222 + components: + - type: Transform + pos: -0.5,-2.5 + parent: 1 + - uid: 223 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 + - uid: 224 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 + - uid: 226 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 227 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 + - uid: 228 + components: + - type: Transform + pos: -1.5,2.5 + parent: 1 + - uid: 229 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 230 + components: + - type: Transform + pos: -3.5,2.5 + parent: 1 + - uid: 231 + components: + - type: Transform + pos: -3.5,3.5 + parent: 1 + - uid: 232 + components: + - type: Transform + pos: -3.5,5.5 + parent: 1 + - uid: 233 + components: + - type: Transform + pos: -3.5,4.5 + parent: 1 + - uid: 234 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 235 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 236 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 237 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 + - uid: 239 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 240 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 241 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 242 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 243 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 244 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 245 + components: + - type: Transform + pos: 3.5,7.5 + parent: 1 + - uid: 246 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 247 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 249 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: -1.5,-2.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: -3.5,-2.5 + parent: 1 + - uid: 253 + components: + - type: Transform + pos: -4.5,-2.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: -4.5,-6.5 + parent: 1 + - uid: 255 + components: + - type: Transform + pos: -3.5,-6.5 + parent: 1 + - uid: 256 + components: + - type: Transform + pos: -2.5,-6.5 + parent: 1 + - uid: 257 + components: + - type: Transform + pos: -1.5,-6.5 + parent: 1 + - uid: 258 + components: + - type: Transform + pos: 0.5,-3.5 + parent: 1 + - uid: 259 + components: + - type: Transform + pos: 1.5,-3.5 + parent: 1 + - uid: 260 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 1 + - uid: 262 + components: + - type: Transform + pos: 4.5,-3.5 + parent: 1 + - uid: 263 + components: + - type: Transform + pos: 5.5,-3.5 + parent: 1 + - uid: 264 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 + - uid: 265 + components: + - type: Transform + pos: 5.5,-1.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: 5.5,-4.5 + parent: 1 + - uid: 267 + components: + - type: Transform + pos: 5.5,-5.5 + parent: 1 + - uid: 268 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 269 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 270 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 + - uid: 389 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 +- proto: CableHV + entities: + - uid: 150 + components: + - type: Transform + pos: 3.5,-9.5 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: 2.5,-8.5 + parent: 1 + - uid: 189 + components: + - type: Transform + pos: 2.5,-9.5 + parent: 1 + - uid: 201 + components: + - type: Transform + pos: 4.5,-9.5 + parent: 1 + - uid: 202 + components: + - type: Transform + pos: 5.5,-9.5 + parent: 1 +- proto: CableMV + entities: + - uid: 204 + components: + - type: Transform + pos: 2.5,-8.5 + parent: 1 + - uid: 205 + components: + - type: Transform + pos: 3.5,-8.5 + parent: 1 + - uid: 206 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 1 + - uid: 207 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 1 + - uid: 208 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 +- proto: Chair + entities: + - uid: 314 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,4.5 + parent: 1 + - uid: 315 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,5.5 + parent: 1 + - uid: 316 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,6.5 + parent: 1 + - uid: 393 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-9.5 + parent: 1 + - uid: 394 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-8.5 + parent: 1 + - uid: 395 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-9.5 + parent: 1 +- proto: CheapLighter + entities: + - uid: 333 + components: + - type: Transform + pos: -5.5,6.5 + parent: 1 +- proto: CigaretteSpent + entities: + - uid: 377 + components: + - type: Transform + pos: -3.7565565,5.9277244 + parent: 1 + - uid: 378 + components: + - type: Transform + pos: 4.840188,5.7844887 + parent: 1 + - uid: 379 + components: + - type: Transform + pos: 2.361021,2.4080882 + parent: 1 + - uid: 380 + components: + - type: Transform + pos: -1.5833111,-2.0416143 + parent: 1 + - uid: 381 + components: + - type: Transform + pos: -1.9033532,-8.090153 + parent: 1 +- proto: CigPackGreen + entities: + - uid: 334 + components: + - type: Transform + pos: -5.5625,6.5625 + parent: 1 +- proto: ClosetWallOrange + entities: + - uid: 404 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-5.5 + parent: 1 + - uid: 405 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-5.5 + parent: 1 +- proto: ClothingEyesGlassesMeson + entities: + - uid: 361 + components: + - type: Transform + pos: 5.5,-0.5 + parent: 1 +- proto: ClothingHandsGlovesColorBlack + entities: + - uid: 337 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 341 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 342 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 345 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 +- proto: ClothingHeadHatParamedicsoft + entities: + - uid: 403 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 +- proto: ClothingMaskBandBlack + entities: + - uid: 354 + components: + - type: Transform + pos: -1.5,8.5 + parent: 1 +- proto: ClothingMaskClown + entities: + - uid: 376 + components: + - type: Transform + pos: -9.5,4.5 + parent: 1 +- proto: ClothingOuterVestHazard + entities: + - uid: 348 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 349 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 350 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 351 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 +- proto: ClothingShoesColorOrange + entities: + - uid: 372 + components: + - type: Transform + pos: -7.5,4.5 + parent: 1 +- proto: ClothingUniformJumpsuitPrisoner + entities: + - uid: 375 + components: + - type: Transform + pos: -9.5,6.5 + parent: 1 +- proto: Cobweb1 + entities: + - uid: 382 + components: + - type: Transform + pos: -3.5,-8.5 + parent: 1 + - uid: 383 + components: + - type: Transform + pos: -4.5,-4.5 + parent: 1 +- proto: Cobweb2 + entities: + - uid: 384 + components: + - type: Transform + pos: -3.5,6.5 + parent: 1 + - uid: 385 + components: + - type: Transform + pos: 5.5,7.5 + parent: 1 + - uid: 386 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 + - uid: 387 + components: + - type: Transform + pos: 6.5,-5.5 + parent: 1 + - uid: 388 + components: + - type: Transform + pos: 5.5,-8.5 + parent: 1 +- proto: ComputerCriminalRecords + entities: + - uid: 392 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,-8.5 + parent: 1 +- proto: ComputerStationRecords + entities: + - uid: 397 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,-9.5 + parent: 1 +- proto: ComputerSurveillanceCameraMonitor + entities: + - uid: 391 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,-9.5 + parent: 1 +- proto: CryogenicSleepUnit + entities: + - uid: 399 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 +- proto: FoodPlateSmall + entities: + - uid: 331 + components: + - type: Transform + pos: -5.5,4.5625 + parent: 1 +- proto: ForkPlastic + entities: + - uid: 332 + components: + - type: Transform + pos: -5.5,5.5 + parent: 1 +- proto: GasMixerFlipped + entities: + - uid: 145 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,7.5 + parent: 1 + - type: GasMixer + inletTwoConcentration: 0.22000003 + inletOneConcentration: 0.78 + - type: AtmosPipeColor + color: '#03FCD3FF' +- proto: GasPipeBend + entities: + - uid: 143 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,7.5 + parent: 1 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 144 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,6.5 + parent: 1 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 148 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,2.5 + parent: 1 + - uid: 156 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,1.5 + parent: 1 + - uid: 166 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,1.5 + parent: 1 + - uid: 191 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-8.5 + parent: 1 +- proto: GasPipeFourway + entities: + - uid: 155 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 +- proto: GasPipeStraight + entities: + - uid: 157 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,2.5 + parent: 1 + - uid: 158 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,2.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 161 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,1.5 + parent: 1 + - uid: 162 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,1.5 + parent: 1 + - uid: 163 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,3.5 + parent: 1 + - uid: 165 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,5.5 + parent: 1 + - uid: 170 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,0.5 + parent: 1 + - uid: 171 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,0.5 + parent: 1 + - uid: 172 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,1.5 + parent: 1 + - uid: 173 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,2.5 + parent: 1 + - uid: 174 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,2.5 + parent: 1 + - uid: 175 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,2.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: -0.5,-2.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 181 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,3.5 + parent: 1 + - uid: 273 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 1 + - uid: 274 + components: + - type: Transform + pos: -0.5,-6.5 + parent: 1 + - uid: 275 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 1 + - uid: 276 + components: + - type: Transform + pos: -0.5,-4.5 + parent: 1 +- proto: GasPipeTJunction + entities: + - uid: 167 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-3.5 + parent: 1 + - uid: 168 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,0.5 + parent: 1 + - uid: 169 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,2.5 + parent: 1 + - uid: 272 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,4.5 + parent: 1 +- proto: GasPort + entities: + - uid: 183 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,6.5 + parent: 1 + - type: AtmosPipeColor + color: '#03FCD3FF' + - uid: 184 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,7.5 + parent: 1 + - type: AtmosPipeColor + color: '#03FCD3FF' +- proto: GasPressurePump + entities: + - uid: 186 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - type: AtmosPipeColor + color: '#03FCD3FF' +- proto: GasVentPump + entities: + - uid: 146 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 147 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-3.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 283 + - uid: 149 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 151 + components: + - type: Transform + pos: -3.5,4.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 282 + - uid: 153 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 308 + - uid: 164 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,4.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 286 + - uid: 190 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-8.5 + parent: 1 +- proto: GeneratorBasic15kW + entities: + - uid: 200 + components: + - type: Transform + pos: 5.5,-9.5 + parent: 1 +- proto: Grille + entities: + - uid: 2 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: -4.5,-9.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: -3.5,-10.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: -2.5,-10.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: -1.5,-10.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: -0.5,-10.5 + parent: 1 + - uid: 85 + components: + - type: Transform + pos: 0.5,-10.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: 8.5,2.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: -6.5,4.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: -6.5,5.5 + parent: 1 + - uid: 124 + components: + - type: Transform + pos: -6.5,6.5 + parent: 1 +- proto: HospitalCurtainsOpen + entities: + - uid: 196 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 + - uid: 197 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 +- proto: IntercomCommon + entities: + - uid: 335 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 +- proto: Lantern + entities: + - uid: 339 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 343 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 346 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 347 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 +- proto: MedkitFilled + entities: + - uid: 402 + components: + - type: Transform + pos: -4.5,-0.5 + parent: 1 +- proto: NitrogenCanister + entities: + - uid: 180 + components: + - type: Transform + pos: 5.5,7.5 + parent: 1 +- proto: OreProcessor + entities: + - uid: 318 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 +- proto: OxygenCanister + entities: + - uid: 179 + components: + - type: Transform + pos: 5.5,6.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 +- proto: PaperBin5 + entities: + - uid: 355 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 356 + components: + - type: Transform + pos: 0.5,-8.5 + parent: 1 +- proto: Pen + entities: + - uid: 357 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 358 + components: + - type: Transform + pos: 0.5,-8.5 + parent: 1 +- proto: Pickaxe + entities: + - uid: 336 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 338 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 340 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 344 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 +- proto: PosterContrabandClown + entities: + - uid: 406 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,7.5 + parent: 1 +- proto: PoweredSmallLight + entities: + - uid: 281 + components: + - type: Transform + pos: -4.5,-6.5 + parent: 1 + - uid: 284 + components: + - type: Transform + pos: -4.5,-2.5 + parent: 1 + - uid: 287 + components: + - type: Transform + pos: -2.5,-8.5 + parent: 1 + - uid: 288 + components: + - type: Transform + pos: 4.5,-8.5 + parent: 1 + - uid: 289 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,-5.5 + parent: 1 + - uid: 290 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,-0.5 + parent: 1 + - uid: 291 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 292 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,5.5 + parent: 1 + - uid: 293 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,6.5 + parent: 1 + - uid: 294 + components: + - type: Transform + pos: -0.5,6.5 + parent: 1 + - uid: 295 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 + - uid: 296 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-1.5 + parent: 1 + - uid: 297 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-1.5 + parent: 1 + - uid: 298 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-6.5 + parent: 1 + - uid: 299 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 300 + components: + - type: Transform + pos: -3.5,6.5 + parent: 1 + - uid: 301 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,2.5 + parent: 1 + - uid: 302 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-4.5 + parent: 1 +- proto: PuddleVomit + entities: + - uid: 407 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 +- proto: Rack + entities: + - uid: 140 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 141 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 142 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 193 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,7.5 + parent: 1 +- proto: RandomSpawner100 + entities: + - uid: 365 + components: + - type: Transform + pos: -3.5,6.5 + parent: 1 +- proto: ReinforcedWindow + entities: + - uid: 3 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: 0.5,-10.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: -0.5,-10.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: -1.5,-10.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: -2.5,-10.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: -3.5,-10.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: -4.5,-9.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: 8.5,2.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: -6.5,6.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: -6.5,5.5 + parent: 1 + - uid: 128 + components: + - type: Transform + pos: -6.5,4.5 + parent: 1 +- proto: Screen + entities: + - uid: 398 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,-3.5 + parent: 1 +- proto: SignalButtonDirectional + entities: + - uid: 277 + components: + - type: Transform + pos: -1.5,-7.5 + parent: 1 + - type: DeviceLinkSource + linkedPorts: + 326: + - - Pressed + - Toggle + - uid: 278 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 1 + - type: DeviceLinkSource + linkedPorts: + 326: + - - Pressed + - Toggle +- proto: Sink + entities: + - uid: 198 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,4.5 + parent: 1 +- proto: SoapHomemade + entities: + - uid: 352 + components: + - type: Transform + pos: -0.5,6.5 + parent: 1 +- proto: SubstationBasic + entities: + - uid: 187 + components: + - type: Transform + pos: 2.5,-8.5 + parent: 1 +- proto: Table + entities: + - uid: 138 + components: + - type: Transform + pos: 6.5,-5.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 + - uid: 154 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-9.5 + parent: 1 + - uid: 279 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 + - uid: 280 + components: + - type: Transform + pos: -4.5,-0.5 + parent: 1 + - uid: 285 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-2.5 + parent: 1 + - uid: 309 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,-3.5 + parent: 1 + - uid: 310 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-8.5 + parent: 1 + - uid: 311 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,4.5 + parent: 1 + - uid: 312 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,5.5 + parent: 1 + - uid: 313 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,6.5 + parent: 1 +- proto: ToiletDirtyWater + entities: + - uid: 194 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 195 + components: + - type: Transform + pos: -1.5,8.5 + parent: 1 +- proto: TowelColorWhite + entities: + - uid: 359 + components: + - type: Transform + pos: 6.5,-3.5 + parent: 1 +- proto: ToyFigurinePassenger + entities: + - uid: 360 + components: + - type: Transform + pos: 6.5,-5.34375 + parent: 1 +- proto: ToyRubberDuck + entities: + - uid: 353 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 +- proto: VendingMachineCola + entities: + - uid: 329 + components: + - type: Transform + pos: -4.5,2.5 + parent: 1 +- proto: VendingMachineSalvage + entities: + - uid: 317 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 +- proto: VendingMachineSustenance + entities: + - uid: 330 + components: + - type: Transform + pos: -4.5,3.5 + parent: 1 +- proto: VendingMachineTankDispenserEVA + entities: + - uid: 192 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 +- proto: VendingMachineWallMedical + entities: + - uid: 319 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,-1.5 + parent: 1 +- proto: WallSolid + entities: + - uid: 4 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 4.5,0.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 4.5,3.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: -3.5,-1.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: -5.5,-1.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: -5.5,0.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: -3.5,1.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: -3.5,-3.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: -4.5,-3.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: -5.5,-3.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: -5.5,-5.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: 1.5,-5.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -1.5,-7.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: -2.5,-7.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -4.5,-8.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: -4.5,-10.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: -3.5,-7.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: -5.5,-7.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: -4.5,-7.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 2.5,-5.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 4.5,-5.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 2.5,-10.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 1.5,-8.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 1.5,-9.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 1.5,-10.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 5.5,-10.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 5.5,0.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 7.5,-7.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 7.5,-6.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 6.5,-4.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 6.5,-2.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 + - uid: 93 + components: + - type: Transform + pos: 8.5,3.5 + parent: 1 + - uid: 94 + components: + - type: Transform + pos: 8.5,0.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 6.5,8.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 5.5,8.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: 2.5,8.5 + parent: 1 + - uid: 107 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: 1.5,6.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 115 + components: + - type: Transform + pos: -2.5,8.5 + parent: 1 + - uid: 116 + components: + - type: Transform + pos: -2.5,7.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: -0.5,7.5 + parent: 1 + - uid: 129 + components: + - type: Transform + pos: -4.5,7.5 + parent: 1 +- proto: WallSolidRust + entities: + - uid: 5 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -1.5,3.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 4.5,-0.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 4.5,-1.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 4.5,-2.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: -5.5,-0.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: -5.5,1.5 + parent: 1 + - uid: 28 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,1.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 2.5,-7.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: 1.5,-7.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: 0.5,-7.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 4.5,-4.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 4.5,-6.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 4.5,-7.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 3.5,-10.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 4.5,-10.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: 5.5,-7.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 6.5,-7.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 7.5,-5.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 7.5,-4.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 7.5,-3.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 7.5,-2.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: 7.5,-1.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 7.5,-0.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: 6.5,6.5 + parent: 1 + - uid: 100 + components: + - type: Transform + pos: 6.5,7.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 4.5,8.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 3.5,8.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 + - uid: 110 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 + - uid: 111 + components: + - type: Transform + pos: 0.5,9.5 + parent: 1 + - uid: 112 + components: + - type: Transform + pos: -0.5,9.5 + parent: 1 + - uid: 113 + components: + - type: Transform + pos: -1.5,9.5 + parent: 1 + - uid: 114 + components: + - type: Transform + pos: -2.5,9.5 + parent: 1 + - uid: 117 + components: + - type: Transform + pos: -2.5,6.5 + parent: 1 + - uid: 118 + components: + - type: Transform + pos: -2.5,5.5 + parent: 1 + - uid: 119 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 + - uid: 120 + components: + - type: Transform + pos: -0.5,8.5 + parent: 1 + - uid: 126 + components: + - type: Transform + pos: -3.5,7.5 + parent: 1 + - uid: 130 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,7.5 + parent: 1 + - uid: 131 + components: + - type: Transform + pos: -6.5,7.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: -6.5,3.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: -5.5,3.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: -5.5,2.5 + parent: 1 + - uid: 135 + components: + - type: Transform + pos: 6.5,-9.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: 6.5,-8.5 + parent: 1 + - uid: 137 + components: + - type: Transform + pos: 6.5,-10.5 + parent: 1 +- proto: WeaponCapacitorRecharger + entities: + - uid: 396 + components: + - type: Transform + pos: -1.5,-9.5 + parent: 1 +- proto: WeldingFuelTankFull + entities: + - uid: 203 + components: + - type: Transform + pos: 2.5,-9.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/lava_lake_village.yml b/Resources/Maps/Lavaland/lava_lake_village.yml new file mode 100644 index 0000000000..3ebe34f6e6 --- /dev/null +++ b/Resources/Maps/Lavaland/lava_lake_village.yml @@ -0,0 +1,7037 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/22/2025 03:36:36 + entityCount: 1310 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 0: Space + 1: FloorBasalt + 3: FloorTechMaint + 2: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.76041734,-0.44266954 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,1: + ind: 0,1 + tiles: AAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,2: + ind: 0,2 + tiles: AAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 1,1: + ind: 1,1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 1,2: + ind: 1,2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,0: + ind: 2,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,1: + ind: 2,1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,2: + ind: 2,2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + cleanable: True + color: '#FFFFFFFF' + id: Remains + decals: + 0: 7,27 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,1: + 0: 60620 + 0,2: + 0: 61166 + 0,3: + 0: 61166 + 0,4: + 0: 61166 + 0,0: + 0: 52224 + 1,0: + 0: 65472 + 1,1: + 0: 65535 + 1,2: + 0: 65535 + 1,3: + 0: 65535 + 1,4: + 0: 65535 + 2,0: + 0: 65520 + 2,1: + 0: 65535 + 2,2: + 0: 65535 + 2,3: + 0: 65535 + 2,4: + 0: 65407 + 3,0: + 0: 65520 + 3,1: + 0: 65535 + 3,2: + 0: 63359 + 3,3: + 0: 65399 + 3,4: + 0: 65535 + 4,0: + 0: 65520 + 4,1: + 0: 65535 + 4,2: + 0: 30479 + 4,3: + 0: 65287 + 0,5: + 0: 61166 + 0,6: + 0: 61166 + 0,7: + 0: 61166 + 0,8: + 0: 52462 + 1,5: + 0: 65535 + 1,6: + 0: 65535 + 1,7: + 0: 65535 + 1,8: + 0: 65535 + 2,5: + 0: 65535 + 2,6: + 0: 65535 + 2,7: + 0: 65535 + 2,8: + 0: 65535 + 3,6: + 0: 65520 + 3,7: + 0: 65535 + 3,5: + 0: 61160 + 3,8: + 0: 65535 + 4,4: + 0: 65527 + 4,6: + 0: 65534 + 4,7: + 0: 65535 + 0,9: + 0: 204 + 1,9: + 0: 3327 + 2,9: + 0: 4095 + 3,9: + 0: 4095 + 4,8: + 0: 65535 + 4,9: + 0: 4095 + 5,0: + 0: 65520 + 5,1: + 0: 65535 + 5,2: + 0: 65535 + 5,3: + 0: 65535 + 5,4: + 0: 65535 + 6,0: + 0: 65520 + 6,1: + 0: 65535 + 6,2: + 0: 65535 + 6,3: + 0: 24831 + 6,4: + 0: 61543 + 7,0: + 0: 65520 + 7,1: + 0: 65535 + 7,2: + 0: 65535 + 7,3: + 0: 65535 + 7,4: + 0: 65535 + 8,0: + 0: 65296 + 8,1: + 0: 65535 + 8,2: + 0: 65535 + 8,3: + 0: 65535 + 4,5: + 0: 61166 + 5,5: + 0: 65535 + 5,6: + 0: 65527 + 5,7: + 0: 65535 + 5,8: + 0: 65527 + 6,5: + 0: 65535 + 6,6: + 0: 65535 + 6,7: + 0: 65535 + 6,8: + 0: 65535 + 7,5: + 0: 65535 + 7,6: + 0: 65535 + 7,7: + 0: 65535 + 7,8: + 0: 65535 + 8,4: + 0: 65535 + 8,5: + 0: 65535 + 8,6: + 0: 65535 + 8,7: + 0: 65535 + 5,9: + 0: 53247 + 6,9: + 0: 65535 + 7,9: + 0: 65535 + 8,8: + 0: 65535 + 8,9: + 0: 4607 + 9,0: + 0: 4352 + 9,1: + 0: 13073 + 9,2: + 0: 13107 + 9,3: + 0: 13107 + 9,4: + 0: 13107 + 9,5: + 0: 13107 + 9,6: + 0: 13107 + 9,7: + 0: 13107 + 9,8: + 0: 4403 + 9,9: + 0: 17 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirlockExternal + entities: + - uid: 802 + components: + - type: Transform + pos: 24.5,16.5 + parent: 1 + - uid: 1082 + components: + - type: Transform + pos: 15.5,20.5 + parent: 1 + - uid: 1083 + components: + - type: Transform + pos: 15.5,11.5 + parent: 1 +- proto: APCBasic + entities: + - uid: 1197 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 15.5,12.5 + parent: 1 + - uid: 1212 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 24.5,15.5 + parent: 1 + - uid: 1213 + components: + - type: Transform + pos: 14.5,20.5 + parent: 1 +- proto: Ash + entities: + - uid: 1301 + components: + - type: Transform + pos: 24.5,38.5 + parent: 1 + - uid: 1309 + components: + - type: Transform + pos: 22.665606,38.862946 + parent: 1 +- proto: BasaltFive + entities: + - uid: 1241 + components: + - type: Transform + pos: 30.5,22.5 + parent: 1 + - uid: 1248 + components: + - type: Transform + pos: 14.5,2.5 + parent: 1 + - uid: 1251 + components: + - type: Transform + pos: 31.5,4.5 + parent: 1 + - uid: 1256 + components: + - type: Transform + pos: 33.5,29.5 + parent: 1 + - uid: 1261 + components: + - type: Transform + pos: 13.5,37.5 + parent: 1 + - uid: 1266 + components: + - type: Transform + pos: 1.5,26.5 + parent: 1 + - uid: 1271 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 +- proto: BasaltFour + entities: + - uid: 1249 + components: + - type: Transform + pos: 19.5,1.5 + parent: 1 + - uid: 1255 + components: + - type: Transform + pos: 34.5,21.5 + parent: 1 + - uid: 1260 + components: + - type: Transform + pos: 20.5,38.5 + parent: 1 + - uid: 1265 + components: + - type: Transform + pos: 3.5,28.5 + parent: 1 + - uid: 1270 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 +- proto: BasaltOne + entities: + - uid: 1242 + components: + - type: Transform + pos: 27.5,26.5 + parent: 1 + - uid: 1245 + components: + - type: Transform + pos: 7.5,21.5 + parent: 1 + - uid: 1252 + components: + - type: Transform + pos: 35.5,8.5 + parent: 1 + - uid: 1257 + components: + - type: Transform + pos: 30.5,31.5 + parent: 1 + - uid: 1262 + components: + - type: Transform + pos: 6.5,38.5 + parent: 1 + - uid: 1267 + components: + - type: Transform + pos: 3.5,22.5 + parent: 1 +- proto: BasaltThree + entities: + - uid: 1239 + components: + - type: Transform + pos: 6.5,14.5 + parent: 1 + - uid: 1243 + components: + - type: Transform + pos: 16.5,27.5 + parent: 1 + - uid: 1246 + components: + - type: Transform + pos: 24.5,9.5 + parent: 1 + - uid: 1254 + components: + - type: Transform + pos: 37.5,19.5 + parent: 1 + - uid: 1259 + components: + - type: Transform + pos: 26.5,35.5 + parent: 1 + - uid: 1264 + components: + - type: Transform + pos: 16.5,33.5 + parent: 1 + - uid: 1269 + components: + - type: Transform + pos: 2.5,14.5 + parent: 1 + - uid: 1272 + components: + - type: Transform + pos: 19.5,19.5 + parent: 1 +- proto: BasaltTwo + entities: + - uid: 1240 + components: + - type: Transform + pos: 20.5,26.5 + parent: 1 + - uid: 1244 + components: + - type: Transform + pos: 8.5,26.5 + parent: 1 + - uid: 1247 + components: + - type: Transform + pos: 23.5,6.5 + parent: 1 + - uid: 1250 + components: + - type: Transform + pos: 27.5,3.5 + parent: 1 + - uid: 1253 + components: + - type: Transform + pos: 36.5,14.5 + parent: 1 + - uid: 1258 + components: + - type: Transform + pos: 34.5,34.5 + parent: 1 + - uid: 1263 + components: + - type: Transform + pos: 6.5,31.5 + parent: 1 + - uid: 1268 + components: + - type: Transform + pos: 1.5,18.5 + parent: 1 +- proto: BedsheetMedical + entities: + - uid: 1229 + components: + - type: Transform + pos: 15.5,23.5 + parent: 1 + - uid: 1230 + components: + - type: Transform + pos: 13.5,23.5 + parent: 1 +- proto: BurnAutoInjector + entities: + - uid: 1236 + components: + - type: Transform + rot: -6.283185307179586 rad + pos: 13.490121,21.421066 + parent: 1 +- proto: CableApcExtension + entities: + - uid: 1086 + components: + - type: Transform + pos: 16.5,12.5 + parent: 1 + - uid: 1199 + components: + - type: Transform + pos: 15.5,12.5 + parent: 1 + - uid: 1201 + components: + - type: Transform + pos: 16.5,11.5 + parent: 1 + - uid: 1202 + components: + - type: Transform + pos: 17.5,11.5 + parent: 1 + - uid: 1203 + components: + - type: Transform + pos: 18.5,11.5 + parent: 1 + - uid: 1204 + components: + - type: Transform + pos: 14.5,20.5 + parent: 1 + - uid: 1205 + components: + - type: Transform + pos: 14.5,21.5 + parent: 1 + - uid: 1206 + components: + - type: Transform + pos: 14.5,22.5 + parent: 1 + - uid: 1207 + components: + - type: Transform + pos: 14.5,23.5 + parent: 1 + - uid: 1208 + components: + - type: Transform + pos: 24.5,15.5 + parent: 1 + - uid: 1209 + components: + - type: Transform + pos: 25.5,15.5 + parent: 1 + - uid: 1210 + components: + - type: Transform + pos: 25.5,16.5 + parent: 1 + - uid: 1211 + components: + - type: Transform + pos: 25.5,17.5 + parent: 1 +- proto: CableHV + entities: + - uid: 735 + components: + - type: Transform + pos: 16.5,12.5 + parent: 1 + - uid: 736 + components: + - type: Transform + pos: 18.5,12.5 + parent: 1 + - uid: 770 + components: + - type: Transform + pos: 17.5,12.5 + parent: 1 + - uid: 907 + components: + - type: Transform + pos: 16.5,10.5 + parent: 1 + - uid: 1012 + components: + - type: Transform + pos: 16.5,11.5 + parent: 1 + - uid: 1118 + components: + - type: Transform + pos: 18.5,10.5 + parent: 1 + - uid: 1153 + components: + - type: Transform + pos: 17.5,10.5 + parent: 1 +- proto: CableMV + entities: + - uid: 733 + components: + - type: Transform + pos: 17.5,16.5 + parent: 1 + - uid: 734 + components: + - type: Transform + pos: 18.5,16.5 + parent: 1 + - uid: 771 + components: + - type: Transform + pos: 11.5,11.5 + parent: 1 + - uid: 838 + components: + - type: Transform + pos: 11.5,12.5 + parent: 1 + - uid: 839 + components: + - type: Transform + pos: 11.5,14.5 + parent: 1 + - uid: 873 + components: + - type: Transform + pos: 11.5,13.5 + parent: 1 + - uid: 874 + components: + - type: Transform + pos: 11.5,15.5 + parent: 1 + - uid: 875 + components: + - type: Transform + pos: 14.5,20.5 + parent: 1 + - uid: 908 + components: + - type: Transform + pos: 11.5,16.5 + parent: 1 + - uid: 909 + components: + - type: Transform + pos: 12.5,17.5 + parent: 1 + - uid: 910 + components: + - type: Transform + pos: 14.5,19.5 + parent: 1 + - uid: 943 + components: + - type: Transform + pos: 12.5,16.5 + parent: 1 + - uid: 944 + components: + - type: Transform + pos: 12.5,18.5 + parent: 1 + - uid: 945 + components: + - type: Transform + pos: 15.5,18.5 + parent: 1 + - uid: 946 + components: + - type: Transform + pos: 16.5,16.5 + parent: 1 + - uid: 980 + components: + - type: Transform + pos: 15.5,19.5 + parent: 1 + - uid: 981 + components: + - type: Transform + pos: 15.5,16.5 + parent: 1 + - uid: 1015 + components: + - type: Transform + pos: 18.5,12.5 + parent: 1 + - uid: 1016 + components: + - type: Transform + pos: 14.5,17.5 + parent: 1 + - uid: 1048 + components: + - type: Transform + pos: 10.5,17.5 + parent: 1 + - uid: 1049 + components: + - type: Transform + pos: 11.5,18.5 + parent: 1 + - uid: 1050 + components: + - type: Transform + pos: 13.5,17.5 + parent: 1 + - uid: 1051 + components: + - type: Transform + pos: 15.5,17.5 + parent: 1 + - uid: 1084 + components: + - type: Transform + pos: 10.5,18.5 + parent: 1 + - uid: 1085 + components: + - type: Transform + pos: 13.5,11.5 + parent: 1 + - uid: 1119 + components: + - type: Transform + pos: 12.5,11.5 + parent: 1 + - uid: 1120 + components: + - type: Transform + pos: 14.5,11.5 + parent: 1 + - uid: 1154 + components: + - type: Transform + pos: 10.5,16.5 + parent: 1 + - uid: 1155 + components: + - type: Transform + pos: 16.5,12.5 + parent: 1 + - uid: 1156 + components: + - type: Transform + pos: 17.5,12.5 + parent: 1 + - uid: 1182 + components: + - type: Transform + pos: 18.5,15.5 + parent: 1 + - uid: 1183 + components: + - type: Transform + pos: 19.5,15.5 + parent: 1 + - uid: 1184 + components: + - type: Transform + pos: 20.5,15.5 + parent: 1 + - uid: 1185 + components: + - type: Transform + pos: 20.5,16.5 + parent: 1 + - uid: 1186 + components: + - type: Transform + pos: 20.5,17.5 + parent: 1 + - uid: 1187 + components: + - type: Transform + pos: 19.5,17.5 + parent: 1 + - uid: 1188 + components: + - type: Transform + pos: 18.5,17.5 + parent: 1 + - uid: 1189 + components: + - type: Transform + pos: 21.5,16.5 + parent: 1 + - uid: 1190 + components: + - type: Transform + pos: 22.5,16.5 + parent: 1 + - uid: 1191 + components: + - type: Transform + pos: 23.5,16.5 + parent: 1 + - uid: 1192 + components: + - type: Transform + pos: 23.5,15.5 + parent: 1 + - uid: 1193 + components: + - type: Transform + pos: 23.5,17.5 + parent: 1 + - uid: 1194 + components: + - type: Transform + pos: 16.5,19.5 + parent: 1 + - uid: 1195 + components: + - type: Transform + pos: 14.5,10.5 + parent: 1 + - uid: 1196 + components: + - type: Transform + pos: 14.5,12.5 + parent: 1 + - uid: 1198 + components: + - type: Transform + pos: 15.5,12.5 + parent: 1 +- proto: CableTerminal + entities: + - uid: 942 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,10.5 + parent: 1 +- proto: Catwalk + entities: + - uid: 2 + components: + - type: Transform + pos: 35.5,26.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 30.5,32.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 35.5,25.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 30.5,33.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: 35.5,27.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 30.5,34.5 + parent: 1 + - uid: 197 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 23.5,30.5 + parent: 1 + - uid: 277 + components: + - type: Transform + pos: 19.5,17.5 + parent: 1 + - uid: 331 + components: + - type: Transform + pos: 24.5,23.5 + parent: 1 + - uid: 367 + components: + - type: Transform + pos: 20.5,15.5 + parent: 1 + - uid: 372 + components: + - type: Transform + pos: 23.5,31.5 + parent: 1 + - uid: 401 + components: + - type: Transform + pos: 18.5,16.5 + parent: 1 + - uid: 408 + components: + - type: Transform + pos: 23.5,25.5 + parent: 1 + - uid: 410 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,32.5 + parent: 1 + - uid: 540 + components: + - type: Transform + pos: 12.5,16.5 + parent: 1 + - uid: 541 + components: + - type: Transform + pos: 23.5,23.5 + parent: 1 + - uid: 557 + components: + - type: Transform + pos: 20.5,32.5 + parent: 1 + - uid: 570 + components: + - type: Transform + pos: 18.5,15.5 + parent: 1 + - uid: 592 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 21.5,32.5 + parent: 1 + - uid: 607 + components: + - type: Transform + pos: 11.5,18.5 + parent: 1 + - uid: 610 + components: + - type: Transform + pos: 12.5,17.5 + parent: 1 + - uid: 612 + components: + - type: Transform + pos: 22.5,24.5 + parent: 1 + - uid: 662 + components: + - type: Transform + pos: 17.5,32.5 + parent: 1 + - uid: 669 + components: + - type: Transform + pos: 24.5,25.5 + parent: 1 + - uid: 685 + components: + - type: Transform + pos: 15.5,16.5 + parent: 1 + - uid: 686 + components: + - type: Transform + pos: 16.5,16.5 + parent: 1 + - uid: 687 + components: + - type: Transform + pos: 15.5,18.5 + parent: 1 + - uid: 688 + components: + - type: Transform + pos: 13.5,11.5 + parent: 1 + - uid: 689 + components: + - type: Transform + pos: 15.5,31.5 + parent: 1 + - uid: 721 + components: + - type: Transform + pos: 15.5,19.5 + parent: 1 + - uid: 722 + components: + - type: Transform + pos: 11.5,14.5 + parent: 1 + - uid: 724 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 19.5,32.5 + parent: 1 + - uid: 731 + components: + - type: Transform + pos: 13.5,31.5 + parent: 1 + - uid: 755 + components: + - type: Transform + pos: 13.5,17.5 + parent: 1 + - uid: 756 + components: + - type: Transform + pos: 11.5,15.5 + parent: 1 + - uid: 757 + components: + - type: Transform + pos: 11.5,13.5 + parent: 1 + - uid: 774 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 23.5,26.5 + parent: 1 + - uid: 790 + components: + - type: Transform + pos: 14.5,17.5 + parent: 1 + - uid: 791 + components: + - type: Transform + pos: 11.5,12.5 + parent: 1 + - uid: 794 + components: + - type: Transform + pos: 12.5,11.5 + parent: 1 + - uid: 805 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 23.5,15.5 + parent: 1 + - uid: 806 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,12.5 + parent: 1 + - uid: 821 + components: + - type: Transform + pos: 19.5,15.5 + parent: 1 + - uid: 822 + components: + - type: Transform + pos: 10.5,18.5 + parent: 1 + - uid: 823 + components: + - type: Transform + pos: 22.5,23.5 + parent: 1 + - uid: 825 + components: + - type: Transform + pos: 15.5,17.5 + parent: 1 + - uid: 827 + components: + - type: Transform + pos: 14.5,11.5 + parent: 1 + - uid: 828 + components: + - type: Transform + pos: 14.5,31.5 + parent: 1 + - uid: 829 + components: + - type: Transform + pos: 11.5,11.5 + parent: 1 + - uid: 840 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 23.5,17.5 + parent: 1 + - uid: 841 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,10.5 + parent: 1 + - uid: 842 + components: + - type: Transform + pos: 19.5,23.5 + parent: 1 + - uid: 844 + components: + - type: Transform + pos: 19.5,24.5 + parent: 1 + - uid: 856 + components: + - type: Transform + pos: 12.5,18.5 + parent: 1 + - uid: 858 + components: + - type: Transform + pos: 20.5,16.5 + parent: 1 + - uid: 876 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 16.5,19.5 + parent: 1 + - uid: 879 + components: + - type: Transform + pos: 20.5,24.5 + parent: 1 + - uid: 892 + components: + - type: Transform + pos: 17.5,16.5 + parent: 1 + - uid: 911 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,19.5 + parent: 1 + - uid: 914 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,32.5 + parent: 1 + - uid: 948 + components: + - type: Transform + pos: 24.5,24.5 + parent: 1 + - uid: 983 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,32.5 + parent: 1 + - uid: 984 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 23.5,27.5 + parent: 1 + - uid: 1047 + components: + - type: Transform + pos: 23.5,28.5 + parent: 1 + - uid: 1053 + components: + - type: Transform + pos: 22.5,16.5 + parent: 1 + - uid: 1054 + components: + - type: Transform + pos: 19.5,18.5 + parent: 1 + - uid: 1055 + components: + - type: Transform + pos: 19.5,20.5 + parent: 1 + - uid: 1056 + components: + - type: Transform + pos: 18.5,17.5 + parent: 1 + - uid: 1088 + components: + - type: Transform + pos: 23.5,16.5 + parent: 1 + - uid: 1089 + components: + - type: Transform + pos: 19.5,19.5 + parent: 1 + - uid: 1090 + components: + - type: Transform + pos: 19.5,21.5 + parent: 1 + - uid: 1091 + components: + - type: Transform + pos: 11.5,16.5 + parent: 1 + - uid: 1092 + components: + - type: Transform + pos: 22.5,33.5 + parent: 1 + - uid: 1094 + components: + - type: Transform + pos: 10.5,16.5 + parent: 1 + - uid: 1121 + components: + - type: Transform + pos: 17.5,10.5 + parent: 1 + - uid: 1124 + components: + - type: Transform + pos: 19.5,22.5 + parent: 1 + - uid: 1125 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,32.5 + parent: 1 + - uid: 1126 + components: + - type: Transform + pos: 22.5,32.5 + parent: 1 + - uid: 1128 + components: + - type: Transform + pos: 20.5,17.5 + parent: 1 + - uid: 1129 + components: + - type: Transform + pos: 10.5,17.5 + parent: 1 + - uid: 1157 + components: + - type: Transform + pos: 22.5,25.5 + parent: 1 + - uid: 1160 + components: + - type: Transform + pos: 21.5,24.5 + parent: 1 + - uid: 1162 + components: + - type: Transform + pos: 21.5,16.5 + parent: 1 + - uid: 1200 + components: + - type: Transform + pos: 18.5,10.5 + parent: 1 + - uid: 1214 + components: + - type: Transform + pos: 16.5,10.5 + parent: 1 + - uid: 1281 + components: + - type: Transform + pos: 22.5,31.5 + parent: 1 + - uid: 1282 + components: + - type: Transform + pos: 24.5,31.5 + parent: 1 +- proto: Chair + entities: + - uid: 1225 + components: + - type: Transform + pos: 17.5,12.5 + parent: 1 + - uid: 1232 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,21.5 + parent: 1 + - uid: 1306 + components: + - type: Transform + pos: 23.5,39.5 + parent: 1 + - uid: 1307 + components: + - type: Transform + pos: 24.5,39.5 + parent: 1 +- proto: ClothingHeadHatCone + entities: + - uid: 10 + components: + - type: Transform + rot: -50.265482457436725 rad + pos: 23.277601,28.448996 + parent: 1 + - uid: 793 + components: + - type: Transform + rot: -50.265482457436725 rad + pos: 23.735935,28.754763 + parent: 1 +- proto: CrateFreezer + entities: + - uid: 1218 + components: + - type: Transform + pos: 26.5,17.5 + parent: 1 +- proto: FireAxe + entities: + - uid: 1224 + components: + - type: Transform + pos: 16.5,12.5 + parent: 1 +- proto: FloorLavaEntity + entities: + - uid: 3 + components: + - type: Transform + pos: 30.5,37.5 + parent: 1 + - uid: 4 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,13.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 35.5,12.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: 29.5,38.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 28.5,38.5 + parent: 1 + - uid: 11 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 25.5,35.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 34.5,31.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 30.5,35.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 37.5,28.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 35.5,10.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 36.5,35.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 35.5,11.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 37.5,27.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 37.5,32.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 36.5,33.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 36.5,34.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 34.5,9.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 34.5,3.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 30.5,2.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 37.5,31.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 8.5,3.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 33.5,3.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 35.5,3.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: 1.5,11.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: 28.5,33.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: 37.5,26.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 36.5,25.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 35.5,5.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 4.5,3.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 2.5,11.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 34.5,29.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 34.5,22.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 37.5,25.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 33.5,5.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 34.5,13.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 34.5,10.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 35.5,30.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 35.5,29.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 34.5,30.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 37.5,33.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 34.5,16.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 34.5,14.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 34.5,23.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 34.5,15.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: 35.5,4.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 34.5,18.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 34.5,12.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 37.5,24.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 34.5,17.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 33.5,10.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 33.5,13.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 28.5,2.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 32.5,2.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 31.5,15.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 31.5,16.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: 33.5,2.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 33.5,9.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 33.5,11.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 29.5,33.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 31.5,17.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 31.5,18.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: 31.5,13.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 32.5,15.5 + parent: 1 + - uid: 85 + components: + - type: Transform + pos: 32.5,14.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: 31.5,1.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 31.5,11.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: 31.5,9.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: 31.5,14.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: 31.5,2.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: 32.5,16.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: 32.5,17.5 + parent: 1 + - uid: 93 + components: + - type: Transform + pos: 36.5,30.5 + parent: 1 + - uid: 94 + components: + - type: Transform + pos: 32.5,36.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: 31.5,5.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: 32.5,25.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: 29.5,1.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: 34.5,6.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: 34.5,37.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 31.5,7.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 34.5,2.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 36.5,32.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 32.5,12.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: 31.5,19.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: 31.5,27.5 + parent: 1 + - uid: 107 + components: + - type: Transform + pos: 31.5,25.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: 32.5,20.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: 32.5,8.5 + parent: 1 + - uid: 110 + components: + - type: Transform + pos: 32.5,21.5 + parent: 1 + - uid: 111 + components: + - type: Transform + pos: 31.5,20.5 + parent: 1 + - uid: 112 + components: + - type: Transform + pos: 31.5,21.5 + parent: 1 + - uid: 113 + components: + - type: Transform + pos: 15.5,34.5 + parent: 1 + - uid: 114 + components: + - type: Transform + pos: 29.5,3.5 + parent: 1 + - uid: 115 + components: + - type: Transform + pos: 32.5,18.5 + parent: 1 + - uid: 116 + components: + - type: Transform + pos: 34.5,32.5 + parent: 1 + - uid: 117 + components: + - type: Transform + pos: 31.5,36.5 + parent: 1 + - uid: 118 + components: + - type: Transform + pos: 14.5,33.5 + parent: 1 + - uid: 119 + components: + - type: Transform + pos: 34.5,28.5 + parent: 1 + - uid: 120 + components: + - type: Transform + pos: 33.5,31.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: 32.5,11.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: 31.5,22.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: 31.5,23.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: 31.5,24.5 + parent: 1 + - uid: 126 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: 29.5,35.5 + parent: 1 + - uid: 128 + components: + - type: Transform + pos: 32.5,19.5 + parent: 1 + - uid: 129 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 + - uid: 130 + components: + - type: Transform + pos: 33.5,18.5 + parent: 1 + - uid: 131 + components: + - type: Transform + pos: 25.5,2.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: 33.5,23.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: 33.5,15.5 + parent: 1 + - uid: 135 + components: + - type: Transform + pos: 33.5,17.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: 33.5,16.5 + parent: 1 + - uid: 137 + components: + - type: Transform + pos: 36.5,36.5 + parent: 1 + - uid: 138 + components: + - type: Transform + pos: 33.5,24.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: 33.5,20.5 + parent: 1 + - uid: 140 + components: + - type: Transform + pos: 33.5,19.5 + parent: 1 + - uid: 141 + components: + - type: Transform + pos: 29.5,2.5 + parent: 1 + - uid: 142 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 143 + components: + - type: Transform + pos: 30.5,1.5 + parent: 1 + - uid: 144 + components: + - type: Transform + pos: 33.5,22.5 + parent: 1 + - uid: 145 + components: + - type: Transform + pos: 33.5,21.5 + parent: 1 + - uid: 146 + components: + - type: Transform + pos: 24.5,1.5 + parent: 1 + - uid: 147 + components: + - type: Transform + pos: 33.5,14.5 + parent: 1 + - uid: 148 + components: + - type: Transform + pos: 26.5,2.5 + parent: 1 + - uid: 149 + components: + - type: Transform + pos: 34.5,4.5 + parent: 1 + - uid: 150 + components: + - type: Transform + pos: 34.5,5.5 + parent: 1 + - uid: 151 + components: + - type: Transform + pos: 5.5,8.5 + parent: 1 + - uid: 152 + components: + - type: Transform + pos: 33.5,4.5 + parent: 1 + - uid: 153 + components: + - type: Transform + pos: 33.5,12.5 + parent: 1 + - uid: 154 + components: + - type: Transform + pos: 32.5,38.5 + parent: 1 + - uid: 155 + components: + - type: Transform + pos: 34.5,11.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: 32.5,9.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: 15.5,33.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: 32.5,23.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: 32.5,7.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: 15.5,35.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: 33.5,32.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: 32.5,22.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: 31.5,26.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: 28.5,1.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: 32.5,10.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: 31.5,8.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: 32.5,4.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: 32.5,37.5 + parent: 1 + - uid: 169 + components: + - type: Transform + pos: 32.5,13.5 + parent: 1 + - uid: 171 + components: + - type: Transform + pos: 31.5,10.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: 32.5,24.5 + parent: 1 + - uid: 173 + components: + - type: Transform + pos: 36.5,4.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: 31.5,6.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: 31.5,38.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: 33.5,37.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: 29.5,36.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: 35.5,28.5 + parent: 1 + - uid: 179 + components: + - type: Transform + pos: 14.5,4.5 + parent: 1 + - uid: 180 + components: + - type: Transform + pos: 30.5,5.5 + parent: 1 + - uid: 181 + components: + - type: Transform + pos: 30.5,6.5 + parent: 1 + - uid: 182 + components: + - type: Transform + pos: 30.5,7.5 + parent: 1 + - uid: 183 + components: + - type: Transform + pos: 30.5,8.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: 30.5,9.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: 30.5,10.5 + parent: 1 + - uid: 186 + components: + - type: Transform + pos: 30.5,11.5 + parent: 1 + - uid: 187 + components: + - type: Transform + pos: 30.5,12.5 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: 30.5,13.5 + parent: 1 + - uid: 189 + components: + - type: Transform + pos: 30.5,14.5 + parent: 1 + - uid: 190 + components: + - type: Transform + pos: 30.5,15.5 + parent: 1 + - uid: 191 + components: + - type: Transform + pos: 30.5,16.5 + parent: 1 + - uid: 193 + components: + - type: Transform + pos: 30.5,18.5 + parent: 1 + - uid: 194 + components: + - type: Transform + pos: 30.5,19.5 + parent: 1 + - uid: 195 + components: + - type: Transform + pos: 30.5,20.5 + parent: 1 + - uid: 196 + components: + - type: Transform + pos: 30.5,21.5 + parent: 1 + - uid: 198 + components: + - type: Transform + pos: 30.5,23.5 + parent: 1 + - uid: 199 + components: + - type: Transform + pos: 30.5,24.5 + parent: 1 + - uid: 200 + components: + - type: Transform + pos: 30.5,25.5 + parent: 1 + - uid: 201 + components: + - type: Transform + pos: 30.5,26.5 + parent: 1 + - uid: 202 + components: + - type: Transform + pos: 30.5,27.5 + parent: 1 + - uid: 203 + components: + - type: Transform + pos: 30.5,28.5 + parent: 1 + - uid: 204 + components: + - type: Transform + pos: 30.5,29.5 + parent: 1 + - uid: 205 + components: + - type: Transform + pos: 30.5,30.5 + parent: 1 + - uid: 206 + components: + - type: Transform + pos: 14.5,34.5 + parent: 1 + - uid: 207 + components: + - type: Transform + pos: 14.5,35.5 + parent: 1 + - uid: 209 + components: + - type: Transform + pos: 37.5,30.5 + parent: 1 + - uid: 210 + components: + - type: Transform + pos: 35.5,33.5 + parent: 1 + - uid: 211 + components: + - type: Transform + pos: 35.5,35.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: 27.5,38.5 + parent: 1 + - uid: 213 + components: + - type: Transform + pos: 34.5,24.5 + parent: 1 + - uid: 214 + components: + - type: Transform + pos: 29.5,4.5 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: 29.5,5.5 + parent: 1 + - uid: 216 + components: + - type: Transform + pos: 29.5,6.5 + parent: 1 + - uid: 217 + components: + - type: Transform + pos: 29.5,7.5 + parent: 1 + - uid: 218 + components: + - type: Transform + pos: 29.5,8.5 + parent: 1 + - uid: 219 + components: + - type: Transform + pos: 29.5,9.5 + parent: 1 + - uid: 220 + components: + - type: Transform + pos: 29.5,10.5 + parent: 1 + - uid: 221 + components: + - type: Transform + pos: 29.5,11.5 + parent: 1 + - uid: 222 + components: + - type: Transform + pos: 29.5,12.5 + parent: 1 + - uid: 223 + components: + - type: Transform + pos: 29.5,13.5 + parent: 1 + - uid: 224 + components: + - type: Transform + pos: 29.5,14.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: 29.5,15.5 + parent: 1 + - uid: 226 + components: + - type: Transform + pos: 29.5,16.5 + parent: 1 + - uid: 227 + components: + - type: Transform + pos: 29.5,17.5 + parent: 1 + - uid: 228 + components: + - type: Transform + pos: 29.5,18.5 + parent: 1 + - uid: 229 + components: + - type: Transform + pos: 29.5,19.5 + parent: 1 + - uid: 230 + components: + - type: Transform + pos: 29.5,20.5 + parent: 1 + - uid: 231 + components: + - type: Transform + pos: 29.5,21.5 + parent: 1 + - uid: 232 + components: + - type: Transform + pos: 29.5,22.5 + parent: 1 + - uid: 233 + components: + - type: Transform + pos: 29.5,23.5 + parent: 1 + - uid: 234 + components: + - type: Transform + pos: 29.5,24.5 + parent: 1 + - uid: 235 + components: + - type: Transform + pos: 29.5,25.5 + parent: 1 + - uid: 236 + components: + - type: Transform + pos: 29.5,26.5 + parent: 1 + - uid: 237 + components: + - type: Transform + pos: 29.5,27.5 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: 29.5,28.5 + parent: 1 + - uid: 239 + components: + - type: Transform + pos: 29.5,29.5 + parent: 1 + - uid: 240 + components: + - type: Transform + pos: 29.5,30.5 + parent: 1 + - uid: 241 + components: + - type: Transform + pos: 29.5,31.5 + parent: 1 + - uid: 242 + components: + - type: Transform + pos: 13.5,33.5 + parent: 1 + - uid: 244 + components: + - type: Transform + pos: 37.5,29.5 + parent: 1 + - uid: 245 + components: + - type: Transform + pos: 35.5,34.5 + parent: 1 + - uid: 246 + components: + - type: Transform + pos: 34.5,36.5 + parent: 1 + - uid: 247 + components: + - type: Transform + pos: 30.5,33.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: 34.5,25.5 + parent: 1 + - uid: 249 + components: + - type: Transform + pos: 28.5,4.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: 28.5,5.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: 28.5,6.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: 28.5,7.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: 28.5,9.5 + parent: 1 + - uid: 255 + components: + - type: Transform + pos: 28.5,10.5 + parent: 1 + - uid: 256 + components: + - type: Transform + pos: 28.5,11.5 + parent: 1 + - uid: 257 + components: + - type: Transform + pos: 28.5,12.5 + parent: 1 + - uid: 258 + components: + - type: Transform + pos: 28.5,13.5 + parent: 1 + - uid: 259 + components: + - type: Transform + pos: 28.5,14.5 + parent: 1 + - uid: 260 + components: + - type: Transform + pos: 28.5,15.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: 28.5,16.5 + parent: 1 + - uid: 262 + components: + - type: Transform + pos: 28.5,17.5 + parent: 1 + - uid: 263 + components: + - type: Transform + pos: 28.5,18.5 + parent: 1 + - uid: 264 + components: + - type: Transform + pos: 28.5,19.5 + parent: 1 + - uid: 265 + components: + - type: Transform + pos: 28.5,20.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: 28.5,21.5 + parent: 1 + - uid: 267 + components: + - type: Transform + pos: 28.5,22.5 + parent: 1 + - uid: 268 + components: + - type: Transform + pos: 28.5,23.5 + parent: 1 + - uid: 269 + components: + - type: Transform + pos: 28.5,24.5 + parent: 1 + - uid: 270 + components: + - type: Transform + pos: 28.5,25.5 + parent: 1 + - uid: 271 + components: + - type: Transform + pos: 28.5,26.5 + parent: 1 + - uid: 272 + components: + - type: Transform + pos: 28.5,27.5 + parent: 1 + - uid: 273 + components: + - type: Transform + pos: 28.5,28.5 + parent: 1 + - uid: 274 + components: + - type: Transform + pos: 28.5,29.5 + parent: 1 + - uid: 275 + components: + - type: Transform + pos: 28.5,30.5 + parent: 1 + - uid: 276 + components: + - type: Transform + pos: 28.5,31.5 + parent: 1 + - uid: 278 + components: + - type: Transform + pos: 36.5,31.5 + parent: 1 + - uid: 280 + components: + - type: Transform + pos: 25.5,1.5 + parent: 1 + - uid: 281 + components: + - type: Transform + pos: 22.5,1.5 + parent: 1 + - uid: 282 + components: + - type: Transform + pos: 30.5,38.5 + parent: 1 + - uid: 283 + components: + - type: Transform + pos: 35.5,31.5 + parent: 1 + - uid: 284 + components: + - type: Transform + pos: 27.5,4.5 + parent: 1 + - uid: 285 + components: + - type: Transform + pos: 27.5,5.5 + parent: 1 + - uid: 286 + components: + - type: Transform + pos: 27.5,6.5 + parent: 1 + - uid: 287 + components: + - type: Transform + pos: 27.5,7.5 + parent: 1 + - uid: 288 + components: + - type: Transform + pos: 27.5,8.5 + parent: 1 + - uid: 289 + components: + - type: Transform + pos: 27.5,9.5 + parent: 1 + - uid: 290 + components: + - type: Transform + pos: 27.5,10.5 + parent: 1 + - uid: 291 + components: + - type: Transform + pos: 27.5,11.5 + parent: 1 + - uid: 292 + components: + - type: Transform + pos: 27.5,12.5 + parent: 1 + - uid: 293 + components: + - type: Transform + pos: 27.5,13.5 + parent: 1 + - uid: 294 + components: + - type: Transform + pos: 5.5,9.5 + parent: 1 + - uid: 295 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 296 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 297 + components: + - type: Transform + pos: 2.5,8.5 + parent: 1 + - uid: 298 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - uid: 299 + components: + - type: Transform + pos: 27.5,19.5 + parent: 1 + - uid: 300 + components: + - type: Transform + pos: 27.5,20.5 + parent: 1 + - uid: 301 + components: + - type: Transform + pos: 27.5,21.5 + parent: 1 + - uid: 302 + components: + - type: Transform + pos: 27.5,22.5 + parent: 1 + - uid: 303 + components: + - type: Transform + pos: 27.5,23.5 + parent: 1 + - uid: 304 + components: + - type: Transform + pos: 27.5,24.5 + parent: 1 + - uid: 305 + components: + - type: Transform + pos: 27.5,25.5 + parent: 1 + - uid: 306 + components: + - type: Transform + pos: 25.5,27.5 + parent: 1 + - uid: 307 + components: + - type: Transform + pos: 27.5,27.5 + parent: 1 + - uid: 308 + components: + - type: Transform + pos: 27.5,28.5 + parent: 1 + - uid: 309 + components: + - type: Transform + pos: 27.5,29.5 + parent: 1 + - uid: 310 + components: + - type: Transform + pos: 27.5,30.5 + parent: 1 + - uid: 311 + components: + - type: Transform + pos: 27.5,31.5 + parent: 1 + - uid: 312 + components: + - type: Transform + pos: 13.5,34.5 + parent: 1 + - uid: 315 + components: + - type: Transform + pos: 23.5,1.5 + parent: 1 + - uid: 316 + components: + - type: Transform + pos: 23.5,2.5 + parent: 1 + - uid: 317 + components: + - type: Transform + pos: 28.5,32.5 + parent: 1 + - uid: 318 + components: + - type: Transform + pos: 33.5,30.5 + parent: 1 + - uid: 319 + components: + - type: Transform + pos: 26.5,4.5 + parent: 1 + - uid: 320 + components: + - type: Transform + pos: 26.5,5.5 + parent: 1 + - uid: 321 + components: + - type: Transform + pos: 26.5,6.5 + parent: 1 + - uid: 322 + components: + - type: Transform + pos: 26.5,7.5 + parent: 1 + - uid: 323 + components: + - type: Transform + pos: 26.5,8.5 + parent: 1 + - uid: 324 + components: + - type: Transform + pos: 26.5,9.5 + parent: 1 + - uid: 325 + components: + - type: Transform + pos: 26.5,10.5 + parent: 1 + - uid: 326 + components: + - type: Transform + pos: 26.5,11.5 + parent: 1 + - uid: 327 + components: + - type: Transform + pos: 26.5,12.5 + parent: 1 + - uid: 328 + components: + - type: Transform + pos: 26.5,13.5 + parent: 1 + - uid: 329 + components: + - type: Transform + pos: 3.5,7.5 + parent: 1 + - uid: 330 + components: + - type: Transform + pos: 4.5,8.5 + parent: 1 + - uid: 332 + components: + - type: Transform + pos: 2.5,9.5 + parent: 1 + - uid: 333 + components: + - type: Transform + pos: 4.5,6.5 + parent: 1 + - uid: 334 + components: + - type: Transform + pos: 26.5,19.5 + parent: 1 + - uid: 335 + components: + - type: Transform + pos: 26.5,20.5 + parent: 1 + - uid: 337 + components: + - type: Transform + pos: 26.5,22.5 + parent: 1 + - uid: 338 + components: + - type: Transform + pos: 26.5,23.5 + parent: 1 + - uid: 339 + components: + - type: Transform + pos: 26.5,24.5 + parent: 1 + - uid: 340 + components: + - type: Transform + pos: 26.5,27.5 + parent: 1 + - uid: 341 + components: + - type: Transform + pos: 26.5,26.5 + parent: 1 + - uid: 342 + components: + - type: Transform + pos: 25.5,26.5 + parent: 1 + - uid: 343 + components: + - type: Transform + pos: 26.5,28.5 + parent: 1 + - uid: 344 + components: + - type: Transform + pos: 26.5,29.5 + parent: 1 + - uid: 345 + components: + - type: Transform + pos: 26.5,30.5 + parent: 1 + - uid: 346 + components: + - type: Transform + pos: 26.5,31.5 + parent: 1 + - uid: 347 + components: + - type: Transform + pos: 26.5,32.5 + parent: 1 + - uid: 350 + components: + - type: Transform + pos: 27.5,2.5 + parent: 1 + - uid: 351 + components: + - type: Transform + pos: 35.5,32.5 + parent: 1 + - uid: 352 + components: + - type: Transform + pos: 34.5,35.5 + parent: 1 + - uid: 353 + components: + - type: Transform + pos: 34.5,33.5 + parent: 1 + - uid: 354 + components: + - type: Transform + pos: 25.5,4.5 + parent: 1 + - uid: 355 + components: + - type: Transform + pos: 25.5,5.5 + parent: 1 + - uid: 356 + components: + - type: Transform + pos: 25.5,6.5 + parent: 1 + - uid: 357 + components: + - type: Transform + pos: 25.5,7.5 + parent: 1 + - uid: 358 + components: + - type: Transform + pos: 25.5,8.5 + parent: 1 + - uid: 359 + components: + - type: Transform + pos: 25.5,9.5 + parent: 1 + - uid: 360 + components: + - type: Transform + pos: 25.5,10.5 + parent: 1 + - uid: 361 + components: + - type: Transform + pos: 25.5,11.5 + parent: 1 + - uid: 362 + components: + - type: Transform + pos: 25.5,12.5 + parent: 1 + - uid: 363 + components: + - type: Transform + pos: 25.5,13.5 + parent: 1 + - uid: 364 + components: + - type: Transform + pos: 4.5,9.5 + parent: 1 + - uid: 365 + components: + - type: Transform + pos: 5.5,7.5 + parent: 1 + - uid: 366 + components: + - type: Transform + pos: 20.5,17.5 + parent: 1 + - uid: 368 + components: + - type: Transform + pos: 7.5,4.5 + parent: 1 + - uid: 369 + components: + - type: Transform + pos: 25.5,19.5 + parent: 1 + - uid: 370 + components: + - type: Transform + pos: 25.5,20.5 + parent: 1 + - uid: 371 + components: + - type: Transform + pos: 25.5,21.5 + parent: 1 + - uid: 373 + components: + - type: Transform + pos: 25.5,23.5 + parent: 1 + - uid: 374 + components: + - type: Transform + pos: 25.5,24.5 + parent: 1 + - uid: 375 + components: + - type: Transform + pos: 25.5,25.5 + parent: 1 + - uid: 376 + components: + - type: Transform + pos: 31.5,37.5 + parent: 1 + - uid: 377 + components: + - type: Transform + pos: 28.5,37.5 + parent: 1 + - uid: 378 + components: + - type: Transform + pos: 25.5,28.5 + parent: 1 + - uid: 379 + components: + - type: Transform + pos: 25.5,29.5 + parent: 1 + - uid: 380 + components: + - type: Transform + pos: 25.5,30.5 + parent: 1 + - uid: 381 + components: + - type: Transform + pos: 25.5,31.5 + parent: 1 + - uid: 382 + components: + - type: Transform + pos: 25.5,32.5 + parent: 1 + - uid: 383 + components: + - type: Transform + pos: 12.5,33.5 + parent: 1 + - uid: 384 + components: + - type: Transform + pos: 12.5,34.5 + parent: 1 + - uid: 385 + components: + - type: Transform + pos: 12.5,35.5 + parent: 1 + - uid: 388 + components: + - type: Transform + pos: 24.5,3.5 + parent: 1 + - uid: 389 + components: + - type: Transform + pos: 24.5,4.5 + parent: 1 + - uid: 390 + components: + - type: Transform + pos: 24.5,5.5 + parent: 1 + - uid: 391 + components: + - type: Transform + pos: 24.5,6.5 + parent: 1 + - uid: 392 + components: + - type: Transform + pos: 24.5,7.5 + parent: 1 + - uid: 393 + components: + - type: Transform + pos: 24.5,8.5 + parent: 1 + - uid: 395 + components: + - type: Transform + pos: 24.5,10.5 + parent: 1 + - uid: 396 + components: + - type: Transform + pos: 24.5,11.5 + parent: 1 + - uid: 397 + components: + - type: Transform + pos: 24.5,12.5 + parent: 1 + - uid: 398 + components: + - type: Transform + pos: 24.5,13.5 + parent: 1 + - uid: 399 + components: + - type: Transform + pos: 2.5,10.5 + parent: 1 + - uid: 400 + components: + - type: Transform + pos: 3.5,10.5 + parent: 1 + - uid: 402 + components: + - type: Transform + pos: 10.5,16.5 + parent: 1 + - uid: 403 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 404 + components: + - type: Transform + pos: 24.5,19.5 + parent: 1 + - uid: 405 + components: + - type: Transform + pos: 24.5,20.5 + parent: 1 + - uid: 406 + components: + - type: Transform + pos: 24.5,21.5 + parent: 1 + - uid: 407 + components: + - type: Transform + pos: 24.5,22.5 + parent: 1 + - uid: 409 + components: + - type: Transform + pos: 26.5,21.5 + parent: 1 + - uid: 411 + components: + - type: Transform + pos: 24.5,26.5 + parent: 1 + - uid: 412 + components: + - type: Transform + pos: 24.5,27.5 + parent: 1 + - uid: 413 + components: + - type: Transform + pos: 24.5,28.5 + parent: 1 + - uid: 414 + components: + - type: Transform + pos: 24.5,29.5 + parent: 1 + - uid: 415 + components: + - type: Transform + pos: 24.5,30.5 + parent: 1 + - uid: 416 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 14.5,31.5 + parent: 1 + - uid: 417 + components: + - type: Transform + pos: 24.5,32.5 + parent: 1 + - uid: 418 + components: + - type: Transform + pos: 24.5,33.5 + parent: 1 + - uid: 419 + components: + - type: Transform + pos: 13.5,35.5 + parent: 1 + - uid: 420 + components: + - type: Transform + pos: 35.5,36.5 + parent: 1 + - uid: 421 + components: + - type: Transform + pos: 35.5,37.5 + parent: 1 + - uid: 422 + components: + - type: Transform + pos: 33.5,36.5 + parent: 1 + - uid: 423 + components: + - type: Transform + pos: 23.5,3.5 + parent: 1 + - uid: 424 + components: + - type: Transform + pos: 23.5,4.5 + parent: 1 + - uid: 425 + components: + - type: Transform + pos: 23.5,5.5 + parent: 1 + - uid: 427 + components: + - type: Transform + pos: 23.5,7.5 + parent: 1 + - uid: 428 + components: + - type: Transform + pos: 23.5,8.5 + parent: 1 + - uid: 429 + components: + - type: Transform + pos: 23.5,9.5 + parent: 1 + - uid: 430 + components: + - type: Transform + pos: 23.5,10.5 + parent: 1 + - uid: 431 + components: + - type: Transform + pos: 23.5,11.5 + parent: 1 + - uid: 432 + components: + - type: Transform + pos: 23.5,12.5 + parent: 1 + - uid: 433 + components: + - type: Transform + pos: 23.5,13.5 + parent: 1 + - uid: 434 + components: + - type: Transform + pos: 23.5,14.5 + parent: 1 + - uid: 435 + components: + - type: Transform + pos: 23.5,15.5 + parent: 1 + - uid: 436 + components: + - type: Transform + pos: 23.5,16.5 + parent: 1 + - uid: 437 + components: + - type: Transform + pos: 23.5,17.5 + parent: 1 + - uid: 438 + components: + - type: Transform + pos: 23.5,18.5 + parent: 1 + - uid: 439 + components: + - type: Transform + pos: 23.5,19.5 + parent: 1 + - uid: 440 + components: + - type: Transform + pos: 23.5,20.5 + parent: 1 + - uid: 441 + components: + - type: Transform + pos: 23.5,21.5 + parent: 1 + - uid: 442 + components: + - type: Transform + pos: 23.5,22.5 + parent: 1 + - uid: 443 + components: + - type: Transform + pos: 20.5,21.5 + parent: 1 + - uid: 445 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 24.5,34.5 + parent: 1 + - uid: 446 + components: + - type: Transform + pos: 23.5,26.5 + parent: 1 + - uid: 447 + components: + - type: Transform + pos: 23.5,27.5 + parent: 1 + - uid: 448 + components: + - type: Transform + pos: 23.5,28.5 + parent: 1 + - uid: 449 + components: + - type: Transform + pos: 23.5,29.5 + parent: 1 + - uid: 450 + components: + - type: Transform + pos: 23.5,30.5 + parent: 1 + - uid: 451 + components: + - type: Transform + pos: 23.5,31.5 + parent: 1 + - uid: 453 + components: + - type: Transform + pos: 23.5,33.5 + parent: 1 + - uid: 454 + components: + - type: Transform + pos: 23.5,34.5 + parent: 1 + - uid: 455 + components: + - type: Transform + pos: 23.5,35.5 + parent: 1 + - uid: 456 + components: + - type: Transform + pos: 14.5,32.5 + parent: 1 + - uid: 457 + components: + - type: Transform + pos: 26.5,1.5 + parent: 1 + - uid: 458 + components: + - type: Transform + pos: 22.5,3.5 + parent: 1 + - uid: 459 + components: + - type: Transform + pos: 22.5,4.5 + parent: 1 + - uid: 460 + components: + - type: Transform + pos: 22.5,5.5 + parent: 1 + - uid: 461 + components: + - type: Transform + pos: 22.5,6.5 + parent: 1 + - uid: 462 + components: + - type: Transform + pos: 22.5,7.5 + parent: 1 + - uid: 463 + components: + - type: Transform + pos: 22.5,8.5 + parent: 1 + - uid: 464 + components: + - type: Transform + pos: 22.5,9.5 + parent: 1 + - uid: 465 + components: + - type: Transform + pos: 22.5,10.5 + parent: 1 + - uid: 466 + components: + - type: Transform + pos: 22.5,11.5 + parent: 1 + - uid: 467 + components: + - type: Transform + pos: 22.5,12.5 + parent: 1 + - uid: 468 + components: + - type: Transform + pos: 22.5,13.5 + parent: 1 + - uid: 469 + components: + - type: Transform + pos: 22.5,14.5 + parent: 1 + - uid: 470 + components: + - type: Transform + pos: 22.5,15.5 + parent: 1 + - uid: 471 + components: + - type: Transform + pos: 22.5,16.5 + parent: 1 + - uid: 472 + components: + - type: Transform + pos: 22.5,17.5 + parent: 1 + - uid: 473 + components: + - type: Transform + pos: 22.5,18.5 + parent: 1 + - uid: 474 + components: + - type: Transform + pos: 22.5,19.5 + parent: 1 + - uid: 475 + components: + - type: Transform + pos: 22.5,20.5 + parent: 1 + - uid: 476 + components: + - type: Transform + pos: 22.5,21.5 + parent: 1 + - uid: 477 + components: + - type: Transform + pos: 22.5,22.5 + parent: 1 + - uid: 478 + components: + - type: Transform + pos: 3.5,29.5 + parent: 1 + - uid: 479 + components: + - type: Transform + pos: 10.5,35.5 + parent: 1 + - uid: 480 + components: + - type: Transform + pos: 18.5,36.5 + parent: 1 + - uid: 481 + components: + - type: Transform + pos: 22.5,26.5 + parent: 1 + - uid: 482 + components: + - type: Transform + pos: 22.5,27.5 + parent: 1 + - uid: 483 + components: + - type: Transform + pos: 22.5,28.5 + parent: 1 + - uid: 484 + components: + - type: Transform + pos: 22.5,29.5 + parent: 1 + - uid: 485 + components: + - type: Transform + pos: 22.5,30.5 + parent: 1 + - uid: 486 + components: + - type: Transform + pos: 22.5,31.5 + parent: 1 + - uid: 487 + components: + - type: Transform + pos: 22.5,32.5 + parent: 1 + - uid: 488 + components: + - type: Transform + pos: 22.5,33.5 + parent: 1 + - uid: 489 + components: + - type: Transform + pos: 22.5,34.5 + parent: 1 + - uid: 490 + components: + - type: Transform + pos: 22.5,35.5 + parent: 1 + - uid: 491 + components: + - type: Transform + pos: 22.5,36.5 + parent: 1 + - uid: 492 + components: + - type: Transform + pos: 21.5,2.5 + parent: 1 + - uid: 493 + components: + - type: Transform + pos: 21.5,3.5 + parent: 1 + - uid: 494 + components: + - type: Transform + pos: 21.5,4.5 + parent: 1 + - uid: 495 + components: + - type: Transform + pos: 21.5,5.5 + parent: 1 + - uid: 496 + components: + - type: Transform + pos: 21.5,6.5 + parent: 1 + - uid: 497 + components: + - type: Transform + pos: 21.5,7.5 + parent: 1 + - uid: 498 + components: + - type: Transform + pos: 21.5,8.5 + parent: 1 + - uid: 499 + components: + - type: Transform + pos: 21.5,9.5 + parent: 1 + - uid: 500 + components: + - type: Transform + pos: 21.5,10.5 + parent: 1 + - uid: 501 + components: + - type: Transform + pos: 21.5,11.5 + parent: 1 + - uid: 502 + components: + - type: Transform + pos: 21.5,12.5 + parent: 1 + - uid: 503 + components: + - type: Transform + pos: 21.5,13.5 + parent: 1 + - uid: 504 + components: + - type: Transform + pos: 21.5,14.5 + parent: 1 + - uid: 505 + components: + - type: Transform + pos: 21.5,15.5 + parent: 1 + - uid: 506 + components: + - type: Transform + pos: 21.5,16.5 + parent: 1 + - uid: 507 + components: + - type: Transform + pos: 21.5,17.5 + parent: 1 + - uid: 508 + components: + - type: Transform + pos: 21.5,18.5 + parent: 1 + - uid: 509 + components: + - type: Transform + pos: 21.5,19.5 + parent: 1 + - uid: 510 + components: + - type: Transform + pos: 21.5,20.5 + parent: 1 + - uid: 511 + components: + - type: Transform + pos: 21.5,21.5 + parent: 1 + - uid: 512 + components: + - type: Transform + pos: 21.5,22.5 + parent: 1 + - uid: 513 + components: + - type: Transform + pos: 21.5,23.5 + parent: 1 + - uid: 514 + components: + - type: Transform + pos: 21.5,24.5 + parent: 1 + - uid: 515 + components: + - type: Transform + pos: 21.5,25.5 + parent: 1 + - uid: 516 + components: + - type: Transform + pos: 21.5,26.5 + parent: 1 + - uid: 517 + components: + - type: Transform + pos: 21.5,27.5 + parent: 1 + - uid: 518 + components: + - type: Transform + pos: 21.5,28.5 + parent: 1 + - uid: 519 + components: + - type: Transform + pos: 21.5,29.5 + parent: 1 + - uid: 520 + components: + - type: Transform + pos: 21.5,30.5 + parent: 1 + - uid: 521 + components: + - type: Transform + pos: 21.5,31.5 + parent: 1 + - uid: 522 + components: + - type: Transform + pos: 25.5,36.5 + parent: 1 + - uid: 523 + components: + - type: Transform + pos: 21.5,33.5 + parent: 1 + - uid: 524 + components: + - type: Transform + pos: 21.5,34.5 + parent: 1 + - uid: 525 + components: + - type: Transform + pos: 21.5,35.5 + parent: 1 + - uid: 526 + components: + - type: Transform + pos: 14.5,37.5 + parent: 1 + - uid: 527 + components: + - type: Transform + pos: 20.5,2.5 + parent: 1 + - uid: 528 + components: + - type: Transform + pos: 20.5,3.5 + parent: 1 + - uid: 529 + components: + - type: Transform + pos: 20.5,4.5 + parent: 1 + - uid: 530 + components: + - type: Transform + pos: 20.5,5.5 + parent: 1 + - uid: 531 + components: + - type: Transform + pos: 20.5,6.5 + parent: 1 + - uid: 532 + components: + - type: Transform + pos: 20.5,7.5 + parent: 1 + - uid: 533 + components: + - type: Transform + pos: 20.5,8.5 + parent: 1 + - uid: 534 + components: + - type: Transform + pos: 20.5,9.5 + parent: 1 + - uid: 535 + components: + - type: Transform + pos: 20.5,10.5 + parent: 1 + - uid: 536 + components: + - type: Transform + pos: 20.5,11.5 + parent: 1 + - uid: 537 + components: + - type: Transform + pos: 20.5,12.5 + parent: 1 + - uid: 538 + components: + - type: Transform + pos: 20.5,13.5 + parent: 1 + - uid: 539 + components: + - type: Transform + pos: 20.5,14.5 + parent: 1 + - uid: 542 + components: + - type: Transform + pos: 24.5,23.5 + parent: 1 + - uid: 543 + components: + - type: Transform + pos: 20.5,18.5 + parent: 1 + - uid: 544 + components: + - type: Transform + pos: 20.5,19.5 + parent: 1 + - uid: 545 + components: + - type: Transform + pos: 20.5,20.5 + parent: 1 + - uid: 547 + components: + - type: Transform + pos: 20.5,22.5 + parent: 1 + - uid: 548 + components: + - type: Transform + pos: 20.5,23.5 + parent: 1 + - uid: 549 + components: + - type: Transform + pos: 20.5,24.5 + parent: 1 + - uid: 550 + components: + - type: Transform + pos: 20.5,25.5 + parent: 1 + - uid: 551 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 20.5,27.5 + parent: 1 + - uid: 552 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 25.5,33.5 + parent: 1 + - uid: 553 + components: + - type: Transform + pos: 20.5,28.5 + parent: 1 + - uid: 555 + components: + - type: Transform + pos: 20.5,30.5 + parent: 1 + - uid: 556 + components: + - type: Transform + pos: 20.5,32.5 + parent: 1 + - uid: 558 + components: + - type: Transform + pos: 27.5,35.5 + parent: 1 + - uid: 559 + components: + - type: Transform + pos: 20.5,34.5 + parent: 1 + - uid: 560 + components: + - type: Transform + pos: 20.5,35.5 + parent: 1 + - uid: 561 + components: + - type: Transform + pos: 19.5,36.5 + parent: 1 + - uid: 562 + components: + - type: Transform + pos: 33.5,34.5 + parent: 1 + - uid: 563 + components: + - type: Transform + pos: 19.5,3.5 + parent: 1 + - uid: 564 + components: + - type: Transform + pos: 19.5,4.5 + parent: 1 + - uid: 565 + components: + - type: Transform + pos: 19.5,5.5 + parent: 1 + - uid: 566 + components: + - type: Transform + pos: 19.5,6.5 + parent: 1 + - uid: 567 + components: + - type: Transform + pos: 19.5,7.5 + parent: 1 + - uid: 568 + components: + - type: Transform + pos: 19.5,8.5 + parent: 1 + - uid: 571 + components: + - type: Transform + pos: 15.5,4.5 + parent: 1 + - uid: 573 + components: + - type: Transform + pos: 9.5,4.5 + parent: 1 + - uid: 574 + components: + - type: Transform + pos: 19.5,14.5 + parent: 1 + - uid: 575 + components: + - type: Transform + pos: 20.5,15.5 + parent: 1 + - uid: 576 + components: + - type: Transform + pos: 18.5,17.5 + parent: 1 + - uid: 577 + components: + - type: Transform + pos: 22.5,23.5 + parent: 1 + - uid: 578 + components: + - type: Transform + pos: 19.5,18.5 + parent: 1 + - uid: 580 + components: + - type: Transform + pos: 19.5,20.5 + parent: 1 + - uid: 581 + components: + - type: Transform + pos: 19.5,21.5 + parent: 1 + - uid: 582 + components: + - type: Transform + pos: 19.5,22.5 + parent: 1 + - uid: 583 + components: + - type: Transform + pos: 19.5,23.5 + parent: 1 + - uid: 584 + components: + - type: Transform + pos: 19.5,24.5 + parent: 1 + - uid: 585 + components: + - type: Transform + pos: 19.5,25.5 + parent: 1 + - uid: 586 + components: + - type: Transform + pos: 19.5,26.5 + parent: 1 + - uid: 587 + components: + - type: Transform + pos: 19.5,27.5 + parent: 1 + - uid: 588 + components: + - type: Transform + pos: 19.5,28.5 + parent: 1 + - uid: 589 + components: + - type: Transform + pos: 19.5,29.5 + parent: 1 + - uid: 590 + components: + - type: Transform + pos: 19.5,30.5 + parent: 1 + - uid: 591 + components: + - type: Transform + pos: 19.5,31.5 + parent: 1 + - uid: 593 + components: + - type: Transform + pos: 19.5,33.5 + parent: 1 + - uid: 594 + components: + - type: Transform + pos: 19.5,34.5 + parent: 1 + - uid: 595 + components: + - type: Transform + pos: 19.5,35.5 + parent: 1 + - uid: 596 + components: + - type: Transform + pos: 9.5,35.5 + parent: 1 + - uid: 597 + components: + - type: Transform + pos: 33.5,33.5 + parent: 1 + - uid: 598 + components: + - type: Transform + pos: 18.5,3.5 + parent: 1 + - uid: 599 + components: + - type: Transform + pos: 18.5,4.5 + parent: 1 + - uid: 600 + components: + - type: Transform + pos: 18.5,5.5 + parent: 1 + - uid: 601 + components: + - type: Transform + pos: 18.5,6.5 + parent: 1 + - uid: 602 + components: + - type: Transform + pos: 18.5,7.5 + parent: 1 + - uid: 603 + components: + - type: Transform + pos: 18.5,8.5 + parent: 1 + - uid: 605 + components: + - type: Transform + pos: 10.5,2.5 + parent: 1 + - uid: 606 + components: + - type: Transform + pos: 15.5,3.5 + parent: 1 + - uid: 608 + components: + - type: Transform + pos: 8.5,4.5 + parent: 1 + - uid: 609 + components: + - type: Transform + pos: 18.5,14.5 + parent: 1 + - uid: 613 + components: + - type: Transform + pos: 18.5,18.5 + parent: 1 + - uid: 614 + components: + - type: Transform + pos: 18.5,19.5 + parent: 1 + - uid: 615 + components: + - type: Transform + pos: 18.5,20.5 + parent: 1 + - uid: 616 + components: + - type: Transform + pos: 18.5,21.5 + parent: 1 + - uid: 617 + components: + - type: Transform + pos: 18.5,22.5 + parent: 1 + - uid: 618 + components: + - type: Transform + pos: 18.5,23.5 + parent: 1 + - uid: 619 + components: + - type: Transform + pos: 18.5,24.5 + parent: 1 + - uid: 620 + components: + - type: Transform + pos: 18.5,25.5 + parent: 1 + - uid: 621 + components: + - type: Transform + pos: 18.5,26.5 + parent: 1 + - uid: 622 + components: + - type: Transform + pos: 18.5,27.5 + parent: 1 + - uid: 623 + components: + - type: Transform + pos: 18.5,28.5 + parent: 1 + - uid: 624 + components: + - type: Transform + pos: 18.5,29.5 + parent: 1 + - uid: 625 + components: + - type: Transform + pos: 18.5,30.5 + parent: 1 + - uid: 626 + components: + - type: Transform + pos: 18.5,31.5 + parent: 1 + - uid: 627 + components: + - type: Transform + pos: 18.5,32.5 + parent: 1 + - uid: 628 + components: + - type: Transform + pos: 18.5,33.5 + parent: 1 + - uid: 629 + components: + - type: Transform + pos: 18.5,34.5 + parent: 1 + - uid: 630 + components: + - type: Transform + pos: 8.5,33.5 + parent: 1 + - uid: 631 + components: + - type: Transform + pos: 6.5,33.5 + parent: 1 + - uid: 632 + components: + - type: Transform + pos: 32.5,35.5 + parent: 1 + - uid: 633 + components: + - type: Transform + pos: 32.5,34.5 + parent: 1 + - uid: 634 + components: + - type: Transform + pos: 32.5,33.5 + parent: 1 + - uid: 635 + components: + - type: Transform + pos: 17.5,5.5 + parent: 1 + - uid: 636 + components: + - type: Transform + pos: 17.5,6.5 + parent: 1 + - uid: 637 + components: + - type: Transform + pos: 17.5,7.5 + parent: 1 + - uid: 638 + components: + - type: Transform + pos: 17.5,8.5 + parent: 1 + - uid: 640 + components: + - type: Transform + pos: 12.5,3.5 + parent: 1 + - uid: 641 + components: + - type: Transform + pos: 16.5,3.5 + parent: 1 + - uid: 642 + components: + - type: Transform + pos: 12.5,2.5 + parent: 1 + - uid: 643 + components: + - type: Transform + pos: 10.5,4.5 + parent: 1 + - uid: 644 + components: + - type: Transform + pos: 17.5,14.5 + parent: 1 + - uid: 645 + components: + - type: Transform + pos: 17.5,15.5 + parent: 1 + - uid: 646 + components: + - type: Transform + pos: 17.5,16.5 + parent: 1 + - uid: 647 + components: + - type: Transform + pos: 17.5,17.5 + parent: 1 + - uid: 648 + components: + - type: Transform + pos: 17.5,18.5 + parent: 1 + - uid: 649 + components: + - type: Transform + pos: 17.5,19.5 + parent: 1 + - uid: 650 + components: + - type: Transform + pos: 17.5,20.5 + parent: 1 + - uid: 651 + components: + - type: Transform + pos: 17.5,21.5 + parent: 1 + - uid: 652 + components: + - type: Transform + pos: 17.5,22.5 + parent: 1 + - uid: 653 + components: + - type: Transform + pos: 17.5,23.5 + parent: 1 + - uid: 654 + components: + - type: Transform + pos: 17.5,24.5 + parent: 1 + - uid: 655 + components: + - type: Transform + pos: 17.5,25.5 + parent: 1 + - uid: 656 + components: + - type: Transform + pos: 17.5,26.5 + parent: 1 + - uid: 657 + components: + - type: Transform + pos: 17.5,27.5 + parent: 1 + - uid: 658 + components: + - type: Transform + pos: 17.5,28.5 + parent: 1 + - uid: 659 + components: + - type: Transform + pos: 17.5,29.5 + parent: 1 + - uid: 660 + components: + - type: Transform + pos: 17.5,30.5 + parent: 1 + - uid: 661 + components: + - type: Transform + pos: 17.5,31.5 + parent: 1 + - uid: 663 + components: + - type: Transform + pos: 16.5,35.5 + parent: 1 + - uid: 664 + components: + - type: Transform + pos: 9.5,33.5 + parent: 1 + - uid: 665 + components: + - type: Transform + pos: 8.5,36.5 + parent: 1 + - uid: 666 + components: + - type: Transform + pos: 7.5,35.5 + parent: 1 + - uid: 667 + components: + - type: Transform + pos: 2.5,27.5 + parent: 1 + - uid: 668 + components: + - type: Transform + pos: 17.5,35.5 + parent: 1 + - uid: 670 + components: + - type: Transform + pos: 16.5,5.5 + parent: 1 + - uid: 671 + components: + - type: Transform + pos: 16.5,6.5 + parent: 1 + - uid: 672 + components: + - type: Transform + pos: 16.5,7.5 + parent: 1 + - uid: 673 + components: + - type: Transform + pos: 16.5,8.5 + parent: 1 + - uid: 675 + components: + - type: Transform + pos: 11.5,2.5 + parent: 1 + - uid: 676 + components: + - type: Transform + pos: 11.5,3.5 + parent: 1 + - uid: 677 + components: + - type: Transform + pos: 17.5,3.5 + parent: 1 + - uid: 678 + components: + - type: Transform + pos: 10.5,3.5 + parent: 1 + - uid: 679 + components: + - type: Transform + pos: 16.5,14.5 + parent: 1 + - uid: 680 + components: + - type: Transform + pos: 16.5,15.5 + parent: 1 + - uid: 681 + components: + - type: Transform + pos: 16.5,16.5 + parent: 1 + - uid: 682 + components: + - type: Transform + pos: 16.5,17.5 + parent: 1 + - uid: 683 + components: + - type: Transform + pos: 16.5,18.5 + parent: 1 + - uid: 684 + components: + - type: Transform + pos: 16.5,19.5 + parent: 1 + - uid: 690 + components: + - type: Transform + pos: 16.5,25.5 + parent: 1 + - uid: 691 + components: + - type: Transform + pos: 16.5,26.5 + parent: 1 + - uid: 693 + components: + - type: Transform + pos: 16.5,28.5 + parent: 1 + - uid: 694 + components: + - type: Transform + pos: 16.5,29.5 + parent: 1 + - uid: 695 + components: + - type: Transform + pos: 16.5,30.5 + parent: 1 + - uid: 696 + components: + - type: Transform + pos: 16.5,31.5 + parent: 1 + - uid: 697 + components: + - type: Transform + pos: 16.5,37.5 + parent: 1 + - uid: 698 + components: + - type: Transform + pos: 15.5,37.5 + parent: 1 + - uid: 699 + components: + - type: Transform + pos: 13.5,36.5 + parent: 1 + - uid: 700 + components: + - type: Transform + pos: 11.5,37.5 + parent: 1 + - uid: 701 + components: + - type: Transform + pos: 10.5,33.5 + parent: 1 + - uid: 702 + components: + - type: Transform + pos: 11.5,34.5 + parent: 1 + - uid: 703 + components: + - type: Transform + pos: 36.5,26.5 + parent: 1 + - uid: 704 + components: + - type: Transform + pos: 26.5,25.5 + parent: 1 + - uid: 705 + components: + - type: Transform + pos: 29.5,37.5 + parent: 1 + - uid: 706 + components: + - type: Transform + pos: 15.5,6.5 + parent: 1 + - uid: 707 + components: + - type: Transform + pos: 15.5,7.5 + parent: 1 + - uid: 708 + components: + - type: Transform + pos: 15.5,8.5 + parent: 1 + - uid: 714 + components: + - type: Transform + pos: 15.5,14.5 + parent: 1 + - uid: 715 + components: + - type: Transform + pos: 15.5,15.5 + parent: 1 + - uid: 716 + components: + - type: Transform + pos: 15.5,16.5 + parent: 1 + - uid: 717 + components: + - type: Transform + pos: 15.5,17.5 + parent: 1 + - uid: 718 + components: + - type: Transform + pos: 15.5,18.5 + parent: 1 + - uid: 719 + components: + - type: Transform + pos: 15.5,19.5 + parent: 1 + - uid: 720 + components: + - type: Transform + pos: 22.5,25.5 + parent: 1 + - uid: 723 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 17.5,34.5 + parent: 1 + - uid: 725 + components: + - type: Transform + pos: 15.5,25.5 + parent: 1 + - uid: 726 + components: + - type: Transform + pos: 15.5,26.5 + parent: 1 + - uid: 727 + components: + - type: Transform + pos: 15.5,27.5 + parent: 1 + - uid: 728 + components: + - type: Transform + pos: 15.5,28.5 + parent: 1 + - uid: 729 + components: + - type: Transform + pos: 15.5,29.5 + parent: 1 + - uid: 730 + components: + - type: Transform + pos: 15.5,30.5 + parent: 1 + - uid: 737 + components: + - type: Transform + pos: 33.5,26.5 + parent: 1 + - uid: 738 + components: + - type: Transform + pos: 34.5,26.5 + parent: 1 + - uid: 739 + components: + - type: Transform + pos: 2.5,22.5 + parent: 1 + - uid: 740 + components: + - type: Transform + pos: 31.5,35.5 + parent: 1 + - uid: 741 + components: + - type: Transform + pos: 14.5,6.5 + parent: 1 + - uid: 742 + components: + - type: Transform + pos: 14.5,7.5 + parent: 1 + - uid: 743 + components: + - type: Transform + pos: 14.5,8.5 + parent: 1 + - uid: 744 + components: + - type: Transform + pos: 14.5,9.5 + parent: 1 + - uid: 745 + components: + - type: Transform + pos: 14.5,10.5 + parent: 1 + - uid: 746 + components: + - type: Transform + pos: 14.5,11.5 + parent: 1 + - uid: 747 + components: + - type: Transform + pos: 14.5,12.5 + parent: 1 + - uid: 748 + components: + - type: Transform + pos: 14.5,13.5 + parent: 1 + - uid: 749 + components: + - type: Transform + pos: 14.5,14.5 + parent: 1 + - uid: 750 + components: + - type: Transform + pos: 14.5,15.5 + parent: 1 + - uid: 751 + components: + - type: Transform + pos: 14.5,16.5 + parent: 1 + - uid: 752 + components: + - type: Transform + pos: 14.5,17.5 + parent: 1 + - uid: 753 + components: + - type: Transform + pos: 14.5,18.5 + parent: 1 + - uid: 754 + components: + - type: Transform + pos: 14.5,19.5 + parent: 1 + - uid: 758 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 23.5,36.5 + parent: 1 + - uid: 760 + components: + - type: Transform + pos: 14.5,25.5 + parent: 1 + - uid: 761 + components: + - type: Transform + pos: 14.5,26.5 + parent: 1 + - uid: 762 + components: + - type: Transform + pos: 14.5,27.5 + parent: 1 + - uid: 763 + components: + - type: Transform + pos: 14.5,28.5 + parent: 1 + - uid: 764 + components: + - type: Transform + pos: 14.5,29.5 + parent: 1 + - uid: 765 + components: + - type: Transform + pos: 14.5,30.5 + parent: 1 + - uid: 766 + components: + - type: Transform + pos: 11.5,33.5 + parent: 1 + - uid: 768 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 19.5,15.5 + parent: 1 + - uid: 769 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 19.5,17.5 + parent: 1 + - uid: 772 + components: + - type: Transform + pos: 2.5,21.5 + parent: 1 + - uid: 773 + components: + - type: Transform + pos: 35.5,26.5 + parent: 1 + - uid: 775 + components: + - type: Transform + pos: 31.5,33.5 + parent: 1 + - uid: 776 + components: + - type: Transform + pos: 13.5,6.5 + parent: 1 + - uid: 777 + components: + - type: Transform + pos: 13.5,7.5 + parent: 1 + - uid: 778 + components: + - type: Transform + pos: 13.5,8.5 + parent: 1 + - uid: 779 + components: + - type: Transform + pos: 13.5,9.5 + parent: 1 + - uid: 780 + components: + - type: Transform + pos: 13.5,10.5 + parent: 1 + - uid: 781 + components: + - type: Transform + pos: 13.5,11.5 + parent: 1 + - uid: 782 + components: + - type: Transform + pos: 13.5,12.5 + parent: 1 + - uid: 783 + components: + - type: Transform + pos: 13.5,13.5 + parent: 1 + - uid: 784 + components: + - type: Transform + pos: 13.5,14.5 + parent: 1 + - uid: 785 + components: + - type: Transform + pos: 13.5,15.5 + parent: 1 + - uid: 786 + components: + - type: Transform + pos: 13.5,16.5 + parent: 1 + - uid: 787 + components: + - type: Transform + pos: 13.5,17.5 + parent: 1 + - uid: 788 + components: + - type: Transform + pos: 13.5,18.5 + parent: 1 + - uid: 789 + components: + - type: Transform + pos: 13.5,19.5 + parent: 1 + - uid: 792 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 16.5,34.5 + parent: 1 + - uid: 795 + components: + - type: Transform + pos: 13.5,25.5 + parent: 1 + - uid: 796 + components: + - type: Transform + pos: 13.5,26.5 + parent: 1 + - uid: 797 + components: + - type: Transform + pos: 13.5,27.5 + parent: 1 + - uid: 798 + components: + - type: Transform + pos: 13.5,28.5 + parent: 1 + - uid: 799 + components: + - type: Transform + pos: 13.5,29.5 + parent: 1 + - uid: 800 + components: + - type: Transform + pos: 13.5,30.5 + parent: 1 + - uid: 801 + components: + - type: Transform + pos: 13.5,32.5 + parent: 1 + - uid: 803 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 20.5,16.5 + parent: 1 + - uid: 804 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 18.5,16.5 + parent: 1 + - uid: 807 + components: + - type: Transform + pos: 33.5,25.5 + parent: 1 + - uid: 808 + components: + - type: Transform + pos: 36.5,29.5 + parent: 1 + - uid: 809 + components: + - type: Transform + pos: 26.5,34.5 + parent: 1 + - uid: 810 + components: + - type: Transform + pos: 31.5,34.5 + parent: 1 + - uid: 811 + components: + - type: Transform + pos: 12.5,6.5 + parent: 1 + - uid: 812 + components: + - type: Transform + pos: 12.5,7.5 + parent: 1 + - uid: 813 + components: + - type: Transform + pos: 12.5,8.5 + parent: 1 + - uid: 814 + components: + - type: Transform + pos: 12.5,9.5 + parent: 1 + - uid: 815 + components: + - type: Transform + pos: 12.5,10.5 + parent: 1 + - uid: 816 + components: + - type: Transform + pos: 12.5,11.5 + parent: 1 + - uid: 817 + components: + - type: Transform + pos: 12.5,12.5 + parent: 1 + - uid: 818 + components: + - type: Transform + pos: 12.5,13.5 + parent: 1 + - uid: 819 + components: + - type: Transform + pos: 12.5,14.5 + parent: 1 + - uid: 820 + components: + - type: Transform + pos: 12.5,15.5 + parent: 1 + - uid: 824 + components: + - type: Transform + pos: 12.5,19.5 + parent: 1 + - uid: 826 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,32.5 + parent: 1 + - uid: 830 + components: + - type: Transform + pos: 12.5,25.5 + parent: 1 + - uid: 831 + components: + - type: Transform + pos: 12.5,26.5 + parent: 1 + - uid: 832 + components: + - type: Transform + pos: 12.5,27.5 + parent: 1 + - uid: 833 + components: + - type: Transform + pos: 12.5,28.5 + parent: 1 + - uid: 834 + components: + - type: Transform + pos: 12.5,29.5 + parent: 1 + - uid: 835 + components: + - type: Transform + pos: 12.5,30.5 + parent: 1 + - uid: 836 + components: + - type: Transform + pos: 12.5,32.5 + parent: 1 + - uid: 843 + components: + - type: Transform + pos: 36.5,27.5 + parent: 1 + - uid: 845 + components: + - type: Transform + pos: 11.5,5.5 + parent: 1 + - uid: 846 + components: + - type: Transform + pos: 11.5,6.5 + parent: 1 + - uid: 847 + components: + - type: Transform + pos: 11.5,7.5 + parent: 1 + - uid: 848 + components: + - type: Transform + pos: 11.5,8.5 + parent: 1 + - uid: 849 + components: + - type: Transform + pos: 11.5,9.5 + parent: 1 + - uid: 850 + components: + - type: Transform + pos: 11.5,10.5 + parent: 1 + - uid: 851 + components: + - type: Transform + pos: 11.5,11.5 + parent: 1 + - uid: 852 + components: + - type: Transform + pos: 11.5,12.5 + parent: 1 + - uid: 853 + components: + - type: Transform + pos: 11.5,13.5 + parent: 1 + - uid: 854 + components: + - type: Transform + pos: 11.5,14.5 + parent: 1 + - uid: 855 + components: + - type: Transform + pos: 11.5,15.5 + parent: 1 + - uid: 859 + components: + - type: Transform + pos: 11.5,19.5 + parent: 1 + - uid: 860 + components: + - type: Transform + pos: 11.5,20.5 + parent: 1 + - uid: 861 + components: + - type: Transform + pos: 11.5,21.5 + parent: 1 + - uid: 862 + components: + - type: Transform + pos: 11.5,22.5 + parent: 1 + - uid: 863 + components: + - type: Transform + pos: 11.5,23.5 + parent: 1 + - uid: 864 + components: + - type: Transform + pos: 11.5,24.5 + parent: 1 + - uid: 865 + components: + - type: Transform + pos: 11.5,25.5 + parent: 1 + - uid: 866 + components: + - type: Transform + pos: 11.5,26.5 + parent: 1 + - uid: 867 + components: + - type: Transform + pos: 11.5,27.5 + parent: 1 + - uid: 868 + components: + - type: Transform + pos: 11.5,28.5 + parent: 1 + - uid: 869 + components: + - type: Transform + pos: 11.5,29.5 + parent: 1 + - uid: 870 + components: + - type: Transform + pos: 11.5,30.5 + parent: 1 + - uid: 871 + components: + - type: Transform + pos: 11.5,31.5 + parent: 1 + - uid: 877 + components: + - type: Transform + pos: 27.5,33.5 + parent: 1 + - uid: 878 + components: + - type: Transform + pos: 36.5,28.5 + parent: 1 + - uid: 880 + components: + - type: Transform + pos: 10.5,5.5 + parent: 1 + - uid: 881 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 + - uid: 882 + components: + - type: Transform + pos: 10.5,7.5 + parent: 1 + - uid: 883 + components: + - type: Transform + pos: 10.5,8.5 + parent: 1 + - uid: 884 + components: + - type: Transform + pos: 10.5,9.5 + parent: 1 + - uid: 885 + components: + - type: Transform + pos: 10.5,10.5 + parent: 1 + - uid: 886 + components: + - type: Transform + pos: 10.5,11.5 + parent: 1 + - uid: 887 + components: + - type: Transform + pos: 10.5,12.5 + parent: 1 + - uid: 888 + components: + - type: Transform + pos: 10.5,13.5 + parent: 1 + - uid: 889 + components: + - type: Transform + pos: 10.5,14.5 + parent: 1 + - uid: 890 + components: + - type: Transform + pos: 10.5,15.5 + parent: 1 + - uid: 891 + components: + - type: Transform + pos: 10.5,18.5 + parent: 1 + - uid: 893 + components: + - type: Transform + pos: 18.5,15.5 + parent: 1 + - uid: 894 + components: + - type: Transform + pos: 10.5,19.5 + parent: 1 + - uid: 895 + components: + - type: Transform + pos: 10.5,20.5 + parent: 1 + - uid: 896 + components: + - type: Transform + pos: 10.5,21.5 + parent: 1 + - uid: 897 + components: + - type: Transform + pos: 10.5,22.5 + parent: 1 + - uid: 898 + components: + - type: Transform + pos: 10.5,23.5 + parent: 1 + - uid: 899 + components: + - type: Transform + pos: 10.5,24.5 + parent: 1 + - uid: 900 + components: + - type: Transform + pos: 10.5,25.5 + parent: 1 + - uid: 901 + components: + - type: Transform + pos: 10.5,26.5 + parent: 1 + - uid: 902 + components: + - type: Transform + pos: 10.5,27.5 + parent: 1 + - uid: 903 + components: + - type: Transform + pos: 10.5,28.5 + parent: 1 + - uid: 904 + components: + - type: Transform + pos: 10.5,29.5 + parent: 1 + - uid: 905 + components: + - type: Transform + pos: 10.5,30.5 + parent: 1 + - uid: 906 + components: + - type: Transform + pos: 10.5,31.5 + parent: 1 + - uid: 912 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 25.5,34.5 + parent: 1 + - uid: 913 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 27.5,32.5 + parent: 1 + - uid: 915 + components: + - type: Transform + pos: 9.5,5.5 + parent: 1 + - uid: 916 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 + - uid: 918 + components: + - type: Transform + pos: 9.5,8.5 + parent: 1 + - uid: 919 + components: + - type: Transform + pos: 9.5,9.5 + parent: 1 + - uid: 920 + components: + - type: Transform + pos: 9.5,10.5 + parent: 1 + - uid: 921 + components: + - type: Transform + pos: 9.5,11.5 + parent: 1 + - uid: 922 + components: + - type: Transform + pos: 9.5,12.5 + parent: 1 + - uid: 923 + components: + - type: Transform + pos: 9.5,13.5 + parent: 1 + - uid: 924 + components: + - type: Transform + pos: 9.5,14.5 + parent: 1 + - uid: 925 + components: + - type: Transform + pos: 9.5,15.5 + parent: 1 + - uid: 926 + components: + - type: Transform + pos: 9.5,16.5 + parent: 1 + - uid: 927 + components: + - type: Transform + pos: 9.5,17.5 + parent: 1 + - uid: 928 + components: + - type: Transform + pos: 9.5,18.5 + parent: 1 + - uid: 929 + components: + - type: Transform + pos: 9.5,19.5 + parent: 1 + - uid: 930 + components: + - type: Transform + pos: 9.5,20.5 + parent: 1 + - uid: 931 + components: + - type: Transform + pos: 9.5,21.5 + parent: 1 + - uid: 932 + components: + - type: Transform + pos: 9.5,22.5 + parent: 1 + - uid: 933 + components: + - type: Transform + pos: 9.5,23.5 + parent: 1 + - uid: 934 + components: + - type: Transform + pos: 9.5,24.5 + parent: 1 + - uid: 935 + components: + - type: Transform + pos: 9.5,25.5 + parent: 1 + - uid: 936 + components: + - type: Transform + pos: 9.5,26.5 + parent: 1 + - uid: 937 + components: + - type: Transform + pos: 9.5,27.5 + parent: 1 + - uid: 938 + components: + - type: Transform + pos: 9.5,28.5 + parent: 1 + - uid: 939 + components: + - type: Transform + pos: 9.5,29.5 + parent: 1 + - uid: 940 + components: + - type: Transform + pos: 9.5,30.5 + parent: 1 + - uid: 941 + components: + - type: Transform + pos: 9.5,31.5 + parent: 1 + - uid: 947 + components: + - type: Transform + pos: 17.5,33.5 + parent: 1 + - uid: 949 + components: + - type: Transform + pos: 27.5,34.5 + parent: 1 + - uid: 950 + components: + - type: Transform + pos: 8.5,5.5 + parent: 1 + - uid: 951 + components: + - type: Transform + pos: 8.5,6.5 + parent: 1 + - uid: 952 + components: + - type: Transform + pos: 8.5,7.5 + parent: 1 + - uid: 953 + components: + - type: Transform + pos: 8.5,8.5 + parent: 1 + - uid: 954 + components: + - type: Transform + pos: 8.5,9.5 + parent: 1 + - uid: 955 + components: + - type: Transform + pos: 8.5,10.5 + parent: 1 + - uid: 956 + components: + - type: Transform + pos: 8.5,11.5 + parent: 1 + - uid: 957 + components: + - type: Transform + pos: 8.5,12.5 + parent: 1 + - uid: 959 + components: + - type: Transform + pos: 8.5,14.5 + parent: 1 + - uid: 960 + components: + - type: Transform + pos: 8.5,15.5 + parent: 1 + - uid: 961 + components: + - type: Transform + pos: 8.5,16.5 + parent: 1 + - uid: 962 + components: + - type: Transform + pos: 8.5,17.5 + parent: 1 + - uid: 963 + components: + - type: Transform + pos: 8.5,18.5 + parent: 1 + - uid: 964 + components: + - type: Transform + pos: 8.5,19.5 + parent: 1 + - uid: 965 + components: + - type: Transform + pos: 8.5,20.5 + parent: 1 + - uid: 966 + components: + - type: Transform + pos: 8.5,21.5 + parent: 1 + - uid: 967 + components: + - type: Transform + pos: 8.5,22.5 + parent: 1 + - uid: 968 + components: + - type: Transform + pos: 8.5,23.5 + parent: 1 + - uid: 969 + components: + - type: Transform + pos: 8.5,24.5 + parent: 1 + - uid: 970 + components: + - type: Transform + pos: 8.5,25.5 + parent: 1 + - uid: 973 + components: + - type: Transform + pos: 8.5,28.5 + parent: 1 + - uid: 974 + components: + - type: Transform + pos: 8.5,29.5 + parent: 1 + - uid: 975 + components: + - type: Transform + pos: 8.5,30.5 + parent: 1 + - uid: 976 + components: + - type: Transform + pos: 8.5,31.5 + parent: 1 + - uid: 978 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,17.5 + parent: 1 + - uid: 979 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,17.5 + parent: 1 + - uid: 985 + components: + - type: Transform + pos: 7.5,5.5 + parent: 1 + - uid: 986 + components: + - type: Transform + pos: 7.5,6.5 + parent: 1 + - uid: 987 + components: + - type: Transform + pos: 7.5,7.5 + parent: 1 + - uid: 988 + components: + - type: Transform + pos: 7.5,8.5 + parent: 1 + - uid: 989 + components: + - type: Transform + pos: 7.5,9.5 + parent: 1 + - uid: 990 + components: + - type: Transform + pos: 7.5,10.5 + parent: 1 + - uid: 991 + components: + - type: Transform + pos: 7.5,11.5 + parent: 1 + - uid: 992 + components: + - type: Transform + pos: 7.5,12.5 + parent: 1 + - uid: 993 + components: + - type: Transform + pos: 7.5,13.5 + parent: 1 + - uid: 994 + components: + - type: Transform + pos: 7.5,14.5 + parent: 1 + - uid: 995 + components: + - type: Transform + pos: 6.5,26.5 + parent: 1 + - uid: 996 + components: + - type: Transform + pos: 7.5,16.5 + parent: 1 + - uid: 997 + components: + - type: Transform + pos: 7.5,17.5 + parent: 1 + - uid: 998 + components: + - type: Transform + pos: 7.5,18.5 + parent: 1 + - uid: 999 + components: + - type: Transform + pos: 7.5,19.5 + parent: 1 + - uid: 1000 + components: + - type: Transform + pos: 7.5,20.5 + parent: 1 + - uid: 1002 + components: + - type: Transform + pos: 7.5,22.5 + parent: 1 + - uid: 1003 + components: + - type: Transform + pos: 7.5,23.5 + parent: 1 + - uid: 1004 + components: + - type: Transform + pos: 7.5,24.5 + parent: 1 + - uid: 1005 + components: + - type: Transform + pos: 7.5,25.5 + parent: 1 + - uid: 1006 + components: + - type: Transform + pos: 7.5,26.5 + parent: 1 + - uid: 1008 + components: + - type: Transform + pos: 7.5,28.5 + parent: 1 + - uid: 1009 + components: + - type: Transform + pos: 7.5,29.5 + parent: 1 + - uid: 1010 + components: + - type: Transform + pos: 7.5,30.5 + parent: 1 + - uid: 1011 + components: + - type: Transform + pos: 7.5,31.5 + parent: 1 + - uid: 1013 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,18.5 + parent: 1 + - uid: 1014 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,16.5 + parent: 1 + - uid: 1021 + components: + - type: Transform + pos: 12.5,4.5 + parent: 1 + - uid: 1022 + components: + - type: Transform + pos: 6.5,7.5 + parent: 1 + - uid: 1023 + components: + - type: Transform + pos: 6.5,8.5 + parent: 1 + - uid: 1024 + components: + - type: Transform + pos: 6.5,9.5 + parent: 1 + - uid: 1025 + components: + - type: Transform + pos: 6.5,10.5 + parent: 1 + - uid: 1026 + components: + - type: Transform + pos: 6.5,11.5 + parent: 1 + - uid: 1027 + components: + - type: Transform + pos: 6.5,12.5 + parent: 1 + - uid: 1028 + components: + - type: Transform + pos: 6.5,13.5 + parent: 1 + - uid: 1030 + components: + - type: Transform + pos: 6.5,15.5 + parent: 1 + - uid: 1031 + components: + - type: Transform + pos: 6.5,16.5 + parent: 1 + - uid: 1032 + components: + - type: Transform + pos: 6.5,17.5 + parent: 1 + - uid: 1033 + components: + - type: Transform + pos: 6.5,18.5 + parent: 1 + - uid: 1034 + components: + - type: Transform + pos: 6.5,19.5 + parent: 1 + - uid: 1035 + components: + - type: Transform + pos: 6.5,20.5 + parent: 1 + - uid: 1036 + components: + - type: Transform + pos: 6.5,21.5 + parent: 1 + - uid: 1037 + components: + - type: Transform + pos: 6.5,22.5 + parent: 1 + - uid: 1038 + components: + - type: Transform + pos: 6.5,23.5 + parent: 1 + - uid: 1039 + components: + - type: Transform + pos: 6.5,24.5 + parent: 1 + - uid: 1040 + components: + - type: Transform + pos: 6.5,25.5 + parent: 1 + - uid: 1041 + components: + - type: Transform + pos: 7.5,15.5 + parent: 1 + - uid: 1042 + components: + - type: Transform + pos: 6.5,27.5 + parent: 1 + - uid: 1043 + components: + - type: Transform + pos: 6.5,28.5 + parent: 1 + - uid: 1044 + components: + - type: Transform + pos: 6.5,29.5 + parent: 1 + - uid: 1045 + components: + - type: Transform + pos: 6.5,30.5 + parent: 1 + - uid: 1046 + components: + - type: Transform + pos: 8.5,34.5 + parent: 1 + - uid: 1052 + components: + - type: Transform + pos: 10.5,34.5 + parent: 1 + - uid: 1057 + components: + - type: Transform + pos: 12.5,18.5 + parent: 1 + - uid: 1060 + components: + - type: Transform + pos: 5.5,10.5 + parent: 1 + - uid: 1061 + components: + - type: Transform + pos: 5.5,11.5 + parent: 1 + - uid: 1062 + components: + - type: Transform + pos: 5.5,12.5 + parent: 1 + - uid: 1063 + components: + - type: Transform + pos: 5.5,13.5 + parent: 1 + - uid: 1064 + components: + - type: Transform + pos: 5.5,14.5 + parent: 1 + - uid: 1065 + components: + - type: Transform + pos: 5.5,15.5 + parent: 1 + - uid: 1066 + components: + - type: Transform + pos: 5.5,16.5 + parent: 1 + - uid: 1067 + components: + - type: Transform + pos: 5.5,17.5 + parent: 1 + - uid: 1068 + components: + - type: Transform + pos: 5.5,18.5 + parent: 1 + - uid: 1069 + components: + - type: Transform + pos: 5.5,19.5 + parent: 1 + - uid: 1070 + components: + - type: Transform + pos: 5.5,20.5 + parent: 1 + - uid: 1071 + components: + - type: Transform + pos: 5.5,21.5 + parent: 1 + - uid: 1072 + components: + - type: Transform + pos: 5.5,22.5 + parent: 1 + - uid: 1073 + components: + - type: Transform + pos: 5.5,23.5 + parent: 1 + - uid: 1074 + components: + - type: Transform + pos: 5.5,24.5 + parent: 1 + - uid: 1075 + components: + - type: Transform + pos: 5.5,25.5 + parent: 1 + - uid: 1076 + components: + - type: Transform + pos: 5.5,26.5 + parent: 1 + - uid: 1077 + components: + - type: Transform + pos: 5.5,27.5 + parent: 1 + - uid: 1078 + components: + - type: Transform + pos: 5.5,28.5 + parent: 1 + - uid: 1079 + components: + - type: Transform + pos: 5.5,29.5 + parent: 1 + - uid: 1080 + components: + - type: Transform + pos: 5.5,30.5 + parent: 1 + - uid: 1081 + components: + - type: Transform + pos: 7.5,34.5 + parent: 1 + - uid: 1087 + components: + - type: Transform + pos: 14.5,36.5 + parent: 1 + - uid: 1095 + components: + - type: Transform + pos: 4.5,10.5 + parent: 1 + - uid: 1096 + components: + - type: Transform + pos: 4.5,11.5 + parent: 1 + - uid: 1097 + components: + - type: Transform + pos: 4.5,12.5 + parent: 1 + - uid: 1098 + components: + - type: Transform + pos: 4.5,13.5 + parent: 1 + - uid: 1099 + components: + - type: Transform + pos: 4.5,14.5 + parent: 1 + - uid: 1100 + components: + - type: Transform + pos: 4.5,15.5 + parent: 1 + - uid: 1101 + components: + - type: Transform + pos: 4.5,16.5 + parent: 1 + - uid: 1102 + components: + - type: Transform + pos: 4.5,17.5 + parent: 1 + - uid: 1103 + components: + - type: Transform + pos: 4.5,18.5 + parent: 1 + - uid: 1104 + components: + - type: Transform + pos: 4.5,19.5 + parent: 1 + - uid: 1105 + components: + - type: Transform + pos: 4.5,20.5 + parent: 1 + - uid: 1106 + components: + - type: Transform + pos: 4.5,21.5 + parent: 1 + - uid: 1107 + components: + - type: Transform + pos: 4.5,22.5 + parent: 1 + - uid: 1108 + components: + - type: Transform + pos: 4.5,23.5 + parent: 1 + - uid: 1109 + components: + - type: Transform + pos: 4.5,24.5 + parent: 1 + - uid: 1110 + components: + - type: Transform + pos: 4.5,25.5 + parent: 1 + - uid: 1111 + components: + - type: Transform + pos: 4.5,26.5 + parent: 1 + - uid: 1112 + components: + - type: Transform + pos: 4.5,27.5 + parent: 1 + - uid: 1113 + components: + - type: Transform + pos: 4.5,28.5 + parent: 1 + - uid: 1114 + components: + - type: Transform + pos: 4.5,29.5 + parent: 1 + - uid: 1115 + components: + - type: Transform + pos: 8.5,35.5 + parent: 1 + - uid: 1116 + components: + - type: Transform + pos: 6.5,34.5 + parent: 1 + - uid: 1122 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 26.5,33.5 + parent: 1 + - uid: 1123 + components: + - type: Transform + pos: 25.5,22.5 + parent: 1 + - uid: 1127 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 24.5,31.5 + parent: 1 + - uid: 1130 + components: + - type: Transform + pos: 17.5,37.5 + parent: 1 + - uid: 1131 + components: + - type: Transform + pos: 11.5,36.5 + parent: 1 + - uid: 1132 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 + - uid: 1133 + components: + - type: Transform + pos: 3.5,13.5 + parent: 1 + - uid: 1134 + components: + - type: Transform + pos: 3.5,14.5 + parent: 1 + - uid: 1135 + components: + - type: Transform + pos: 3.5,15.5 + parent: 1 + - uid: 1136 + components: + - type: Transform + pos: 3.5,16.5 + parent: 1 + - uid: 1137 + components: + - type: Transform + pos: 3.5,17.5 + parent: 1 + - uid: 1138 + components: + - type: Transform + pos: 3.5,18.5 + parent: 1 + - uid: 1139 + components: + - type: Transform + pos: 3.5,19.5 + parent: 1 + - uid: 1140 + components: + - type: Transform + pos: 3.5,20.5 + parent: 1 + - uid: 1141 + components: + - type: Transform + pos: 4.5,35.5 + parent: 1 + - uid: 1142 + components: + - type: Transform + pos: 4.5,36.5 + parent: 1 + - uid: 1143 + components: + - type: Transform + pos: 5.5,35.5 + parent: 1 + - uid: 1144 + components: + - type: Transform + pos: 3.5,24.5 + parent: 1 + - uid: 1145 + components: + - type: Transform + pos: 3.5,25.5 + parent: 1 + - uid: 1146 + components: + - type: Transform + pos: 3.5,26.5 + parent: 1 + - uid: 1147 + components: + - type: Transform + pos: 3.5,27.5 + parent: 1 + - uid: 1148 + components: + - type: Transform + pos: 2.5,33.5 + parent: 1 + - uid: 1149 + components: + - type: Transform + pos: 6.5,35.5 + parent: 1 + - uid: 1150 + components: + - type: Transform + pos: 6.5,36.5 + parent: 1 + - uid: 1151 + components: + - type: Transform + pos: 9.5,34.5 + parent: 1 + - uid: 1158 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 24.5,35.5 + parent: 1 + - uid: 1159 + components: + - type: Transform + pos: 2.5,28.5 + parent: 1 + - uid: 1161 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 20.5,29.5 + parent: 1 + - uid: 1163 + components: + - type: Transform + pos: 24.5,25.5 + parent: 1 + - uid: 1164 + components: + - type: Transform + pos: 12.5,16.5 + parent: 1 + - uid: 1165 + components: + - type: Transform + pos: 18.5,37.5 + parent: 1 + - uid: 1166 + components: + - type: Transform + pos: 3.5,35.5 + parent: 1 + - uid: 1167 + components: + - type: Transform + pos: 13.5,4.5 + parent: 1 + - uid: 1168 + components: + - type: Transform + pos: 5.5,34.5 + parent: 1 + - uid: 1169 + components: + - type: Transform + pos: 12.5,37.5 + parent: 1 + - uid: 1170 + components: + - type: Transform + pos: 2.5,15.5 + parent: 1 + - uid: 1171 + components: + - type: Transform + pos: 2.5,16.5 + parent: 1 + - uid: 1172 + components: + - type: Transform + pos: 2.5,17.5 + parent: 1 + - uid: 1173 + components: + - type: Transform + pos: 2.5,18.5 + parent: 1 + - uid: 1174 + components: + - type: Transform + pos: 4.5,34.5 + parent: 1 + - uid: 1175 + components: + - type: Transform + pos: 4.5,33.5 + parent: 1 + - uid: 1176 + components: + - type: Transform + pos: 3.5,32.5 + parent: 1 + - uid: 1177 + components: + - type: Transform + pos: 3.5,34.5 + parent: 1 + - uid: 1178 + components: + - type: Transform + pos: 3.5,33.5 + parent: 1 + - uid: 1179 + components: + - type: Transform + pos: 4.5,32.5 + parent: 1 + - uid: 1180 + components: + - type: Transform + pos: 2.5,32.5 + parent: 1 + - uid: 1181 + components: + - type: Transform + pos: 5.5,36.5 + parent: 1 + - uid: 1273 + components: + - type: Transform + pos: 23.5,23.5 + parent: 1 + - uid: 1274 + components: + - type: Transform + pos: 22.5,24.5 + parent: 1 + - uid: 1275 + components: + - type: Transform + pos: 23.5,25.5 + parent: 1 + - uid: 1276 + components: + - type: Transform + pos: 24.5,24.5 + parent: 1 + - uid: 1277 + components: + - type: Transform + pos: 20.5,31.5 + parent: 1 + - uid: 1278 + components: + - type: Transform + pos: 21.5,32.5 + parent: 1 + - uid: 1279 + components: + - type: Transform + pos: 20.5,33.5 + parent: 1 + - uid: 1280 + components: + - type: Transform + pos: 19.5,32.5 + parent: 1 + - uid: 1286 + components: + - type: Transform + pos: 26.5,36.5 + parent: 1 + - uid: 1292 + components: + - type: Transform + pos: 31.5,39.5 + parent: 1 + - uid: 1295 + components: + - type: Transform + pos: 23.5,37.5 + parent: 1 + - uid: 1296 + components: + - type: Transform + pos: 29.5,39.5 + parent: 1 + - uid: 1297 + components: + - type: Transform + pos: 21.5,36.5 + parent: 1 + - uid: 1298 + components: + - type: Transform + pos: 30.5,39.5 + parent: 1 + - uid: 1299 + components: + - type: Transform + pos: 9.5,37.5 + parent: 1 + - uid: 1300 + components: + - type: Transform + pos: 10.5,37.5 + parent: 1 + - uid: 1303 + components: + - type: Transform + pos: 28.5,39.5 + parent: 1 + - uid: 1304 + components: + - type: Transform + pos: 27.5,39.5 + parent: 1 + - uid: 1305 + components: + - type: Transform + pos: 26.5,39.5 + parent: 1 +- proto: FoodCondimentBottleHotsauce + entities: + - uid: 1217 + components: + - type: Transform + pos: 25.248657,15.726672 + parent: 1 +- proto: FoodMeatGoliathCooked + entities: + - uid: 1219 + components: + - type: Transform + rot: -25.132741228718352 rad + pos: 26.530731,15.715266 + parent: 1 + - type: CollisionWake + enabled: False +- proto: FoodSoupChiliHot + entities: + - uid: 1216 + components: + - type: Transform + pos: 25.5,15.5 + parent: 1 +- proto: GeneratorBasic15kW + entities: + - uid: 1152 + components: + - type: Transform + pos: 18.5,10.5 + parent: 1 +- proto: Girder + entities: + - uid: 1288 + components: + - type: Transform + pos: 21.5,38.5 + parent: 1 +- proto: Grille + entities: + - uid: 8 + components: + - type: Transform + pos: 19.5,11.5 + parent: 1 + - uid: 336 + components: + - type: Transform + pos: 12.5,22.5 + parent: 1 + - uid: 386 + components: + - type: Transform + pos: 27.5,16.5 + parent: 1 + - uid: 917 + components: + - type: Transform + pos: 14.5,24.5 + parent: 1 + - uid: 1293 + components: + - type: Transform + pos: 23.5,40.5 + parent: 1 +- proto: GrilleBroken + entities: + - uid: 1237 + components: + - type: Transform + pos: 23.5,29.5 + parent: 1 + - uid: 1238 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 23.5,29.5 + parent: 1 + - uid: 1283 + components: + - type: Transform + pos: 24.5,32.5 + parent: 1 + - uid: 1284 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 24.5,32.5 + parent: 1 + - uid: 1285 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 23.5,33.5 + parent: 1 + - uid: 1310 + components: + - type: Transform + pos: 23.5,33.5 + parent: 1 +- proto: KitchenElectricGrill + entities: + - uid: 759 + components: + - type: Transform + pos: 26.5,15.5 + parent: 1 + - type: ItemPlacer + placedEntities: + - 1219 +- proto: KitchenKnife + entities: + - uid: 1215 + components: + - type: Transform + rot: -6.283185307179586 rad + pos: 26.486666,16.420792 + parent: 1 +- proto: LockerMedicineFilled + entities: + - uid: 1231 + components: + - type: Transform + pos: 14.5,23.5 + parent: 1 +- proto: MachineFrameDestroyed + entities: + - uid: 14 + components: + - type: Transform + pos: 24.5,36.5 + parent: 1 +- proto: MaintenanceToolSpawner + entities: + - uid: 1308 + components: + - type: Transform + pos: 22.5,39.5 + parent: 1 +- proto: MedicalBed + entities: + - uid: 1227 + components: + - type: Transform + pos: 15.5,23.5 + parent: 1 + - uid: 1228 + components: + - type: Transform + pos: 13.5,23.5 + parent: 1 +- proto: MedkitBurnFilled + entities: + - uid: 1235 + components: + - type: Transform + pos: 16.528265,12.55404 + parent: 1 +- proto: PoweredLEDSmallLight + entities: + - uid: 872 + components: + - type: Transform + pos: 25.5,17.5 + parent: 1 + - uid: 1018 + components: + - type: Transform + pos: 17.5,12.5 + parent: 1 + - uid: 1093 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 14.5,21.5 + parent: 1 +- proto: Rack + entities: + - uid: 1222 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 25.5,15.5 + parent: 1 + - uid: 1226 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 16.5,12.5 + parent: 1 + - uid: 1302 + components: + - type: Transform + pos: 22.5,39.5 + parent: 1 +- proto: ReinforcedWindow + entities: + - uid: 546 + components: + - type: Transform + pos: 14.5,24.5 + parent: 1 + - uid: 837 + components: + - type: Transform + pos: 27.5,16.5 + parent: 1 + - uid: 1001 + components: + - type: Transform + pos: 12.5,22.5 + parent: 1 + - uid: 1058 + components: + - type: Transform + pos: 19.5,11.5 + parent: 1 + - uid: 1294 + components: + - type: Transform + pos: 23.5,40.5 + parent: 1 +- proto: SinkWide + entities: + - uid: 1221 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 25.5,17.5 + parent: 1 +- proto: SMESBasic + entities: + - uid: 1117 + components: + - type: Transform + pos: 16.5,10.5 + parent: 1 +- proto: SubstationBasic + entities: + - uid: 977 + components: + - type: Transform + pos: 18.5,12.5 + parent: 1 +- proto: Table + entities: + - uid: 1233 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,21.5 + parent: 1 +- proto: TableReinforced + entities: + - uid: 1220 + components: + - type: Transform + pos: 26.5,16.5 + parent: 1 + - uid: 1223 + components: + - type: Transform + pos: 26.5,15.5 + parent: 1 +- proto: WallReinforced + entities: + - uid: 100 + components: + - type: Transform + pos: 21.5,40.5 + parent: 1 + - uid: 192 + components: + - type: Transform + pos: 27.5,18.5 + parent: 1 + - uid: 253 + components: + - type: Transform + pos: 24.5,14.5 + parent: 1 + - uid: 314 + components: + - type: Transform + pos: 16.5,24.5 + parent: 1 + - uid: 348 + components: + - type: Transform + pos: 16.5,20.5 + parent: 1 + - uid: 554 + components: + - type: Transform + pos: 24.5,18.5 + parent: 1 + - uid: 611 + components: + - type: Transform + pos: 19.5,9.5 + parent: 1 + - uid: 692 + components: + - type: Transform + pos: 27.5,14.5 + parent: 1 + - uid: 712 + components: + - type: Transform + pos: 15.5,13.5 + parent: 1 + - uid: 732 + components: + - type: Transform + pos: 12.5,20.5 + parent: 1 + - uid: 857 + components: + - type: Transform + pos: 15.5,9.5 + parent: 1 + - uid: 1007 + components: + - type: Transform + pos: 12.5,24.5 + parent: 1 + - uid: 1020 + components: + - type: Transform + pos: 19.5,13.5 + parent: 1 + - uid: 1287 + components: + - type: Transform + pos: 25.5,40.5 + parent: 1 +- proto: WallSolid + entities: + - uid: 72 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 16.5,21.5 + parent: 1 + - uid: 124 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 24.5,17.5 + parent: 1 + - uid: 170 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 24.5,15.5 + parent: 1 + - uid: 208 + components: + - type: Transform + pos: 13.5,24.5 + parent: 1 + - uid: 243 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 26.5,14.5 + parent: 1 + - uid: 279 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 25.5,14.5 + parent: 1 + - uid: 313 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 26.5,18.5 + parent: 1 + - uid: 349 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 25.5,18.5 + parent: 1 + - uid: 387 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 27.5,15.5 + parent: 1 + - uid: 394 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 16.5,23.5 + parent: 1 + - uid: 426 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 15.5,24.5 + parent: 1 + - uid: 444 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 23.5,24.5 + parent: 1 + - uid: 452 + components: + - type: Transform + pos: 23.5,32.5 + parent: 1 + - uid: 569 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 19.5,16.5 + parent: 1 + - uid: 572 + components: + - type: Transform + pos: 17.5,9.5 + parent: 1 + - uid: 579 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 12.5,21.5 + parent: 1 + - uid: 604 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 15.5,12.5 + parent: 1 + - uid: 639 + components: + - type: Transform + pos: 17.5,13.5 + parent: 1 + - uid: 674 + components: + - type: Transform + pos: 19.5,10.5 + parent: 1 + - uid: 709 + components: + - type: Transform + pos: 16.5,9.5 + parent: 1 + - uid: 710 + components: + - type: Transform + pos: 15.5,10.5 + parent: 1 + - uid: 711 + components: + - type: Transform + pos: 18.5,9.5 + parent: 1 + - uid: 713 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 19.5,12.5 + parent: 1 + - uid: 767 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 27.5,17.5 + parent: 1 + - uid: 958 + components: + - type: Transform + pos: 16.5,22.5 + parent: 1 + - uid: 971 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 14.5,20.5 + parent: 1 + - uid: 972 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 13.5,20.5 + parent: 1 + - uid: 1017 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 16.5,13.5 + parent: 1 + - uid: 1019 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,17.5 + parent: 1 + - uid: 1029 + components: + - type: Transform + pos: 12.5,23.5 + parent: 1 + - uid: 1059 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,13.5 + parent: 1 + - uid: 1289 + components: + - type: Transform + pos: 21.5,39.5 + parent: 1 + - uid: 1290 + components: + - type: Transform + pos: 22.5,40.5 + parent: 1 + - uid: 1291 + components: + - type: Transform + pos: 24.5,40.5 + parent: 1 +- proto: WeaponRevolverPython + entities: + - uid: 1234 + components: + - type: Transform + rot: -6.283185307179586 rad + pos: 13.490121,21.643442 + parent: 1 +- proto: WoodenSignRight + entities: + - uid: 982 + components: + - type: Transform + pos: 5.5,33.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/miming_drill.yml b/Resources/Maps/Lavaland/miming_drill.yml new file mode 100644 index 0000000000..8c234b32c1 --- /dev/null +++ b/Resources/Maps/Lavaland/miming_drill.yml @@ -0,0 +1,1208 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/21/2025 01:45:58 + entityCount: 194 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorBasalt + 4: FloorMime + 3: FloorWhite + 2: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.828125,-0.5703125 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + cleanable: True + color: '#79150096' + id: splatter + decals: + 0: 4,1 + 1: 12,1 + 2: 9,8 + 3: 4,6 + 4: 9,4 + - node: + cleanable: True + color: '#79150096' + id: thinline + decals: + 16: 4.2299004,4.9159036 + 17: 3.7437897,4.920533 + 18: 3.73916,3.9966602 + 19: 4.2345304,3.9827714 + 20: 4.23503,3.0445478 + 21: 3.7404823,3.0661528 + 22: 3.741341,2.1337168 + 23: 4.232082,2.1182847 + 25: 8.711112,7.0139613 + 26: 9.197223,7.0047026 + 27: 8.711113,6.078776 + 28: 9.197224,6.069517 + 29: 9.1925955,5.138962 + 30: 8.711114,5.1482205 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,1: + 0: 65532 + 0,2: + 0: 52303 + 0,0: + 0: 51404 + 1,0: + 0: 7986 + 1,1: + 0: 7517 + 1,2: + 0: 61199 + 2,0: + 0: 51184 + 2,1: + 0: 61439 + 2,2: + 0: 61167 + 3,0: + 0: 4112 + 3,1: + 0: 13073 + 3,2: + 0: 13107 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirlockExternalGlass + entities: + - uid: 146 + components: + - type: Transform + pos: 2.5,9.5 + parent: 1 +- proto: AirlockGlass + entities: + - uid: 145 + components: + - type: Transform + pos: 4.5,10.5 + parent: 1 +- proto: APCBasic + entities: + - uid: 149 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,9.5 + parent: 1 +- proto: CableApcExtension + entities: + - uid: 162 + components: + - type: Transform + pos: 6.5,9.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: 6.5,10.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: 5.5,10.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: 4.5,10.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: 3.5,10.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: 2.5,10.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: 7.5,10.5 + parent: 1 +- proto: CableHV + entities: + - uid: 150 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 + - uid: 151 + components: + - type: Transform + pos: 2.5,10.5 + parent: 1 + - uid: 152 + components: + - type: Transform + pos: 3.5,10.5 + parent: 1 + - uid: 153 + components: + - type: Transform + pos: 3.5,11.5 + parent: 1 + - uid: 154 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 +- proto: CableMV + entities: + - uid: 155 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: 3.5,11.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: 3.5,10.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: 4.5,10.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: 5.5,10.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: 6.5,10.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: 6.5,9.5 + parent: 1 +- proto: Chair + entities: + - uid: 26 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,11.5 + parent: 1 + - uid: 27 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,10.5 + parent: 1 +- proto: ClothingBackpackMime + entities: + - uid: 188 + components: + - type: Transform + pos: 10.5,11.5 + parent: 1 +- proto: ClothingEyesGlassesMeson + entities: + - uid: 190 + components: + - type: Transform + pos: 13.5,8.5 + parent: 1 +- proto: ComputerFrame + entities: + - uid: 28 + components: + - type: Transform + pos: 5.5,11.5 + parent: 1 +- proto: CrateEmergencyInternals + entities: + - uid: 183 + components: + - type: Transform + pos: 3.5,11.5 + parent: 1 +- proto: CrateGenericSteel + entities: + - uid: 179 + components: + - type: Transform + pos: 11.5,11.5 + parent: 1 + - type: Fixtures + fixtures: + fix1: + shape: !type:PolygonShape + radius: 0.01 + vertices: + - -0.4,-0.4 + - 0.4,-0.4 + - 0.4,0.29 + - -0.4,0.29 + mask: + - Impassable + - HighImpassable + - LowImpassable + layer: + - BulletImpassable + - Opaque + density: 50 + hard: True + restitution: 0 + friction: 0.4 + - type: EntityStorage + open: True + removedMasks: 20 + - type: PlaceableSurface + isPlaceable: True +- proto: CratePermaEscapeDigging + entities: + - uid: 180 + components: + - type: Transform + pos: 9.5,11.5 + parent: 1 + - uid: 193 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 +- proto: EmergencyOxygenTankFilled + entities: + - uid: 189 + components: + - type: Transform + pos: 13.5,7.5 + parent: 1 + - uid: 194 + components: + - type: Transform + pos: 3.5,11.5 + parent: 1 +- proto: FloorChasmEntity + entities: + - uid: 78 + components: + - type: Transform + pos: 7.5,4.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 6.5,6.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 8.5,4.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 8.5,5.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: 8.5,6.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 7.5,6.5 + parent: 1 + - uid: 85 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 +- proto: FoodBurgerMime + entities: + - uid: 187 + components: + - type: Transform + pos: 13.5,9.5 + parent: 1 +- proto: GeneratorWallmountAPU + entities: + - uid: 147 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 +- proto: Girder + entities: + - uid: 29 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 12.5,3.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 124 + components: + - type: Transform + pos: 8.5,1.5 + parent: 1 +- proto: Grille + entities: + - uid: 22 + components: + - type: Transform + pos: 7.5,12.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 8.5,11.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 8.5,10.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 7.5,9.5 + parent: 1 +- proto: LockerMime + entities: + - uid: 184 + components: + - type: Transform + pos: 2.5,11.5 + parent: 1 +- proto: MiningDrill + entities: + - uid: 182 + components: + - type: Transform + pos: 13.5,11.5 + parent: 1 +- proto: Multitool + entities: + - uid: 191 + components: + - type: Transform + pos: 13.5,8.5 + parent: 1 +- proto: OreBag + entities: + - uid: 192 + components: + - type: Transform + pos: 9.5,9.5 + parent: 1 +- proto: Pickaxe + entities: + - uid: 81 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: 11.5,1.5 + parent: 1 + - uid: 186 + components: + - type: Transform + pos: 13.5,7.5 + parent: 1 +- proto: PosterLegitMime + entities: + - uid: 168 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 +- proto: Poweredlight + entities: + - uid: 170 + components: + - type: Transform + pos: 8.5,8.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 +- proto: PoweredSmallLight + entities: + - uid: 169 + components: + - type: Transform + pos: 6.5,11.5 + parent: 1 + - uid: 177 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,11.5 + parent: 1 +- proto: ShardGlass + entities: + - uid: 140 + components: + - type: Transform + pos: 9.5,4.5 + parent: 1 + - uid: 141 + components: + - type: Transform + pos: 9.5,7.5 + parent: 1 + - uid: 142 + components: + - type: Transform + pos: 10.5,7.5 + parent: 1 + - uid: 143 + components: + - type: Transform + pos: 11.5,5.5 + parent: 1 +- proto: ShuttleWindow + entities: + - uid: 18 + components: + - type: Transform + pos: 7.5,9.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 8.5,10.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 8.5,11.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 7.5,12.5 + parent: 1 +- proto: SubstationWallBasic + entities: + - uid: 148 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 +- proto: Table + entities: + - uid: 171 + components: + - type: Transform + pos: 13.5,8.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: 13.5,9.5 + parent: 1 + - uid: 173 + components: + - type: Transform + pos: 13.5,7.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: 13.5,11.5 + parent: 1 +- proto: TableFrame + entities: + - uid: 178 + components: + - type: Transform + pos: 12.5,11.5 + parent: 1 +- proto: ToolboxSyndicateFilled + entities: + - uid: 181 + components: + - type: Transform + pos: 11.5,11.5 + parent: 1 +- proto: WallReinforced + entities: + - uid: 110 + components: + - type: Transform + pos: 7.5,5.5 + parent: 1 +- proto: WallRockBasalt + entities: + - uid: 33 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 4.5,-0.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 4.5,0.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 5.5,-0.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 7.5,1.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 7.5,-0.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 8.5,-0.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 9.5,-0.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 10.5,-0.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 11.5,-0.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 12.5,-0.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: 13.5,-0.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: 13.5,0.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 12.5,0.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 11.5,0.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 10.5,0.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 9.5,0.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 8.5,0.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 13.5,1.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 13.5,2.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 12.5,2.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 11.5,2.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 14.5,-0.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: 13.5,3.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 13.5,4.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 13.5,5.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 13.5,12.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: 13.5,13.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: 12.5,12.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: 12.5,13.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: 11.5,12.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: 11.5,13.5 + parent: 1 + - uid: 93 + components: + - type: Transform + pos: 10.5,12.5 + parent: 1 + - uid: 94 + components: + - type: Transform + pos: 10.5,13.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: 9.5,12.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: 9.5,13.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: 8.5,13.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: 7.5,13.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: 6.5,13.5 + parent: 1 + - uid: 100 + components: + - type: Transform + pos: 5.5,13.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 4.5,13.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 3.5,13.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 2.5,13.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 1.5,13.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: 0.5,13.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: 0.5,12.5 + parent: 1 + - uid: 107 + components: + - type: Transform + pos: 0.5,11.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: 0.5,10.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: 0.5,9.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: 14.5,0.5 + parent: 1 + - uid: 126 + components: + - type: Transform + pos: 14.5,1.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: 14.5,2.5 + parent: 1 + - uid: 128 + components: + - type: Transform + pos: 14.5,3.5 + parent: 1 + - uid: 129 + components: + - type: Transform + pos: 14.5,4.5 + parent: 1 + - uid: 130 + components: + - type: Transform + pos: 14.5,5.5 + parent: 1 + - uid: 131 + components: + - type: Transform + pos: 14.5,6.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: 14.5,7.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: 14.5,8.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: 14.5,9.5 + parent: 1 + - uid: 135 + components: + - type: Transform + pos: 14.5,10.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: 14.5,11.5 + parent: 1 + - uid: 137 + components: + - type: Transform + pos: 14.5,12.5 + parent: 1 + - uid: 138 + components: + - type: Transform + pos: 14.5,13.5 + parent: 1 +- proto: WallShuttle + entities: + - uid: 2 + components: + - type: Transform + pos: 4.5,9.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: 4.5,11.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: 8.5,12.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 8.5,9.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 6.5,12.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 5.5,9.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: 1.5,12.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 1.5,11.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 4.5,12.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: 2.5,12.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 5.5,12.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 6.5,9.5 + parent: 1 +- proto: WardrobeWhiteFilled + entities: + - uid: 185 + components: + - type: Transform + pos: 10.5,11.5 + parent: 1 +- proto: Window + entities: + - uid: 111 + components: + - type: Transform + pos: 7.5,7.5 + parent: 1 + - uid: 112 + components: + - type: Transform + pos: 6.5,7.5 + parent: 1 + - uid: 113 + components: + - type: Transform + pos: 5.5,7.5 + parent: 1 + - uid: 114 + components: + - type: Transform + pos: 5.5,6.5 + parent: 1 + - uid: 115 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 + - uid: 116 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 117 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 118 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 119 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 + - uid: 120 + components: + - type: Transform + pos: 8.5,3.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: 9.5,3.5 + parent: 1 + - uid: 144 + components: + - type: Transform + pos: 8.5,7.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/minefield.yml b/Resources/Maps/Lavaland/minefield.yml new file mode 100644 index 0000000000..26c4471269 --- /dev/null +++ b/Resources/Maps/Lavaland/minefield.yml @@ -0,0 +1,1653 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/21/2025 01:13:33 + entityCount: 269 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorBasalt + 3: FloorTechMaint + 4: FloorTechMaint2 + 5: FloorTechMaint3 + 2: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.53125,-0.34375 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,1: + ind: 0,1 + tiles: AAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAABAAAAAAAAwAAAAAAAwAAAAAABQAAAAAAAwAAAAAAAwAAAAAABAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -1,1: + ind: -1,1 + tiles: AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Caution + decals: + 5: -8,8 + - node: + color: '#FFFFFFFF' + id: WarnLineN + decals: + 0: -10,8 + 1: -9,8 + 2: -8,8 + 3: -7,8 + 4: -6,8 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 13107 + 0,-1: + 0: 4352 + -1,0: + 0: 65535 + 0,1: + 0: 13107 + -1,1: + 0: 65535 + 0,2: + 0: 13107 + -1,2: + 0: 35020 + 0,3: + 0: 4915 + -1,3: + 0: 65228 + 0,4: + 0: 1 + -1,4: + 0: 127 + -4,0: + 0: 65535 + -4,1: + 0: 65535 + -4,2: + 0: 30719 + -4,3: + 0: 61431 + -4,-1: + 0: 61132 + -4,4: + 0: 142 + -3,0: + 0: 65535 + -3,1: + 0: 65535 + -3,3: + 0: 63232 + -3,-1: + 0: 65535 + -3,2: + 0: 52972 + -3,4: + 0: 255 + -2,0: + 0: 65535 + -2,1: + 0: 65535 + -2,2: + 0: 32759 + -2,3: + 0: 65024 + -2,-1: + 0: 65535 + -2,4: + 0: 255 + -1,-1: + 0: 65535 + -4,-2: + 0: 32768 + -3,-2: + 0: 65024 + -2,-2: + 0: 65280 + -1,-2: + 0: 28928 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AlwaysPoweredlightRed + entities: + - uid: 211 + components: + - type: Transform + pos: -10.5,7.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: -4.5,7.5 + parent: 1 +- proto: BasaltFive + entities: + - uid: 239 + components: + - type: Transform + pos: -3.5,3.5 + parent: 1 + - uid: 258 + components: + - type: Transform + pos: -0.5,-3.5 + parent: 1 +- proto: BasaltFour + entities: + - uid: 243 + components: + - type: Transform + pos: -11.5,-3.5 + parent: 1 + - uid: 246 + components: + - type: Transform + pos: 1.5,6.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: -14.5,8.5 + parent: 1 +- proto: BasaltOne + entities: + - uid: 240 + components: + - type: Transform + pos: -8.5,7.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: -11.5,16.5 + parent: 1 + - uid: 259 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 1 +- proto: BasaltThree + entities: + - uid: 245 + components: + - type: Transform + pos: -12.5,0.5 + parent: 1 + - uid: 249 + components: + - type: Transform + pos: -4.5,16.5 + parent: 1 +- proto: BasaltTwo + entities: + - uid: 242 + components: + - type: Transform + pos: -4.5,-4.5 + parent: 1 + - uid: 253 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: -11.5,5.5 + parent: 1 +- proto: CableHV + entities: + - uid: 233 + components: + - type: Transform + pos: -9.5,11.5 + parent: 1 + - uid: 234 + components: + - type: Transform + pos: -8.5,11.5 + parent: 1 + - uid: 235 + components: + - type: Transform + pos: -7.5,11.5 + parent: 1 + - uid: 236 + components: + - type: Transform + pos: -6.5,11.5 + parent: 1 + - uid: 237 + components: + - type: Transform + pos: -5.5,11.5 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: -7.5,12.5 + parent: 1 +- proto: CableMV + entities: + - uid: 18 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: -10.5,4.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: -12.5,4.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: -14.5,4.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: -11.5,4.5 + parent: 1 + - uid: 93 + components: + - type: Transform + pos: -13.5,4.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: -4.5,5.5 + parent: 1 + - uid: 155 + components: + - type: Transform + pos: -6.5,3.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: -8.5,6.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: -4.5,7.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: -6.5,5.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: -6.5,6.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: -6.5,7.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: -7.5,8.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: -8.5,8.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: -8.5,9.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: -8.5,10.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: -7.5,10.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: -6.5,10.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: -8.5,7.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: -6.5,9.5 + parent: 1 + - uid: 169 + components: + - type: Transform + pos: -6.5,8.5 + parent: 1 + - uid: 170 + components: + - type: Transform + pos: -6.5,4.5 + parent: 1 + - uid: 171 + components: + - type: Transform + pos: -4.5,6.5 + parent: 1 + - uid: 173 + components: + - type: Transform + pos: -3.5,5.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: -3.5,4.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: -7.5,2.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: -5.5,2.5 + parent: 1 + - uid: 179 + components: + - type: Transform + pos: -7.5,1.5 + parent: 1 + - uid: 180 + components: + - type: Transform + pos: -7.5,0.5 + parent: 1 + - uid: 181 + components: + - type: Transform + pos: -7.5,-0.5 + parent: 1 + - uid: 182 + components: + - type: Transform + pos: -7.5,-1.5 + parent: 1 + - uid: 183 + components: + - type: Transform + pos: -7.5,-2.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: -7.5,-3.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: -7.5,-4.5 + parent: 1 + - uid: 186 + components: + - type: Transform + pos: -5.5,3.5 + parent: 1 + - uid: 187 + components: + - type: Transform + pos: -5.5,1.5 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: -5.5,0.5 + parent: 1 + - uid: 189 + components: + - type: Transform + pos: -4.5,0.5 + parent: 1 + - uid: 190 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 + - uid: 191 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 192 + components: + - type: Transform + pos: -8.5,2.5 + parent: 1 + - uid: 194 + components: + - type: Transform + pos: -9.5,7.5 + parent: 1 + - uid: 195 + components: + - type: Transform + pos: -9.5,8.5 + parent: 1 + - uid: 196 + components: + - type: Transform + pos: -5.5,8.5 + parent: 1 + - uid: 197 + components: + - type: Transform + pos: -5.5,7.5 + parent: 1 + - uid: 198 + components: + - type: Transform + pos: -8.5,5.5 + parent: 1 + - uid: 199 + components: + - type: Transform + pos: -8.5,4.5 + parent: 1 + - uid: 200 + components: + - type: Transform + pos: -10.5,5.5 + parent: 1 + - uid: 201 + components: + - type: Transform + pos: -10.5,6.5 + parent: 1 + - uid: 202 + components: + - type: Transform + pos: -10.5,7.5 + parent: 1 + - uid: 203 + components: + - type: Transform + pos: -8.5,3.5 + parent: 1 + - uid: 231 + components: + - type: Transform + pos: -7.5,11.5 + parent: 1 + - uid: 232 + components: + - type: Transform + pos: -7.5,12.5 + parent: 1 +- proto: Catwalk + entities: + - uid: 241 + components: + - type: Transform + pos: -3.5,7.5 + parent: 1 + - uid: 244 + components: + - type: Transform + pos: -4.5,7.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: -10.5,7.5 + parent: 1 + - uid: 255 + components: + - type: Transform + pos: -11.5,7.5 + parent: 1 +- proto: FloorLavaEntity + entities: + - uid: 31 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,1.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: -1.5,6.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: -0.5,6.5 + parent: 1 + - uid: 43 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,9.5 + parent: 1 + - uid: 44 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,10.5 + parent: 1 + - uid: 45 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,11.5 + parent: 1 + - uid: 46 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,12.5 + parent: 1 + - uid: 47 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,13.5 + parent: 1 + - uid: 48 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,14.5 + parent: 1 + - uid: 49 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,9.5 + parent: 1 + - uid: 53 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,13.5 + parent: 1 + - uid: 54 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,14.5 + parent: 1 + - uid: 55 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,14.5 + parent: 1 + - uid: 56 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,15.5 + parent: 1 + - uid: 57 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,11.5 + parent: 1 + - uid: 58 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,14.5 + parent: 1 + - uid: 59 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,15.5 + parent: 1 + - uid: 60 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,11.5 + parent: 1 + - uid: 61 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,14.5 + parent: 1 + - uid: 62 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,15.5 + parent: 1 + - uid: 63 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,16.5 + parent: 1 + - uid: 64 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,15.5 + parent: 1 + - uid: 66 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,15.5 + parent: 1 + - uid: 68 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,15.5 + parent: 1 + - uid: 69 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,14.5 + parent: 1 + - uid: 70 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,15.5 + parent: 1 + - uid: 71 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,14.5 + parent: 1 + - uid: 72 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,15.5 + parent: 1 + - uid: 73 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,14.5 + parent: 1 + - uid: 74 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,14.5 + parent: 1 + - uid: 75 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,13.5 + parent: 1 + - uid: 76 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,12.5 + parent: 1 + - uid: 77 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,14.5 + parent: 1 + - uid: 78 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,13.5 + parent: 1 + - uid: 79 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,12.5 + parent: 1 + - uid: 80 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,16.5 + parent: 1 + - uid: 81 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,16.5 + parent: 1 + - uid: 82 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,15.5 + parent: 1 + - uid: 83 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,15.5 + parent: 1 + - uid: 84 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,10.5 + parent: 1 + - uid: 85 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,9.5 + parent: 1 + - uid: 89 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,10.5 + parent: 1 + - uid: 90 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,9.5 + parent: 1 + - uid: 91 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.5,8.5 + parent: 1 + - uid: 95 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,9.5 + parent: 1 + - uid: 96 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,8.5 + parent: 1 + - uid: 97 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,7.5 + parent: 1 + - uid: 99 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,-1.5 + parent: 1 + - uid: 100 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,1.5 + parent: 1 + - uid: 101 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,-0.5 + parent: 1 + - uid: 102 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,0.5 + parent: 1 + - uid: 103 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,1.5 + parent: 1 + - uid: 104 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,1.5 + parent: 1 + - uid: 105 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,2.5 + parent: 1 + - uid: 106 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-3.5 + parent: 1 + - uid: 107 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,-2.5 + parent: 1 + - uid: 108 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,-3.5 + parent: 1 + - uid: 109 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -5.5,-2.5 + parent: 1 + - uid: 110 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-0.5 + parent: 1 + - uid: 111 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,-2.5 + parent: 1 + - uid: 112 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-1.5 + parent: 1 + - uid: 113 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,1.5 + parent: 1 + - uid: 114 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,1.5 + parent: 1 + - uid: 115 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,5.5 + parent: 1 + - uid: 116 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,6.5 + parent: 1 + - uid: 117 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,6.5 + parent: 1 + - uid: 118 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,6.5 + parent: 1 + - uid: 119 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,6.5 + parent: 1 + - uid: 120 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,7.5 + parent: 1 + - uid: 140 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,14.5 + parent: 1 + - uid: 141 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -3.5,15.5 + parent: 1 + - uid: 142 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,8.5 + parent: 1 + - uid: 143 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,7.5 + parent: 1 + - uid: 144 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,8.5 + parent: 1 + - uid: 145 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,11.5 + parent: 1 + - uid: 146 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,12.5 + parent: 1 + - uid: 147 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,13.5 + parent: 1 + - uid: 148 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,10.5 + parent: 1 + - uid: 149 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,15.5 + parent: 1 + - uid: 150 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -8.5,16.5 + parent: 1 + - uid: 151 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -7.5,16.5 + parent: 1 + - uid: 152 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,16.5 + parent: 1 + - uid: 153 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,12.5 + parent: 1 + - uid: 154 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,13.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: -3.5,6.5 + parent: 1 + - uid: 214 + components: + - type: Transform + pos: -13.5,5.5 + parent: 1 + - uid: 260 + components: + - type: Transform + pos: -12.5,-3.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: -2.5,7.5 + parent: 1 + - uid: 262 + components: + - type: Transform + pos: -13.5,-3.5 + parent: 1 + - uid: 263 + components: + - type: Transform + pos: -13.5,-2.5 + parent: 1 + - uid: 264 + components: + - type: Transform + pos: -2.5,6.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: -3.5,7.5 + parent: 1 + - uid: 267 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 268 + components: + - type: Transform + pos: -1.5,5.5 + parent: 1 +- proto: GeneratorBasic + entities: + - uid: 226 + components: + - type: Transform + pos: -9.5,11.5 + parent: 1 + - uid: 227 + components: + - type: Transform + pos: -5.5,11.5 + parent: 1 +- proto: Grille + entities: + - uid: 2 + components: + - type: Transform + pos: -13.5,4.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -4.5,0.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: -12.5,4.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: -14.5,4.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: -7.5,-2.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: -7.5,-1.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: -7.5,-3.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: -7.5,-4.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 + - uid: 265 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 +- proto: LandMineExplosive + entities: + - uid: 38 + components: + - type: Transform + pos: -14.488633,3.3384957 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -5.9618673,-0.15940952 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -5.5,5.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: -9.02437,2.7624617 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 205 + components: + - type: Transform + pos: -10.582378,-1.0989999 + parent: 1 + - uid: 209 + components: + - type: Transform + pos: -14.160503,-0.28650403 + parent: 1 + - uid: 210 + components: + - type: Transform + pos: -14.363634,7.54912 + parent: 1 + - uid: 213 + components: + - type: Transform + pos: -10.144875,-4.0833745 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: 0.37764835,2.100358 + parent: 1 + - uid: 269 + components: + - type: Transform + pos: 0.58698034,7.5054493 + parent: 1 +- proto: MagazineLightRifle + entities: + - uid: 220 + components: + - type: Transform + pos: -4.820012,9.46753 + parent: 1 + - uid: 221 + components: + - type: Transform + pos: -4.1533456,9.47216 + parent: 1 + - uid: 222 + components: + - type: Transform + pos: -4.1764936,10.453642 + parent: 1 + - uid: 223 + components: + - type: Transform + pos: -4.810753,10.449012 + parent: 1 + - uid: 224 + components: + - type: Transform + pos: -4.5,9.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: -4.5,10.5 + parent: 1 +- proto: Rack + entities: + - uid: 193 + components: + - type: Transform + pos: -10.5,9.5 + parent: 1 + - uid: 206 + components: + - type: Transform + pos: -10.5,10.5 + parent: 1 + - uid: 207 + components: + - type: Transform + pos: -4.5,9.5 + parent: 1 + - uid: 208 + components: + - type: Transform + pos: -4.5,10.5 + parent: 1 +- proto: RailingCorner + entities: + - uid: 247 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,7.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: -10.5,7.5 + parent: 1 + - uid: 256 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -11.5,7.5 + parent: 1 + - uid: 257 + components: + - type: Transform + pos: -3.5,7.5 + parent: 1 +- proto: SignSecurearea + entities: + - uid: 228 + components: + - type: Transform + pos: -4.5,8.5 + parent: 1 + - uid: 230 + components: + - type: Transform + pos: -10.5,8.5 + parent: 1 +- proto: SubstationWallBasic + entities: + - uid: 229 + components: + - type: Transform + pos: -7.5,12.5 + parent: 1 +- proto: TrashBananaPeel + entities: + - uid: 204 + components: + - type: Transform + pos: -5.5,4.5 + parent: 1 +- proto: WallReinforced + entities: + - uid: 4 + components: + - type: Transform + pos: -3.5,10.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: -3.5,8.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -6.5,12.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -3.5,9.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: -3.5,11.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: -11.5,10.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: -11.5,9.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -10.5,8.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -11.5,8.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: -10.5,12.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: -7.5,12.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: -8.5,12.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: -9.5,12.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: -10.5,11.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: -5.5,12.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: -4.5,12.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: -4.5,11.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: -11.5,11.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: -4.5,8.5 + parent: 1 +- proto: WallRockBasalt + entities: + - uid: 50 + components: + - type: Transform + pos: -12.5,10.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: -12.5,11.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: -12.5,12.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: -11.5,12.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: -11.5,13.5 + parent: 1 + - uid: 94 + components: + - type: Transform + pos: -1.5,10.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: -2.5,8.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: -10.5,13.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: -9.5,13.5 + parent: 1 + - uid: 124 + components: + - type: Transform + pos: -8.5,13.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: -7.5,13.5 + parent: 1 + - uid: 126 + components: + - type: Transform + pos: -6.5,13.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: -5.5,13.5 + parent: 1 + - uid: 128 + components: + - type: Transform + pos: -4.5,13.5 + parent: 1 + - uid: 129 + components: + - type: Transform + pos: -7.5,14.5 + parent: 1 + - uid: 130 + components: + - type: Transform + pos: -8.5,14.5 + parent: 1 + - uid: 131 + components: + - type: Transform + pos: -3.5,13.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: -3.5,12.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: -2.5,12.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: -2.5,11.5 + parent: 1 + - uid: 135 + components: + - type: Transform + pos: -2.5,10.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: -2.5,9.5 + parent: 1 + - uid: 137 + components: + - type: Transform + pos: -1.5,11.5 + parent: 1 + - uid: 138 + components: + - type: Transform + pos: -2.5,13.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: -3.5,14.5 + parent: 1 +- proto: WeaponRifleAk + entities: + - uid: 216 + components: + - type: Transform + pos: -10.5,9.5 + parent: 1 + - uid: 217 + components: + - type: Transform + pos: -10.5,10.5 + parent: 1 + - uid: 218 + components: + - type: Transform + pos: -10.485548,9.2359085 + parent: 1 + - uid: 219 + components: + - type: Transform + pos: -10.506382,10.208131 + parent: 1 +- proto: WeaponTurretAllHostile + entities: + - uid: 3 + components: + - type: Transform + pos: -7.5,9.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/miner_tomb.yml b/Resources/Maps/Lavaland/miner_tomb.yml new file mode 100644 index 0000000000..6afbb85056 --- /dev/null +++ b/Resources/Maps/Lavaland/miner_tomb.yml @@ -0,0 +1,388 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 03:08:17 + entityCount: 33 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 3: Space + 2: FloorBasalt + 0: FloorMining + 1: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.5416667,-0.5 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Basalt1 + decals: + 0: 2,3 + 1: 3,4 + - node: + color: '#FFFFFFFF' + id: Basalt2 + decals: + 3: 3,2 + - node: + color: '#FFFFFFFF' + id: Basalt5 + decals: + 2: 2,4 + - node: + color: '#FFFFFFFF' + id: Basalt7 + decals: + 4: 3,1 + - node: + cleanable: True + angle: 1.5707963267948966 rad + color: '#79150096' + id: footprint + decals: + 15: 2.8024936,-1.6954603 + - node: + cleanable: True + angle: 3.141592653589793 rad + color: '#79150096' + id: footprint + decals: + 16: 3.0154567,-0.9732382 + 17: 2.3901472,-1.2880534 + - node: + cleanable: True + angle: -1.5707963267948966 rad + color: '#79150096' + id: shortline + decals: + 13: 1.1283026,-1.6614372 + - node: + cleanable: True + angle: 1.5707963267948966 rad + color: '#79150096' + id: shortline + decals: + 12: 1.8134878,-1.8774867 + - node: + cleanable: True + color: '#791500FF' + id: shortline + decals: + 8: -0.15404409,0.50062823 + - node: + cleanable: True + color: '#79150096' + id: splatter + decals: + 7: 0.030671239,-1.9988668 + - node: + cleanable: True + color: '#791500FF' + id: splatter + decals: + 5: 0,0 + 11: -0.34580898,1.6557164 + - node: + cleanable: True + color: '#791500FF' + id: thinline + decals: + 9: 0.15837723,0.25062823 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 52155 + 0,-1: + 0: 57088 + -1,0: + 0: 27306 + 0,1: + 0: 15 + -1,1: + 0: 14 + -1,-1: + 0: 28160 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirCanister + entities: + - uid: 23 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 +- proto: AirlockMiningGlass + entities: + - uid: 2 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 +- proto: BasaltFour + entities: + - uid: 28 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 +- proto: BaseComputer + entities: + - uid: 21 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 +- proto: Bed + entities: + - uid: 18 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 +- proto: BedsheetBlack + entities: + - uid: 19 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 +- proto: ChairPilotSeat + entities: + - uid: 20 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,1.5 + parent: 1 +- proto: Crowbar + entities: + - uid: 24 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 +- proto: Pickaxe + entities: + - uid: 27 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 +- proto: SignNTMine + entities: + - uid: 29 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 +- proto: SignSurvival + entities: + - uid: 30 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 +- proto: SmallLight + entities: + - uid: 33 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,1.5 + parent: 1 +- proto: SurvivalKnife + entities: + - uid: 26 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 +- proto: TableReinforced + entities: + - uid: 25 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 +- proto: VendingMachineSustenance + entities: + - uid: 22 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 +- proto: WallMining + entities: + - uid: 7 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-0.5 + parent: 1 + - uid: 8 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,0.5 + parent: 1 + - uid: 9 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,1.5 + parent: 1 + - uid: 10 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,2.5 + parent: 1 + - uid: 11 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,3.5 + parent: 1 + - uid: 12 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,3.5 + parent: 1 + - uid: 13 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,3.5 + parent: 1 + - uid: 14 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,2.5 + parent: 1 + - uid: 15 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,1.5 + parent: 1 + - uid: 16 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,0.5 + parent: 1 + - uid: 17 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,-0.5 + parent: 1 +- proto: WallMiningDiagonal + entities: + - uid: 3 + components: + - type: Transform + pos: -1.5,3.5 + parent: 1 + - uid: 4 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,3.5 + parent: 1 + - uid: 5 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-0.5 + parent: 1 + - uid: 6 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-0.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/mineshaft.yml b/Resources/Maps/Lavaland/mineshaft.yml new file mode 100644 index 0000000000..c12268ba25 --- /dev/null +++ b/Resources/Maps/Lavaland/mineshaft.yml @@ -0,0 +1,7776 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/21/2025 08:14:38 + entityCount: 1474 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorBasalt +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.609375,-0.46875 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -2,0: + ind: -2,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -2,-1: + ind: -2,-1 + tiles: AQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,-1: + ind: 1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-2: + ind: 0,-2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,-2: + ind: 1,-2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-2: + ind: -1,-2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -2,-2: + ind: -2,-2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: [] + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 62257 + -1,0: + 0: 65535 + 0,1: + 0: 307 + -1,1: + 0: 4095 + 1,0: + 0: 6084 + 1,-1: + 0: 18224 + 2,0: + 0: 1016 + 2,-1: + 0: 36078 + 3,0: + 0: 17 + 3,-1: + 0: 16375 + -5,0: + 0: 53247 + -4,0: + 0: 4096 + -4,1: + 0: 255 + -5,1: + 0: 8 + -3,0: + 0: 17487 + -3,1: + 0: 127 + -3,-1: + 0: 65535 + -2,0: + 0: 63616 + -2,1: + 0: 141 + -2,-1: + 0: 4913 + 0,-4: + 0: 15 + 0,-5: + 0: 61440 + -1,-4: + 0: 64750 + -1,-3: + 0: 36044 + 0,-3: + 0: 64768 + -1,-2: + 0: 52224 + 0,-1: + 0: 247 + -1,-1: + 0: 12 + 1,-4: + 0: 255 + 1,-3: + 0: 64256 + 1,-2: + 0: 239 + 2,-4: + 0: 3827 + 2,-3: + 0: 816 + 2,-2: + 0: 49169 + 2,-5: + 0: 8751 + 3,-4: + 0: 36848 + 3,-2: + 0: 12514 + 3,-3: + 0: 57344 + 4,-4: + 0: 65280 + 4,-3: + 0: 12849 + 4,-2: + 0: 52784 + -4,-4: + 0: 50726 + -4,-3: + 0: 12296 + -4,-2: + 0: 61047 + -5,-3: + 0: 50961 + -5,-2: + 0: 8 + -5,-1: + 0: 63345 + -4,-1: + 0: 2188 + -4,-5: + 0: 17648 + -3,-4: + 0: 127 + -3,-3: + 0: 207 + -3,-2: + 0: 28928 + -3,-5: + 0: 28912 + -2,-4: + 0: 61719 + -2,-3: + 0: 191 + -2,-5: + 0: 19487 + -1,-5: + 0: 58991 + -6,0: + 0: 2287 + -6,-1: + 0: 65534 + -7,-3: + 0: 127 + -7,-5: + 0: 62976 + -7,-4: + 0: 25130 + -6,-4: + 0: 49159 + -6,-3: + 0: 52975 + -6,-5: + 0: 49152 + -5,-4: + 0: 4402 + -5,-5: + 0: 64128 + 4,-1: + 0: 12 + 5,-4: + 0: 65504 + 5,-2: + 0: 4352 + 5,-3: + 0: 61166 + 6,-4: + 0: 13104 + 6,-3: + 0: 13107 + 0,-6: + 0: 17 + -1,-6: + 0: 52428 + 1,-6: + 0: 34816 + 2,-6: + 0: 61696 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: BananiumOre + entities: + - uid: 768 + components: + - type: Transform + pos: 22.574232,-8.517088 + parent: 1 +- proto: Bonfire + entities: + - uid: 211 + components: + - type: Transform + pos: -1.5,3.5 + parent: 1 +- proto: Bucket + entities: + - uid: 1058 + components: + - type: Transform + pos: 6.5065928,1.2520813 + parent: 1 +- proto: CableApcExtension + entities: + - uid: 668 + components: + - type: Transform + pos: 25.5,-10.5 + parent: 1 + - uid: 729 + components: + - type: Transform + pos: 25.5,-11.5 + parent: 1 +- proto: ChairFolding + entities: + - uid: 118 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.7275896,3.466334 + parent: 1 + - uid: 142 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.3135271,3.4428966 + parent: 1 + - uid: 155 + components: + - type: Transform + pos: -1.6963396,4.755397 + parent: 1 +- proto: ChairFoldingSpawnFolded + entities: + - uid: 117 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.9697771,6.489772 + parent: 1 + - uid: 143 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.4385271,6.161647 + parent: 1 + - uid: 144 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.6025896,6.5132093 + parent: 1 +- proto: Claymore + entities: + - uid: 207 + components: + - type: Transform + parent: 201 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: ClothingOuterArmorPodWars + entities: + - uid: 203 + components: + - type: Transform + parent: 201 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: ClothingOuterHardsuitSalvage + entities: + - uid: 719 + components: + - type: Transform + pos: -3.5290456,6.62422 + parent: 1 +- proto: CrateGenericSteel + entities: + - uid: 201 + components: + - type: Transform + pos: -19.5,-0.5 + parent: 1 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 208 + - 207 + - 206 + - 205 + - 204 + - 203 + - 202 + paper_label: !type:ContainerSlot + showEnts: False + occludes: True + ent: null +- proto: FloorLavaEntity + entities: + - uid: 24 + components: + - type: Transform + pos: 8.5,-6.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 7.5,-6.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 5.5,-6.5 + parent: 1 + - uid: 615 + components: + - type: Transform + pos: 6.5,-6.5 + parent: 1 + - uid: 630 + components: + - type: Transform + pos: 7.5,-6.5 + parent: 1 + - uid: 658 + components: + - type: Transform + pos: 8.5,-7.5 + parent: 1 + - uid: 784 + components: + - type: Transform + pos: 7.5,-7.5 + parent: 1 + - uid: 834 + components: + - type: Transform + pos: 7.5,-20.5 + parent: 1 + - uid: 835 + components: + - type: Transform + pos: 8.5,-20.5 + parent: 1 + - uid: 836 + components: + - type: Transform + pos: 7.5,-21.5 + parent: 1 + - uid: 837 + components: + - type: Transform + pos: 8.5,-19.5 + parent: 1 + - uid: 847 + components: + - type: Transform + pos: 6.5,-7.5 + parent: 1 + - uid: 848 + components: + - type: Transform + pos: 7.5,-7.5 + parent: 1 + - uid: 936 + components: + - type: Transform + pos: 1.5,-2.5 + parent: 1 + - uid: 938 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 941 + components: + - type: Transform + pos: 1.5,-3.5 + parent: 1 + - uid: 942 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 + - uid: 943 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 971 + components: + - type: Transform + pos: 0.5,-2.5 + parent: 1 + - uid: 973 + components: + - type: Transform + pos: 4.5,-2.5 + parent: 1 + - uid: 1003 + components: + - type: Transform + pos: -0.5,-3.5 + parent: 1 + - uid: 1004 + components: + - type: Transform + pos: -0.5,-4.5 + parent: 1 + - uid: 1006 + components: + - type: Transform + pos: 4.5,-1.5 + parent: 1 + - uid: 1007 + components: + - type: Transform + pos: 5.5,-1.5 + parent: 1 + - uid: 1008 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - uid: 1011 + components: + - type: Transform + pos: 0.5,-3.5 + parent: 1 + - uid: 1013 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 + - uid: 1015 + components: + - type: Transform + pos: 6.5,-1.5 + parent: 1 + - uid: 1016 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 + - uid: 1029 + components: + - type: Transform + pos: 10.5,-20.5 + parent: 1 + - uid: 1030 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 1 + - uid: 1031 + components: + - type: Transform + pos: -1.5,-5.5 + parent: 1 + - uid: 1037 + components: + - type: Transform + pos: 10.5,-19.5 + parent: 1 + - uid: 1038 + components: + - type: Transform + pos: -1.5,-3.5 + parent: 1 + - uid: 1039 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 1 + - uid: 1070 + components: + - type: Transform + pos: 11.5,-19.5 + parent: 1 + - uid: 1071 + components: + - type: Transform + pos: 11.5,-20.5 + parent: 1 + - uid: 1313 + components: + - type: Transform + pos: -20.5,-8.5 + parent: 1 + - uid: 1331 + components: + - type: Transform + pos: -21.5,-8.5 + parent: 1 + - uid: 1332 + components: + - type: Transform + pos: 9.5,-20.5 + parent: 1 + - uid: 1333 + components: + - type: Transform + pos: -27.5,-10.5 + parent: 1 + - uid: 1335 + components: + - type: Transform + pos: -26.5,-11.5 + parent: 1 + - uid: 1336 + components: + - type: Transform + pos: -27.5,-11.5 + parent: 1 + - uid: 1338 + components: + - type: Transform + pos: -21.5,-9.5 + parent: 1 + - uid: 1363 + components: + - type: Transform + pos: -26.5,-10.5 + parent: 1 +- proto: FoodBreadPlain + entities: + - uid: 205 + components: + - type: Transform + parent: 201 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: FoodGoldenApple + entities: + - uid: 202 + components: + - type: Transform + parent: 201 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: GoldOre + entities: + - uid: 752 + components: + - type: Transform + pos: 25.480482,-8.517088 + parent: 1 +- proto: IngotGold1 + entities: + - uid: 208 + components: + - type: Transform + parent: 201 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: Lantern + entities: + - uid: 571 + components: + - type: Transform + pos: 21.86286,-10.428041 + parent: 1 +- proto: MaterialDiamond1 + entities: + - uid: 204 + components: + - type: Transform + parent: 201 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: MiningDrillDiamond + entities: + - uid: 343 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.575366,0.62506294 + parent: 1 +- proto: OreBagOfHolding + entities: + - uid: 733 + components: + - type: Transform + pos: 21.496107,-8.563963 + parent: 1 +- proto: OreBox + entities: + - uid: 602 + components: + - type: Transform + pos: -9.5,-10.5 + parent: 1 + - uid: 603 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 620 + components: + - type: Transform + pos: -0.5,-19.5 + parent: 1 + - uid: 621 + components: + - type: Transform + pos: 24.5,-14.5 + parent: 1 + - uid: 648 + components: + - type: Transform + pos: 25.5,-14.5 + parent: 1 + - uid: 649 + components: + - type: Transform + pos: 0.5,6.5 + parent: 1 +- proto: OreProcessorIndustrial + entities: + - uid: 145 + components: + - type: Transform + pos: 25.5,-11.5 + parent: 1 +- proto: Pickaxe + entities: + - uid: 278 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -7.689954,-2.7317731 + parent: 1 + - uid: 766 + components: + - type: Transform + pos: 23.795095,-12.199974 + parent: 1 +- proto: PortableGeneratorJrPacman + entities: + - uid: 682 + components: + - type: Transform + pos: 25.5,-10.5 + parent: 1 +- proto: Rack + entities: + - uid: 570 + components: + - type: Transform + pos: 22.5,-8.5 + parent: 1 + - uid: 723 + components: + - type: Transform + pos: 25.5,-8.5 + parent: 1 + - uid: 724 + components: + - type: Transform + pos: 21.5,-8.5 + parent: 1 + - uid: 734 + components: + - type: Transform + pos: 24.5,-8.5 + parent: 1 + - uid: 764 + components: + - type: Transform + pos: -3.5,6.5 + parent: 1 +- proto: RandomCargoCorpseSpawner + entities: + - uid: 165 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -8.5,-3.5 + parent: 1 + - uid: 384 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-2.5 + parent: 1 + - uid: 1334 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,-11.5 + parent: 1 + - uid: 1404 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,2.5 + parent: 1 + - uid: 1405 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,-1.5 + parent: 1 +- proto: RandomWoodenSupport + entities: + - uid: 115 + components: + - type: Transform + pos: 4.5,-14.5 + parent: 1 + - uid: 116 + components: + - type: Transform + pos: 23.5,-9.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: 18.5,-13.5 + parent: 1 + - uid: 128 + components: + - type: Transform + pos: -11.5,-15.5 + parent: 1 + - uid: 129 + components: + - type: Transform + pos: -11.5,-3.5 + parent: 1 + - uid: 130 + components: + - type: Transform + pos: -2.5,6.5 + parent: 1 + - uid: 131 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: 12.5,-2.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: -15.5,3.5 + parent: 1 + - uid: 140 + components: + - type: Transform + pos: 13.5,-7.5 + parent: 1 + - uid: 141 + components: + - type: Transform + pos: 23.5,-13.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: 0.5,-23.5 + parent: 1 + - uid: 171 + components: + - type: Transform + pos: 1.5,-8.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: -15.5,-18.5 + parent: 1 + - uid: 180 + components: + - type: Transform + pos: -7.5,-13.5 + parent: 1 + - uid: 181 + components: + - type: Transform + pos: -2.5,-12.5 + parent: 1 + - uid: 200 + components: + - type: Transform + pos: -17.5,3.5 + parent: 1 + - uid: 209 + components: + - type: Transform + pos: -4.5,-19.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: 9.5,-16.5 + parent: 1 + - uid: 240 + components: + - type: Transform + pos: -9.5,2.5 + parent: 1 + - uid: 241 + components: + - type: Transform + pos: -6.5,3.5 + parent: 1 + - uid: 242 + components: + - type: Transform + pos: -23.5,-11.5 + parent: 1 + - uid: 256 + components: + - type: Transform + pos: -18.5,-9.5 + parent: 1 + - uid: 388 + components: + - type: Transform + pos: -1.5,-23.5 + parent: 1 +- proto: SalvageLootSpawner + entities: + - uid: 586 + components: + - type: Transform + pos: 8.5,-21.5 + parent: 1 +- proto: SpawnMobOreCrab + entities: + - uid: 421 + components: + - type: Transform + pos: 12.5,0.5 + parent: 1 + - uid: 522 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 674 + components: + - type: Transform + pos: -13.5,4.5 + parent: 1 + - uid: 977 + components: + - type: Transform + pos: 11.5,-3.5 + parent: 1 + - uid: 986 + components: + - type: Transform + pos: -21.5,-11.5 + parent: 1 + - uid: 987 + components: + - type: Transform + pos: 6.5,-14.5 + parent: 1 + - uid: 1017 + components: + - type: Transform + pos: 19.5,-4.5 + parent: 1 + - uid: 1018 + components: + - type: Transform + pos: 24.5,-10.5 + parent: 1 + - uid: 1046 + components: + - type: Transform + pos: -10.5,-15.5 + parent: 1 + - uid: 1047 + components: + - type: Transform + pos: 22.5,-13.5 + parent: 1 + - uid: 1078 + components: + - type: Transform + pos: -4.5,4.5 + parent: 1 + - uid: 1084 + components: + - type: Transform + pos: -10.5,-1.5 + parent: 1 + - uid: 1085 + components: + - type: Transform + pos: -16.5,-8.5 + parent: 1 +- proto: SpawnMobSpiderSalvage + entities: + - uid: 174 + components: + - type: Transform + pos: -18.5,-1.5 + parent: 1 + - uid: 210 + components: + - type: Transform + pos: -21.5,-0.5 + parent: 1 +- proto: SpiderWeb + entities: + - uid: 85 + components: + - type: Transform + pos: -20.5,-1.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: -21.5,-0.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: -21.5,-1.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: -22.5,-1.5 + parent: 1 + - uid: 170 + components: + - type: Transform + pos: -17.5,1.5 + parent: 1 + - uid: 173 + components: + - type: Transform + pos: -18.5,0.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: -16.5,2.5 + parent: 1 + - uid: 179 + components: + - type: Transform + pos: -17.5,2.5 + parent: 1 + - uid: 182 + components: + - type: Transform + pos: -18.5,0.5 + parent: 1 + - uid: 183 + components: + - type: Transform + pos: -18.5,-0.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: -21.5,-2.5 + parent: 1 + - uid: 191 + components: + - type: Transform + pos: -20.5,2.5 + parent: 1 + - uid: 229 + components: + - type: Transform + pos: -19.5,-3.5 + parent: 1 + - uid: 230 + components: + - type: Transform + pos: -21.5,1.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: -17.5,-2.5 + parent: 1 + - uid: 255 + components: + - type: Transform + pos: -17.5,-1.5 + parent: 1 + - uid: 277 + components: + - type: Transform + pos: -23.5,-2.5 + parent: 1 + - uid: 293 + components: + - type: Transform + pos: -18.5,1.5 + parent: 1 + - uid: 316 + components: + - type: Transform + pos: -22.5,1.5 + parent: 1 + - uid: 317 + components: + - type: Transform + pos: -22.5,-3.5 + parent: 1 + - uid: 342 + components: + - type: Transform + pos: -19.5,0.5 + parent: 1 + - uid: 357 + components: + - type: Transform + pos: -17.5,0.5 + parent: 1 + - uid: 383 + components: + - type: Transform + pos: -17.5,-0.5 + parent: 1 + - uid: 1271 + components: + - type: Transform + pos: -22.5,0.5 + parent: 1 +- proto: SteelOre + entities: + - uid: 767 + components: + - type: Transform + pos: 24.519545,-8.49365 + parent: 1 +- proto: Table + entities: + - uid: 294 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,0.5 + parent: 1 +- proto: WallRockBasalt + entities: + - uid: 2 + components: + - type: Transform + pos: -27.5,-9.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -27.5,-15.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -28.5,-18.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: -27.5,4.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: -27.5,3.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -27.5,2.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -27.5,1.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: -27.5,0.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -27.5,-0.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: -27.5,-1.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: -27.5,-5.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: -27.5,-6.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: -27.5,-7.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: -27.5,-8.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: -26.5,1.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: -26.5,0.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: -26.5,-0.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: -26.5,-5.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: -26.5,-6.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: -26.5,4.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -26.5,3.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -26.5,2.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -27.5,-18.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: -26.5,-18.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: -24.5,4.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: -24.5,-1.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: -22.5,-12.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: -25.5,-13.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: -25.5,-15.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 2.5,-14.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: -25.5,-18.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: -25.5,-14.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: -25.5,4.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: -25.5,-2.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: -25.5,-3.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: -25.5,-4.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: -25.5,-6.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: -25.5,-5.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: -23.5,-7.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: -22.5,-8.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: -23.5,-12.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: -23.5,-14.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: -23.5,4.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: -23.5,-4.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: -23.5,-5.5 + parent: 1 + - uid: 93 + components: + - type: Transform + pos: -23.5,-8.5 + parent: 1 + - uid: 94 + components: + - type: Transform + pos: -24.5,-17.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: -24.5,-18.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: -24.5,-0.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: -24.5,-7.5 + parent: 1 + - uid: 100 + components: + - type: Transform + pos: -24.5,-8.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: -24.5,-6.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: -19.5,-8.5 + parent: 1 + - uid: 107 + components: + - type: Transform + pos: -24.5,-14.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: -27.5,-17.5 + parent: 1 + - uid: 110 + components: + - type: Transform + pos: 3.5,-14.5 + parent: 1 + - uid: 111 + components: + - type: Transform + pos: -24.5,-2.5 + parent: 1 + - uid: 113 + components: + - type: Transform + pos: -21.5,3.5 + parent: 1 + - uid: 114 + components: + - type: Transform + pos: -21.5,2.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: -22.5,-16.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: -22.5,-17.5 + parent: 1 + - uid: 124 + components: + - type: Transform + pos: -22.5,4.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: -22.5,3.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: -22.5,-4.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: -22.5,-5.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: -22.5,-7.5 + parent: 1 + - uid: 138 + components: + - type: Transform + pos: -20.5,3.5 + parent: 1 + - uid: 146 + components: + - type: Transform + pos: -20.5,-4.5 + parent: 1 + - uid: 148 + components: + - type: Transform + pos: -20.5,-6.5 + parent: 1 + - uid: 152 + components: + - type: Transform + pos: -20.5,-15.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: -21.5,-4.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: -21.5,-5.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: -21.5,-17.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: -21.5,-18.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: -18.5,-3.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: -18.5,4.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: -18.5,3.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: -19.5,-15.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: -19.5,-18.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: -19.5,-4.5 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: -19.5,-7.5 + parent: 1 + - uid: 194 + components: + - type: Transform + pos: -17.5,-13.5 + parent: 1 + - uid: 195 + components: + - type: Transform + pos: -17.5,-14.5 + parent: 1 + - uid: 196 + components: + - type: Transform + pos: -17.5,-15.5 + parent: 1 + - uid: 197 + components: + - type: Transform + pos: -17.5,-17.5 + parent: 1 + - uid: 199 + components: + - type: Transform + pos: -17.5,4.5 + parent: 1 + - uid: 214 + components: + - type: Transform + pos: -17.5,-4.5 + parent: 1 + - uid: 216 + components: + - type: Transform + pos: -17.5,-6.5 + parent: 1 + - uid: 217 + components: + - type: Transform + pos: -17.5,-7.5 + parent: 1 + - uid: 218 + components: + - type: Transform + pos: -17.5,-10.5 + parent: 1 + - uid: 221 + components: + - type: Transform + pos: -18.5,-7.5 + parent: 1 + - uid: 222 + components: + - type: Transform + pos: -18.5,-8.5 + parent: 1 + - uid: 223 + components: + - type: Transform + pos: -18.5,-10.5 + parent: 1 + - uid: 224 + components: + - type: Transform + pos: -18.5,-11.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: -18.5,-12.5 + parent: 1 + - uid: 226 + components: + - type: Transform + pos: -18.5,-13.5 + parent: 1 + - uid: 228 + components: + - type: Transform + pos: -18.5,-4.5 + parent: 1 + - uid: 231 + components: + - type: Transform + pos: -15.5,2.5 + parent: 1 + - uid: 232 + components: + - type: Transform + pos: -15.5,1.5 + parent: 1 + - uid: 233 + components: + - type: Transform + pos: -15.5,0.5 + parent: 1 + - uid: 234 + components: + - type: Transform + pos: -15.5,-0.5 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: -16.5,-14.5 + parent: 1 + - uid: 239 + components: + - type: Transform + pos: -16.5,-15.5 + parent: 1 + - uid: 246 + components: + - type: Transform + pos: -16.5,-4.5 + parent: 1 + - uid: 247 + components: + - type: Transform + pos: -16.5,-5.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: -16.5,-6.5 + parent: 1 + - uid: 257 + components: + - type: Transform + pos: -15.5,-4.5 + parent: 1 + - uid: 258 + components: + - type: Transform + pos: -14.5,-12.5 + parent: 1 + - uid: 259 + components: + - type: Transform + pos: -14.5,-16.5 + parent: 1 + - uid: 260 + components: + - type: Transform + pos: -14.5,-17.5 + parent: 1 + - uid: 264 + components: + - type: Transform + pos: -14.5,0.5 + parent: 1 + - uid: 265 + components: + - type: Transform + pos: -14.5,-0.5 + parent: 1 + - uid: 272 + components: + - type: Transform + pos: -14.5,10.5 + parent: 1 + - uid: 273 + components: + - type: Transform + pos: -14.5,9.5 + parent: 1 + - uid: 274 + components: + - type: Transform + pos: -14.5,8.5 + parent: 1 + - uid: 275 + components: + - type: Transform + pos: -14.5,7.5 + parent: 1 + - uid: 282 + components: + - type: Transform + pos: -15.5,-12.5 + parent: 1 + - uid: 285 + components: + - type: Transform + pos: -15.5,-15.5 + parent: 1 + - uid: 286 + components: + - type: Transform + pos: -15.5,-16.5 + parent: 1 + - uid: 287 + components: + - type: Transform + pos: -15.5,-17.5 + parent: 1 + - uid: 288 + components: + - type: Transform + pos: -15.5,-5.5 + parent: 1 + - uid: 295 + components: + - type: Transform + pos: -12.5,3.5 + parent: 1 + - uid: 296 + components: + - type: Transform + pos: -12.5,2.5 + parent: 1 + - uid: 297 + components: + - type: Transform + pos: -12.5,1.5 + parent: 1 + - uid: 298 + components: + - type: Transform + pos: -12.5,0.5 + parent: 1 + - uid: 300 + components: + - type: Transform + pos: -12.5,10.5 + parent: 1 + - uid: 301 + components: + - type: Transform + pos: -13.5,-0.5 + parent: 1 + - uid: 302 + components: + - type: Transform + pos: -13.5,-1.5 + parent: 1 + - uid: 304 + components: + - type: Transform + pos: -12.5,-0.5 + parent: 1 + - uid: 305 + components: + - type: Transform + pos: -13.5,-8.5 + parent: 1 + - uid: 307 + components: + - type: Transform + pos: -13.5,-10.5 + parent: 1 + - uid: 308 + components: + - type: Transform + pos: -13.5,-11.5 + parent: 1 + - uid: 309 + components: + - type: Transform + pos: -12.5,-13.5 + parent: 1 + - uid: 310 + components: + - type: Transform + pos: -13.5,-14.5 + parent: 1 + - uid: 311 + components: + - type: Transform + pos: -13.5,10.5 + parent: 1 + - uid: 318 + components: + - type: Transform + pos: -13.5,3.5 + parent: 1 + - uid: 320 + components: + - type: Transform + pos: -13.5,1.5 + parent: 1 + - uid: 322 + components: + - type: Transform + pos: -11.5,-17.5 + parent: 1 + - uid: 323 + components: + - type: Transform + pos: -10.5,13.5 + parent: 1 + - uid: 325 + components: + - type: Transform + pos: -4.5,6.5 + parent: 1 + - uid: 331 + components: + - type: Transform + pos: -11.5,-10.5 + parent: 1 + - uid: 332 + components: + - type: Transform + pos: -11.5,-12.5 + parent: 1 + - uid: 333 + components: + - type: Transform + pos: -11.5,-13.5 + parent: 1 + - uid: 334 + components: + - type: Transform + pos: -11.5,13.5 + parent: 1 + - uid: 335 + components: + - type: Transform + pos: -11.5,12.5 + parent: 1 + - uid: 336 + components: + - type: Transform + pos: -11.5,11.5 + parent: 1 + - uid: 337 + components: + - type: Transform + pos: -11.5,10.5 + parent: 1 + - uid: 348 + components: + - type: Transform + pos: -12.5,-10.5 + parent: 1 + - uid: 349 + components: + - type: Transform + pos: -12.5,-14.5 + parent: 1 + - uid: 350 + components: + - type: Transform + pos: -12.5,-15.5 + parent: 1 + - uid: 351 + components: + - type: Transform + pos: -12.5,-16.5 + parent: 1 + - uid: 352 + components: + - type: Transform + pos: -12.5,-17.5 + parent: 1 + - uid: 355 + components: + - type: Transform + pos: -9.5,7.5 + parent: 1 + - uid: 356 + components: + - type: Transform + pos: -9.5,6.5 + parent: 1 + - uid: 359 + components: + - type: Transform + pos: -9.5,-6.5 + parent: 1 + - uid: 364 + components: + - type: Transform + pos: -9.5,10.5 + parent: 1 + - uid: 365 + components: + - type: Transform + pos: -9.5,9.5 + parent: 1 + - uid: 367 + components: + - type: Transform + pos: -10.5,-5.5 + parent: 1 + - uid: 368 + components: + - type: Transform + pos: -10.5,-6.5 + parent: 1 + - uid: 371 + components: + - type: Transform + pos: -10.5,-9.5 + parent: 1 + - uid: 372 + components: + - type: Transform + pos: -10.5,-10.5 + parent: 1 + - uid: 373 + components: + - type: Transform + pos: -10.5,-12.5 + parent: 1 + - uid: 374 + components: + - type: Transform + pos: -10.5,-13.5 + parent: 1 + - uid: 375 + components: + - type: Transform + pos: -10.5,-17.5 + parent: 1 + - uid: 376 + components: + - type: Transform + pos: -10.5,12.5 + parent: 1 + - uid: 377 + components: + - type: Transform + pos: -10.5,11.5 + parent: 1 + - uid: 378 + components: + - type: Transform + pos: -10.5,10.5 + parent: 1 + - uid: 379 + components: + - type: Transform + pos: -10.5,9.5 + parent: 1 + - uid: 380 + components: + - type: Transform + pos: -10.5,8.5 + parent: 1 + - uid: 381 + components: + - type: Transform + pos: -10.5,7.5 + parent: 1 + - uid: 382 + components: + - type: Transform + pos: -10.5,6.5 + parent: 1 + - uid: 389 + components: + - type: Transform + pos: -8.5,-16.5 + parent: 1 + - uid: 390 + components: + - type: Transform + pos: -8.5,-17.5 + parent: 1 + - uid: 398 + components: + - type: Transform + pos: -8.5,-8.5 + parent: 1 + - uid: 400 + components: + - type: Transform + pos: -8.5,-12.5 + parent: 1 + - uid: 401 + components: + - type: Transform + pos: -8.5,-13.5 + parent: 1 + - uid: 402 + components: + - type: Transform + pos: -8.5,-14.5 + parent: 1 + - uid: 406 + components: + - type: Transform + pos: -8.5,10.5 + parent: 1 + - uid: 407 + components: + - type: Transform + pos: -8.5,9.5 + parent: 1 + - uid: 409 + components: + - type: Transform + pos: -8.5,7.5 + parent: 1 + - uid: 410 + components: + - type: Transform + pos: -8.5,6.5 + parent: 1 + - uid: 411 + components: + - type: Transform + pos: -8.5,5.5 + parent: 1 + - uid: 412 + components: + - type: Transform + pos: -8.5,3.5 + parent: 1 + - uid: 413 + components: + - type: Transform + pos: -8.5,2.5 + parent: 1 + - uid: 414 + components: + - type: Transform + pos: -8.5,1.5 + parent: 1 + - uid: 415 + components: + - type: Transform + pos: -4.5,0.5 + parent: 1 + - uid: 417 + components: + - type: Transform + pos: -9.5,-12.5 + parent: 1 + - uid: 418 + components: + - type: Transform + pos: -9.5,-13.5 + parent: 1 + - uid: 419 + components: + - type: Transform + pos: -9.5,-17.5 + parent: 1 + - uid: 422 + components: + - type: Transform + pos: -7.5,10.5 + parent: 1 + - uid: 427 + components: + - type: Transform + pos: -7.5,5.5 + parent: 1 + - uid: 428 + components: + - type: Transform + pos: -7.5,2.5 + parent: 1 + - uid: 431 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 432 + components: + - type: Transform + pos: -6.5,-3.5 + parent: 1 + - uid: 433 + components: + - type: Transform + pos: -6.5,5.5 + parent: 1 + - uid: 434 + components: + - type: Transform + pos: -6.5,4.5 + parent: 1 + - uid: 435 + components: + - type: Transform + pos: -6.5,2.5 + parent: 1 + - uid: 439 + components: + - type: Transform + pos: -6.5,-4.5 + parent: 1 + - uid: 440 + components: + - type: Transform + pos: -6.5,-5.5 + parent: 1 + - uid: 441 + components: + - type: Transform + pos: -6.5,-6.5 + parent: 1 + - uid: 442 + components: + - type: Transform + pos: -6.5,-7.5 + parent: 1 + - uid: 443 + components: + - type: Transform + pos: -6.5,-8.5 + parent: 1 + - uid: 444 + components: + - type: Transform + pos: -6.5,-9.5 + parent: 1 + - uid: 448 + components: + - type: Transform + pos: -6.5,10.5 + parent: 1 + - uid: 458 + components: + - type: Transform + pos: -7.5,-9.5 + parent: 1 + - uid: 460 + components: + - type: Transform + pos: -7.5,-16.5 + parent: 1 + - uid: 461 + components: + - type: Transform + pos: -7.5,-17.5 + parent: 1 + - uid: 463 + components: + - type: Transform + pos: -5.5,-3.5 + parent: 1 + - uid: 464 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 1 + - uid: 469 + components: + - type: Transform + pos: -5.5,-9.5 + parent: 1 + - uid: 470 + components: + - type: Transform + pos: -5.5,-10.5 + parent: 1 + - uid: 471 + components: + - type: Transform + pos: -2.5,-11.5 + parent: 1 + - uid: 472 + components: + - type: Transform + pos: -5.5,-13.5 + parent: 1 + - uid: 473 + components: + - type: Transform + pos: -5.5,-14.5 + parent: 1 + - uid: 477 + components: + - type: Transform + pos: -5.5,10.5 + parent: 1 + - uid: 479 + components: + - type: Transform + pos: -5.5,8.5 + parent: 1 + - uid: 480 + components: + - type: Transform + pos: -5.5,7.5 + parent: 1 + - uid: 481 + components: + - type: Transform + pos: -5.5,6.5 + parent: 1 + - uid: 482 + components: + - type: Transform + pos: -5.5,5.5 + parent: 1 + - uid: 483 + components: + - type: Transform + pos: -5.5,2.5 + parent: 1 + - uid: 488 + components: + - type: Transform + pos: -3.5,-11.5 + parent: 1 + - uid: 489 + components: + - type: Transform + pos: -6.5,-13.5 + parent: 1 + - uid: 490 + components: + - type: Transform + pos: -6.5,-14.5 + parent: 1 + - uid: 491 + components: + - type: Transform + pos: -6.5,-16.5 + parent: 1 + - uid: 492 + components: + - type: Transform + pos: -6.5,-17.5 + parent: 1 + - uid: 493 + components: + - type: Transform + pos: -6.5,-18.5 + parent: 1 + - uid: 494 + components: + - type: Transform + pos: -5.5,-18.5 + parent: 1 + - uid: 498 + components: + - type: Transform + pos: -4.5,10.5 + parent: 1 + - uid: 499 + components: + - type: Transform + pos: -4.5,9.5 + parent: 1 + - uid: 500 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 + - uid: 505 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 1 + - uid: 506 + components: + - type: Transform + pos: -3.5,-6.5 + parent: 1 + - uid: 507 + components: + - type: Transform + pos: -3.5,-7.5 + parent: 1 + - uid: 509 + components: + - type: Transform + pos: -3.5,-9.5 + parent: 1 + - uid: 510 + components: + - type: Transform + pos: -3.5,-10.5 + parent: 1 + - uid: 511 + components: + - type: Transform + pos: -3.5,13.5 + parent: 1 + - uid: 512 + components: + - type: Transform + pos: -3.5,12.5 + parent: 1 + - uid: 513 + components: + - type: Transform + pos: -3.5,11.5 + parent: 1 + - uid: 514 + components: + - type: Transform + pos: -3.5,10.5 + parent: 1 + - uid: 515 + components: + - type: Transform + pos: -3.5,9.5 + parent: 1 + - uid: 517 + components: + - type: Transform + pos: -3.5,7.5 + parent: 1 + - uid: 519 + components: + - type: Transform + pos: -4.5,-7.5 + parent: 1 + - uid: 520 + components: + - type: Transform + pos: -4.5,-8.5 + parent: 1 + - uid: 521 + components: + - type: Transform + pos: -4.5,-9.5 + parent: 1 + - uid: 523 + components: + - type: Transform + pos: -4.5,-13.5 + parent: 1 + - uid: 524 + components: + - type: Transform + pos: -4.5,-14.5 + parent: 1 + - uid: 525 + components: + - type: Transform + pos: -4.5,-15.5 + parent: 1 + - uid: 526 + components: + - type: Transform + pos: -4.5,-16.5 + parent: 1 + - uid: 527 + components: + - type: Transform + pos: -4.5,-18.5 + parent: 1 + - uid: 528 + components: + - type: Transform + pos: -4.5,8.5 + parent: 1 + - uid: 529 + components: + - type: Transform + pos: -4.5,7.5 + parent: 1 + - uid: 530 + components: + - type: Transform + pos: -4.5,-0.5 + parent: 1 + - uid: 533 + components: + - type: Transform + pos: -4.5,-3.5 + parent: 1 + - uid: 534 + components: + - type: Transform + pos: -4.5,-4.5 + parent: 1 + - uid: 536 + components: + - type: Transform + pos: -1.5,13.5 + parent: 1 + - uid: 537 + components: + - type: Transform + pos: -1.5,12.5 + parent: 1 + - uid: 538 + components: + - type: Transform + pos: -1.5,11.5 + parent: 1 + - uid: 548 + components: + - type: Transform + pos: -2.5,-9.5 + parent: 1 + - uid: 549 + components: + - type: Transform + pos: -2.5,-10.5 + parent: 1 + - uid: 550 + components: + - type: Transform + pos: -2.5,-13.5 + parent: 1 + - uid: 551 + components: + - type: Transform + pos: -2.5,11.5 + parent: 1 + - uid: 552 + components: + - type: Transform + pos: -2.5,10.5 + parent: 1 + - uid: 553 + components: + - type: Transform + pos: -2.5,9.5 + parent: 1 + - uid: 556 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 560 + components: + - type: Transform + pos: -3.5,-14.5 + parent: 1 + - uid: 561 + components: + - type: Transform + pos: -3.5,-15.5 + parent: 1 + - uid: 562 + components: + - type: Transform + pos: -3.5,-16.5 + parent: 1 + - uid: 563 + components: + - type: Transform + pos: -3.5,-17.5 + parent: 1 + - uid: 564 + components: + - type: Transform + pos: -3.5,-18.5 + parent: 1 + - uid: 565 + components: + - type: Transform + pos: -2.5,13.5 + parent: 1 + - uid: 566 + components: + - type: Transform + pos: -2.5,12.5 + parent: 1 + - uid: 567 + components: + - type: Transform + pos: -3.5,-13.5 + parent: 1 + - uid: 568 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 572 + components: + - type: Transform + pos: 6.5,-9.5 + parent: 1 + - uid: 574 + components: + - type: Transform + pos: -0.5,-6.5 + parent: 1 + - uid: 575 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 1 + - uid: 576 + components: + - type: Transform + pos: -0.5,12.5 + parent: 1 + - uid: 577 + components: + - type: Transform + pos: -0.5,11.5 + parent: 1 + - uid: 578 + components: + - type: Transform + pos: -0.5,10.5 + parent: 1 + - uid: 579 + components: + - type: Transform + pos: -0.5,9.5 + parent: 1 + - uid: 580 + components: + - type: Transform + pos: -0.5,8.5 + parent: 1 + - uid: 581 + components: + - type: Transform + pos: -0.5,7.5 + parent: 1 + - uid: 583 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 1 + - uid: 584 + components: + - type: Transform + pos: -1.5,-1.5 + parent: 1 + - uid: 585 + components: + - type: Transform + pos: -1.5,-2.5 + parent: 1 + - uid: 587 + components: + - type: Transform + pos: 8.5,-8.5 + parent: 1 + - uid: 588 + components: + - type: Transform + pos: 1.5,-9.5 + parent: 1 + - uid: 589 + components: + - type: Transform + pos: -1.5,-6.5 + parent: 1 + - uid: 591 + components: + - type: Transform + pos: 1.5,12.5 + parent: 1 + - uid: 592 + components: + - type: Transform + pos: 1.5,11.5 + parent: 1 + - uid: 593 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 + - uid: 594 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 + - uid: 595 + components: + - type: Transform + pos: 1.5,8.5 + parent: 1 + - uid: 597 + components: + - type: Transform + pos: 0.5,9.5 + parent: 1 + - uid: 598 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 600 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 606 + components: + - type: Transform + pos: 0.5,12.5 + parent: 1 + - uid: 607 + components: + - type: Transform + pos: 0.5,11.5 + parent: 1 + - uid: 608 + components: + - type: Transform + pos: 0.5,10.5 + parent: 1 + - uid: 609 + components: + - type: Transform + pos: 0.5,-6.5 + parent: 1 + - uid: 610 + components: + - type: Transform + pos: 0.5,-7.5 + parent: 1 + - uid: 611 + components: + - type: Transform + pos: 0.5,-10.5 + parent: 1 + - uid: 618 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 + - uid: 624 + components: + - type: Transform + pos: 1.5,-6.5 + parent: 1 + - uid: 625 + components: + - type: Transform + pos: 1.5,-7.5 + parent: 1 + - uid: 626 + components: + - type: Transform + pos: 1.5,-10.5 + parent: 1 + - uid: 627 + components: + - type: Transform + pos: 1.5,-11.5 + parent: 1 + - uid: 631 + components: + - type: Transform + pos: 1.5,-17.5 + parent: 1 + - uid: 632 + components: + - type: Transform + pos: 1.5,-18.5 + parent: 1 + - uid: 633 + components: + - type: Transform + pos: 2.5,12.5 + parent: 1 + - uid: 634 + components: + - type: Transform + pos: 2.5,11.5 + parent: 1 + - uid: 635 + components: + - type: Transform + pos: 2.5,10.5 + parent: 1 + - uid: 636 + components: + - type: Transform + pos: 2.5,9.5 + parent: 1 + - uid: 637 + components: + - type: Transform + pos: 2.5,8.5 + parent: 1 + - uid: 638 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - uid: 641 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 646 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 + - uid: 659 + components: + - type: Transform + pos: 4.5,12.5 + parent: 1 + - uid: 660 + components: + - type: Transform + pos: 4.5,11.5 + parent: 1 + - uid: 661 + components: + - type: Transform + pos: 4.5,10.5 + parent: 1 + - uid: 662 + components: + - type: Transform + pos: 4.5,9.5 + parent: 1 + - uid: 663 + components: + - type: Transform + pos: 4.5,8.5 + parent: 1 + - uid: 664 + components: + - type: Transform + pos: 4.5,7.5 + parent: 1 + - uid: 665 + components: + - type: Transform + pos: 4.5,6.5 + parent: 1 + - uid: 673 + components: + - type: Transform + pos: 3.5,-13.5 + parent: 1 + - uid: 677 + components: + - type: Transform + pos: 3.5,8.5 + parent: 1 + - uid: 678 + components: + - type: Transform + pos: 3.5,7.5 + parent: 1 + - uid: 679 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 680 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 681 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 686 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 687 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 + - uid: 691 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 693 + components: + - type: Transform + pos: 2.5,-17.5 + parent: 1 + - uid: 695 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 + - uid: 696 + components: + - type: Transform + pos: 3.5,11.5 + parent: 1 + - uid: 697 + components: + - type: Transform + pos: 3.5,10.5 + parent: 1 + - uid: 698 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 + - uid: 701 + components: + - type: Transform + pos: 5.5,-5.5 + parent: 1 + - uid: 702 + components: + - type: Transform + pos: 5.5,-10.5 + parent: 1 + - uid: 703 + components: + - type: Transform + pos: 5.5,-11.5 + parent: 1 + - uid: 704 + components: + - type: Transform + pos: 5.5,-12.5 + parent: 1 + - uid: 705 + components: + - type: Transform + pos: 5.5,-13.5 + parent: 1 + - uid: 706 + components: + - type: Transform + pos: 5.5,-16.5 + parent: 1 + - uid: 707 + components: + - type: Transform + pos: 5.5,-17.5 + parent: 1 + - uid: 708 + components: + - type: Transform + pos: 5.5,-18.5 + parent: 1 + - uid: 709 + components: + - type: Transform + pos: 5.5,12.5 + parent: 1 + - uid: 710 + components: + - type: Transform + pos: 5.5,11.5 + parent: 1 + - uid: 711 + components: + - type: Transform + pos: 5.5,10.5 + parent: 1 + - uid: 712 + components: + - type: Transform + pos: 5.5,9.5 + parent: 1 + - uid: 713 + components: + - type: Transform + pos: 5.5,8.5 + parent: 1 + - uid: 714 + components: + - type: Transform + pos: 5.5,7.5 + parent: 1 + - uid: 715 + components: + - type: Transform + pos: 5.5,6.5 + parent: 1 + - uid: 725 + components: + - type: Transform + pos: 4.5,-13.5 + parent: 1 + - uid: 726 + components: + - type: Transform + pos: 4.5,-16.5 + parent: 1 + - uid: 727 + components: + - type: Transform + pos: 4.5,-17.5 + parent: 1 + - uid: 737 + components: + - type: Transform + pos: 4.5,-5.5 + parent: 1 + - uid: 738 + components: + - type: Transform + pos: 4.5,-10.5 + parent: 1 + - uid: 739 + components: + - type: Transform + pos: 4.5,-11.5 + parent: 1 + - uid: 741 + components: + - type: Transform + pos: 7.5,12.5 + parent: 1 + - uid: 742 + components: + - type: Transform + pos: 7.5,11.5 + parent: 1 + - uid: 743 + components: + - type: Transform + pos: 7.5,10.5 + parent: 1 + - uid: 744 + components: + - type: Transform + pos: 7.5,9.5 + parent: 1 + - uid: 747 + components: + - type: Transform + pos: 7.5,6.5 + parent: 1 + - uid: 769 + components: + - type: Transform + pos: 6.5,-2.5 + parent: 1 + - uid: 770 + components: + - type: Transform + pos: 6.5,-3.5 + parent: 1 + - uid: 772 + components: + - type: Transform + pos: 6.5,-5.5 + parent: 1 + - uid: 773 + components: + - type: Transform + pos: 6.5,12.5 + parent: 1 + - uid: 774 + components: + - type: Transform + pos: 6.5,11.5 + parent: 1 + - uid: 775 + components: + - type: Transform + pos: 6.5,10.5 + parent: 1 + - uid: 776 + components: + - type: Transform + pos: 6.5,9.5 + parent: 1 + - uid: 778 + components: + - type: Transform + pos: 6.5,7.5 + parent: 1 + - uid: 782 + components: + - type: Transform + pos: 8.5,11.5 + parent: 1 + - uid: 783 + components: + - type: Transform + pos: 8.5,-5.5 + parent: 1 + - uid: 785 + components: + - type: Transform + pos: 8.5,-11.5 + parent: 1 + - uid: 786 + components: + - type: Transform + pos: 8.5,-12.5 + parent: 1 + - uid: 787 + components: + - type: Transform + pos: 8.5,-13.5 + parent: 1 + - uid: 788 + components: + - type: Transform + pos: 8.5,-16.5 + parent: 1 + - uid: 789 + components: + - type: Transform + pos: 8.5,-17.5 + parent: 1 + - uid: 792 + components: + - type: Transform + pos: 7.5,-0.5 + parent: 1 + - uid: 793 + components: + - type: Transform + pos: 7.5,-1.5 + parent: 1 + - uid: 795 + components: + - type: Transform + pos: 7.5,-3.5 + parent: 1 + - uid: 797 + components: + - type: Transform + pos: 7.5,-5.5 + parent: 1 + - uid: 798 + components: + - type: Transform + pos: 7.5,-10.5 + parent: 1 + - uid: 799 + components: + - type: Transform + pos: 7.5,-11.5 + parent: 1 + - uid: 802 + components: + - type: Transform + pos: 8.5,10.5 + parent: 1 + - uid: 803 + components: + - type: Transform + pos: 8.5,9.5 + parent: 1 + - uid: 804 + components: + - type: Transform + pos: 8.5,8.5 + parent: 1 + - uid: 805 + components: + - type: Transform + pos: 8.5,7.5 + parent: 1 + - uid: 806 + components: + - type: Transform + pos: 8.5,6.5 + parent: 1 + - uid: 811 + components: + - type: Transform + pos: 15.5,-0.5 + parent: 1 + - uid: 817 + components: + - type: Transform + pos: 8.5,-4.5 + parent: 1 + - uid: 818 + components: + - type: Transform + pos: 10.5,11.5 + parent: 1 + - uid: 819 + components: + - type: Transform + pos: 10.5,10.5 + parent: 1 + - uid: 820 + components: + - type: Transform + pos: 10.5,9.5 + parent: 1 + - uid: 821 + components: + - type: Transform + pos: 10.5,8.5 + parent: 1 + - uid: 822 + components: + - type: Transform + pos: 10.5,7.5 + parent: 1 + - uid: 823 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 + - uid: 824 + components: + - type: Transform + pos: 10.5,5.5 + parent: 1 + - uid: 825 + components: + - type: Transform + pos: 10.5,4.5 + parent: 1 + - uid: 826 + components: + - type: Transform + pos: 10.5,3.5 + parent: 1 + - uid: 827 + components: + - type: Transform + pos: 10.5,2.5 + parent: 1 + - uid: 830 + components: + - type: Transform + pos: 9.5,-11.5 + parent: 1 + - uid: 831 + components: + - type: Transform + pos: 9.5,-12.5 + parent: 1 + - uid: 832 + components: + - type: Transform + pos: 10.5,-12.5 + parent: 1 + - uid: 839 + components: + - type: Transform + pos: 9.5,3.5 + parent: 1 + - uid: 840 + components: + - type: Transform + pos: 15.5,-3.5 + parent: 1 + - uid: 843 + components: + - type: Transform + pos: 9.5,-5.5 + parent: 1 + - uid: 844 + components: + - type: Transform + pos: 9.5,-6.5 + parent: 1 + - uid: 845 + components: + - type: Transform + pos: 9.5,-7.5 + parent: 1 + - uid: 846 + components: + - type: Transform + pos: 9.5,-8.5 + parent: 1 + - uid: 849 + components: + - type: Transform + pos: 9.5,11.5 + parent: 1 + - uid: 850 + components: + - type: Transform + pos: 9.5,10.5 + parent: 1 + - uid: 851 + components: + - type: Transform + pos: 9.5,9.5 + parent: 1 + - uid: 852 + components: + - type: Transform + pos: 9.5,8.5 + parent: 1 + - uid: 853 + components: + - type: Transform + pos: 9.5,7.5 + parent: 1 + - uid: 854 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 + - uid: 857 + components: + - type: Transform + pos: 11.5,-8.5 + parent: 1 + - uid: 858 + components: + - type: Transform + pos: 11.5,-9.5 + parent: 1 + - uid: 859 + components: + - type: Transform + pos: 11.5,-10.5 + parent: 1 + - uid: 863 + components: + - type: Transform + pos: 11.5,-17.5 + parent: 1 + - uid: 865 + components: + - type: Transform + pos: 11.5,8.5 + parent: 1 + - uid: 866 + components: + - type: Transform + pos: 11.5,7.5 + parent: 1 + - uid: 867 + components: + - type: Transform + pos: 11.5,6.5 + parent: 1 + - uid: 868 + components: + - type: Transform + pos: 11.5,5.5 + parent: 1 + - uid: 869 + components: + - type: Transform + pos: 11.5,4.5 + parent: 1 + - uid: 870 + components: + - type: Transform + pos: 11.5,3.5 + parent: 1 + - uid: 871 + components: + - type: Transform + pos: 11.5,2.5 + parent: 1 + - uid: 872 + components: + - type: Transform + pos: 9.5,-4.5 + parent: 1 + - uid: 876 + components: + - type: Transform + pos: 10.5,-17.5 + parent: 1 + - uid: 877 + components: + - type: Transform + pos: 10.5,-18.5 + parent: 1 + - uid: 878 + components: + - type: Transform + pos: 11.5,11.5 + parent: 1 + - uid: 879 + components: + - type: Transform + pos: 11.5,10.5 + parent: 1 + - uid: 880 + components: + - type: Transform + pos: 11.5,9.5 + parent: 1 + - uid: 881 + components: + - type: Transform + pos: 10.5,-5.5 + parent: 1 + - uid: 884 + components: + - type: Transform + pos: 10.5,-8.5 + parent: 1 + - uid: 885 + components: + - type: Transform + pos: 10.5,-9.5 + parent: 1 + - uid: 886 + components: + - type: Transform + pos: 10.5,-10.5 + parent: 1 + - uid: 887 + components: + - type: Transform + pos: 10.5,-11.5 + parent: 1 + - uid: 889 + components: + - type: Transform + pos: 10.5,-16.5 + parent: 1 + - uid: 890 + components: + - type: Transform + pos: 13.5,7.5 + parent: 1 + - uid: 891 + components: + - type: Transform + pos: 13.5,6.5 + parent: 1 + - uid: 892 + components: + - type: Transform + pos: 13.5,5.5 + parent: 1 + - uid: 893 + components: + - type: Transform + pos: 13.5,4.5 + parent: 1 + - uid: 896 + components: + - type: Transform + pos: 13.5,1.5 + parent: 1 + - uid: 899 + components: + - type: Transform + pos: 12.5,-16.5 + parent: 1 + - uid: 900 + components: + - type: Transform + pos: 12.5,-17.5 + parent: 1 + - uid: 903 + components: + - type: Transform + pos: 10.5,-0.5 + parent: 1 + - uid: 905 + components: + - type: Transform + pos: 12.5,-5.5 + parent: 1 + - uid: 906 + components: + - type: Transform + pos: 12.5,-6.5 + parent: 1 + - uid: 907 + components: + - type: Transform + pos: 12.5,-7.5 + parent: 1 + - uid: 908 + components: + - type: Transform + pos: 12.5,-8.5 + parent: 1 + - uid: 912 + components: + - type: Transform + pos: 12.5,9.5 + parent: 1 + - uid: 913 + components: + - type: Transform + pos: 12.5,8.5 + parent: 1 + - uid: 914 + components: + - type: Transform + pos: 12.5,7.5 + parent: 1 + - uid: 915 + components: + - type: Transform + pos: 12.5,6.5 + parent: 1 + - uid: 916 + components: + - type: Transform + pos: 12.5,5.5 + parent: 1 + - uid: 917 + components: + - type: Transform + pos: 12.5,4.5 + parent: 1 + - uid: 918 + components: + - type: Transform + pos: 12.5,3.5 + parent: 1 + - uid: 919 + components: + - type: Transform + pos: 14.5,-9.5 + parent: 1 + - uid: 920 + components: + - type: Transform + pos: 14.5,-10.5 + parent: 1 + - uid: 921 + components: + - type: Transform + pos: 14.5,-11.5 + parent: 1 + - uid: 923 + components: + - type: Transform + pos: 13.5,-12.5 + parent: 1 + - uid: 924 + components: + - type: Transform + pos: 14.5,-15.5 + parent: 1 + - uid: 927 + components: + - type: Transform + pos: 14.5,-18.5 + parent: 1 + - uid: 928 + components: + - type: Transform + pos: 14.5,6.5 + parent: 1 + - uid: 929 + components: + - type: Transform + pos: 14.5,5.5 + parent: 1 + - uid: 933 + components: + - type: Transform + pos: 14.5,1.5 + parent: 1 + - uid: 937 + components: + - type: Transform + pos: 14.5,-7.5 + parent: 1 + - uid: 939 + components: + - type: Transform + pos: 14.5,7.5 + parent: 1 + - uid: 940 + components: + - type: Transform + pos: 13.5,-5.5 + parent: 1 + - uid: 947 + components: + - type: Transform + pos: 14.5,-12.5 + parent: 1 + - uid: 948 + components: + - type: Transform + pos: 13.5,-15.5 + parent: 1 + - uid: 952 + components: + - type: Transform + pos: 16.5,7.5 + parent: 1 + - uid: 953 + components: + - type: Transform + pos: 16.5,6.5 + parent: 1 + - uid: 954 + components: + - type: Transform + pos: 16.5,5.5 + parent: 1 + - uid: 955 + components: + - type: Transform + pos: 16.5,4.5 + parent: 1 + - uid: 956 + components: + - type: Transform + pos: 16.5,3.5 + parent: 1 + - uid: 957 + components: + - type: Transform + pos: 16.5,2.5 + parent: 1 + - uid: 960 + components: + - type: Transform + pos: 16.5,-0.5 + parent: 1 + - uid: 961 + components: + - type: Transform + pos: 16.5,-1.5 + parent: 1 + - uid: 962 + components: + - type: Transform + pos: 16.5,-2.5 + parent: 1 + - uid: 965 + components: + - type: Transform + pos: 15.5,-15.5 + parent: 1 + - uid: 968 + components: + - type: Transform + pos: 15.5,-18.5 + parent: 1 + - uid: 972 + components: + - type: Transform + pos: 15.5,-7.5 + parent: 1 + - uid: 976 + components: + - type: Transform + pos: 15.5,-11.5 + parent: 1 + - uid: 978 + components: + - type: Transform + pos: 15.5,7.5 + parent: 1 + - uid: 979 + components: + - type: Transform + pos: 15.5,6.5 + parent: 1 + - uid: 980 + components: + - type: Transform + pos: 15.5,5.5 + parent: 1 + - uid: 981 + components: + - type: Transform + pos: 15.5,4.5 + parent: 1 + - uid: 982 + components: + - type: Transform + pos: 15.5,3.5 + parent: 1 + - uid: 985 + components: + - type: Transform + pos: 17.5,-11.5 + parent: 1 + - uid: 988 + components: + - type: Transform + pos: 17.5,-14.5 + parent: 1 + - uid: 993 + components: + - type: Transform + pos: 17.5,4.5 + parent: 1 + - uid: 994 + components: + - type: Transform + pos: 17.5,3.5 + parent: 1 + - uid: 995 + components: + - type: Transform + pos: 17.5,2.5 + parent: 1 + - uid: 998 + components: + - type: Transform + pos: 17.5,-0.5 + parent: 1 + - uid: 999 + components: + - type: Transform + pos: 17.5,-1.5 + parent: 1 + - uid: 1000 + components: + - type: Transform + pos: 17.5,-2.5 + parent: 1 + - uid: 1005 + components: + - type: Transform + pos: 17.5,-7.5 + parent: 1 + - uid: 1009 + components: + - type: Transform + pos: 17.5,5.5 + parent: 1 + - uid: 1010 + components: + - type: Transform + pos: 16.5,-5.5 + parent: 1 + - uid: 1012 + components: + - type: Transform + pos: 16.5,-7.5 + parent: 1 + - uid: 1021 + components: + - type: Transform + pos: 16.5,-16.5 + parent: 1 + - uid: 1024 + components: + - type: Transform + pos: 19.5,1.5 + parent: 1 + - uid: 1025 + components: + - type: Transform + pos: 19.5,0.5 + parent: 1 + - uid: 1036 + components: + - type: Transform + pos: 18.5,-2.5 + parent: 1 + - uid: 1041 + components: + - type: Transform + pos: 18.5,-7.5 + parent: 1 + - uid: 1042 + components: + - type: Transform + pos: 18.5,-8.5 + parent: 1 + - uid: 1043 + components: + - type: Transform + pos: 18.5,-9.5 + parent: 1 + - uid: 1044 + components: + - type: Transform + pos: 18.5,-10.5 + parent: 1 + - uid: 1048 + components: + - type: Transform + pos: 18.5,-14.5 + parent: 1 + - uid: 1049 + components: + - type: Transform + pos: 18.5,-15.5 + parent: 1 + - uid: 1050 + components: + - type: Transform + pos: 18.5,-16.5 + parent: 1 + - uid: 1051 + components: + - type: Transform + pos: 18.5,5.5 + parent: 1 + - uid: 1052 + components: + - type: Transform + pos: 18.5,4.5 + parent: 1 + - uid: 1053 + components: + - type: Transform + pos: 18.5,3.5 + parent: 1 + - uid: 1054 + components: + - type: Transform + pos: 18.5,2.5 + parent: 1 + - uid: 1059 + components: + - type: Transform + pos: 20.5,-14.5 + parent: 1 + - uid: 1060 + components: + - type: Transform + pos: 20.5,-15.5 + parent: 1 + - uid: 1064 + components: + - type: Transform + pos: 20.5,1.5 + parent: 1 + - uid: 1065 + components: + - type: Transform + pos: 20.5,0.5 + parent: 1 + - uid: 1072 + components: + - type: Transform + pos: 20.5,-6.5 + parent: 1 + - uid: 1073 + components: + - type: Transform + pos: 20.5,-7.5 + parent: 1 + - uid: 1074 + components: + - type: Transform + pos: 20.5,-8.5 + parent: 1 + - uid: 1077 + components: + - type: Transform + pos: 20.5,-11.5 + parent: 1 + - uid: 1082 + components: + - type: Transform + pos: 19.5,-10.5 + parent: 1 + - uid: 1086 + components: + - type: Transform + pos: 19.5,-14.5 + parent: 1 + - uid: 1087 + components: + - type: Transform + pos: 19.5,-15.5 + parent: 1 + - uid: 1088 + components: + - type: Transform + pos: 19.5,-16.5 + parent: 1 + - uid: 1089 + components: + - type: Transform + pos: 19.5,-17.5 + parent: 1 + - uid: 1090 + components: + - type: Transform + pos: 19.5,-18.5 + parent: 1 + - uid: 1091 + components: + - type: Transform + pos: 22.5,1.5 + parent: 1 + - uid: 1092 + components: + - type: Transform + pos: 22.5,0.5 + parent: 1 + - uid: 1093 + components: + - type: Transform + pos: 22.5,-0.5 + parent: 1 + - uid: 1094 + components: + - type: Transform + pos: 22.5,-1.5 + parent: 1 + - uid: 1095 + components: + - type: Transform + pos: 22.5,-2.5 + parent: 1 + - uid: 1097 + components: + - type: Transform + pos: 22.5,-4.5 + parent: 1 + - uid: 1098 + components: + - type: Transform + pos: 22.5,-5.5 + parent: 1 + - uid: 1099 + components: + - type: Transform + pos: 22.5,-6.5 + parent: 1 + - uid: 1100 + components: + - type: Transform + pos: 22.5,-7.5 + parent: 1 + - uid: 1101 + components: + - type: Transform + pos: 21.5,1.5 + parent: 1 + - uid: 1102 + components: + - type: Transform + pos: 21.5,0.5 + parent: 1 + - uid: 1103 + components: + - type: Transform + pos: 21.5,-0.5 + parent: 1 + - uid: 1104 + components: + - type: Transform + pos: 21.5,-1.5 + parent: 1 + - uid: 1105 + components: + - type: Transform + pos: 21.5,-2.5 + parent: 1 + - uid: 1106 + components: + - type: Transform + pos: 21.5,-3.5 + parent: 1 + - uid: 1107 + components: + - type: Transform + pos: 21.5,-4.5 + parent: 1 + - uid: 1108 + components: + - type: Transform + pos: 21.5,-5.5 + parent: 1 + - uid: 1109 + components: + - type: Transform + pos: 21.5,-6.5 + parent: 1 + - uid: 1110 + components: + - type: Transform + pos: 21.5,-7.5 + parent: 1 + - uid: 1115 + components: + - type: Transform + pos: 23.5,-15.5 + parent: 1 + - uid: 1116 + components: + - type: Transform + pos: 23.5,-16.5 + parent: 1 + - uid: 1120 + components: + - type: Transform + pos: -28.5,-0.5 + parent: 1 + - uid: 1121 + components: + - type: Transform + pos: -28.5,-2.5 + parent: 1 + - uid: 1122 + components: + - type: Transform + pos: -28.5,-1.5 + parent: 1 + - uid: 1123 + components: + - type: Transform + pos: 23.5,-3.5 + parent: 1 + - uid: 1125 + components: + - type: Transform + pos: 23.5,-5.5 + parent: 1 + - uid: 1126 + components: + - type: Transform + pos: 23.5,-6.5 + parent: 1 + - uid: 1129 + components: + - type: Transform + pos: 22.5,-15.5 + parent: 1 + - uid: 1130 + components: + - type: Transform + pos: 22.5,-16.5 + parent: 1 + - uid: 1131 + components: + - type: Transform + pos: 22.5,-17.5 + parent: 1 + - uid: 1132 + components: + - type: Transform + pos: 22.5,-18.5 + parent: 1 + - uid: 1133 + components: + - type: Transform + pos: -18.5,8.5 + parent: 1 + - uid: 1135 + components: + - type: Transform + pos: -19.5,6.5 + parent: 1 + - uid: 1136 + components: + - type: Transform + pos: -17.5,6.5 + parent: 1 + - uid: 1137 + components: + - type: Transform + pos: -17.5,7.5 + parent: 1 + - uid: 1138 + components: + - type: Transform + pos: 25.5,-3.5 + parent: 1 + - uid: 1140 + components: + - type: Transform + pos: 25.5,-5.5 + parent: 1 + - uid: 1142 + components: + - type: Transform + pos: 25.5,-7.5 + parent: 1 + - uid: 1146 + components: + - type: Transform + pos: 24.5,-15.5 + parent: 1 + - uid: 1150 + components: + - type: Transform + pos: -17.5,5.5 + parent: 1 + - uid: 1151 + components: + - type: Transform + pos: -28.5,-10.5 + parent: 1 + - uid: 1152 + components: + - type: Transform + pos: -28.5,-11.5 + parent: 1 + - uid: 1153 + components: + - type: Transform + pos: -28.5,-4.5 + parent: 1 + - uid: 1154 + components: + - type: Transform + pos: -28.5,-3.5 + parent: 1 + - uid: 1157 + components: + - type: Transform + pos: 26.5,-17.5 + parent: 1 + - uid: 1158 + components: + - type: Transform + pos: 26.5,-18.5 + parent: 1 + - uid: 1159 + components: + - type: Transform + pos: 26.5,-3.5 + parent: 1 + - uid: 1160 + components: + - type: Transform + pos: 26.5,-4.5 + parent: 1 + - uid: 1161 + components: + - type: Transform + pos: 26.5,-5.5 + parent: 1 + - uid: 1162 + components: + - type: Transform + pos: 26.5,-6.5 + parent: 1 + - uid: 1163 + components: + - type: Transform + pos: 26.5,-7.5 + parent: 1 + - uid: 1164 + components: + - type: Transform + pos: 26.5,-8.5 + parent: 1 + - uid: 1166 + components: + - type: Transform + pos: 26.5,-10.5 + parent: 1 + - uid: 1167 + components: + - type: Transform + pos: 26.5,-11.5 + parent: 1 + - uid: 1168 + components: + - type: Transform + pos: 26.5,-12.5 + parent: 1 + - uid: 1172 + components: + - type: Transform + pos: 26.5,-16.5 + parent: 1 + - uid: 1173 + components: + - type: Transform + pos: -29.5,-12.5 + parent: 1 + - uid: 1174 + components: + - type: Transform + pos: -28.5,-5.5 + parent: 1 + - uid: 1175 + components: + - type: Transform + pos: -24.5,5.5 + parent: 1 + - uid: 1176 + components: + - type: Transform + pos: 25.5,-15.5 + parent: 1 + - uid: 1177 + components: + - type: Transform + pos: 25.5,-16.5 + parent: 1 + - uid: 1178 + components: + - type: Transform + pos: 25.5,-17.5 + parent: 1 + - uid: 1179 + components: + - type: Transform + pos: 25.5,-18.5 + parent: 1 + - uid: 1180 + components: + - type: Transform + pos: 28.5,-3.5 + parent: 1 + - uid: 1181 + components: + - type: Transform + pos: -22.5,6.5 + parent: 1 + - uid: 1183 + components: + - type: Transform + pos: -23.5,6.5 + parent: 1 + - uid: 1184 + components: + - type: Transform + pos: 26.5,-0.5 + parent: 1 + - uid: 1187 + components: + - type: Transform + pos: 27.5,-11.5 + parent: 1 + - uid: 1189 + components: + - type: Transform + pos: 27.5,-13.5 + parent: 1 + - uid: 1193 + components: + - type: Transform + pos: -22.5,5.5 + parent: 1 + - uid: 1194 + components: + - type: Transform + pos: -21.5,6.5 + parent: 1 + - uid: 1195 + components: + - type: Transform + pos: 26.5,-2.5 + parent: 1 + - uid: 1196 + components: + - type: Transform + pos: 25.5,-2.5 + parent: 1 + - uid: 1197 + components: + - type: Transform + pos: 27.5,-3.5 + parent: 1 + - uid: 1198 + components: + - type: Transform + pos: 27.5,-4.5 + parent: 1 + - uid: 1199 + components: + - type: Transform + pos: 27.5,-5.5 + parent: 1 + - uid: 1200 + components: + - type: Transform + pos: 27.5,-6.5 + parent: 1 + - uid: 1201 + components: + - type: Transform + pos: 27.5,-7.5 + parent: 1 + - uid: 1203 + components: + - type: Transform + pos: 29.5,-15.5 + parent: 1 + - uid: 1204 + components: + - type: Transform + pos: -24.5,6.5 + parent: 1 + - uid: 1205 + components: + - type: Transform + pos: -23.5,5.5 + parent: 1 + - uid: 1206 + components: + - type: Transform + pos: 29.5,-3.5 + parent: 1 + - uid: 1207 + components: + - type: Transform + pos: 29.5,-4.5 + parent: 1 + - uid: 1208 + components: + - type: Transform + pos: 29.5,-5.5 + parent: 1 + - uid: 1209 + components: + - type: Transform + pos: 29.5,-6.5 + parent: 1 + - uid: 1210 + components: + - type: Transform + pos: 29.5,-7.5 + parent: 1 + - uid: 1211 + components: + - type: Transform + pos: 29.5,-8.5 + parent: 1 + - uid: 1214 + components: + - type: Transform + pos: 29.5,-11.5 + parent: 1 + - uid: 1216 + components: + - type: Transform + pos: 29.5,-13.5 + parent: 1 + - uid: 1217 + components: + - type: Transform + pos: 29.5,-14.5 + parent: 1 + - uid: 1218 + components: + - type: Transform + pos: 23.5,-0.5 + parent: 1 + - uid: 1219 + components: + - type: Transform + pos: 28.5,-5.5 + parent: 1 + - uid: 1220 + components: + - type: Transform + pos: 28.5,-6.5 + parent: 1 + - uid: 1221 + components: + - type: Transform + pos: 28.5,-7.5 + parent: 1 + - uid: 1225 + components: + - type: Transform + pos: 28.5,-11.5 + parent: 1 + - uid: 1227 + components: + - type: Transform + pos: 28.5,-14.5 + parent: 1 + - uid: 1228 + components: + - type: Transform + pos: 28.5,-15.5 + parent: 1 + - uid: 1229 + components: + - type: Transform + pos: 28.5,-13.5 + parent: 1 + - uid: 1230 + components: + - type: Transform + pos: 28.5,-4.5 + parent: 1 + - uid: 1231 + components: + - type: Transform + pos: 29.5,-16.5 + parent: 1 + - uid: 1232 + components: + - type: Transform + pos: 28.5,-16.5 + parent: 1 + - uid: 1233 + components: + - type: Transform + pos: 27.5,-16.5 + parent: 1 + - uid: 1234 + components: + - type: Transform + pos: 27.5,-17.5 + parent: 1 + - uid: 1235 + components: + - type: Transform + pos: 28.5,-17.5 + parent: 1 + - uid: 1236 + components: + - type: Transform + pos: 30.5,-4.5 + parent: 1 + - uid: 1237 + components: + - type: Transform + pos: -28.5,-15.5 + parent: 1 + - uid: 1238 + components: + - type: Transform + pos: -29.5,-10.5 + parent: 1 + - uid: 1239 + components: + - type: Transform + pos: 30.5,-15.5 + parent: 1 + - uid: 1240 + components: + - type: Transform + pos: 30.5,-14.5 + parent: 1 + - uid: 1243 + components: + - type: Transform + pos: 30.5,-10.5 + parent: 1 + - uid: 1244 + components: + - type: Transform + pos: 30.5,-9.5 + parent: 1 + - uid: 1245 + components: + - type: Transform + pos: 30.5,-8.5 + parent: 1 + - uid: 1246 + components: + - type: Transform + pos: 30.5,-7.5 + parent: 1 + - uid: 1247 + components: + - type: Transform + pos: 30.5,-13.5 + parent: 1 + - uid: 1248 + components: + - type: Transform + pos: 30.5,-6.5 + parent: 1 + - uid: 1249 + components: + - type: Transform + pos: 30.5,-3.5 + parent: 1 + - uid: 1250 + components: + - type: Transform + pos: -28.5,-6.5 + parent: 1 + - uid: 1251 + components: + - type: Transform + pos: 30.5,-5.5 + parent: 1 + - uid: 1253 + components: + - type: Transform + pos: 24.5,-2.5 + parent: 1 + - uid: 1254 + components: + - type: Transform + pos: 31.5,-12.5 + parent: 1 + - uid: 1255 + components: + - type: Transform + pos: 24.5,-0.5 + parent: 1 + - uid: 1256 + components: + - type: Transform + pos: 24.5,-1.5 + parent: 1 + - uid: 1257 + components: + - type: Transform + pos: 25.5,-0.5 + parent: 1 + - uid: 1258 + components: + - type: Transform + pos: 26.5,-1.5 + parent: 1 + - uid: 1259 + components: + - type: Transform + pos: -18.5,7.5 + parent: 1 + - uid: 1260 + components: + - type: Transform + pos: -18.5,6.5 + parent: 1 + - uid: 1261 + components: + - type: Transform + pos: -19.5,8.5 + parent: 1 + - uid: 1262 + components: + - type: Transform + pos: -18.5,5.5 + parent: 1 + - uid: 1263 + components: + - type: Transform + pos: -19.5,7.5 + parent: 1 + - uid: 1264 + components: + - type: Transform + pos: -20.5,8.5 + parent: 1 + - uid: 1266 + components: + - type: Transform + pos: 31.5,-10.5 + parent: 1 + - uid: 1267 + components: + - type: Transform + pos: 31.5,-11.5 + parent: 1 + - uid: 1268 + components: + - type: Transform + pos: 25.5,-1.5 + parent: 1 + - uid: 1269 + components: + - type: Transform + pos: 31.5,-13.5 + parent: 1 + - uid: 1270 + components: + - type: Transform + pos: -15.5,8.5 + parent: 1 + - uid: 1273 + components: + - type: Transform + pos: -20.5,6.5 + parent: 1 + - uid: 1274 + components: + - type: Transform + pos: -17.5,8.5 + parent: 1 + - uid: 1275 + components: + - type: Transform + pos: -16.5,7.5 + parent: 1 + - uid: 1276 + components: + - type: Transform + pos: -29.5,-15.5 + parent: 1 + - uid: 1278 + components: + - type: Transform + pos: -28.5,-8.5 + parent: 1 + - uid: 1279 + components: + - type: Transform + pos: -28.5,-17.5 + parent: 1 + - uid: 1280 + components: + - type: Transform + pos: -28.5,-16.5 + parent: 1 + - uid: 1281 + components: + - type: Transform + pos: -16.5,6.5 + parent: 1 + - uid: 1282 + components: + - type: Transform + pos: -16.5,8.5 + parent: 1 + - uid: 1283 + components: + - type: Transform + pos: -16.5,5.5 + parent: 1 + - uid: 1285 + components: + - type: Transform + pos: -20.5,7.5 + parent: 1 + - uid: 1286 + components: + - type: Transform + pos: -15.5,7.5 + parent: 1 + - uid: 1287 + components: + - type: Transform + pos: -28.5,-9.5 + parent: 1 + - uid: 1288 + components: + - type: Transform + pos: -29.5,-11.5 + parent: 1 + - uid: 1289 + components: + - type: Transform + pos: -29.5,-14.5 + parent: 1 + - uid: 1290 + components: + - type: Transform + pos: -28.5,-7.5 + parent: 1 + - uid: 1291 + components: + - type: Transform + pos: -29.5,-16.5 + parent: 1 + - uid: 1293 + components: + - type: Transform + pos: -25.5,-19.5 + parent: 1 + - uid: 1295 + components: + - type: Transform + pos: -10.5,-19.5 + parent: 1 + - uid: 1299 + components: + - type: Transform + pos: -14.5,-19.5 + parent: 1 + - uid: 1301 + components: + - type: Transform + pos: -15.5,-19.5 + parent: 1 + - uid: 1307 + components: + - type: Transform + pos: -21.5,-19.5 + parent: 1 + - uid: 1309 + components: + - type: Transform + pos: -24.5,-19.5 + parent: 1 + - uid: 1311 + components: + - type: Transform + pos: 5.5,-19.5 + parent: 1 + - uid: 1314 + components: + - type: Transform + pos: 4.5,-19.5 + parent: 1 + - uid: 1315 + components: + - type: Transform + pos: 1.5,-19.5 + parent: 1 + - uid: 1319 + components: + - type: Transform + pos: 23.5,-19.5 + parent: 1 + - uid: 1320 + components: + - type: Transform + pos: 22.5,-19.5 + parent: 1 + - uid: 1323 + components: + - type: Transform + pos: 18.5,-19.5 + parent: 1 + - uid: 1324 + components: + - type: Transform + pos: 17.5,-19.5 + parent: 1 + - uid: 1325 + components: + - type: Transform + pos: 16.5,-19.5 + parent: 1 + - uid: 1326 + components: + - type: Transform + pos: 15.5,-19.5 + parent: 1 + - uid: 1329 + components: + - type: Transform + pos: 19.5,-19.5 + parent: 1 + - uid: 1330 + components: + - type: Transform + pos: 12.5,-19.5 + parent: 1 + - uid: 1340 + components: + - type: Transform + pos: 12.5,-20.5 + parent: 1 + - uid: 1344 + components: + - type: Transform + pos: 19.5,-20.5 + parent: 1 + - uid: 1345 + components: + - type: Transform + pos: 22.5,-20.5 + parent: 1 + - uid: 1346 + components: + - type: Transform + pos: 20.5,-20.5 + parent: 1 + - uid: 1347 + components: + - type: Transform + pos: 21.5,-20.5 + parent: 1 + - uid: 1349 + components: + - type: Transform + pos: 15.5,-20.5 + parent: 1 + - uid: 1351 + components: + - type: Transform + pos: -5.5,-20.5 + parent: 1 + - uid: 1352 + components: + - type: Transform + pos: -6.5,-20.5 + parent: 1 + - uid: 1353 + components: + - type: Transform + pos: -4.5,-20.5 + parent: 1 + - uid: 1354 + components: + - type: Transform + pos: -3.5,-20.5 + parent: 1 + - uid: 1356 + components: + - type: Transform + pos: -2.5,-20.5 + parent: 1 + - uid: 1357 + components: + - type: Transform + pos: 1.5,-20.5 + parent: 1 + - uid: 1358 + components: + - type: Transform + pos: 2.5,-20.5 + parent: 1 + - uid: 1360 + components: + - type: Transform + pos: 4.5,-20.5 + parent: 1 + - uid: 1361 + components: + - type: Transform + pos: 5.5,-20.5 + parent: 1 + - uid: 1364 + components: + - type: Transform + pos: -23.5,-20.5 + parent: 1 + - uid: 1365 + components: + - type: Transform + pos: -22.5,-20.5 + parent: 1 + - uid: 1366 + components: + - type: Transform + pos: -21.5,-20.5 + parent: 1 + - uid: 1367 + components: + - type: Transform + pos: -20.5,-20.5 + parent: 1 + - uid: 1368 + components: + - type: Transform + pos: -19.5,-20.5 + parent: 1 + - uid: 1373 + components: + - type: Transform + pos: -14.5,-20.5 + parent: 1 + - uid: 1376 + components: + - type: Transform + pos: -11.5,-20.5 + parent: 1 + - uid: 1377 + components: + - type: Transform + pos: -10.5,-20.5 + parent: 1 + - uid: 1379 + components: + - type: Transform + pos: -11.5,-21.5 + parent: 1 + - uid: 1380 + components: + - type: Transform + pos: -12.5,-21.5 + parent: 1 + - uid: 1381 + components: + - type: Transform + pos: -13.5,-21.5 + parent: 1 + - uid: 1382 + components: + - type: Transform + pos: -14.5,-21.5 + parent: 1 + - uid: 1383 + components: + - type: Transform + pos: -10.5,-21.5 + parent: 1 + - uid: 1386 + components: + - type: Transform + pos: -16.5,-21.5 + parent: 1 + - uid: 1387 + components: + - type: Transform + pos: -21.5,-21.5 + parent: 1 + - uid: 1388 + components: + - type: Transform + pos: -19.5,-21.5 + parent: 1 + - uid: 1389 + components: + - type: Transform + pos: -17.5,-21.5 + parent: 1 + - uid: 1390 + components: + - type: Transform + pos: -20.5,-21.5 + parent: 1 + - uid: 1391 + components: + - type: Transform + pos: -18.5,-21.5 + parent: 1 + - uid: 1392 + components: + - type: Transform + pos: 21.5,-21.5 + parent: 1 + - uid: 1393 + components: + - type: Transform + pos: 20.5,-21.5 + parent: 1 + - uid: 1394 + components: + - type: Transform + pos: 19.5,-21.5 + parent: 1 + - uid: 1397 + components: + - type: Transform + pos: 15.5,-21.5 + parent: 1 + - uid: 1398 + components: + - type: Transform + pos: 14.5,-21.5 + parent: 1 + - uid: 1399 + components: + - type: Transform + pos: 13.5,-21.5 + parent: 1 + - uid: 1400 + components: + - type: Transform + pos: 12.5,-21.5 + parent: 1 + - uid: 1401 + components: + - type: Transform + pos: 11.5,-21.5 + parent: 1 + - uid: 1402 + components: + - type: Transform + pos: 10.5,-21.5 + parent: 1 + - uid: 1407 + components: + - type: Transform + pos: 5.5,-21.5 + parent: 1 + - uid: 1408 + components: + - type: Transform + pos: 4.5,-21.5 + parent: 1 + - uid: 1409 + components: + - type: Transform + pos: 9.5,-21.5 + parent: 1 + - uid: 1410 + components: + - type: Transform + pos: 1.5,-21.5 + parent: 1 + - uid: 1417 + components: + - type: Transform + pos: -5.5,-21.5 + parent: 1 + - uid: 1418 + components: + - type: Transform + pos: -9.5,-21.5 + parent: 1 + - uid: 1419 + components: + - type: Transform + pos: 2.5,-21.5 + parent: 1 + - uid: 1421 + components: + - type: Transform + pos: 1.5,-22.5 + parent: 1 + - uid: 1422 + components: + - type: Transform + pos: 2.5,-22.5 + parent: 1 + - uid: 1423 + components: + - type: Transform + pos: 3.5,-22.5 + parent: 1 + - uid: 1424 + components: + - type: Transform + pos: 4.5,-22.5 + parent: 1 + - uid: 1425 + components: + - type: Transform + pos: 5.5,-22.5 + parent: 1 + - uid: 1429 + components: + - type: Transform + pos: 9.5,-22.5 + parent: 1 + - uid: 1430 + components: + - type: Transform + pos: 10.5,-22.5 + parent: 1 + - uid: 1431 + components: + - type: Transform + pos: 11.5,-22.5 + parent: 1 + - uid: 1432 + components: + - type: Transform + pos: 13.5,-22.5 + parent: 1 + - uid: 1433 + components: + - type: Transform + pos: 14.5,-22.5 + parent: 1 + - uid: 1435 + components: + - type: Transform + pos: 16.5,-22.5 + parent: 1 + - uid: 1436 + components: + - type: Transform + pos: 15.5,-22.5 + parent: 1 + - uid: 1437 + components: + - type: Transform + pos: 17.5,-22.5 + parent: 1 + - uid: 1438 + components: + - type: Transform + pos: 18.5,-22.5 + parent: 1 + - uid: 1439 + components: + - type: Transform + pos: 12.5,-22.5 + parent: 1 + - uid: 1441 + components: + - type: Transform + pos: -11.5,-22.5 + parent: 1 + - uid: 1442 + components: + - type: Transform + pos: -4.5,-22.5 + parent: 1 + - uid: 1443 + components: + - type: Transform + pos: -5.5,-22.5 + parent: 1 + - uid: 1444 + components: + - type: Transform + pos: -6.5,-22.5 + parent: 1 + - uid: 1448 + components: + - type: Transform + pos: -10.5,-22.5 + parent: 1 + - uid: 1449 + components: + - type: Transform + pos: -12.5,-22.5 + parent: 1 + - uid: 1450 + components: + - type: Transform + pos: -13.5,-22.5 + parent: 1 + - uid: 1451 + components: + - type: Transform + pos: -14.5,-22.5 + parent: 1 + - uid: 1452 + components: + - type: Transform + pos: 3.5,-23.5 + parent: 1 + - uid: 1453 + components: + - type: Transform + pos: 6.5,-23.5 + parent: 1 + - uid: 1454 + components: + - type: Transform + pos: 5.5,-23.5 + parent: 1 + - uid: 1455 + components: + - type: Transform + pos: 7.5,-23.5 + parent: 1 + - uid: 1456 + components: + - type: Transform + pos: 10.5,-23.5 + parent: 1 + - uid: 1457 + components: + - type: Transform + pos: 9.5,-23.5 + parent: 1 + - uid: 1458 + components: + - type: Transform + pos: 11.5,-23.5 + parent: 1 + - uid: 1459 + components: + - type: Transform + pos: 12.5,-23.5 + parent: 1 + - uid: 1460 + components: + - type: Transform + pos: 13.5,-23.5 + parent: 1 + - uid: 1461 + components: + - type: Transform + pos: 8.5,-23.5 + parent: 1 + - uid: 1462 + components: + - type: Transform + pos: -11.5,-23.5 + parent: 1 + - uid: 1463 + components: + - type: Transform + pos: -10.5,-23.5 + parent: 1 + - uid: 1464 + components: + - type: Transform + pos: -9.5,-23.5 + parent: 1 + - uid: 1465 + components: + - type: Transform + pos: -7.5,-23.5 + parent: 1 + - uid: 1466 + components: + - type: Transform + pos: -6.5,-23.5 + parent: 1 + - uid: 1467 + components: + - type: Transform + pos: -5.5,-23.5 + parent: 1 + - uid: 1468 + components: + - type: Transform + pos: -4.5,-23.5 + parent: 1 + - uid: 1469 + components: + - type: Transform + pos: -3.5,-23.5 + parent: 1 + - uid: 1470 + components: + - type: Transform + pos: -2.5,-23.5 + parent: 1 + - uid: 1471 + components: + - type: Transform + pos: -8.5,-23.5 + parent: 1 + - uid: 1472 + components: + - type: Transform + pos: 1.5,-23.5 + parent: 1 + - uid: 1473 + components: + - type: Transform + pos: 2.5,-23.5 + parent: 1 + - uid: 1474 + components: + - type: Transform + pos: 4.5,-23.5 + parent: 1 +- proto: WallRockBasaltArtifactFragment + entities: + - uid: 75 + components: + - type: Transform + pos: -23.5,-13.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: -24.5,-12.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: -24.5,-13.5 + parent: 1 + - uid: 465 + components: + - type: Transform + pos: -5.5,-5.5 + parent: 1 + - uid: 466 + components: + - type: Transform + pos: -5.5,-6.5 + parent: 1 + - uid: 518 + components: + - type: Transform + pos: -4.5,-6.5 + parent: 1 + - uid: 535 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 1 + - uid: 745 + components: + - type: Transform + pos: 7.5,8.5 + parent: 1 + - uid: 746 + components: + - type: Transform + pos: 7.5,7.5 + parent: 1 + - uid: 777 + components: + - type: Transform + pos: 6.5,8.5 + parent: 1 +- proto: WallRockBasaltCoal + entities: + - uid: 198 + components: + - type: Transform + pos: -17.5,-18.5 + parent: 1 + - uid: 227 + components: + - type: Transform + pos: -18.5,-18.5 + parent: 1 + - uid: 276 + components: + - type: Transform + pos: -14.5,6.5 + parent: 1 + - uid: 289 + components: + - type: Transform + pos: -12.5,9.5 + parent: 1 + - uid: 290 + components: + - type: Transform + pos: -12.5,8.5 + parent: 1 + - uid: 291 + components: + - type: Transform + pos: -12.5,7.5 + parent: 1 + - uid: 292 + components: + - type: Transform + pos: -12.5,6.5 + parent: 1 + - uid: 312 + components: + - type: Transform + pos: -13.5,9.5 + parent: 1 + - uid: 313 + components: + - type: Transform + pos: -13.5,8.5 + parent: 1 + - uid: 314 + components: + - type: Transform + pos: -13.5,7.5 + parent: 1 + - uid: 315 + components: + - type: Transform + pos: -13.5,6.5 + parent: 1 + - uid: 324 + components: + - type: Transform + pos: -11.5,1.5 + parent: 1 + - uid: 338 + components: + - type: Transform + pos: -11.5,9.5 + parent: 1 + - uid: 339 + components: + - type: Transform + pos: -11.5,8.5 + parent: 1 + - uid: 340 + components: + - type: Transform + pos: -11.5,7.5 + parent: 1 + - uid: 341 + components: + - type: Transform + pos: -11.5,6.5 + parent: 1 + - uid: 344 + components: + - type: Transform + pos: -11.5,3.5 + parent: 1 + - uid: 345 + components: + - type: Transform + pos: -11.5,2.5 + parent: 1 + - uid: 385 + components: + - type: Transform + pos: -10.5,3.5 + parent: 1 + - uid: 386 + components: + - type: Transform + pos: -10.5,2.5 + parent: 1 + - uid: 387 + components: + - type: Transform + pos: -10.5,1.5 + parent: 1 + - uid: 416 + components: + - type: Transform + pos: -0.5,-18.5 + parent: 1 + - uid: 459 + components: + - type: Transform + pos: -0.5,-17.5 + parent: 1 + - uid: 462 + components: + - type: Transform + pos: -5.5,-2.5 + parent: 1 + - uid: 487 + components: + - type: Transform + pos: -5.5,-1.5 + parent: 1 + - uid: 501 + components: + - type: Transform + pos: -3.5,-1.5 + parent: 1 + - uid: 502 + components: + - type: Transform + pos: -3.5,-2.5 + parent: 1 + - uid: 531 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 1 + - uid: 532 + components: + - type: Transform + pos: -4.5,-2.5 + parent: 1 + - uid: 557 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 558 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 616 + components: + - type: Transform + pos: 0.5,-17.5 + parent: 1 + - uid: 617 + components: + - type: Transform + pos: 0.5,-18.5 + parent: 1 + - uid: 643 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 644 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 + - uid: 645 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 683 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 684 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 685 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 689 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 1 + - uid: 690 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 + - uid: 699 + components: + - type: Transform + pos: 5.5,-3.5 + parent: 1 + - uid: 720 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 721 + components: + - type: Transform + pos: 5.5,0.5 + parent: 1 + - uid: 722 + components: + - type: Transform + pos: 5.5,-0.5 + parent: 1 + - uid: 730 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 731 + components: + - type: Transform + pos: 4.5,0.5 + parent: 1 + - uid: 732 + components: + - type: Transform + pos: 4.5,-0.5 + parent: 1 + - uid: 735 + components: + - type: Transform + pos: 4.5,-3.5 + parent: 1 + - uid: 736 + components: + - type: Transform + pos: 4.5,-4.5 + parent: 1 + - uid: 1272 + components: + - type: Transform + pos: -15.5,6.5 + parent: 1 + - uid: 1296 + components: + - type: Transform + pos: -9.5,-19.5 + parent: 1 + - uid: 1303 + components: + - type: Transform + pos: -8.5,-19.5 + parent: 1 + - uid: 1304 + components: + - type: Transform + pos: -18.5,-19.5 + parent: 1 + - uid: 1306 + components: + - type: Transform + pos: -17.5,-19.5 + parent: 1 + - uid: 1317 + components: + - type: Transform + pos: 0.5,-19.5 + parent: 1 + - uid: 1337 + components: + - type: Transform + pos: 0.5,-20.5 + parent: 1 + - uid: 1341 + components: + - type: Transform + pos: 16.5,-20.5 + parent: 1 + - uid: 1342 + components: + - type: Transform + pos: 18.5,-20.5 + parent: 1 + - uid: 1343 + components: + - type: Transform + pos: 17.5,-20.5 + parent: 1 + - uid: 1355 + components: + - type: Transform + pos: -9.5,-20.5 + parent: 1 + - uid: 1369 + components: + - type: Transform + pos: -18.5,-20.5 + parent: 1 + - uid: 1370 + components: + - type: Transform + pos: -17.5,-20.5 + parent: 1 + - uid: 1378 + components: + - type: Transform + pos: -8.5,-20.5 + parent: 1 + - uid: 1395 + components: + - type: Transform + pos: 17.5,-21.5 + parent: 1 + - uid: 1396 + components: + - type: Transform + pos: 16.5,-21.5 + parent: 1 + - uid: 1403 + components: + - type: Transform + pos: 18.5,-21.5 + parent: 1 + - uid: 1411 + components: + - type: Transform + pos: 0.5,-21.5 + parent: 1 +- proto: WallRockBasaltDiamond + entities: + - uid: 135 + components: + - type: Transform + pos: -22.5,-6.5 + parent: 1 + - uid: 149 + components: + - type: Transform + pos: -20.5,-7.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: -21.5,-6.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: -21.5,-7.5 + parent: 1 + - uid: 467 + components: + - type: Transform + pos: -5.5,-7.5 + parent: 1 + - uid: 468 + components: + - type: Transform + pos: -5.5,-8.5 + parent: 1 + - uid: 700 + components: + - type: Transform + pos: 5.5,-4.5 + parent: 1 + - uid: 771 + components: + - type: Transform + pos: 6.5,-4.5 + parent: 1 + - uid: 796 + components: + - type: Transform + pos: 7.5,-4.5 + parent: 1 + - uid: 1096 + components: + - type: Transform + pos: 22.5,-3.5 + parent: 1 + - uid: 1155 + components: + - type: Transform + pos: 24.5,-3.5 + parent: 1 + - uid: 1192 + components: + - type: Transform + pos: 23.5,-2.5 + parent: 1 + - uid: 1252 + components: + - type: Transform + pos: 23.5,-1.5 + parent: 1 +- proto: WallRockBasaltGold + entities: + - uid: 81 + components: + - type: Transform + pos: -23.5,-6.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: -23.5,-3.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: -24.5,-4.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: -24.5,-5.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: -24.5,-3.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: -14.5,3.5 + parent: 1 + - uid: 262 + components: + - type: Transform + pos: -14.5,2.5 + parent: 1 + - uid: 263 + components: + - type: Transform + pos: -14.5,1.5 + parent: 1 + - uid: 319 + components: + - type: Transform + pos: -13.5,2.5 + parent: 1 + - uid: 321 + components: + - type: Transform + pos: -13.5,0.5 + parent: 1 + - uid: 354 + components: + - type: Transform + pos: -9.5,-8.5 + parent: 1 + - uid: 360 + components: + - type: Transform + pos: -9.5,-7.5 + parent: 1 + - uid: 397 + components: + - type: Transform + pos: -8.5,-7.5 + parent: 1 + - uid: 399 + components: + - type: Transform + pos: -8.5,-9.5 + parent: 1 + - uid: 420 + components: + - type: Transform + pos: -9.5,-9.5 + parent: 1 + - uid: 675 + components: + - type: Transform + pos: 3.5,-17.5 + parent: 1 + - uid: 676 + components: + - type: Transform + pos: 3.5,-18.5 + parent: 1 + - uid: 694 + components: + - type: Transform + pos: 2.5,-18.5 + parent: 1 + - uid: 728 + components: + - type: Transform + pos: 4.5,-18.5 + parent: 1 + - uid: 794 + components: + - type: Transform + pos: 7.5,-2.5 + parent: 1 + - uid: 814 + components: + - type: Transform + pos: 8.5,-1.5 + parent: 1 + - uid: 815 + components: + - type: Transform + pos: 8.5,-2.5 + parent: 1 + - uid: 816 + components: + - type: Transform + pos: 8.5,-3.5 + parent: 1 + - uid: 873 + components: + - type: Transform + pos: 9.5,-1.5 + parent: 1 + - uid: 894 + components: + - type: Transform + pos: 13.5,3.5 + parent: 1 + - uid: 895 + components: + - type: Transform + pos: 13.5,2.5 + parent: 1 + - uid: 902 + components: + - type: Transform + pos: 12.5,2.5 + parent: 1 + - uid: 930 + components: + - type: Transform + pos: 14.5,4.5 + parent: 1 + - uid: 931 + components: + - type: Transform + pos: 14.5,3.5 + parent: 1 + - uid: 932 + components: + - type: Transform + pos: 14.5,2.5 + parent: 1 + - uid: 983 + components: + - type: Transform + pos: 15.5,2.5 + parent: 1 + - uid: 989 + components: + - type: Transform + pos: 17.5,-15.5 + parent: 1 + - uid: 990 + components: + - type: Transform + pos: 17.5,-16.5 + parent: 1 + - uid: 991 + components: + - type: Transform + pos: 17.5,-17.5 + parent: 1 + - uid: 992 + components: + - type: Transform + pos: 17.5,-18.5 + parent: 1 + - uid: 1019 + components: + - type: Transform + pos: 16.5,-14.5 + parent: 1 + - uid: 1020 + components: + - type: Transform + pos: 16.5,-15.5 + parent: 1 + - uid: 1022 + components: + - type: Transform + pos: 16.5,-17.5 + parent: 1 + - uid: 1023 + components: + - type: Transform + pos: 16.5,-18.5 + parent: 1 + - uid: 1033 + components: + - type: Transform + pos: 18.5,-17.5 + parent: 1 + - uid: 1034 + components: + - type: Transform + pos: 18.5,-18.5 + parent: 1 + - uid: 1302 + components: + - type: Transform + pos: -16.5,-19.5 + parent: 1 + - uid: 1316 + components: + - type: Transform + pos: 2.5,-19.5 + parent: 1 + - uid: 1318 + components: + - type: Transform + pos: 3.5,-19.5 + parent: 1 + - uid: 1359 + components: + - type: Transform + pos: 3.5,-20.5 + parent: 1 + - uid: 1371 + components: + - type: Transform + pos: -16.5,-20.5 + parent: 1 + - uid: 1372 + components: + - type: Transform + pos: -15.5,-20.5 + parent: 1 + - uid: 1385 + components: + - type: Transform + pos: -15.5,-21.5 + parent: 1 + - uid: 1415 + components: + - type: Transform + pos: 3.5,-21.5 + parent: 1 +- proto: WallRockBasaltPlasma + entities: + - uid: 3 + components: + - type: Transform + pos: -27.5,-12.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: -27.5,-13.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: -27.5,-14.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: -27.5,-2.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: -27.5,-3.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: -27.5,-4.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: -26.5,-1.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: -26.5,-2.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: -26.5,-3.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: -26.5,-4.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: -25.5,-1.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: -25.5,-0.5 + parent: 1 + - uid: 429 + components: + - type: Transform + pos: -7.5,1.5 + parent: 1 + - uid: 430 + components: + - type: Transform + pos: -7.5,0.5 + parent: 1 + - uid: 436 + components: + - type: Transform + pos: -6.5,1.5 + parent: 1 + - uid: 437 + components: + - type: Transform + pos: -6.5,0.5 + parent: 1 + - uid: 438 + components: + - type: Transform + pos: -6.5,-0.5 + parent: 1 + - uid: 484 + components: + - type: Transform + pos: -5.5,1.5 + parent: 1 + - uid: 485 + components: + - type: Transform + pos: -5.5,0.5 + parent: 1 + - uid: 486 + components: + - type: Transform + pos: -5.5,-0.5 + parent: 1 + - uid: 503 + components: + - type: Transform + pos: -3.5,-3.5 + parent: 1 + - uid: 504 + components: + - type: Transform + pos: -3.5,-4.5 + parent: 1 + - uid: 516 + components: + - type: Transform + pos: -3.5,8.5 + parent: 1 + - uid: 539 + components: + - type: Transform + pos: -1.5,10.5 + parent: 1 + - uid: 540 + components: + - type: Transform + pos: -1.5,9.5 + parent: 1 + - uid: 541 + components: + - type: Transform + pos: -1.5,8.5 + parent: 1 + - uid: 542 + components: + - type: Transform + pos: -1.5,7.5 + parent: 1 + - uid: 543 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 1 + - uid: 544 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 + - uid: 554 + components: + - type: Transform + pos: -2.5,8.5 + parent: 1 + - uid: 555 + components: + - type: Transform + pos: -2.5,7.5 + parent: 1 + - uid: 559 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 856 + components: + - type: Transform + pos: 11.5,-7.5 + parent: 1 + - uid: 874 + components: + - type: Transform + pos: 11.5,-5.5 + parent: 1 + - uid: 875 + components: + - type: Transform + pos: 11.5,-6.5 + parent: 1 + - uid: 882 + components: + - type: Transform + pos: 10.5,-6.5 + parent: 1 + - uid: 883 + components: + - type: Transform + pos: 10.5,-7.5 + parent: 1 + - uid: 925 + components: + - type: Transform + pos: 14.5,-16.5 + parent: 1 + - uid: 926 + components: + - type: Transform + pos: 14.5,-17.5 + parent: 1 + - uid: 949 + components: + - type: Transform + pos: 13.5,-16.5 + parent: 1 + - uid: 950 + components: + - type: Transform + pos: 13.5,-17.5 + parent: 1 + - uid: 966 + components: + - type: Transform + pos: 15.5,-16.5 + parent: 1 + - uid: 967 + components: + - type: Transform + pos: 15.5,-17.5 + parent: 1 + - uid: 1045 + components: + - type: Transform + pos: 18.5,-11.5 + parent: 1 + - uid: 1083 + components: + - type: Transform + pos: 19.5,-11.5 + parent: 1 + - uid: 1119 + components: + - type: Transform + pos: -28.5,-14.5 + parent: 1 + - uid: 1128 + components: + - type: Transform + pos: -28.5,-13.5 + parent: 1 + - uid: 1134 + components: + - type: Transform + pos: -28.5,-12.5 + parent: 1 + - uid: 1188 + components: + - type: Transform + pos: 27.5,-12.5 + parent: 1 + - uid: 1215 + components: + - type: Transform + pos: 29.5,-12.5 + parent: 1 + - uid: 1226 + components: + - type: Transform + pos: 28.5,-12.5 + parent: 1 + - uid: 1241 + components: + - type: Transform + pos: 30.5,-11.5 + parent: 1 + - uid: 1242 + components: + - type: Transform + pos: 30.5,-12.5 + parent: 1 + - uid: 1277 + components: + - type: Transform + pos: -29.5,-13.5 + parent: 1 +- proto: WallRockBasaltQuartz + entities: + - uid: 34 + components: + - type: Transform + pos: -26.5,-7.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: -26.5,-8.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: -26.5,-9.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -24.5,0.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: -24.5,3.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: -24.5,1.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: -24.5,2.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: -25.5,-7.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: -25.5,2.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: -25.5,3.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: -25.5,1.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: -25.5,0.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: -25.5,-9.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: -25.5,-8.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: -23.5,-9.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: -23.5,-10.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: -23.5,3.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: -23.5,2.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: -23.5,1.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: -24.5,-9.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: -24.5,-10.5 + parent: 1 + - uid: 126 + components: + - type: Transform + pos: -22.5,2.5 + parent: 1 + - uid: 213 + components: + - type: Transform + pos: -17.5,-3.5 + parent: 1 + - uid: 235 + components: + - type: Transform + pos: -15.5,-1.5 + parent: 1 + - uid: 236 + components: + - type: Transform + pos: -15.5,-2.5 + parent: 1 + - uid: 237 + components: + - type: Transform + pos: -15.5,-3.5 + parent: 1 + - uid: 243 + components: + - type: Transform + pos: -16.5,-1.5 + parent: 1 + - uid: 244 + components: + - type: Transform + pos: -16.5,-2.5 + parent: 1 + - uid: 245 + components: + - type: Transform + pos: -16.5,-3.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: -14.5,-1.5 + parent: 1 + - uid: 267 + components: + - type: Transform + pos: -14.5,-2.5 + parent: 1 + - uid: 268 + components: + - type: Transform + pos: -14.5,-3.5 + parent: 1 + - uid: 299 + components: + - type: Transform + pos: -12.5,-6.5 + parent: 1 + - uid: 303 + components: + - type: Transform + pos: -13.5,-2.5 + parent: 1 + - uid: 306 + components: + - type: Transform + pos: -13.5,-9.5 + parent: 1 + - uid: 327 + components: + - type: Transform + pos: -11.5,-6.5 + parent: 1 + - uid: 328 + components: + - type: Transform + pos: -11.5,-7.5 + parent: 1 + - uid: 329 + components: + - type: Transform + pos: -11.5,-8.5 + parent: 1 + - uid: 330 + components: + - type: Transform + pos: -11.5,-9.5 + parent: 1 + - uid: 346 + components: + - type: Transform + pos: -12.5,-8.5 + parent: 1 + - uid: 347 + components: + - type: Transform + pos: -12.5,-9.5 + parent: 1 + - uid: 353 + components: + - type: Transform + pos: -12.5,-7.5 + parent: 1 + - uid: 369 + components: + - type: Transform + pos: -10.5,-7.5 + parent: 1 + - uid: 370 + components: + - type: Transform + pos: -10.5,-8.5 + parent: 1 + - uid: 666 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - uid: 667 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 716 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 + - uid: 717 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 718 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 748 + components: + - type: Transform + pos: 7.5,5.5 + parent: 1 + - uid: 749 + components: + - type: Transform + pos: 7.5,4.5 + parent: 1 + - uid: 750 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 + - uid: 751 + components: + - type: Transform + pos: 7.5,2.5 + parent: 1 + - uid: 757 + components: + - type: Transform + pos: 6.5,-16.5 + parent: 1 + - uid: 758 + components: + - type: Transform + pos: 6.5,-17.5 + parent: 1 + - uid: 759 + components: + - type: Transform + pos: 6.5,-18.5 + parent: 1 + - uid: 760 + components: + - type: Transform + pos: 6.5,6.5 + parent: 1 + - uid: 761 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 + - uid: 762 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 763 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 779 + components: + - type: Transform + pos: 7.5,-16.5 + parent: 1 + - uid: 780 + components: + - type: Transform + pos: 7.5,-17.5 + parent: 1 + - uid: 781 + components: + - type: Transform + pos: 7.5,-18.5 + parent: 1 + - uid: 790 + components: + - type: Transform + pos: 8.5,-18.5 + parent: 1 + - uid: 807 + components: + - type: Transform + pos: 8.5,5.5 + parent: 1 + - uid: 808 + components: + - type: Transform + pos: 8.5,4.5 + parent: 1 + - uid: 809 + components: + - type: Transform + pos: 8.5,3.5 + parent: 1 + - uid: 833 + components: + - type: Transform + pos: 11.5,-12.5 + parent: 1 + - uid: 838 + components: + - type: Transform + pos: 9.5,4.5 + parent: 1 + - uid: 855 + components: + - type: Transform + pos: 9.5,5.5 + parent: 1 + - uid: 860 + components: + - type: Transform + pos: 11.5,-11.5 + parent: 1 + - uid: 909 + components: + - type: Transform + pos: 12.5,-9.5 + parent: 1 + - uid: 910 + components: + - type: Transform + pos: 12.5,-10.5 + parent: 1 + - uid: 911 + components: + - type: Transform + pos: 12.5,-11.5 + parent: 1 + - uid: 922 + components: + - type: Transform + pos: 12.5,-12.5 + parent: 1 + - uid: 944 + components: + - type: Transform + pos: 13.5,-9.5 + parent: 1 + - uid: 945 + components: + - type: Transform + pos: 13.5,-10.5 + parent: 1 + - uid: 946 + components: + - type: Transform + pos: 13.5,-11.5 + parent: 1 + - uid: 1061 + components: + - type: Transform + pos: 20.5,-16.5 + parent: 1 + - uid: 1062 + components: + - type: Transform + pos: 20.5,-17.5 + parent: 1 + - uid: 1063 + components: + - type: Transform + pos: 20.5,-18.5 + parent: 1 + - uid: 1111 + components: + - type: Transform + pos: 21.5,-15.5 + parent: 1 + - uid: 1112 + components: + - type: Transform + pos: 21.5,-16.5 + parent: 1 + - uid: 1113 + components: + - type: Transform + pos: 21.5,-17.5 + parent: 1 + - uid: 1114 + components: + - type: Transform + pos: 21.5,-18.5 + parent: 1 + - uid: 1165 + components: + - type: Transform + pos: 26.5,-9.5 + parent: 1 + - uid: 1185 + components: + - type: Transform + pos: 27.5,-9.5 + parent: 1 + - uid: 1186 + components: + - type: Transform + pos: 27.5,-10.5 + parent: 1 + - uid: 1202 + components: + - type: Transform + pos: 27.5,-8.5 + parent: 1 + - uid: 1212 + components: + - type: Transform + pos: 29.5,-9.5 + parent: 1 + - uid: 1213 + components: + - type: Transform + pos: 29.5,-10.5 + parent: 1 + - uid: 1222 + components: + - type: Transform + pos: 28.5,-8.5 + parent: 1 + - uid: 1223 + components: + - type: Transform + pos: 28.5,-9.5 + parent: 1 + - uid: 1224 + components: + - type: Transform + pos: 28.5,-10.5 + parent: 1 + - uid: 1310 + components: + - type: Transform + pos: 7.5,-19.5 + parent: 1 + - uid: 1312 + components: + - type: Transform + pos: 6.5,-19.5 + parent: 1 + - uid: 1321 + components: + - type: Transform + pos: 21.5,-19.5 + parent: 1 + - uid: 1322 + components: + - type: Transform + pos: 20.5,-19.5 + parent: 1 + - uid: 1362 + components: + - type: Transform + pos: 6.5,-20.5 + parent: 1 + - uid: 1406 + components: + - type: Transform + pos: 6.5,-21.5 + parent: 1 + - uid: 1412 + components: + - type: Transform + pos: -2.5,-21.5 + parent: 1 + - uid: 1413 + components: + - type: Transform + pos: -3.5,-21.5 + parent: 1 + - uid: 1414 + components: + - type: Transform + pos: -4.5,-21.5 + parent: 1 + - uid: 1426 + components: + - type: Transform + pos: 6.5,-22.5 + parent: 1 + - uid: 1427 + components: + - type: Transform + pos: 7.5,-22.5 + parent: 1 + - uid: 1428 + components: + - type: Transform + pos: -2.5,-22.5 + parent: 1 + - uid: 1434 + components: + - type: Transform + pos: 8.5,-22.5 + parent: 1 + - uid: 1440 + components: + - type: Transform + pos: -3.5,-22.5 + parent: 1 +- proto: WallRockBasaltSilver + entities: + - uid: 78 + components: + - type: Transform + pos: -23.5,-16.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: -23.5,-17.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: -23.5,-18.5 + parent: 1 + - uid: 112 + components: + - type: Transform + pos: -21.5,4.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: -22.5,-18.5 + parent: 1 + - uid: 137 + components: + - type: Transform + pos: -20.5,4.5 + parent: 1 + - uid: 147 + components: + - type: Transform + pos: -20.5,-5.5 + parent: 1 + - uid: 186 + components: + - type: Transform + pos: -19.5,-5.5 + parent: 1 + - uid: 187 + components: + - type: Transform + pos: -19.5,-6.5 + parent: 1 + - uid: 189 + components: + - type: Transform + pos: -19.5,4.5 + parent: 1 + - uid: 190 + components: + - type: Transform + pos: -19.5,3.5 + parent: 1 + - uid: 192 + components: + - type: Transform + pos: -17.5,-11.5 + parent: 1 + - uid: 193 + components: + - type: Transform + pos: -17.5,-12.5 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: -17.5,-5.5 + parent: 1 + - uid: 219 + components: + - type: Transform + pos: -18.5,-5.5 + parent: 1 + - uid: 220 + components: + - type: Transform + pos: -18.5,-6.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: -16.5,-11.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: -16.5,-12.5 + parent: 1 + - uid: 253 + components: + - type: Transform + pos: -16.5,-13.5 + parent: 1 + - uid: 283 + components: + - type: Transform + pos: -15.5,-13.5 + parent: 1 + - uid: 284 + components: + - type: Transform + pos: -15.5,-14.5 + parent: 1 + - uid: 366 + components: + - type: Transform + pos: -9.5,8.5 + parent: 1 + - uid: 408 + components: + - type: Transform + pos: -8.5,8.5 + parent: 1 + - uid: 423 + components: + - type: Transform + pos: -7.5,9.5 + parent: 1 + - uid: 424 + components: + - type: Transform + pos: -7.5,8.5 + parent: 1 + - uid: 425 + components: + - type: Transform + pos: -7.5,7.5 + parent: 1 + - uid: 426 + components: + - type: Transform + pos: -7.5,6.5 + parent: 1 + - uid: 449 + components: + - type: Transform + pos: -6.5,9.5 + parent: 1 + - uid: 450 + components: + - type: Transform + pos: -6.5,8.5 + parent: 1 + - uid: 451 + components: + - type: Transform + pos: -6.5,7.5 + parent: 1 + - uid: 452 + components: + - type: Transform + pos: -6.5,6.5 + parent: 1 + - uid: 478 + components: + - type: Transform + pos: -5.5,9.5 + parent: 1 + - uid: 508 + components: + - type: Transform + pos: -3.5,-8.5 + parent: 1 + - uid: 545 + components: + - type: Transform + pos: -2.5,-6.5 + parent: 1 + - uid: 546 + components: + - type: Transform + pos: -2.5,-7.5 + parent: 1 + - uid: 547 + components: + - type: Transform + pos: -2.5,-8.5 + parent: 1 + - uid: 582 + components: + - type: Transform + pos: -1.5,-8.5 + parent: 1 + - uid: 590 + components: + - type: Transform + pos: -1.5,-7.5 + parent: 1 + - uid: 654 + components: + - type: Transform + pos: 2.5,-10.5 + parent: 1 + - uid: 655 + components: + - type: Transform + pos: 2.5,-11.5 + parent: 1 + - uid: 656 + components: + - type: Transform + pos: 2.5,-12.5 + parent: 1 + - uid: 670 + components: + - type: Transform + pos: 3.5,-10.5 + parent: 1 + - uid: 671 + components: + - type: Transform + pos: 3.5,-11.5 + parent: 1 + - uid: 672 + components: + - type: Transform + pos: 3.5,-12.5 + parent: 1 + - uid: 740 + components: + - type: Transform + pos: 4.5,-12.5 + parent: 1 + - uid: 864 + components: + - type: Transform + pos: 11.5,-18.5 + parent: 1 + - uid: 901 + components: + - type: Transform + pos: 12.5,-18.5 + parent: 1 + - uid: 951 + components: + - type: Transform + pos: 13.5,-18.5 + parent: 1 + - uid: 1117 + components: + - type: Transform + pos: 23.5,-17.5 + parent: 1 + - uid: 1118 + components: + - type: Transform + pos: 23.5,-18.5 + parent: 1 + - uid: 1124 + components: + - type: Transform + pos: 23.5,-4.5 + parent: 1 + - uid: 1127 + components: + - type: Transform + pos: 23.5,-7.5 + parent: 1 + - uid: 1139 + components: + - type: Transform + pos: 25.5,-4.5 + parent: 1 + - uid: 1141 + components: + - type: Transform + pos: 25.5,-6.5 + parent: 1 + - uid: 1143 + components: + - type: Transform + pos: 24.5,-5.5 + parent: 1 + - uid: 1144 + components: + - type: Transform + pos: 24.5,-6.5 + parent: 1 + - uid: 1145 + components: + - type: Transform + pos: 24.5,-7.5 + parent: 1 + - uid: 1147 + components: + - type: Transform + pos: 24.5,-16.5 + parent: 1 + - uid: 1148 + components: + - type: Transform + pos: 24.5,-17.5 + parent: 1 + - uid: 1149 + components: + - type: Transform + pos: 24.5,-18.5 + parent: 1 + - uid: 1156 + components: + - type: Transform + pos: 24.5,-4.5 + parent: 1 + - uid: 1182 + components: + - type: Transform + pos: -21.5,5.5 + parent: 1 + - uid: 1265 + components: + - type: Transform + pos: -19.5,5.5 + parent: 1 + - uid: 1284 + components: + - type: Transform + pos: -20.5,5.5 + parent: 1 + - uid: 1292 + components: + - type: Transform + pos: -23.5,-19.5 + parent: 1 + - uid: 1308 + components: + - type: Transform + pos: -22.5,-19.5 + parent: 1 + - uid: 1327 + components: + - type: Transform + pos: 14.5,-19.5 + parent: 1 + - uid: 1328 + components: + - type: Transform + pos: 13.5,-19.5 + parent: 1 + - uid: 1339 + components: + - type: Transform + pos: 14.5,-20.5 + parent: 1 + - uid: 1348 + components: + - type: Transform + pos: 13.5,-20.5 + parent: 1 + - uid: 1350 + components: + - type: Transform + pos: -7.5,-20.5 + parent: 1 + - uid: 1384 + components: + - type: Transform + pos: -7.5,-21.5 + parent: 1 + - uid: 1416 + components: + - type: Transform + pos: -6.5,-21.5 + parent: 1 + - uid: 1420 + components: + - type: Transform + pos: -8.5,-21.5 + parent: 1 + - uid: 1445 + components: + - type: Transform + pos: -7.5,-22.5 + parent: 1 + - uid: 1446 + components: + - type: Transform + pos: -8.5,-22.5 + parent: 1 + - uid: 1447 + components: + - type: Transform + pos: -9.5,-22.5 + parent: 1 +- proto: WallRockBasaltTin + entities: + - uid: 8 + components: + - type: Transform + pos: 1.5,-14.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 0.5,-14.5 + parent: 1 + - uid: 119 + components: + - type: Transform + pos: -22.5,-13.5 + parent: 1 + - uid: 120 + components: + - type: Transform + pos: -22.5,-14.5 + parent: 1 + - uid: 150 + components: + - type: Transform + pos: -20.5,-13.5 + parent: 1 + - uid: 151 + components: + - type: Transform + pos: -20.5,-14.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: -21.5,-13.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: -21.5,-14.5 + parent: 1 + - uid: 249 + components: + - type: Transform + pos: -16.5,-9.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: -16.5,-10.5 + parent: 1 + - uid: 269 + components: + - type: Transform + pos: -14.5,-10.5 + parent: 1 + - uid: 270 + components: + - type: Transform + pos: -14.5,-9.5 + parent: 1 + - uid: 271 + components: + - type: Transform + pos: -14.5,-11.5 + parent: 1 + - uid: 279 + components: + - type: Transform + pos: -15.5,-9.5 + parent: 1 + - uid: 280 + components: + - type: Transform + pos: -15.5,-10.5 + parent: 1 + - uid: 281 + components: + - type: Transform + pos: -15.5,-11.5 + parent: 1 + - uid: 358 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 1 + - uid: 361 + components: + - type: Transform + pos: -9.5,13.5 + parent: 1 + - uid: 362 + components: + - type: Transform + pos: -9.5,12.5 + parent: 1 + - uid: 363 + components: + - type: Transform + pos: -9.5,11.5 + parent: 1 + - uid: 391 + components: + - type: Transform + pos: -7.5,13.5 + parent: 1 + - uid: 392 + components: + - type: Transform + pos: -7.5,12.5 + parent: 1 + - uid: 393 + components: + - type: Transform + pos: -7.5,11.5 + parent: 1 + - uid: 394 + components: + - type: Transform + pos: -8.5,-4.5 + parent: 1 + - uid: 395 + components: + - type: Transform + pos: -8.5,-5.5 + parent: 1 + - uid: 396 + components: + - type: Transform + pos: -8.5,-6.5 + parent: 1 + - uid: 403 + components: + - type: Transform + pos: -8.5,13.5 + parent: 1 + - uid: 404 + components: + - type: Transform + pos: -8.5,12.5 + parent: 1 + - uid: 405 + components: + - type: Transform + pos: -8.5,11.5 + parent: 1 + - uid: 445 + components: + - type: Transform + pos: -6.5,13.5 + parent: 1 + - uid: 446 + components: + - type: Transform + pos: -6.5,12.5 + parent: 1 + - uid: 447 + components: + - type: Transform + pos: -6.5,11.5 + parent: 1 + - uid: 453 + components: + - type: Transform + pos: -7.5,-4.5 + parent: 1 + - uid: 454 + components: + - type: Transform + pos: -7.5,-5.5 + parent: 1 + - uid: 455 + components: + - type: Transform + pos: -7.5,-6.5 + parent: 1 + - uid: 456 + components: + - type: Transform + pos: -7.5,-7.5 + parent: 1 + - uid: 457 + components: + - type: Transform + pos: -7.5,-8.5 + parent: 1 + - uid: 474 + components: + - type: Transform + pos: -5.5,13.5 + parent: 1 + - uid: 475 + components: + - type: Transform + pos: -5.5,12.5 + parent: 1 + - uid: 476 + components: + - type: Transform + pos: -5.5,11.5 + parent: 1 + - uid: 495 + components: + - type: Transform + pos: -4.5,13.5 + parent: 1 + - uid: 496 + components: + - type: Transform + pos: -4.5,12.5 + parent: 1 + - uid: 497 + components: + - type: Transform + pos: -4.5,11.5 + parent: 1 + - uid: 604 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 1 + - uid: 605 + components: + - type: Transform + pos: 0.5,-5.5 + parent: 1 + - uid: 612 + components: + - type: Transform + pos: 0.5,-11.5 + parent: 1 + - uid: 613 + components: + - type: Transform + pos: 0.5,-12.5 + parent: 1 + - uid: 614 + components: + - type: Transform + pos: 0.5,-13.5 + parent: 1 + - uid: 622 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 1 + - uid: 623 + components: + - type: Transform + pos: 1.5,-5.5 + parent: 1 + - uid: 628 + components: + - type: Transform + pos: 1.5,-12.5 + parent: 1 + - uid: 629 + components: + - type: Transform + pos: 1.5,-13.5 + parent: 1 + - uid: 650 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 1 + - uid: 651 + components: + - type: Transform + pos: 2.5,-5.5 + parent: 1 + - uid: 657 + components: + - type: Transform + pos: 2.5,-13.5 + parent: 1 + - uid: 753 + components: + - type: Transform + pos: 6.5,-10.5 + parent: 1 + - uid: 754 + components: + - type: Transform + pos: 6.5,-11.5 + parent: 1 + - uid: 755 + components: + - type: Transform + pos: 6.5,-12.5 + parent: 1 + - uid: 756 + components: + - type: Transform + pos: 6.5,-13.5 + parent: 1 + - uid: 791 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 800 + components: + - type: Transform + pos: 7.5,-12.5 + parent: 1 + - uid: 801 + components: + - type: Transform + pos: 7.5,-13.5 + parent: 1 + - uid: 810 + components: + - type: Transform + pos: 14.5,-0.5 + parent: 1 + - uid: 812 + components: + - type: Transform + pos: 8.5,0.5 + parent: 1 + - uid: 813 + components: + - type: Transform + pos: 8.5,-0.5 + parent: 1 + - uid: 828 + components: + - type: Transform + pos: 14.5,-4.5 + parent: 1 + - uid: 829 + components: + - type: Transform + pos: 10.5,0.5 + parent: 1 + - uid: 841 + components: + - type: Transform + pos: 15.5,-4.5 + parent: 1 + - uid: 842 + components: + - type: Transform + pos: 9.5,0.5 + parent: 1 + - uid: 897 + components: + - type: Transform + pos: 13.5,0.5 + parent: 1 + - uid: 904 + components: + - type: Transform + pos: 9.5,-0.5 + parent: 1 + - uid: 934 + components: + - type: Transform + pos: 14.5,0.5 + parent: 1 + - uid: 935 + components: + - type: Transform + pos: 14.5,-5.5 + parent: 1 + - uid: 958 + components: + - type: Transform + pos: 16.5,1.5 + parent: 1 + - uid: 959 + components: + - type: Transform + pos: 16.5,0.5 + parent: 1 + - uid: 963 + components: + - type: Transform + pos: 16.5,-3.5 + parent: 1 + - uid: 964 + components: + - type: Transform + pos: 16.5,-4.5 + parent: 1 + - uid: 969 + components: + - type: Transform + pos: 15.5,0.5 + parent: 1 + - uid: 970 + components: + - type: Transform + pos: 15.5,-5.5 + parent: 1 + - uid: 974 + components: + - type: Transform + pos: 15.5,-9.5 + parent: 1 + - uid: 975 + components: + - type: Transform + pos: 15.5,-10.5 + parent: 1 + - uid: 984 + components: + - type: Transform + pos: 15.5,1.5 + parent: 1 + - uid: 996 + components: + - type: Transform + pos: 17.5,1.5 + parent: 1 + - uid: 997 + components: + - type: Transform + pos: 17.5,0.5 + parent: 1 + - uid: 1001 + components: + - type: Transform + pos: 17.5,-3.5 + parent: 1 + - uid: 1002 + components: + - type: Transform + pos: 17.5,-4.5 + parent: 1 + - uid: 1014 + components: + - type: Transform + pos: 16.5,-9.5 + parent: 1 + - uid: 1032 + components: + - type: Transform + pos: 19.5,-6.5 + parent: 1 + - uid: 1040 + components: + - type: Transform + pos: 18.5,-6.5 + parent: 1 + - uid: 1055 + components: + - type: Transform + pos: 18.5,1.5 + parent: 1 + - uid: 1056 + components: + - type: Transform + pos: 18.5,0.5 + parent: 1 + - uid: 1079 + components: + - type: Transform + pos: 19.5,-7.5 + parent: 1 +- proto: WallRockBasaltUranium + entities: + - uid: 153 + components: + - type: Transform + pos: -20.5,-17.5 + parent: 1 + - uid: 154 + components: + - type: Transform + pos: -20.5,-18.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: -19.5,-17.5 + parent: 1 + - uid: 326 + components: + - type: Transform + pos: 1.5,6.5 + parent: 1 + - uid: 569 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 + - uid: 573 + components: + - type: Transform + pos: 4.5,-6.5 + parent: 1 + - uid: 596 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 599 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 601 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 + - uid: 619 + components: + - type: Transform + pos: 1.5,-1.5 + parent: 1 + - uid: 639 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 640 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 647 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 1 + - uid: 652 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 1 + - uid: 653 + components: + - type: Transform + pos: 2.5,-7.5 + parent: 1 + - uid: 669 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 1 + - uid: 688 + components: + - type: Transform + pos: -0.5,-2.5 + parent: 1 + - uid: 692 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 1 + - uid: 861 + components: + - type: Transform + pos: 11.5,-15.5 + parent: 1 + - uid: 862 + components: + - type: Transform + pos: 11.5,-16.5 + parent: 1 + - uid: 888 + components: + - type: Transform + pos: 10.5,-15.5 + parent: 1 + - uid: 898 + components: + - type: Transform + pos: 12.5,-15.5 + parent: 1 + - uid: 1026 + components: + - type: Transform + pos: 19.5,-0.5 + parent: 1 + - uid: 1027 + components: + - type: Transform + pos: 19.5,-1.5 + parent: 1 + - uid: 1028 + components: + - type: Transform + pos: 19.5,-2.5 + parent: 1 + - uid: 1035 + components: + - type: Transform + pos: 18.5,-1.5 + parent: 1 + - uid: 1057 + components: + - type: Transform + pos: 18.5,-0.5 + parent: 1 + - uid: 1066 + components: + - type: Transform + pos: 20.5,-0.5 + parent: 1 + - uid: 1067 + components: + - type: Transform + pos: 20.5,-1.5 + parent: 1 + - uid: 1068 + components: + - type: Transform + pos: 20.5,-2.5 + parent: 1 + - uid: 1069 + components: + - type: Transform + pos: 20.5,-3.5 + parent: 1 + - uid: 1075 + components: + - type: Transform + pos: 20.5,-9.5 + parent: 1 + - uid: 1076 + components: + - type: Transform + pos: 20.5,-10.5 + parent: 1 + - uid: 1080 + components: + - type: Transform + pos: 19.5,-8.5 + parent: 1 + - uid: 1081 + components: + - type: Transform + pos: 19.5,-9.5 + parent: 1 + - uid: 1169 + components: + - type: Transform + pos: 26.5,-13.5 + parent: 1 + - uid: 1170 + components: + - type: Transform + pos: 26.5,-14.5 + parent: 1 + - uid: 1171 + components: + - type: Transform + pos: 26.5,-15.5 + parent: 1 + - uid: 1190 + components: + - type: Transform + pos: 27.5,-14.5 + parent: 1 + - uid: 1191 + components: + - type: Transform + pos: 27.5,-15.5 + parent: 1 + - uid: 1294 + components: + - type: Transform + pos: -20.5,-19.5 + parent: 1 + - uid: 1297 + components: + - type: Transform + pos: -11.5,-19.5 + parent: 1 + - uid: 1298 + components: + - type: Transform + pos: -12.5,-19.5 + parent: 1 + - uid: 1300 + components: + - type: Transform + pos: -13.5,-19.5 + parent: 1 + - uid: 1305 + components: + - type: Transform + pos: -19.5,-19.5 + parent: 1 + - uid: 1374 + components: + - type: Transform + pos: -13.5,-20.5 + parent: 1 + - uid: 1375 + components: + - type: Transform + pos: -12.5,-20.5 + parent: 1 +- proto: WatermelonSeeds + entities: + - uid: 206 + components: + - type: Transform + parent: 201 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: WeaponProtoKineticAccelerator + entities: + - uid: 765 + components: + - type: Transform + pos: 14.022811,-2.3405697 + parent: 1 +- proto: WeldingFuelTankFull + entities: + - uid: 642 + components: + - type: Transform + pos: 23.5,-8.5 + parent: 1 +- proto: WoodenSupportBeam + entities: + - uid: 169 + components: + - type: Transform + pos: -16.5,3.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/mining_outpost.yml b/Resources/Maps/Lavaland/mining_outpost.yml new file mode 100644 index 0000000000..e0dec5feb2 --- /dev/null +++ b/Resources/Maps/Lavaland/mining_outpost.yml @@ -0,0 +1,6158 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 02:18:33 + entityCount: 902 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 2: Space + 4: FloorBar + 5: FloorBasalt + 8: FloorBlueCircuit + 6: FloorDark + 3: FloorFreezer + 0: FloorSteel + 7: FloorWhite + 1: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.5520833,-0.48958334 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAADAAAAAAAAAAAAAAABAAAAAAABAAAAAAADAAAAAAABAAAAAAADAAAAAAABAAAAAAAAAAAAAAADAAAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAADAAAAAAACAAAAAAACAAAAAAADAAAAAAABAAAAAAAAAAAAAAACAAAAAAACAAAAAAAAAAAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAADAAAAAAACAAAAAAACAAAAAAADAQAAAAAAAAAAAAADAAAAAAADAAAAAAABAAAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAADAQAAAAAAAAAAAAADAAAAAAACAAAAAAABAAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAADAAAAAAAAAAAAAAABAAAAAAABAQAAAAAAAAAAAAADAAAAAAABAAAAAAACAAAAAAACAAAAAAABAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAACAAAAAAADAAAAAAACAAAAAAADAQAAAAAAAAAAAAAAAAAAAAADAAAAAAACAAAAAAACAAAAAAACAAAAAAABAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAACAAAAAAABAAAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAACAAAAAAADAAAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAADAAAAAAABAAAAAAADAAAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAAAAAAADAAAAAAACAAAAAAADAAAAAAACAQAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAADAAAAAAACAAAAAAABAAAAAAABAAAAAAADAAAAAAADAAAAAAAAAAAAAAAAAAAAAAADAAAAAAACAAAAAAADAAAAAAACAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAACAAAAAAACAAAAAAAAAQAAAAAAAAAAAAABAAAAAAADAAAAAAABAAAAAAABAQAAAAAAAAAAAAACAAAAAAADAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAADAAAAAAADAAAAAAACAAAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAABAAAAAAACAAAAAAABAAAAAAACAQAAAAAAAAAAAAADAAAAAAACAAAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAABAAAAAAABAAAAAAABAAAAAAADAAAAAAADAQAAAAAAAAAAAAAAAAAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAABBAAAAAABBAAAAAADBAAAAAABBAAAAAADBAAAAAABAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAADBAAAAAAABAAAAAABBAAAAAAABAAAAAADAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAABBAAAAAADBAAAAAAABAAAAAACBAAAAAABBAAAAAABAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAADBAAAAAABBAAAAAACBAAAAAACBAAAAAABBAAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAADAAAAAAAAAAAAAAACAAAAAAACAAAAAAABAAAAAAACAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAABAAAAAAABAAAAAAADAAAAAAADAAAAAAACAAAAAAACAAAAAAACAAAAAAABAAAAAAAAAAAAAAACAAAAAAABAAAAAAADAAAAAAADAAAAAAACAAAAAAABAAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAABAAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -2,0: + ind: -2,0 + tiles: AgAAAAAABQAAAAAABQAAAAAAAQAAAAAAAAAAAAACAAAAAAACAAAAAAADAAAAAAADAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAAAAADAAAAAAABAAAAAAADAAAAAAACAgAAAAAAAgAAAAAABQAAAAAAAQAAAAAAAAAAAAADAAAAAAACAAAAAAACAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAAABAAAAAAACAAAAAAABAAAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAACAAAAAAACAAAAAAABgAAAAACCAAAAAAACAAAAAAAAQAAAAAABwAAAAABBwAAAAAABwAAAAAABwAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAACAAAAAAABgAAAAABBgAAAAAABgAAAAABCAAAAAAAAQAAAAAABwAAAAABBwAAAAACBwAAAAADBwAAAAACAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -2,-1: + ind: -2,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAADAAAAAAACAQAAAAAAAAAAAAABAAAAAAADAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAACAAAAAAADAAAAAAAAAAAAAAADAAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAABAAAAAAACAQAAAAAAAAAAAAADAAAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAADAAAAAAACAAAAAAABAAAAAAABAAAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAADAAAAAAABAAAAAAADAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAACAAAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAACAAAAAAADAAAAAAAAAAAAAAACAAAAAAAAAQAAAAAAAAAAAAABAAAAAAABAQAAAAAAAAAAAAACAAAAAAADAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAABAAAAAAACAAAAAAAAAAAAAAAAAAAAAAADAQAAAAAAAAAAAAACAAAAAAABAAAAAAACAAAAAAAAAAAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAABAAAAAAADAQAAAAAAAgAAAAAAAgAAAAAABQAAAAAAAQAAAAAAAAAAAAADAAAAAAADAAAAAAACAAAAAAACAAAAAAAAAAAAAAADAAAAAAAAAAAAAAACAAAAAAABAAAAAAADAAAAAAAAAAAAAAAD + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Bot + decals: + 109: 12,5 + 110: 11,5 + 111: 9,5 + 112: 7,3 + - node: + color: '#FFFFFFFF' + id: Delivery + decals: + 113: 12,4 + - node: + color: '#52B4E996' + id: HalfTileOverlayGreyscale + decals: + 46: -22,4 + 47: -21,4 + 48: -20,4 + - node: + color: '#A4610696' + id: HalfTileOverlayGreyscale + decals: + 9: -26,1 + 10: -20,1 + 11: -15,1 + 17: -26,-3 + 68: 7,13 + 69: 8,13 + 74: 3,11 + 99: 5,5 + - node: + color: '#D381C996' + id: HalfTileOverlayGreyscale + decals: + 94: 2,11 + - node: + color: '#A4610696' + id: HalfTileOverlayGreyscale180 + decals: + 18: -26,-1 + 20: -26,-5 + 78: 3,-2 + 79: 5,-2 + 108: 9,0 + - node: + color: '#D381C996' + id: HalfTileOverlayGreyscale180 + decals: + 24: -27,-5 + 25: -25,-5 + 80: 2,-2 + - node: + color: '#A4610696' + id: HalfTileOverlayGreyscale270 + decals: + 13: -8,0 + 14: -19,-9 + 15: -19,-6 + 16: -19,-3 + 51: 1,0 + 52: 7,0 + 53: 7,1 + 66: 6,10 + 67: 6,12 + 71: 11,10 + 73: 1,9 + 75: 2,6 + 76: 2,4 + - node: + color: '#D381C996' + id: HalfTileOverlayGreyscale270 + decals: + 26: -28,-4 + - node: + color: '#52B4E996' + id: HalfTileOverlayGreyscale90 + decals: + 49: -19,3 + - node: + color: '#A4610696' + id: HalfTileOverlayGreyscale90 + decals: + 12: -10,0 + 54: -1,0 + 55: 5,0 + 56: 5,1 + 57: 10,1 + 58: 10,3 + 59: 8,-1 + 60: 5,4 + 61: 4,6 + 62: 4,8 + 63: 4,10 + 64: 9,10 + 65: 9,12 + 70: 12,10 + - node: + color: '#D381C996' + id: HalfTileOverlayGreyscale90 + decals: + 27: -24,-4 + 96: 4,7 + 105: 10,2 + - node: + angle: -1.5707963267948966 rad + color: '#FFFFFFFF' + id: LoadingArea + decals: + 114: 8,5 + 116: 8,-2 + - node: + color: '#FFFFFFFF' + id: LoadingArea + decals: + 115: 7,4 + - node: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: LoadingArea + decals: + 117: 11,4 + - node: + color: '#A4610696' + id: QuarterTileOverlayGreyscale + decals: + 77: 2,2 + - node: + color: '#D381C996' + id: QuarterTileOverlayGreyscale + decals: + 32: -25,-3 + 33: -25,1 + 34: -19,1 + 35: -14,1 + 36: -19,-4 + 37: -19,-7 + 38: -19,-10 + 89: 6,9 + 95: 1,8 + 102: 1,-1 + 103: 7,-1 + - node: + color: '#D381C996' + id: QuarterTileOverlayGreyscale180 + decals: + 30: -27,-1 + 40: -10,1 + 85: 12,11 + 92: 4,11 + 93: 9,11 + 98: 5,5 + 100: 5,2 + 107: 8,0 + - node: + color: '#D381C996' + id: QuarterTileOverlayGreyscale270 + decals: + 31: -25,-1 + 41: -19,-8 + 42: -19,-5 + 43: -19,-2 + 81: 1,1 + 82: 2,7 + 83: 1,10 + 84: 11,11 + 88: 6,11 + 104: 7,2 + - node: + color: '#D381C996' + id: QuarterTileOverlayGreyscale90 + decals: + 28: -27,1 + 29: -27,-3 + 39: -10,-1 + 44: -16,1 + 45: -21,1 + 90: 4,9 + 91: 9,9 + 97: 4,5 + 101: 5,-1 + - node: + color: '#A4610696' + id: ThreeQuarterTileOverlayGreyscale + decals: + 22: -28,-3 + - node: + color: '#D381C996' + id: ThreeQuarterTileOverlayGreyscale + decals: + 86: 6,13 + - node: + color: '#A4610696' + id: ThreeQuarterTileOverlayGreyscale180 + decals: + 19: -24,-5 + - node: + color: '#D381C996' + id: ThreeQuarterTileOverlayGreyscale180 + decals: + 106: 10,0 + - node: + color: '#A4610696' + id: ThreeQuarterTileOverlayGreyscale270 + decals: + 21: -28,-5 + - node: + color: '#52B4E996' + id: ThreeQuarterTileOverlayGreyscale90 + decals: + 50: -19,4 + - node: + color: '#A4610696' + id: ThreeQuarterTileOverlayGreyscale90 + decals: + 23: -24,-3 + - node: + color: '#D381C996' + id: ThreeQuarterTileOverlayGreyscale90 + decals: + 87: 9,13 + - node: + color: '#FFFFFFFF' + id: WarnCornerNW + decals: + 118: 12,3 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallNW + decals: + 125: 12,-2 + - node: + color: '#FFFFFFFF' + id: WarnLineS + decals: + 119: 12,2 + 120: 12,1 + 121: 12,0 + 122: 12,-1 + - node: + color: '#FFFFFFFF' + id: WarnLineW + decals: + 123: 10,-2 + 124: 11,-2 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 52463 + -1,0: + 0: 15 + 0,2: + 0: 52990 + -1,2: + 0: 192 + 0,-1: + 0: 60416 + 0,1: + 0: 52428 + 1,0: + 0: 48127 + 1,1: + 0: 61883 + 1,2: + 0: 57297 + 1,-1: + 0: 47872 + 1,3: + 0: 204 + 2,0: + 0: 30583 + 2,1: + 0: 255 + 2,2: + 0: 49072 + 2,3: + 0: 51 + 2,-1: + 0: 7936 + 3,0: + 0: 4369 + 3,1: + 0: 17 + 3,2: + 0: 4880 + 3,-1: + 0: 4352 + -4,-3: + 0: 61440 + -4,-2: + 0: 65291 + -5,-3: + 0: 62976 + -4,-1: + 0: 62719 + -4,0: + 0: 62207 + -5,-1: + 0: 63094 + -3,-3: + 0: 4096 + -3,-2: + 0: 13057 + -3,-1: + 0: 28723 + -3,0: + 0: 127 + -2,0: + 0: 15 + -5,0: + 0: 45567 + -4,1: + 0: 255 + -5,1: + 0: 139 + -8,0: + 0: 70 + -8,-1: + 0: 16384 + -7,0: + 0: 62719 + -7,1: + 0: 15 + -7,-1: + 0: 62719 + -6,0: + 0: 53503 + -6,1: + 0: 13 + -6,-1: + 0: 61661 + -7,-2: + 0: 61440 + -6,-2: + 0: 7360 + -6,-3: + 0: 52224 + -5,-2: + 0: 26470 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirAlarm + entities: + - uid: 336 + components: + - type: Transform + pos: -22.5,2.5 + parent: 1 + - type: DeviceList + devices: + - 375 + - 376 + - 377 + - 378 + - 373 + - 310 + - 374 + - 381 + - 380 + - 379 + - 357 + - 447 + - 816 + - 358 + - 446 + - 448 + - 359 + - uid: 782 + components: + - type: Transform + pos: -23.5,5.5 + parent: 1 + - type: DeviceList + devices: + - 789 + - 589 + - 588 + - 380 + - uid: 783 + components: + - type: Transform + pos: -21.5,5.5 + parent: 1 + - type: DeviceList + devices: + - 381 + - 712 + - 792 + - 713 + - uid: 784 + components: + - type: Transform + pos: -24.5,-1.5 + parent: 1 + - type: DeviceList + devices: + - 382 + - 383 + - 791 + - 379 + - uid: 785 + components: + - type: Transform + pos: -21.5,-7.5 + parent: 1 + - type: DeviceList + devices: + - 376 + - 360 + - uid: 786 + components: + - type: Transform + pos: -21.5,-4.5 + parent: 1 + - type: DeviceList + devices: + - 377 + - 361 + - uid: 787 + components: + - type: Transform + pos: -21.5,-1.5 + parent: 1 + - type: DeviceList + devices: + - 362 + - 378 + - uid: 788 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,-6.5 + parent: 1 + - type: DeviceList + devices: + - 794 + - 387 + - 364 + - 373 + - uid: 801 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-2.5 + parent: 1 + - type: DeviceList + devices: + - 369 + - 795 + - 508 + - 444 + - 371 + - 370 + - uid: 802 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 + - type: DeviceList + devices: + - 370 + - 371 + - 445 + - 796 + - 368 + - uid: 803 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,12.5 + parent: 1 + - type: DeviceList + devices: + - 799 + - 798 + - 367 + - uid: 804 + components: + - type: Transform + pos: 2.5,12.5 + parent: 1 + - type: DeviceList + devices: + - 443 + - 366 + - 797 + - 799 +- proto: AirCanister + entities: + - uid: 724 + components: + - type: Transform + pos: -12.5,3.5 + parent: 1 + - uid: 725 + components: + - type: Transform + pos: -12.5,4.5 + parent: 1 +- proto: Airlock + entities: + - uid: 344 + components: + - type: Transform + pos: 5.5,7.5 + parent: 1 + - uid: 846 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -13.5,-8.5 + parent: 1 + - uid: 847 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -16.5,-8.5 + parent: 1 + - uid: 848 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -19.5,-8.5 + parent: 1 + - uid: 849 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -19.5,-5.5 + parent: 1 + - uid: 850 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -19.5,-2.5 + parent: 1 +- proto: AirlockCargoGlass + entities: + - uid: 859 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,0.5 + parent: 1 + - uid: 860 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,0.5 + parent: 1 +- proto: AirlockCargoGlassLocked + entities: + - uid: 856 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,1.5 + parent: 1 + - uid: 857 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,0.5 + parent: 1 + - uid: 858 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,10.5 + parent: 1 +- proto: AirlockCargoLocked + entities: + - uid: 855 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -25.5,-1.5 + parent: 1 +- proto: AirlockExternalGlass + entities: + - uid: 895 + components: + - type: Transform + pos: 0.5,9.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 896: + - - DoorStatus + - DoorBolt + - uid: 896 + components: + - type: Transform + pos: -1.5,9.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 895: + - - DoorStatus + - DoorBolt +- proto: AirlockExternalGlassCargoLocked + entities: + - uid: 893 + components: + - type: Transform + pos: 10.5,10.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 894: + - - DoorStatus + - DoorBolt + - uid: 894 + components: + - type: Transform + pos: 13.5,10.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 1 + - type: DeviceLinkSource + linkedPorts: + 893: + - - DoorStatus + - DoorBolt +- proto: AirlockGlass + entities: + - uid: 851 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -13.5,-1.5 + parent: 1 +- proto: AirlockMaintLocked + entities: + - uid: 845 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -14.5,2.5 + parent: 1 + - uid: 852 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -25.5,2.5 + parent: 1 +- proto: AirlockVirologyGlass + entities: + - uid: 853 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -19.5,2.5 + parent: 1 +- proto: AirSensor + entities: + - uid: 789 + components: + - type: Transform + pos: -25.5,3.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 782 + - uid: 791 + components: + - type: Transform + pos: -24.5,-2.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 784 + - uid: 792 + components: + - type: Transform + pos: -19.5,4.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 783 + - uid: 794 + components: + - type: Transform + pos: -13.5,-5.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 788 + - uid: 795 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 801 + - uid: 796 + components: + - type: Transform + pos: 9.5,1.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 802 + - uid: 797 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 804 + - uid: 798 + components: + - type: Transform + pos: 7.5,11.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 803 + - uid: 816 + components: + - type: Transform + pos: -17.5,0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 336 +- proto: APCBasic + entities: + - uid: 337 + components: + - type: Transform + pos: -26.5,5.5 + parent: 1 + - uid: 338 + components: + - type: Transform + pos: -17.5,2.5 + parent: 1 + - uid: 339 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,5.5 + parent: 1 + - uid: 800 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,8.5 + parent: 1 +- proto: BaseComputer + entities: + - uid: 877 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,-1.5 + parent: 1 +- proto: Bed + entities: + - uid: 759 + components: + - type: Transform + pos: -21.5,-8.5 + parent: 1 + - uid: 760 + components: + - type: Transform + pos: -21.5,-5.5 + parent: 1 + - uid: 761 + components: + - type: Transform + pos: -21.5,-2.5 + parent: 1 +- proto: BedsheetOrange + entities: + - uid: 762 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-8.5 + parent: 1 + - uid: 763 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-5.5 + parent: 1 + - uid: 764 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-2.5 + parent: 1 +- proto: BorgCharger + entities: + - uid: 874 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 1 +- proto: CableApcExtension + entities: + - uid: 606 + components: + - type: Transform + pos: -26.5,5.5 + parent: 1 + - uid: 607 + components: + - type: Transform + pos: -26.5,4.5 + parent: 1 + - uid: 608 + components: + - type: Transform + pos: -25.5,4.5 + parent: 1 + - uid: 609 + components: + - type: Transform + pos: -25.5,3.5 + parent: 1 + - uid: 610 + components: + - type: Transform + pos: -17.5,2.5 + parent: 1 + - uid: 611 + components: + - type: Transform + pos: -17.5,1.5 + parent: 1 + - uid: 612 + components: + - type: Transform + pos: -17.5,0.5 + parent: 1 + - uid: 613 + components: + - type: Transform + pos: -18.5,0.5 + parent: 1 + - uid: 614 + components: + - type: Transform + pos: -19.5,0.5 + parent: 1 + - uid: 615 + components: + - type: Transform + pos: -20.5,0.5 + parent: 1 + - uid: 616 + components: + - type: Transform + pos: -21.5,0.5 + parent: 1 + - uid: 617 + components: + - type: Transform + pos: -22.5,0.5 + parent: 1 + - uid: 618 + components: + - type: Transform + pos: -23.5,0.5 + parent: 1 + - uid: 619 + components: + - type: Transform + pos: -24.5,0.5 + parent: 1 + - uid: 620 + components: + - type: Transform + pos: -25.5,0.5 + parent: 1 + - uid: 621 + components: + - type: Transform + pos: -25.5,-0.5 + parent: 1 + - uid: 622 + components: + - type: Transform + pos: -25.5,-1.5 + parent: 1 + - uid: 623 + components: + - type: Transform + pos: -25.5,-2.5 + parent: 1 + - uid: 624 + components: + - type: Transform + pos: -25.5,-3.5 + parent: 1 + - uid: 625 + components: + - type: Transform + pos: -26.5,-3.5 + parent: 1 + - uid: 626 + components: + - type: Transform + pos: -24.5,-3.5 + parent: 1 + - uid: 627 + components: + - type: Transform + pos: -19.5,1.5 + parent: 1 + - uid: 628 + components: + - type: Transform + pos: -19.5,2.5 + parent: 1 + - uid: 629 + components: + - type: Transform + pos: -19.5,3.5 + parent: 1 + - uid: 630 + components: + - type: Transform + pos: -19.5,4.5 + parent: 1 + - uid: 631 + components: + - type: Transform + pos: -16.5,0.5 + parent: 1 + - uid: 632 + components: + - type: Transform + pos: -15.5,0.5 + parent: 1 + - uid: 633 + components: + - type: Transform + pos: -14.5,0.5 + parent: 1 + - uid: 634 + components: + - type: Transform + pos: -13.5,0.5 + parent: 1 + - uid: 635 + components: + - type: Transform + pos: -12.5,0.5 + parent: 1 + - uid: 636 + components: + - type: Transform + pos: -11.5,0.5 + parent: 1 + - uid: 637 + components: + - type: Transform + pos: -10.5,0.5 + parent: 1 + - uid: 638 + components: + - type: Transform + pos: -9.5,0.5 + parent: 1 + - uid: 639 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 640 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 641 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 642 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 643 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 644 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 645 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 646 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 647 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 648 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 649 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 650 + components: + - type: Transform + pos: 3.5,7.5 + parent: 1 + - uid: 651 + components: + - type: Transform + pos: 3.5,8.5 + parent: 1 + - uid: 652 + components: + - type: Transform + pos: 3.5,9.5 + parent: 1 + - uid: 653 + components: + - type: Transform + pos: 2.5,9.5 + parent: 1 + - uid: 654 + components: + - type: Transform + pos: 1.5,9.5 + parent: 1 + - uid: 655 + components: + - type: Transform + pos: 4.5,0.5 + parent: 1 + - uid: 656 + components: + - type: Transform + pos: 5.5,0.5 + parent: 1 + - uid: 657 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 658 + components: + - type: Transform + pos: 8.5,0.5 + parent: 1 + - uid: 659 + components: + - type: Transform + pos: 9.5,0.5 + parent: 1 + - uid: 660 + components: + - type: Transform + pos: 10.5,0.5 + parent: 1 + - uid: 661 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - uid: 662 + components: + - type: Transform + pos: 10.5,1.5 + parent: 1 + - uid: 663 + components: + - type: Transform + pos: 10.5,2.5 + parent: 1 + - uid: 664 + components: + - type: Transform + pos: 10.5,3.5 + parent: 1 + - uid: 665 + components: + - type: Transform + pos: 10.5,4.5 + parent: 1 + - uid: 666 + components: + - type: Transform + pos: 9.5,4.5 + parent: 1 + - uid: 667 + components: + - type: Transform + pos: 3.5,10.5 + parent: 1 + - uid: 668 + components: + - type: Transform + pos: 4.5,10.5 + parent: 1 + - uid: 669 + components: + - type: Transform + pos: 5.5,10.5 + parent: 1 + - uid: 670 + components: + - type: Transform + pos: 6.5,10.5 + parent: 1 + - uid: 671 + components: + - type: Transform + pos: 7.5,10.5 + parent: 1 + - uid: 672 + components: + - type: Transform + pos: 8.5,10.5 + parent: 1 + - uid: 673 + components: + - type: Transform + pos: 9.5,10.5 + parent: 1 + - uid: 674 + components: + - type: Transform + pos: 10.5,10.5 + parent: 1 + - uid: 675 + components: + - type: Transform + pos: 11.5,10.5 + parent: 1 + - uid: 676 + components: + - type: Transform + pos: 12.5,10.5 + parent: 1 + - uid: 677 + components: + - type: Transform + pos: -14.5,1.5 + parent: 1 + - uid: 678 + components: + - type: Transform + pos: -14.5,2.5 + parent: 1 + - uid: 679 + components: + - type: Transform + pos: -14.5,3.5 + parent: 1 + - uid: 680 + components: + - type: Transform + pos: -14.5,4.5 + parent: 1 + - uid: 681 + components: + - type: Transform + pos: -13.5,-0.5 + parent: 1 + - uid: 682 + components: + - type: Transform + pos: -13.5,-1.5 + parent: 1 + - uid: 683 + components: + - type: Transform + pos: -13.5,-2.5 + parent: 1 + - uid: 684 + components: + - type: Transform + pos: -13.5,-3.5 + parent: 1 + - uid: 685 + components: + - type: Transform + pos: -14.5,-3.5 + parent: 1 + - uid: 686 + components: + - type: Transform + pos: -12.5,-3.5 + parent: 1 + - uid: 687 + components: + - type: Transform + pos: -11.5,-3.5 + parent: 1 + - uid: 688 + components: + - type: Transform + pos: -17.5,-0.5 + parent: 1 + - uid: 689 + components: + - type: Transform + pos: -17.5,-1.5 + parent: 1 + - uid: 690 + components: + - type: Transform + pos: -17.5,-2.5 + parent: 1 + - uid: 691 + components: + - type: Transform + pos: -17.5,-3.5 + parent: 1 + - uid: 692 + components: + - type: Transform + pos: -17.5,-4.5 + parent: 1 + - uid: 693 + components: + - type: Transform + pos: -17.5,-5.5 + parent: 1 + - uid: 694 + components: + - type: Transform + pos: -17.5,-6.5 + parent: 1 + - uid: 695 + components: + - type: Transform + pos: -17.5,-7.5 + parent: 1 + - uid: 696 + components: + - type: Transform + pos: -17.5,-8.5 + parent: 1 + - uid: 697 + components: + - type: Transform + pos: -16.5,-8.5 + parent: 1 + - uid: 698 + components: + - type: Transform + pos: -15.5,-8.5 + parent: 1 + - uid: 699 + components: + - type: Transform + pos: -14.5,-8.5 + parent: 1 + - uid: 700 + components: + - type: Transform + pos: -13.5,-8.5 + parent: 1 + - uid: 701 + components: + - type: Transform + pos: -12.5,-8.5 + parent: 1 + - uid: 702 + components: + - type: Transform + pos: -11.5,-8.5 + parent: 1 + - uid: 703 + components: + - type: Transform + pos: -18.5,-8.5 + parent: 1 + - uid: 704 + components: + - type: Transform + pos: -19.5,-8.5 + parent: 1 + - uid: 705 + components: + - type: Transform + pos: -20.5,-8.5 + parent: 1 + - uid: 706 + components: + - type: Transform + pos: -20.5,-5.5 + parent: 1 + - uid: 707 + components: + - type: Transform + pos: -19.5,-5.5 + parent: 1 + - uid: 708 + components: + - type: Transform + pos: -18.5,-5.5 + parent: 1 + - uid: 709 + components: + - type: Transform + pos: -20.5,-2.5 + parent: 1 + - uid: 710 + components: + - type: Transform + pos: -19.5,-2.5 + parent: 1 + - uid: 711 + components: + - type: Transform + pos: -18.5,-2.5 + parent: 1 +- proto: CableHV + entities: + - uid: 239 + components: + - type: Transform + pos: -15.5,3.5 + parent: 1 + - uid: 240 + components: + - type: Transform + pos: -16.5,3.5 + parent: 1 + - uid: 241 + components: + - type: Transform + pos: -16.5,4.5 + parent: 1 + - uid: 242 + components: + - type: Transform + pos: -16.5,5.5 + parent: 1 +- proto: CableMV + entities: + - uid: 544 + components: + - type: Transform + pos: -16.5,5.5 + parent: 1 + - uid: 545 + components: + - type: Transform + pos: -15.5,5.5 + parent: 1 + - uid: 546 + components: + - type: Transform + pos: -14.5,5.5 + parent: 1 + - uid: 547 + components: + - type: Transform + pos: -14.5,4.5 + parent: 1 + - uid: 548 + components: + - type: Transform + pos: -14.5,3.5 + parent: 1 + - uid: 549 + components: + - type: Transform + pos: -14.5,2.5 + parent: 1 + - uid: 550 + components: + - type: Transform + pos: -14.5,1.5 + parent: 1 + - uid: 551 + components: + - type: Transform + pos: -14.5,0.5 + parent: 1 + - uid: 552 + components: + - type: Transform + pos: -13.5,0.5 + parent: 1 + - uid: 553 + components: + - type: Transform + pos: -12.5,0.5 + parent: 1 + - uid: 554 + components: + - type: Transform + pos: -11.5,0.5 + parent: 1 + - uid: 555 + components: + - type: Transform + pos: -10.5,0.5 + parent: 1 + - uid: 556 + components: + - type: Transform + pos: -9.5,0.5 + parent: 1 + - uid: 557 + components: + - type: Transform + pos: -8.5,0.5 + parent: 1 + - uid: 558 + components: + - type: Transform + pos: -7.5,0.5 + parent: 1 + - uid: 559 + components: + - type: Transform + pos: -6.5,0.5 + parent: 1 + - uid: 560 + components: + - type: Transform + pos: -5.5,0.5 + parent: 1 + - uid: 561 + components: + - type: Transform + pos: -4.5,0.5 + parent: 1 + - uid: 562 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 + - uid: 563 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 564 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 + - uid: 565 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 566 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 567 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 568 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 569 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 570 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 571 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 572 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 573 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 574 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 575 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 576 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 577 + components: + - type: Transform + pos: -15.5,0.5 + parent: 1 + - uid: 578 + components: + - type: Transform + pos: -16.5,0.5 + parent: 1 + - uid: 579 + components: + - type: Transform + pos: -17.5,0.5 + parent: 1 + - uid: 580 + components: + - type: Transform + pos: -18.5,0.5 + parent: 1 + - uid: 581 + components: + - type: Transform + pos: -19.5,0.5 + parent: 1 + - uid: 582 + components: + - type: Transform + pos: -20.5,0.5 + parent: 1 + - uid: 583 + components: + - type: Transform + pos: -21.5,0.5 + parent: 1 + - uid: 584 + components: + - type: Transform + pos: -22.5,0.5 + parent: 1 + - uid: 585 + components: + - type: Transform + pos: -23.5,0.5 + parent: 1 + - uid: 586 + components: + - type: Transform + pos: -24.5,0.5 + parent: 1 + - uid: 587 + components: + - type: Transform + pos: -25.5,0.5 + parent: 1 + - uid: 600 + components: + - type: Transform + pos: -25.5,1.5 + parent: 1 + - uid: 601 + components: + - type: Transform + pos: -25.5,2.5 + parent: 1 + - uid: 602 + components: + - type: Transform + pos: -25.5,3.5 + parent: 1 + - uid: 603 + components: + - type: Transform + pos: -25.5,4.5 + parent: 1 + - uid: 604 + components: + - type: Transform + pos: -26.5,4.5 + parent: 1 + - uid: 605 + components: + - type: Transform + pos: -26.5,5.5 + parent: 1 +- proto: Carpet + entities: + - uid: 747 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-9.5 + parent: 1 + - uid: 748 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-8.5 + parent: 1 + - uid: 749 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-9.5 + parent: 1 + - uid: 750 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-8.5 + parent: 1 + - uid: 751 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-6.5 + parent: 1 + - uid: 752 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-5.5 + parent: 1 + - uid: 753 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-6.5 + parent: 1 + - uid: 754 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-5.5 + parent: 1 + - uid: 755 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-3.5 + parent: 1 + - uid: 756 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-2.5 + parent: 1 + - uid: 757 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-3.5 + parent: 1 + - uid: 758 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-2.5 + parent: 1 +- proto: Catwalk + entities: + - uid: 330 + components: + - type: Transform + pos: -29.5,-0.5 + parent: 1 + - uid: 331 + components: + - type: Transform + pos: -29.5,0.5 + parent: 1 + - uid: 332 + components: + - type: Transform + pos: -29.5,1.5 + parent: 1 + - uid: 333 + components: + - type: Transform + pos: -30.5,0.5 + parent: 1 +- proto: Chair + entities: + - uid: 735 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,-4.5 + parent: 1 + - uid: 736 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -14.5,-4.5 + parent: 1 + - uid: 737 + components: + - type: Transform + pos: -13.5,-3.5 + parent: 1 + - uid: 875 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-1.5 + parent: 1 +- proto: ClosetEmergencyFilledRandom + entities: + - uid: 891 + components: + - type: Transform + pos: 11.5,9.5 + parent: 1 +- proto: ClothingBeltSalvageWebbing + entities: + - uid: 902 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 +- proto: ComputerCargoBounty + entities: + - uid: 872 + components: + - type: Transform + pos: 2.5,11.5 + parent: 1 +- proto: ConveyorBelt + entities: + - uid: 345 + components: + - type: Transform + pos: 12.5,2.5 + parent: 1 + - uid: 346 + components: + - type: Transform + pos: 12.5,1.5 + parent: 1 + - uid: 347 + components: + - type: Transform + pos: 12.5,0.5 + parent: 1 + - uid: 348 + components: + - type: Transform + pos: 12.5,-0.5 + parent: 1 + - uid: 349 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,-1.5 + parent: 1 + - uid: 350 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,-1.5 + parent: 1 + - uid: 351 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,-1.5 + parent: 1 + - uid: 352 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,-1.5 + parent: 1 +- proto: CrateFreezer + entities: + - uid: 731 + components: + - type: Transform + pos: -21.5,3.5 + parent: 1 +- proto: CrateGenericSteel + entities: + - uid: 808 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 + - uid: 809 + components: + - type: Transform + pos: 9.5,5.5 + parent: 1 + - uid: 873 + components: + - type: Transform + pos: 3.5,11.5 + parent: 1 +- proto: CrateSecure + entities: + - uid: 729 + components: + - type: Transform + pos: -15.5,5.5 + parent: 1 +- proto: DefaultStationBeaconSalvage + entities: + - uid: 900 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 +- proto: DrinkBeerBottleFull + entities: + - uid: 862 + components: + - type: Transform + pos: -13.609713,-4.316278 + parent: 1 + - uid: 863 + components: + - type: Transform + pos: -13.484713,-4.066278 + parent: 1 + - uid: 864 + components: + - type: Transform + pos: -13.328463,-4.326695 + parent: 1 +- proto: ExtinguisherCabinetFilled + entities: + - uid: 372 + components: + - type: Transform + pos: 12.5,12.5 + parent: 1 + - uid: 810 + components: + - type: Transform + pos: -26.5,-1.5 + parent: 1 + - uid: 811 + components: + - type: Transform + pos: -16.5,2.5 + parent: 1 + - uid: 812 + components: + - type: Transform + pos: 5.5,6.5 + parent: 1 + - uid: 813 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 +- proto: FireAlarm + entities: + - uid: 790 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -23.5,-1.5 + parent: 1 + - type: DeviceList + devices: + - 375 + - 376 + - 377 + - 378 + - 373 + - 310 + - 374 + - 381 + - 380 + - 379 + - uid: 793 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,3.5 + parent: 1 + - type: DeviceList + devices: + - 369 + - 799 + - 371 + - 370 + - uid: 880 + components: + - type: Transform + pos: 8.5,6.5 + parent: 1 + - type: DeviceList + devices: + - 371 + - 370 + - uid: 881 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 8.5,8.5 + parent: 1 + - type: DeviceList + devices: + - 799 +- proto: FirelockGlass + entities: + - uid: 310 + components: + - type: Transform + pos: -8.5,0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 790 + - 336 + - uid: 369 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 801 + - 793 + - uid: 370 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 802 + - 801 + - 793 + - 880 + - uid: 371 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 802 + - 801 + - 793 + - 880 + - uid: 373 + components: + - type: Transform + pos: -13.5,-1.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 788 + - 790 + - 336 + - uid: 374 + components: + - type: Transform + pos: -14.5,2.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 790 + - 336 + - uid: 375 + components: + - type: Transform + pos: -16.5,-8.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 790 + - 336 + - uid: 376 + components: + - type: Transform + pos: -19.5,-8.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 790 + - 336 + - 785 + - uid: 377 + components: + - type: Transform + pos: -19.5,-5.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 790 + - 336 + - 786 + - uid: 378 + components: + - type: Transform + pos: -19.5,-2.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 790 + - 336 + - 787 + - uid: 379 + components: + - type: Transform + pos: -25.5,-1.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 784 + - 790 + - 336 + - uid: 380 + components: + - type: Transform + pos: -25.5,2.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 782 + - 790 + - 336 + - uid: 381 + components: + - type: Transform + pos: -19.5,2.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 783 + - 790 + - 336 + - uid: 799 + components: + - type: Transform + pos: 5.5,10.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 793 + - 804 + - 803 + - 881 +- proto: FoodBoxDonkpocket + entities: + - uid: 779 + components: + - type: Transform + pos: -10.5,-4.5 + parent: 1 +- proto: GasOutletInjector + entities: + - uid: 334 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -30.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' +- proto: GasPipeBend + entities: + - uid: 398 + components: + - type: Transform + pos: -11.5,-5.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 399 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,-5.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 420 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 421 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,10.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 422 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 427 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 428 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 434 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 449 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -24.5,-3.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 460 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -26.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 512 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,10.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 523 + components: + - type: Transform + pos: 4.5,7.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 524 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -25.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 528 + components: + - type: Transform + pos: -10.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 529 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -10.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 532 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -13.5,-4.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 533 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,-9.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 590 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -24.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 720 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -14.5,4.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 721 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' +- proto: GasPipeFourway + entities: + - uid: 391 + components: + - type: Transform + pos: -12.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 400 + components: + - type: Transform + pos: -18.5,-8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' +- proto: GasPipeStraight + entities: + - uid: 335 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -29.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 365 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,9.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 385 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,-7.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 386 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,-6.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 388 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,-3.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 389 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,-2.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 390 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,-1.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 392 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-3.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 393 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-2.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 394 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 395 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 396 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 405 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -11.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 406 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -10.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 407 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 408 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 409 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -7.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 410 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 411 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 412 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -4.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 413 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 414 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 415 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -1.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 416 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 417 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 418 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 419 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 423 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 424 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 425 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 426 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 429 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 9.5,2.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 430 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 8.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 431 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 432 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 433 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 436 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 437 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 438 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 439 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 440 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 441 + components: + - type: Transform + pos: 2.5,7.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 450 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -25.5,-2.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 451 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -25.5,-1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 452 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -25.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 453 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -25.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 454 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -24.5,-2.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 455 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -24.5,-1.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 456 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -25.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 457 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -27.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 458 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -28.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 463 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -24.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 464 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -23.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 465 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -22.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 466 + components: + - type: Transform + pos: -21.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 467 + components: + - type: Transform + pos: -16.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 468 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -17.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 469 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 470 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 471 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,-1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 472 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,-3.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 473 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,-4.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 474 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-5.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 475 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-4.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 476 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-3.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 477 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-2.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 478 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-1.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 479 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -16.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 480 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 481 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -14.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 482 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 483 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -18.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 484 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 486 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -21.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 487 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -22.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 488 + components: + - type: Transform + pos: -23.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 489 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 491 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -15.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 493 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 494 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -11.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 495 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -9.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 496 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -8.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 497 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -7.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 498 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 499 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -5.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 500 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 501 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 502 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 503 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 504 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 505 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 506 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 509 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 510 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 511 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 513 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 515 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 516 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,2.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 517 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,4.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 518 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,5.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 519 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,6.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 520 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,7.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 521 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 530 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 531 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -14.5,-4.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 534 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 535 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-5.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 536 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-2.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 537 + components: + - type: Transform + pos: -18.5,-6.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 538 + components: + - type: Transform + pos: -18.5,-7.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 539 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -17.5,-8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 540 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -16.5,-8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 541 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -15.5,-8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 542 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -14.5,-8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 543 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -13.5,-8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 592 + components: + - type: Transform + pos: -25.5,2.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 593 + components: + - type: Transform + pos: -26.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 594 + components: + - type: Transform + pos: -26.5,2.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 595 + components: + - type: Transform + pos: -26.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 596 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,10.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 597 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,10.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 598 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,10.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 599 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,10.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 714 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 715 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 716 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,2.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 717 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 718 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -19.5,2.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 719 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,2.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' +- proto: GasPipeTJunction + entities: + - uid: 397 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -12.5,-4.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 401 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -18.5,-5.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 402 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -18.5,-2.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 403 + components: + - type: Transform + pos: -21.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 404 + components: + - type: Transform + pos: -16.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 435 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 442 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 459 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -26.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 461 + components: + - type: Transform + pos: -24.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 462 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -23.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 485 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -19.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 490 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -20.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 492 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 507 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 514 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 522 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 525 + components: + - type: Transform + pos: -18.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 526 + components: + - type: Transform + pos: -17.5,-0.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 527 + components: + - type: Transform + pos: -13.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 591 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -25.5,1.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 722 + components: + - type: Transform + pos: -13.5,4.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' +- proto: GasPort + entities: + - uid: 726 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 727 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,4.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' +- proto: GasPressurePump + entities: + - uid: 723 + components: + - type: Transform + pos: -14.5,3.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' +- proto: GasVentPump + entities: + - uid: 357 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -21.5,-0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 336 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 358 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,-0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 336 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 359 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -17.5,-9.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 336 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 360 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -20.5,-8.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 785 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 361 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -20.5,-5.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 786 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 362 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -20.5,-2.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 787 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 363 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,-8.5 + parent: 1 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 364 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-4.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 788 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 366 + components: + - type: Transform + pos: 2.5,9.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 804 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 367 + components: + - type: Transform + pos: 8.5,11.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 803 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 368 + components: + - type: Transform + pos: 9.5,3.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 802 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 383 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -25.5,-3.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 784 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 508 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-0.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 801 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 589 + components: + - type: Transform + pos: -24.5,4.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 782 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 712 + components: + - type: Transform + pos: -19.5,3.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 783 + - type: AtmosPipeColor + color: '#0055CCFF' +- proto: GasVentScrubber + entities: + - uid: 382 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -23.5,-3.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 784 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 384 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.5,-8.5 + parent: 1 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 387 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -11.5,-4.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 788 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 443 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,7.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 804 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 444 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,3.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 801 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 445 + components: + - type: Transform + pos: 10.5,1.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 802 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 446 + components: + - type: Transform + pos: -12.5,1.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 336 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 447 + components: + - type: Transform + pos: -23.5,1.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 336 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 448 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -17.5,-6.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 336 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 588 + components: + - type: Transform + pos: -26.5,4.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 782 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 713 + components: + - type: Transform + pos: -20.5,4.5 + parent: 1 + - type: DeviceNetwork + deviceLists: + - 783 + - type: AtmosPipeColor + color: '#990000FF' +- proto: GeneratorBasic15kW + entities: + - uid: 237 + components: + - type: Transform + pos: -16.5,3.5 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: -15.5,3.5 + parent: 1 +- proto: Grille + entities: + - uid: 3 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 1.5,-1.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: -10.5,2.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: -1.5,8.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: -0.5,8.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: -1.5,10.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: -0.5,10.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 0.5,10.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 0.5,11.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 1.5,11.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 4.5,12.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 4.5,-2.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: 5.5,9.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 5.5,11.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 10.5,9.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 10.5,11.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: 7.5,14.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 8.5,14.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: 13.5,9.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: 13.5,11.5 + parent: 1 + - uid: 114 + components: + - type: Transform + pos: 10.5,-0.5 + parent: 1 + - uid: 117 + components: + - type: Transform + pos: 11.5,-0.5 + parent: 1 + - uid: 118 + components: + - type: Transform + pos: 11.5,0.5 + parent: 1 + - uid: 124 + components: + - type: Transform + pos: 11.5,2.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 + - uid: 126 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: 7.5,-2.5 + parent: 1 + - uid: 128 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 155 + components: + - type: Transform + pos: -9.5,2.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: -8.5,2.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: -8.5,1.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: -7.5,1.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: -6.5,1.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: -5.5,1.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: -4.5,1.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: -3.5,1.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: -1.5,1.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: -4.5,-0.5 + parent: 1 + - uid: 169 + components: + - type: Transform + pos: -5.5,-0.5 + parent: 1 + - uid: 170 + components: + - type: Transform + pos: -7.5,-0.5 + parent: 1 + - uid: 171 + components: + - type: Transform + pos: -8.5,-0.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: -6.5,-0.5 + parent: 1 + - uid: 173 + components: + - type: Transform + pos: -8.5,-1.5 + parent: 1 + - uid: 210 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 1 + - uid: 211 + components: + - type: Transform + pos: -9.5,-4.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: -9.5,-3.5 + parent: 1 + - uid: 213 + components: + - type: Transform + pos: -9.5,-2.5 + parent: 1 + - uid: 214 + components: + - type: Transform + pos: -16.5,-4.5 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: -16.5,-3.5 + parent: 1 + - uid: 216 + components: + - type: Transform + pos: -14.5,-1.5 + parent: 1 + - uid: 217 + components: + - type: Transform + pos: -12.5,-1.5 + parent: 1 + - uid: 229 + components: + - type: Transform + pos: -20.5,5.5 + parent: 1 + - uid: 230 + components: + - type: Transform + pos: -19.5,5.5 + parent: 1 + - uid: 233 + components: + - type: Transform + pos: -20.5,2.5 + parent: 1 + - uid: 234 + components: + - type: Transform + pos: -18.5,2.5 + parent: 1 + - uid: 292 + components: + - type: Transform + pos: -28.5,-4.5 + parent: 1 + - uid: 293 + components: + - type: Transform + pos: -28.5,-3.5 + parent: 1 + - uid: 294 + components: + - type: Transform + pos: -28.5,-2.5 + parent: 1 + - uid: 295 + components: + - type: Transform + pos: -26.5,-5.5 + parent: 1 + - uid: 296 + components: + - type: Transform + pos: -25.5,-5.5 + parent: 1 + - uid: 297 + components: + - type: Transform + pos: -24.5,-5.5 + parent: 1 + - uid: 306 + components: + - type: Transform + pos: -17.5,-10.5 + parent: 1 + - uid: 307 + components: + - type: Transform + pos: -18.5,-10.5 + parent: 1 + - uid: 324 + components: + - type: Transform + pos: -28.5,-0.5 + parent: 1 + - uid: 325 + components: + - type: Transform + pos: -28.5,0.5 + parent: 1 + - uid: 326 + components: + - type: Transform + pos: -28.5,1.5 + parent: 1 +- proto: HospitalCurtainsOpen + entities: + - uid: 840 + components: + - type: Transform + pos: -15.5,-7.5 + parent: 1 + - uid: 871 + components: + - type: Transform + pos: -14.5,-7.5 + parent: 1 +- proto: IntercomCommon + entities: + - uid: 854 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -16.5,-5.5 + parent: 1 + - uid: 879 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,3.5 + parent: 1 + - uid: 898 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 1.5,6.5 + parent: 1 +- proto: KitchenMicrowave + entities: + - uid: 777 + components: + - type: Transform + pos: -10.5,-2.5 + parent: 1 +- proto: KitchenReagentGrinder + entities: + - uid: 778 + components: + - type: Transform + pos: -10.5,-3.5 + parent: 1 +- proto: LockerSalvageSpecialistFilled + entities: + - uid: 766 + components: + - type: Transform + pos: -23.5,-4.5 + parent: 1 + - uid: 767 + components: + - type: Transform + pos: -24.5,-4.5 + parent: 1 + - uid: 768 + components: + - type: Transform + pos: -25.5,-4.5 + parent: 1 + - uid: 769 + components: + - type: Transform + pos: -26.5,-4.5 + parent: 1 + - uid: 770 + components: + - type: Transform + pos: -27.5,-4.5 + parent: 1 +- proto: MedicalBed + entities: + - uid: 774 + components: + - type: Transform + pos: -21.5,4.5 + parent: 1 +- proto: MedkitFilled + entities: + - uid: 772 + components: + - type: Transform + pos: -18.5,3.5 + parent: 1 +- proto: MedkitToxinFilled + entities: + - uid: 773 + components: + - type: Transform + pos: -18.5,4.5 + parent: 1 +- proto: Mirror + entities: + - uid: 899 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -13.5,-7.5 + parent: 1 +- proto: OreBox + entities: + - uid: 354 + components: + - type: Transform + pos: 7.5,-1.5 + parent: 1 + - uid: 355 + components: + - type: Transform + pos: 9.5,0.5 + parent: 1 + - uid: 356 + components: + - type: Transform + pos: 11.5,5.5 + parent: 1 + - uid: 815 + components: + - type: Transform + pos: 12.5,9.5 + parent: 1 +- proto: OreProcessor + entities: + - uid: 343 + components: + - type: Transform + pos: 12.5,3.5 + parent: 1 +- proto: OxygenCanister + entities: + - uid: 728 + components: + - type: Transform + pos: -14.5,5.5 + parent: 1 +- proto: PlasticFlapsClear + entities: + - uid: 867 + components: + - type: Transform + pos: 9.5,-1.5 + parent: 1 +- proto: Poweredlight + entities: + - uid: 817 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -17.5,-6.5 + parent: 1 + - uid: 818 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -15.5,-0.5 + parent: 1 + - uid: 819 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -23.5,-0.5 + parent: 1 + - uid: 831 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-5.5 + parent: 1 + - uid: 832 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,-1.5 + parent: 1 + - uid: 833 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,5.5 + parent: 1 + - uid: 834 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,12.5 + parent: 1 + - uid: 835 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,3.5 + parent: 1 + - uid: 836 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,1.5 + parent: 1 +- proto: PoweredSmallLight + entities: + - uid: 814 + components: + - type: Transform + pos: 11.5,11.5 + parent: 1 + - uid: 820 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -9.5,-0.5 + parent: 1 + - uid: 821 + components: + - type: Transform + pos: -15.5,5.5 + parent: 1 + - uid: 822 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -21.5,4.5 + parent: 1 + - uid: 823 + components: + - type: Transform + pos: -25.5,4.5 + parent: 1 + - uid: 824 + components: + - type: Transform + pos: -26.5,-2.5 + parent: 1 + - uid: 825 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-9.5 + parent: 1 + - uid: 826 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-6.5 + parent: 1 + - uid: 827 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-3.5 + parent: 1 + - uid: 828 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -14.5,-8.5 + parent: 1 + - uid: 829 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -11.5,-8.5 + parent: 1 + - uid: 837 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,-1.5 + parent: 1 + - uid: 838 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,4.5 + parent: 1 + - uid: 839 + components: + - type: Transform + pos: 8.5,5.5 + parent: 1 + - uid: 868 + components: + - type: Transform + pos: 6.5,7.5 + parent: 1 + - uid: 892 + components: + - type: Transform + pos: 2.5,11.5 + parent: 1 +- proto: Rack + entities: + - uid: 876 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,-1.5 + parent: 1 +- proto: ReinforcedWindow + entities: + - uid: 11 + components: + - type: Transform + pos: 1.5,-1.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: -0.5,8.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: -1.5,8.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: -1.5,10.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -0.5,10.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: 0.5,10.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 0.5,11.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 1.5,11.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 4.5,12.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 3.5,12.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 4.5,-2.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 10.5,9.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 10.5,11.5 + parent: 1 + - uid: 85 + components: + - type: Transform + pos: 8.5,14.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 7.5,14.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: 13.5,11.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: 13.5,9.5 + parent: 1 + - uid: 129 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: -10.5,2.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: -9.5,2.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: -8.5,2.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: -8.5,1.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: -7.5,1.5 + parent: 1 + - uid: 179 + components: + - type: Transform + pos: -6.5,1.5 + parent: 1 + - uid: 180 + components: + - type: Transform + pos: -5.5,1.5 + parent: 1 + - uid: 181 + components: + - type: Transform + pos: -4.5,1.5 + parent: 1 + - uid: 182 + components: + - type: Transform + pos: -3.5,1.5 + parent: 1 + - uid: 183 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: -1.5,1.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 1 + - uid: 186 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 187 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: -4.5,-0.5 + parent: 1 + - uid: 189 + components: + - type: Transform + pos: -5.5,-0.5 + parent: 1 + - uid: 190 + components: + - type: Transform + pos: -6.5,-0.5 + parent: 1 + - uid: 191 + components: + - type: Transform + pos: -7.5,-0.5 + parent: 1 + - uid: 192 + components: + - type: Transform + pos: -8.5,-0.5 + parent: 1 + - uid: 193 + components: + - type: Transform + pos: -8.5,-1.5 + parent: 1 + - uid: 222 + components: + - type: Transform + pos: -9.5,-5.5 + parent: 1 + - uid: 223 + components: + - type: Transform + pos: -9.5,-4.5 + parent: 1 + - uid: 224 + components: + - type: Transform + pos: -9.5,-3.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: -9.5,-2.5 + parent: 1 + - uid: 245 + components: + - type: Transform + pos: 7.5,-2.5 + parent: 1 + - uid: 298 + components: + - type: Transform + pos: -24.5,-5.5 + parent: 1 + - uid: 299 + components: + - type: Transform + pos: -25.5,-5.5 + parent: 1 + - uid: 300 + components: + - type: Transform + pos: -26.5,-5.5 + parent: 1 + - uid: 301 + components: + - type: Transform + pos: -28.5,-4.5 + parent: 1 + - uid: 302 + components: + - type: Transform + pos: -28.5,-3.5 + parent: 1 + - uid: 303 + components: + - type: Transform + pos: -28.5,-2.5 + parent: 1 + - uid: 304 + components: + - type: Transform + pos: -18.5,-10.5 + parent: 1 + - uid: 305 + components: + - type: Transform + pos: -17.5,-10.5 + parent: 1 + - uid: 327 + components: + - type: Transform + pos: -28.5,-0.5 + parent: 1 + - uid: 328 + components: + - type: Transform + pos: -28.5,0.5 + parent: 1 + - uid: 329 + components: + - type: Transform + pos: -28.5,1.5 + parent: 1 +- proto: SignalButtonDirectional + entities: + - uid: 842 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -19.5,-9.5 + parent: 1 + - type: DeviceLinkSource + linkedPorts: + 848: + - - Pressed + - DoorBolt + - uid: 843 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -19.5,-6.5 + parent: 1 + - type: DeviceLinkSource + linkedPorts: + 849: + - - Pressed + - DoorBolt + - uid: 844 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -19.5,-3.5 + parent: 1 + - type: DeviceLinkSource + linkedPorts: + 850: + - - Pressed + - DoorBolt +- proto: SignSecurearea + entities: + - uid: 869 + components: + - type: Transform + pos: -1.5,10.5 + parent: 1 +- proto: SignShock + entities: + - uid: 870 + components: + - type: Transform + pos: -15.5,6.5 + parent: 1 +- proto: SignSomethingOld + entities: + - uid: 865 + components: + - type: Transform + pos: -11.5,-1.5 + parent: 1 +- proto: SignSomethingOld2 + entities: + - uid: 866 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 +- proto: Sink + entities: + - uid: 780 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -10.5,-5.5 + parent: 1 + - uid: 781 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -12.5,-7.5 + parent: 1 +- proto: SpaceHeater + entities: + - uid: 244 + components: + - type: Transform + pos: 7.5,7.5 + parent: 1 +- proto: SubstationBasic + entities: + - uid: 243 + components: + - type: Transform + pos: -16.5,5.5 + parent: 1 +- proto: SuitStorageSalv + entities: + - uid: 882 + components: + - type: Transform + pos: 9.5,9.5 + parent: 1 + - uid: 883 + components: + - type: Transform + pos: 8.5,9.5 + parent: 1 + - uid: 884 + components: + - type: Transform + pos: 7.5,9.5 + parent: 1 + - uid: 885 + components: + - type: Transform + pos: 6.5,9.5 + parent: 1 + - uid: 886 + components: + - type: Transform + pos: 6.5,13.5 + parent: 1 + - uid: 887 + components: + - type: Transform + pos: 7.5,13.5 + parent: 1 + - uid: 888 + components: + - type: Transform + pos: 8.5,13.5 + parent: 1 + - uid: 889 + components: + - type: Transform + pos: 9.5,13.5 + parent: 1 +- proto: SurveillanceCameraRouterGeneral + entities: + - uid: 771 + components: + - type: Transform + pos: -25.5,4.5 + parent: 1 +- proto: Table + entities: + - uid: 86 + components: + - type: Transform + pos: 6.5,11.5 + parent: 1 + - uid: 732 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -18.5,3.5 + parent: 1 + - uid: 733 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -18.5,4.5 + parent: 1 + - uid: 734 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -13.5,-4.5 + parent: 1 + - uid: 738 + components: + - type: Transform + pos: -10.5,-4.5 + parent: 1 + - uid: 739 + components: + - type: Transform + pos: -10.5,-3.5 + parent: 1 + - uid: 740 + components: + - type: Transform + pos: -10.5,-2.5 + parent: 1 + - uid: 744 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-9.5 + parent: 1 + - uid: 745 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-6.5 + parent: 1 + - uid: 746 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,-3.5 + parent: 1 + - uid: 807 + components: + - type: Transform + pos: 10.5,5.5 + parent: 1 +- proto: ToiletDirtyWater + entities: + - uid: 830 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -11.5,-7.5 + parent: 1 +- proto: ToolboxMechanicalFilledAllTools + entities: + - uid: 901 + components: + - type: Transform + pos: 6.5,11.5 + parent: 1 +- proto: TwoWayLever + entities: + - uid: 353 + components: + - type: Transform + pos: 10.5,2.5 + parent: 1 + - type: DeviceLinkSource + linkedPorts: + 345: + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off + 346: + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off + 347: + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off + 348: + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off + 349: + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off + 350: + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off + 351: + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off + 352: + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off +- proto: UnfinishedMachineFrame + entities: + - uid: 878 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,5.5 + parent: 1 +- proto: VendingMachineCigs + entities: + - uid: 776 + components: + - type: Transform + pos: -11.5,-2.5 + parent: 1 +- proto: VendingMachineSalvage + entities: + - uid: 765 + components: + - type: Transform + pos: -27.5,-2.5 + parent: 1 + - uid: 805 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 806 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 +- proto: VendingMachineSnack + entities: + - uid: 775 + components: + - type: Transform + pos: -15.5,-2.5 + parent: 1 +- proto: VendingMachineTankDispenserEVA + entities: + - uid: 890 + components: + - type: Transform + pos: 9.5,11.5 + parent: 1 +- proto: WallmountTelevision + entities: + - uid: 861 + components: + - type: Transform + pos: -14.5,-6.5 + parent: 1 +- proto: WallReinforced + entities: + - uid: 246 + components: + - type: Transform + pos: -22.5,2.5 + parent: 1 + - uid: 247 + components: + - type: Transform + pos: -22.5,3.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: -22.5,4.5 + parent: 1 + - uid: 249 + components: + - type: Transform + pos: -22.5,5.5 + parent: 1 + - uid: 311 + components: + - type: Transform + pos: -23.5,5.5 + parent: 1 + - uid: 312 + components: + - type: Transform + pos: -24.5,5.5 + parent: 1 + - uid: 313 + components: + - type: Transform + pos: -25.5,5.5 + parent: 1 + - uid: 314 + components: + - type: Transform + pos: -26.5,5.5 + parent: 1 + - uid: 315 + components: + - type: Transform + pos: -27.5,5.5 + parent: 1 + - uid: 316 + components: + - type: Transform + pos: -28.5,5.5 + parent: 1 + - uid: 317 + components: + - type: Transform + pos: -28.5,4.5 + parent: 1 + - uid: 318 + components: + - type: Transform + pos: -28.5,3.5 + parent: 1 + - uid: 319 + components: + - type: Transform + pos: -28.5,2.5 + parent: 1 + - uid: 320 + components: + - type: Transform + pos: -27.5,2.5 + parent: 1 + - uid: 321 + components: + - type: Transform + pos: -26.5,2.5 + parent: 1 + - uid: 322 + components: + - type: Transform + pos: -24.5,2.5 + parent: 1 + - uid: 323 + components: + - type: Transform + pos: -23.5,2.5 + parent: 1 +- proto: WallSolid + entities: + - uid: 2 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 1.5,6.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 1.5,12.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 2.5,12.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 5.5,12.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 5.5,8.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 5.5,6.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 1.5,-2.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 6.5,6.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 8.5,6.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 7.5,6.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: 6.5,8.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: 7.5,8.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 8.5,8.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 8.5,7.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 9.5,8.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 10.5,8.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 10.5,12.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 10.5,13.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 10.5,14.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 9.5,14.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 5.5,13.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 5.5,14.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 6.5,14.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: 11.5,8.5 + parent: 1 + - uid: 93 + components: + - type: Transform + pos: 12.5,8.5 + parent: 1 + - uid: 94 + components: + - type: Transform + pos: 13.5,8.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: 13.5,12.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: 12.5,12.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: 11.5,12.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: 6.5,-2.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: 6.5,-1.5 + parent: 1 + - uid: 100 + components: + - type: Transform + pos: 8.5,-2.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 9.5,-2.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 10.5,-2.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 11.5,-2.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 12.5,-2.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: 13.5,-2.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: 13.5,-1.5 + parent: 1 + - uid: 107 + components: + - type: Transform + pos: 13.5,-0.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: 13.5,0.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: 13.5,1.5 + parent: 1 + - uid: 110 + components: + - type: Transform + pos: 13.5,2.5 + parent: 1 + - uid: 111 + components: + - type: Transform + pos: 13.5,3.5 + parent: 1 + - uid: 112 + components: + - type: Transform + pos: 13.5,4.5 + parent: 1 + - uid: 113 + components: + - type: Transform + pos: 13.5,5.5 + parent: 1 + - uid: 115 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 + - uid: 116 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 119 + components: + - type: Transform + pos: 13.5,6.5 + parent: 1 + - uid: 120 + components: + - type: Transform + pos: 12.5,6.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: 11.5,6.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: -11.5,2.5 + parent: 1 + - uid: 137 + components: + - type: Transform + pos: -12.5,2.5 + parent: 1 + - uid: 138 + components: + - type: Transform + pos: -13.5,2.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: -15.5,2.5 + parent: 1 + - uid: 140 + components: + - type: Transform + pos: -16.5,2.5 + parent: 1 + - uid: 141 + components: + - type: Transform + pos: -17.5,2.5 + parent: 1 + - uid: 142 + components: + - type: Transform + pos: -11.5,3.5 + parent: 1 + - uid: 143 + components: + - type: Transform + pos: -11.5,4.5 + parent: 1 + - uid: 144 + components: + - type: Transform + pos: -11.5,5.5 + parent: 1 + - uid: 145 + components: + - type: Transform + pos: -11.5,6.5 + parent: 1 + - uid: 146 + components: + - type: Transform + pos: -12.5,6.5 + parent: 1 + - uid: 147 + components: + - type: Transform + pos: -13.5,6.5 + parent: 1 + - uid: 148 + components: + - type: Transform + pos: -14.5,6.5 + parent: 1 + - uid: 149 + components: + - type: Transform + pos: -15.5,6.5 + parent: 1 + - uid: 150 + components: + - type: Transform + pos: -16.5,6.5 + parent: 1 + - uid: 151 + components: + - type: Transform + pos: -17.5,6.5 + parent: 1 + - uid: 152 + components: + - type: Transform + pos: -17.5,5.5 + parent: 1 + - uid: 153 + components: + - type: Transform + pos: -17.5,4.5 + parent: 1 + - uid: 154 + components: + - type: Transform + pos: -17.5,3.5 + parent: 1 + - uid: 194 + components: + - type: Transform + pos: -26.5,-1.5 + parent: 1 + - uid: 195 + components: + - type: Transform + pos: -9.5,-1.5 + parent: 1 + - uid: 196 + components: + - type: Transform + pos: -10.5,-1.5 + parent: 1 + - uid: 197 + components: + - type: Transform + pos: -11.5,-1.5 + parent: 1 + - uid: 198 + components: + - type: Transform + pos: -15.5,-1.5 + parent: 1 + - uid: 199 + components: + - type: Transform + pos: -16.5,-1.5 + parent: 1 + - uid: 200 + components: + - type: Transform + pos: -9.5,-6.5 + parent: 1 + - uid: 201 + components: + - type: Transform + pos: -10.5,-6.5 + parent: 1 + - uid: 202 + components: + - type: Transform + pos: -11.5,-6.5 + parent: 1 + - uid: 203 + components: + - type: Transform + pos: -12.5,-6.5 + parent: 1 + - uid: 204 + components: + - type: Transform + pos: -13.5,-6.5 + parent: 1 + - uid: 205 + components: + - type: Transform + pos: -14.5,-6.5 + parent: 1 + - uid: 206 + components: + - type: Transform + pos: -15.5,-6.5 + parent: 1 + - uid: 207 + components: + - type: Transform + pos: -16.5,-6.5 + parent: 1 + - uid: 208 + components: + - type: Transform + pos: -16.5,-5.5 + parent: 1 + - uid: 209 + components: + - type: Transform + pos: -16.5,-2.5 + parent: 1 + - uid: 226 + components: + - type: Transform + pos: -18.5,5.5 + parent: 1 + - uid: 227 + components: + - type: Transform + pos: -21.5,5.5 + parent: 1 + - uid: 228 + components: + - type: Transform + pos: -21.5,2.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: -19.5,-1.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: -20.5,-1.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: -21.5,-1.5 + parent: 1 + - uid: 253 + components: + - type: Transform + pos: -22.5,-1.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: -22.5,-2.5 + parent: 1 + - uid: 255 + components: + - type: Transform + pos: -22.5,-3.5 + parent: 1 + - uid: 256 + components: + - type: Transform + pos: -22.5,-4.5 + parent: 1 + - uid: 257 + components: + - type: Transform + pos: -19.5,-3.5 + parent: 1 + - uid: 258 + components: + - type: Transform + pos: -19.5,-4.5 + parent: 1 + - uid: 259 + components: + - type: Transform + pos: -20.5,-4.5 + parent: 1 + - uid: 260 + components: + - type: Transform + pos: -21.5,-4.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: -22.5,-5.5 + parent: 1 + - uid: 262 + components: + - type: Transform + pos: -22.5,-6.5 + parent: 1 + - uid: 263 + components: + - type: Transform + pos: -19.5,-6.5 + parent: 1 + - uid: 264 + components: + - type: Transform + pos: -19.5,-7.5 + parent: 1 + - uid: 265 + components: + - type: Transform + pos: -20.5,-7.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: -21.5,-7.5 + parent: 1 + - uid: 267 + components: + - type: Transform + pos: -22.5,-7.5 + parent: 1 + - uid: 268 + components: + - type: Transform + pos: -22.5,-9.5 + parent: 1 + - uid: 269 + components: + - type: Transform + pos: -22.5,-10.5 + parent: 1 + - uid: 270 + components: + - type: Transform + pos: -22.5,-8.5 + parent: 1 + - uid: 271 + components: + - type: Transform + pos: -21.5,-10.5 + parent: 1 + - uid: 272 + components: + - type: Transform + pos: -20.5,-10.5 + parent: 1 + - uid: 273 + components: + - type: Transform + pos: -19.5,-10.5 + parent: 1 + - uid: 274 + components: + - type: Transform + pos: -19.5,-9.5 + parent: 1 + - uid: 275 + components: + - type: Transform + pos: -10.5,-7.5 + parent: 1 + - uid: 276 + components: + - type: Transform + pos: -10.5,-8.5 + parent: 1 + - uid: 277 + components: + - type: Transform + pos: -10.5,-9.5 + parent: 1 + - uid: 278 + components: + - type: Transform + pos: -11.5,-9.5 + parent: 1 + - uid: 279 + components: + - type: Transform + pos: -12.5,-9.5 + parent: 1 + - uid: 280 + components: + - type: Transform + pos: -13.5,-9.5 + parent: 1 + - uid: 281 + components: + - type: Transform + pos: -14.5,-9.5 + parent: 1 + - uid: 282 + components: + - type: Transform + pos: -15.5,-9.5 + parent: 1 + - uid: 283 + components: + - type: Transform + pos: -16.5,-9.5 + parent: 1 + - uid: 284 + components: + - type: Transform + pos: -16.5,-10.5 + parent: 1 + - uid: 285 + components: + - type: Transform + pos: -16.5,-7.5 + parent: 1 + - uid: 286 + components: + - type: Transform + pos: -13.5,-7.5 + parent: 1 + - uid: 287 + components: + - type: Transform + pos: -23.5,-5.5 + parent: 1 + - uid: 288 + components: + - type: Transform + pos: -27.5,-5.5 + parent: 1 + - uid: 289 + components: + - type: Transform + pos: -28.5,-5.5 + parent: 1 + - uid: 290 + components: + - type: Transform + pos: -24.5,-1.5 + parent: 1 + - uid: 291 + components: + - type: Transform + pos: -23.5,-1.5 + parent: 1 + - uid: 308 + components: + - type: Transform + pos: -27.5,-1.5 + parent: 1 + - uid: 309 + components: + - type: Transform + pos: -28.5,-1.5 + parent: 1 + - uid: 340 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 9.5,-0.5 + parent: 1 + - uid: 341 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,1.5 + parent: 1 + - uid: 342 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 11.5,3.5 + parent: 1 +- proto: WaterTankFull + entities: + - uid: 841 + components: + - type: Transform + pos: -23.5,-2.5 + parent: 1 + - uid: 897 + components: + - type: Transform + pos: 4.5,11.5 + parent: 1 +- proto: WeldingFuelTankFull + entities: + - uid: 730 + components: + - type: Transform + pos: -12.5,5.5 + parent: 1 +- proto: Windoor + entities: + - uid: 741 + components: + - type: Transform + pos: -15.5,-7.5 + parent: 1 + - uid: 742 + components: + - type: Transform + pos: -14.5,-7.5 + parent: 1 +- proto: Window + entities: + - uid: 79 + components: + - type: Transform + pos: 5.5,9.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 5.5,11.5 + parent: 1 + - uid: 130 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 + - uid: 131 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: 10.5,-0.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: 11.5,-0.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: 11.5,0.5 + parent: 1 + - uid: 135 + components: + - type: Transform + pos: 11.5,2.5 + parent: 1 + - uid: 218 + components: + - type: Transform + pos: -16.5,-4.5 + parent: 1 + - uid: 219 + components: + - type: Transform + pos: -16.5,-3.5 + parent: 1 + - uid: 220 + components: + - type: Transform + pos: -14.5,-1.5 + parent: 1 + - uid: 221 + components: + - type: Transform + pos: -12.5,-1.5 + parent: 1 + - uid: 231 + components: + - type: Transform + pos: -20.5,5.5 + parent: 1 + - uid: 232 + components: + - type: Transform + pos: -19.5,5.5 + parent: 1 + - uid: 235 + components: + - type: Transform + pos: -20.5,2.5 + parent: 1 + - uid: 236 + components: + - type: Transform + pos: -18.5,2.5 + parent: 1 +- proto: WindowDirectional + entities: + - uid: 743 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -14.5,-7.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/pizza_party.yml b/Resources/Maps/Lavaland/pizza_party.yml new file mode 100644 index 0000000000..e7882c538c --- /dev/null +++ b/Resources/Maps/Lavaland/pizza_party.yml @@ -0,0 +1,668 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 03:25:40 + entityCount: 88 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 3: Space + 2: FloorBasalt + 4: FloorBrokenWood + 0: FloorWood + 1: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.375,-0.484375 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAACAAAAAAAAAAAAAAAAAAAAAAACAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAABAAAAAAACAAAAAAADAAAAAAABAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAABAAAAAAABBAAAAAABAAAAAAACAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAABAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAAAAAAADAAAAAAAAAAAAAAADAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAABAAAAAAACAgAAAAAAAQAAAAAAAAAAAAACAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAAAAAAAAAAAAAAADAAAAAAABAAAAAAAAAAAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAAAAAAACAAAAAAABAAAAAAABAAAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAABAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAAAAAAADAAAAAAADAAAAAAACAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAAAAAAACAAAAAAABBAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAAAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAABAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Basalt2 + decals: + 3: 6,2 + - node: + color: '#FFFFFFFF' + id: Basalt9 + decals: + 2: -2,-4 + - node: + cleanable: True + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 4: -5,-4 + 5: -6,-4 + 6: -4,-3 + 7: -6,-2 + 8: -7,-2 + 9: -7,-1 + 10: -4,-1 + 11: -3,0 + 12: -3,-1 + 13: -6,1 + 14: -5,2 + 15: -5,3 + 16: -2,5 + 17: -1,5 + 18: 0,5 + 19: 0,4 + 20: 1,4 + 21: 1,5 + 22: 5,-1 + 23: 5,0 + 25: 4,1 + 26: 4,0 + 27: 4,-1 + 28: 5,2 + 29: 5,2 + 30: 5,3 + - node: + cleanable: True + color: '#FFFFFFFF' + id: Remains + decals: + 1: -2,3 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 65535 + 0,-1: + 0: 65343 + -1,0: + 0: 65535 + 0,1: + 0: 63 + -1,1: + 0: 207 + 1,0: + 0: 30583 + 1,1: + 0: 69 + 1,-1: + 0: 30019 + -2,0: + 0: 52428 + -2,-1: + 0: 61132 + -2,1: + 0: 12 + -1,-1: + 0: 65439 + 0,-2: + 0: 61440 + -1,-2: + 0: 61440 + 1,-2: + 0: 12288 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: APCBasic + entities: + - uid: 55 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-2.5 + parent: 1 +- proto: BasaltTwo + entities: + - uid: 86 + components: + - type: Transform + pos: -5.5,4.5 + parent: 1 +- proto: BoxDarts + entities: + - uid: 88 + components: + - type: Transform + pos: -3.5,4.5 + parent: 1 +- proto: CableApcExtension + entities: + - uid: 30 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: -1.5,3.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: -0.5,-0.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 +- proto: ChairWood + entities: + - uid: 31 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,2.5 + parent: 1 + - uid: 32 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,3.5 + parent: 1 + - uid: 33 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.5,-0.5 + parent: 1 + - uid: 34 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,2.5 + parent: 1 + - uid: 35 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -2.5,0.5 + parent: 1 + - uid: 41 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,0.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 65 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 1.5,-0.5 + parent: 1 + - uid: 66 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-0.5 + parent: 1 +- proto: ClothingHeadHatXmasCrown + entities: + - uid: 79 + components: + - type: MetaData + desc: Happy birthday! + name: birthday crown + - type: Transform + pos: -0.5,2.5 + parent: 1 +- proto: FoodBoxPizzaFilled + entities: + - uid: 52 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: -1.5,1.5 + parent: 1 +- proto: FoodCakeBirthday + entities: + - uid: 51 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 +- proto: FoodPizzaMargheritaSlice + entities: + - uid: 73 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 +- proto: FoodPizzaMeatSlice + entities: + - uid: 72 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 +- proto: FoodPizzaMushroomSlice + entities: + - uid: 85 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 +- proto: FoodPlateSmall + entities: + - uid: 74 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 +- proto: Fork + entities: + - uid: 78 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 +- proto: KitchenKnife + entities: + - uid: 83 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 1 +- proto: Poweredlight + entities: + - uid: 23 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,4.5 + parent: 1 + - uid: 28 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-1.5 + parent: 1 +- proto: PresentRandom + entities: + - uid: 36 + components: + - type: MetaData + name: birthday present + - type: Transform + pos: -3.2893493,-1.4472996 + parent: 1 + - uid: 38 + components: + - type: MetaData + name: birthday present + - type: Transform + pos: -1.5289326,-1.218133 + parent: 1 +- proto: PresentRandomCash + entities: + - uid: 37 + components: + - type: MetaData + name: birthday present + - type: Transform + pos: 0.5,1.5 + parent: 1 +- proto: TableWood + entities: + - uid: 2 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: -1.5,1.5 + parent: 1 + - uid: 67 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,4.5 + parent: 1 + - uid: 68 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 3.5,4.5 + parent: 1 + - uid: 69 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,4.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: -3.5,4.5 + parent: 1 +- proto: WallSolid + entities: + - uid: 10 + components: + - type: Transform + pos: -5.5,5.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -4.5,5.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -3.5,5.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: -2.5,5.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -1.5,-2.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: -4.5,-4.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 4.5,-2.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 5.5,-2.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 5.5,-1.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 29 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,4.5 + parent: 1 +- proto: WaterCooler + entities: + - uid: 80 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/preserved_terrarium.yml b/Resources/Maps/Lavaland/preserved_terrarium.yml new file mode 100644 index 0000000000..2cc6b309ca --- /dev/null +++ b/Resources/Maps/Lavaland/preserved_terrarium.yml @@ -0,0 +1,1463 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/19/2025 21:18:18 + entityCount: 226 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 2: Space + 3: FloorBasalt + 0: FloorFreezer + 1: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -2.2124596,1.828125 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: [] + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 62719 + 0,-1: + 0: 65535 + -1,0: + 0: 32904 + 0,1: + 0: 15 + 1,0: + 0: 61695 + 1,1: + 0: 15 + 1,-1: + 0: 65535 + 2,0: + 0: 5141 + 2,-1: + 0: 8177 + 2,1: + 0: 4 + -1,-1: + 0: 49147 + -1,-2: + 0: 34816 + 0,-2: + 0: 65292 + 1,-2: + 0: 65280 + 2,-2: + 0: 20800 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance + - type: NavMap +- proto: AirCanister + entities: + - uid: 226 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 +- proto: AirlockExternal + entities: + - uid: 89 + components: + - type: Transform + pos: 11.5,-1.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 2 + - type: DeviceLinkSource + linkedPorts: + 92: + - - DoorStatus + - DoorBolt + 91: + - - DoorStatus + - DoorBolt + - uid: 90 + components: + - type: Transform + pos: 11.5,-2.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 2 + - type: DeviceLinkSource + linkedPorts: + 92: + - - DoorStatus + - DoorBolt + 91: + - - DoorStatus + - DoorBolt + - uid: 91 + components: + - type: Transform + pos: 9.5,-2.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 2 + - type: DeviceLinkSource + linkedPorts: + 90: + - - DoorStatus + - DoorBolt + 89: + - - DoorStatus + - DoorBolt + - uid: 92 + components: + - type: Transform + pos: 9.5,-1.5 + parent: 1 + - type: DeviceLinkSink + invokeCounter: 2 + - type: DeviceLinkSource + linkedPorts: + 89: + - - DoorStatus + - DoorBolt + 90: + - - DoorStatus + - DoorBolt +- proto: AirlockHydroponics + entities: + - uid: 87 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-1.5 + parent: 1 + - uid: 88 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-2.5 + parent: 1 + - uid: 219 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 +- proto: APCBasic + entities: + - uid: 154 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 +- proto: Biofabricator + entities: + - uid: 122 + components: + - type: Transform + pos: 4.5,-3.5 + parent: 1 +- proto: Bucket + entities: + - uid: 137 + components: + - type: Transform + pos: 5.6785603,1.604964 + parent: 1 + - uid: 146 + components: + - type: Transform + pos: 7.870857,1.6834512 + parent: 1 +- proto: CableApcExtension + entities: + - uid: 158 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: 4.5,3.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 + - uid: 169 + components: + - type: Transform + pos: 8.5,3.5 + parent: 1 + - uid: 170 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 171 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 + - uid: 173 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: 0.5,-2.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: 0.5,-3.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 1 + - uid: 179 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 180 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 1 + - uid: 181 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 1 + - uid: 182 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 + - uid: 183 + components: + - type: Transform + pos: 4.5,-4.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: 6.5,-4.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: 7.5,-4.5 + parent: 1 + - uid: 186 + components: + - type: Transform + pos: 5.5,-4.5 + parent: 1 + - uid: 187 + components: + - type: Transform + pos: 7.5,-3.5 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: 7.5,-2.5 + parent: 1 + - uid: 189 + components: + - type: Transform + pos: 7.5,-1.5 + parent: 1 + - uid: 190 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 191 + components: + - type: Transform + pos: 7.5,-0.5 + parent: 1 + - uid: 192 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - uid: 193 + components: + - type: Transform + pos: 5.5,0.5 + parent: 1 + - uid: 194 + components: + - type: Transform + pos: 4.5,0.5 + parent: 1 + - uid: 195 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 196 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 + - uid: 197 + components: + - type: Transform + pos: -1.5,-1.5 + parent: 1 + - uid: 198 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 199 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 200 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 201 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 202 + components: + - type: Transform + pos: 8.5,-1.5 + parent: 1 + - uid: 203 + components: + - type: Transform + pos: 9.5,-1.5 + parent: 1 + - uid: 204 + components: + - type: Transform + pos: 10.5,-1.5 + parent: 1 +- proto: CableHV + entities: + - uid: 22 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: 7.5,5.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 +- proto: CableMV + entities: + - uid: 23 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 +- proto: ChemMaster + entities: + - uid: 220 + components: + - type: Transform + pos: 5.5,-5.5 + parent: 1 +- proto: ClothingBackpackWaterTank + entities: + - uid: 144 + components: + - type: Transform + pos: 7.5524035,-5.446327 + parent: 1 +- proto: ClothingBeltPlantFilled + entities: + - uid: 213 + components: + - type: Transform + pos: 3.0792236,4.589468 + parent: 1 +- proto: ClothingHandsGlovesLeather + entities: + - uid: 211 + components: + - type: Transform + pos: 4.3292236,4.651968 + parent: 1 +- proto: CrateHydroponicsSeedsExotic + entities: + - uid: 128 + components: + - type: Transform + pos: 0.5,-5.5 + parent: 1 +- proto: CrateHydroponicsSeedsMedicinal + entities: + - uid: 140 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 +- proto: CryogenicSleepUnit + entities: + - uid: 93 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,-0.5 + parent: 1 + - uid: 94 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,-1.5 + parent: 1 + - uid: 95 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,-2.5 + parent: 1 + - uid: 96 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,-3.5 + parent: 1 +- proto: DisposalBend + entities: + - uid: 150 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-7.5 + parent: 1 +- proto: DisposalPipe + entities: + - uid: 62 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 1 + - uid: 148 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 1 + - uid: 149 + components: + - type: Transform + pos: 2.5,-5.5 + parent: 1 +- proto: DisposalTrunk + entities: + - uid: 147 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 + - uid: 151 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-7.5 + parent: 1 +- proto: DisposalUnit + entities: + - uid: 121 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 +- proto: GeneratorWallmountAPU + entities: + - uid: 21 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 + - uid: 155 + components: + - type: Transform + pos: 7.5,5.5 + parent: 1 +- proto: hydroponicsTray + entities: + - uid: 109 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 + - uid: 110 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 + - uid: 111 + components: + - type: Transform + pos: 1.5,-3.5 + parent: 1 + - uid: 112 + components: + - type: Transform + pos: 1.5,-5.5 + parent: 1 + - uid: 113 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 114 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 115 + components: + - type: Transform + pos: 4.5,-5.5 + parent: 1 + - uid: 116 + components: + - type: Transform + pos: 6.5,-5.5 + parent: 1 + - uid: 117 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - uid: 214 + components: + - type: Transform + pos: 6.5,-3.5 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: 6.5,-0.5 + parent: 1 +- proto: KitchenReagentGrinder + entities: + - uid: 126 + components: + - type: Transform + pos: 5.5,-0.5 + parent: 1 +- proto: LockerBotanistFilled + entities: + - uid: 210 + components: + - type: Transform + pos: 7.5,4.5 + parent: 1 +- proto: LockerBotanistLoot + entities: + - uid: 129 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 130 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 1 + - uid: 138 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 +- proto: PackPaperRollingFilters + entities: + - uid: 209 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.38597775,4.679373 + parent: 1 +- proto: PlantBag + entities: + - uid: 135 + components: + - type: Transform + pos: 5.3973103,1.698714 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: 7.4129353,1.589339 + parent: 1 +- proto: Poweredlight + entities: + - uid: 97 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 98 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -2.5,-3.5 + parent: 1 + - uid: 99 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,0.5 + parent: 1 + - uid: 100 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-4.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 6.5,1.5 + parent: 1 + - uid: 105 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,0.5 + parent: 1 + - uid: 106 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,-4.5 + parent: 1 + - uid: 118 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-5.5 + parent: 1 + - uid: 119 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,-5.5 + parent: 1 +- proto: SeedExtractor + entities: + - uid: 120 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 1 +- proto: SinkWide + entities: + - uid: 131 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-3.5 + parent: 1 + - uid: 132 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,-0.5 + parent: 1 + - uid: 133 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,-0.5 + parent: 1 + - uid: 134 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,-3.5 + parent: 1 +- proto: SmartFridge + entities: + - uid: 108 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 +- proto: SodaDispenser + entities: + - uid: 124 + components: + - type: Transform + pos: 5.5,-3.5 + parent: 1 +- proto: SpawnMobBee + entities: + - uid: 221 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 222 + components: + - type: Transform + pos: 7.5,3.5 + parent: 1 + - uid: 223 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 +- proto: SpawnMobButterfly + entities: + - uid: 224 + components: + - type: Transform + pos: 6.5,0.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: 0.5,-3.5 + parent: 1 +- proto: SubstationWallBasic + entities: + - uid: 153 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 +- proto: TableGlass + entities: + - uid: 125 + components: + - type: Transform + pos: 5.5,-0.5 + parent: 1 +- proto: TableWood + entities: + - uid: 77 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,4.5 + parent: 1 + - uid: 78 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,4.5 + parent: 1 + - uid: 79 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,4.5 + parent: 1 + - uid: 80 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,4.5 + parent: 1 + - uid: 81 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,4.5 + parent: 1 + - uid: 82 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,1.5 + parent: 1 + - uid: 83 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,1.5 + parent: 1 + - uid: 84 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,1.5 + parent: 1 + - uid: 85 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,-5.5 + parent: 1 + - uid: 86 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,-5.5 + parent: 1 + - uid: 123 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,-3.5 + parent: 1 +- proto: TechnologyDisk + entities: + - uid: 216 + components: + - type: Transform + pos: 8.588779,1.6050167 + parent: 1 + - uid: 217 + components: + - type: Transform + pos: 1.3883138,4.5268917 + parent: 1 + - uid: 218 + components: + - type: Transform + pos: 2.1539388,4.5268917 + parent: 1 +- proto: Thruster + entities: + - uid: 30 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,2.5 + parent: 1 + - uid: 31 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,4.5 + parent: 1 + - uid: 61 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,-6.5 + parent: 1 + - uid: 63 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,0.5 + parent: 1 + - uid: 64 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,-4.5 + parent: 1 +- proto: ToolboxSyndicateFilled + entities: + - uid: 143 + components: + - type: Transform + pos: 8.505528,-5.352577 + parent: 1 +- proto: ToyFigurineBotanist + entities: + - uid: 212 + components: + - type: Transform + pos: 3.7510986,4.651968 + parent: 1 +- proto: VendingMachineHydrobe + entities: + - uid: 127 + components: + - type: Transform + pos: 2.5,-5.5 + parent: 1 +- proto: VendingMachineNutri + entities: + - uid: 141 + components: + - type: Transform + pos: 4.5,-0.5 + parent: 1 +- proto: VendingMachineSeedsUnlocked + entities: + - uid: 107 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 +- proto: WallReinforced + entities: + - uid: 2 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: -1.5,3.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -1.5,2.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 5.5,2.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 6.5,2.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: 7.5,2.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 9.5,2.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 8.5,2.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 8.5,5.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 8.5,4.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 9.5,4.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 9.5,3.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 10.5,3.5 + parent: 1 + - uid: 32 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,1.5 + parent: 1 + - uid: 33 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,1.5 + parent: 1 + - uid: 34 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,0.5 + parent: 1 + - uid: 35 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,0.5 + parent: 1 + - uid: 36 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,0.5 + parent: 1 + - uid: 37 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,0.5 + parent: 1 + - uid: 38 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-0.5 + parent: 1 + - uid: 39 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-1.5 + parent: 1 + - uid: 40 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-3.5 + parent: 1 + - uid: 41 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-4.5 + parent: 1 + - uid: 42 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-2.5 + parent: 1 + - uid: 43 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-4.5 + parent: 1 + - uid: 44 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-4.5 + parent: 1 + - uid: 45 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-5.5 + parent: 1 + - uid: 46 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-5.5 + parent: 1 + - uid: 47 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-4.5 + parent: 1 + - uid: 48 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-6.5 + parent: 1 + - uid: 49 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-0.5 + parent: 1 + - uid: 50 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-3.5 + parent: 1 + - uid: 51 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-6.5 + parent: 1 + - uid: 52 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,-6.5 + parent: 1 + - uid: 53 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-6.5 + parent: 1 + - uid: 54 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-6.5 + parent: 1 + - uid: 55 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-6.5 + parent: 1 + - uid: 56 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,-6.5 + parent: 1 + - uid: 57 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,-6.5 + parent: 1 + - uid: 58 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,-6.5 + parent: 1 + - uid: 59 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,-6.5 + parent: 1 + - uid: 60 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,-6.5 + parent: 1 + - uid: 65 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,-5.5 + parent: 1 + - uid: 66 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,-5.5 + parent: 1 + - uid: 67 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,-4.5 + parent: 1 + - uid: 68 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,-3.5 + parent: 1 + - uid: 69 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,-3.5 + parent: 1 + - uid: 70 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,-3.5 + parent: 1 + - uid: 71 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,-0.5 + parent: 1 + - uid: 72 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,-0.5 + parent: 1 + - uid: 73 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,-0.5 + parent: 1 + - uid: 74 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,1.5 + parent: 1 + - uid: 75 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,0.5 + parent: 1 + - uid: 76 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,1.5 + parent: 1 + - uid: 152 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-6.5 + parent: 1 + - uid: 205 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,5.5 + parent: 1 + - uid: 206 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 6.5,5.5 + parent: 1 + - uid: 207 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 7.5,5.5 + parent: 1 + - uid: 208 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 5.5,5.5 + parent: 1 +- proto: WaterTankHighCapacity + entities: + - uid: 142 + components: + - type: Transform + pos: 8.5,3.5 + parent: 1 +- proto: WeaponSprayNozzle + entities: + - uid: 145 + components: + - type: Transform + pos: 7.8961535,-5.258827 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/ripley.yml b/Resources/Maps/Lavaland/ripley.yml new file mode 100644 index 0000000000..af42a91f5d --- /dev/null +++ b/Resources/Maps/Lavaland/ripley.yml @@ -0,0 +1,184 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 03:10:54 + entityCount: 18 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorBasalt +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.765625,-0.53125 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + cleanable: True + color: '#FFFFFFFF' + id: Remains + decals: + 0: 1.1037478,0.2636062 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 1891 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: WallRockBasalt + entities: + - uid: 2 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 +- proto: ClothingShoesBootsSalvage + entities: + - uid: 17 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 +- proto: SpawnMechRipley + entities: + - uid: 18 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/shinobi_graveyard.yml b/Resources/Maps/Lavaland/shinobi_graveyard.yml new file mode 100644 index 0000000000..286109bc47 --- /dev/null +++ b/Resources/Maps/Lavaland/shinobi_graveyard.yml @@ -0,0 +1,502 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/21/2025 01:59:49 + entityCount: 53 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorBasalt +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.421875,-0.515625 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + cleanable: True + zIndex: 1 + color: '#FFFFFFFF' + id: DirtHeavy + decals: + 25: 0,5 + 26: 1,5 + 27: 2,5 + 28: 5,5 + 29: 5,3 + - node: + cleanable: True + zIndex: 1 + color: '#FFFFFFFF' + id: DirtMedium + decals: + 30: 5,4 + 31: 3,5 + 32: 4,5 + 33: 6,5 + 34: 7,5 + 35: 8,5 + 36: 9,5 + 37: 10,5 + 38: 5,2 + 39: 5,1 + 40: 5,0 + 41: 5,-1 + - node: + color: '#A461063C' + id: FullTileOverlayGreyscale + decals: + 1: 5,5 + 12: 2,5 + 13: 1,5 + 14: 0,5 + 18: 5,3 + - node: + color: '#A461063C' + id: HalfTileOverlayGreyscale180 + decals: + 0: 5,6 + - node: + color: '#A461063C' + id: HalfTileOverlayGreyscale270 + decals: + 7: 10,5 + 20: 5,1 + - node: + color: '#A461063C' + id: QuarterTileOverlayGreyscale + decals: + 3: 7,5 + 8: 11,5 + 16: -2,5 + - node: + color: '#A461063C' + id: QuarterTileOverlayGreyscale180 + decals: + 4: 7,5 + 15: -1,5 + 23: 5,-2 + - node: + color: '#A461063C' + id: QuarterTileOverlayGreyscale270 + decals: + 9: 12,5 + 24: 5,-1 + - node: + color: '#A461063C' + id: QuarterTileOverlayGreyscale90 + decals: + 22: 5,-1 + - node: + zIndex: 1 + color: '#FFFFFFFF' + id: Rock06 + decals: + 42: 8,10 + 43: 4,0 + - node: + color: '#A461063C' + id: ThreeQuarterTileOverlayGreyscale + decals: + 6: 9,5 + 10: 4,5 + 19: 5,2 + - node: + color: '#A461063C' + id: ThreeQuarterTileOverlayGreyscale180 + decals: + 21: 5,0 + - node: + color: '#A461063C' + id: ThreeQuarterTileOverlayGreyscale270 + decals: + 2: 6,5 + 5: 8,5 + 11: 3,5 + 17: 5,4 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 61154 + 0,1: + 0: 61182 + -1,1: + 0: 2252 + 0,2: + 0: 254 + -1,2: + 0: 128 + 0,-1: + 0: 60416 + 1,0: + 0: 65527 + 1,1: + 0: 65535 + 1,2: + 0: 255 + 1,-1: + 0: 63232 + 2,0: + 0: 13296 + 2,1: + 0: 15355 + 2,2: + 0: 4403 + 2,-1: + 0: 49152 + 3,1: + 0: 272 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: BasaltOne + entities: + - uid: 52 + components: + - type: Transform + pos: 11.5,-0.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 +- proto: BasaltThree + entities: + - uid: 35 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 +- proto: BasaltTwo + entities: + - uid: 51 + components: + - type: Transform + pos: 12.5,6.5 + parent: 1 +- proto: CrateWoodenGrave + entities: + - uid: 33 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 8.5,8.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: 7.5,6.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: 2.5,8.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: 6.5,3.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 8.5,4.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 8.5,2.5 + parent: 1 +- proto: hydroponicsSoil + entities: + - uid: 50 + components: + - type: MetaData + desc: Someone died here... + name: grave + - type: Transform + pos: 5.5,8.5 + parent: 1 +- proto: Katana + entities: + - uid: 49 + components: + - type: Transform + pos: 5.5,8.5 + parent: 1 +- proto: Railing + entities: + - uid: 43 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,8.5 + parent: 1 + - uid: 44 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,9.5 + parent: 1 + - uid: 45 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,8.5 + parent: 1 + - uid: 46 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,9.5 + parent: 1 +- proto: RailingCorner + entities: + - uid: 47 + components: + - type: Transform + pos: 6.5,7.5 + parent: 1 + - uid: 48 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,7.5 + parent: 1 +- proto: WallAsteroidCobblebrick + entities: + - uid: 2 + components: + - type: Transform + pos: 7.5,10.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: 6.5,10.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 4.5,10.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 5.5,10.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: 0.5,8.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: 1.5,10.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 0.5,10.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 0.5,6.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 2.5,10.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 3.5,10.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 9.5,10.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: 10.5,10.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 10.5,9.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 10.5,8.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 10.5,7.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 10.5,6.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 10.5,4.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 10.5,3.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 10.5,2.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 10.5,0.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 9.5,0.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 8.5,0.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 7.5,0.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/sloth.yml b/Resources/Maps/Lavaland/sloth.yml new file mode 100644 index 0000000000..07b750e0c9 --- /dev/null +++ b/Resources/Maps/Lavaland/sloth.yml @@ -0,0 +1,238 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/21/2025 04:07:39 + entityCount: 25 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorBrokenWood + 2: FloorWood +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.5625,-0.546875 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAGAAAAAAABAAAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAEAAAAAAABAAAAAAAFAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAABAAAAAAAGAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAEAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAEAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAFAAAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAGAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAACAAAAAAAB + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAACAAAAAAAGAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAADAAAAAAAFAAAAAAAGAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: [] + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 51 + 0,-1: + 0: 12288 + -1,0: + 0: 136 + -1,-1: + 0: 32768 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: BaseComputerAiAccess + entities: + - uid: 19 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,1.5 + parent: 1 +- proto: Bed + entities: + - uid: 17 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 +- proto: BedsheetBrown + entities: + - uid: 18 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 +- proto: RandomArcade + entities: + - uid: 22 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 +- proto: RandomSpawner100 + entities: + - uid: 23 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 0.5,-0.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 +- proto: TableWood + entities: + - uid: 21 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 +- proto: WallWood + entities: + - uid: 2 + components: + - type: Transform + pos: -1.5,2.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: -1.5,1.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -1.5,-1.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -0.5,-1.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 2.5,-1.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 1.5,-1.5 + parent: 1 +- proto: Window + entities: + - uid: 6 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,2.5 + parent: 1 +- proto: WoodDoor + entities: + - uid: 20 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 +... diff --git a/Resources/Maps/Lavaland/solemn_lament.yml b/Resources/Maps/Lavaland/solemn_lament.yml new file mode 100644 index 0000000000..ffc82e585d --- /dev/null +++ b/Resources/Maps/Lavaland/solemn_lament.yml @@ -0,0 +1,434 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/20/2025 05:04:53 + entityCount: 62 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorMiningDark +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -0.5,0.65625 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: [] + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,0: + 0: 30583 + 0,-1: + 0: 30583 + -1,0: + 0: 52428 + 0,1: + 0: 375 + -1,1: + 0: 204 + 0,-2: + 0: 30577 + -1,-2: + 0: 52416 + -1,-1: + 0: 52428 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AltarConvertBurden + entities: + - uid: 49 + components: + - type: Transform + pos: 0.5,6.5 + parent: 1 +- proto: ChemistryBottleOmnizine + entities: + - uid: 57 + components: + - type: Transform + pos: 0.26428616,6.7624884 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 0.52209866,6.598426 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 0.73303616,6.8562384 + parent: 1 +- proto: CrateCoffin + entities: + - uid: 55 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 +- proto: PaperOffice + entities: + - uid: 56 + components: + - type: MetaData + name: Mournful note + - type: Transform + pos: 0.47522366,6.223426 + parent: 1 + - type: Paper + content: A solemn lament, for the funeral of butterflies. +- proto: SpawnMobButterfly + entities: + - uid: 50 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 +- proto: StatueVenusBlue + entities: + - uid: 43 + components: + - type: Transform + pos: -1.5,-6.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: -1.5,1.5 + parent: 1 +- proto: StatueVenusRed + entities: + - uid: 45 + components: + - type: Transform + pos: -1.5,-2.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 +- proto: WallCult + entities: + - uid: 2 + components: + - type: Transform + pos: -0.5,7.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: 0.5,7.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 1.5,7.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: -0.5,6.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: -1.5,6.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: -2.5,6.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 1.5,6.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 2.5,6.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 3.5,6.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: -2.5,5.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: -2.5,4.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 + - uid: 14 + components: + - type: Transform + pos: -2.5,2.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: -2.5,-7.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: -2.5,-6.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: -1.5,-7.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 1.5,-7.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 2.5,-7.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: 3.5,-3.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 3.5,-1.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: 3.5,-2.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 +- proto: WoodDoor + entities: + - uid: 62 + components: + - type: Transform + pos: 0.5,-7.5 + parent: 1 +- proto: WoodenBench + entities: + - uid: 54 + components: + - type: Transform + pos: -0.5,5.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 +... diff --git a/Resources/Maps/Nonstations/dm01-entryway.yml b/Resources/Maps/Nonstations/dm01-entryway.yml new file mode 100644 index 0000000000..874fbb0178 --- /dev/null +++ b/Resources/Maps/Nonstations/dm01-entryway.yml @@ -0,0 +1,6141 @@ +meta: + format: 6 + postmapinit: false +tilemap: + 0: Space + 15: FloorAsteroidSand + 14: FloorAsteroidSandRed + 5: FloorAsteroidSandUnvariantized + 2: FloorAstroGrass + 11: FloorBar + 9: FloorBlueCircuit + 3: FloorConcreteMono + 1: FloorGrass + 6: FloorGrayConcreteMono + 13: FloorHullReinforced + 7: FloorOldConcreteMono + 10: FloorReinforced + 8: FloorReinforcedHardened + 12: FloorTechMaint + 4: FloorWood + 130: Plating +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: dm01-entryway + - type: Transform + - type: Map + mapPaused: True + - type: PhysicsMap + - type: GridTree + - type: MovedGrids + - type: Broadphase + - type: OccluderTree + - type: MapLight + ambientLightColor: '#D8B059FF' + - type: LoadedMap + - uid: 2 + components: + - type: MetaData + name: grid + - type: Transform + pos: -12,-40 + parent: 1 + - type: MapGrid + chunks: + 0,1: + ind: 0,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAAAAAAAAAAAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAAAAAAAAAAAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAAAAAAAAAAAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAAAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAADwAAAAAAAgAAAAAAggAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAggAAAAAA + version: 6 + 1,1: + ind: 1,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAggAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAggAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAABAAAAAAABAAAAAAACwAAAAAACwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAACwAAAAAACwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAACwAAAAAACwAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAA + version: 6 + 0,2: + ind: 0,2 + tiles: ggAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAADgAAAAAADwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAADwAAAAAADwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAADwAAAAAADwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAggAAAAAADwAAAAAADwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAggAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAggAAAAAADgAAAAAADgAAAAAABQAAAAAAggAAAAAAAwAAAAAAAwAAAAAAggAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAggAAAAAAAgAAAAAADgAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAggAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAAggAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAABgAAAAAABgAAAAAABgAAAAAABgAAAAAAAwAAAAAAAwAAAAAABgAAAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA + version: 6 + 1,2: + ind: 1,2 + tiles: BAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAggAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABgAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABgAAAAAABgAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABgAAAAAABgAAAAAAggAAAAAAggAAAAAABwAAAAAABwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAAABgAAAAAAggAAAAAAggAAAAAABwAAAAAABwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAABgAAAAAABgAAAAAAggAAAAAAggAAAAAABwAAAAAABwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAABgAAAAAAggAAAAAAggAAAAAABwAAAAAABwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAABgAAAAAAggAAAAAAggAAAAAABwAAAAAABwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAAABwAAAAAAggAAAAAADQAAAAAADQAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAABwAAAAAABwAAAAAAggAAAAAAggAAAAAADQAAAAAADQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAABwAAAAAABwAAAAAAggAAAAAAggAAAAAADQAAAAAAggAAAAAAggAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAAABwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAA + version: 6 + 0,3: + ind: 0,3 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAACAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAACAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAACAAAAAAACAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAACAAAAAAACAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAACAAAAAAACAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAACAAAAAAACAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAACAAAAAAACAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAACAAAAAAACAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAACAAAAAAACAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,3: + ind: 1,3 + tiles: ggAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAggAAAAAAAwAAAAAAAwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAggAAAAAAggAAAAAAAwAAAAAAAwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAAAAwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAACAAAAAAACAAAAAAACQAAAAAACQAAAAAACAAAAAAACAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAACAAAAAAACAAAAAAACQAAAAAACQAAAAAACAAAAAAACAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAACAAAAAAACAAAAAAACQAAAAAACQAAAAAACAAAAAAACAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAACAAAAAAACAAAAAAACQAAAAAACQAAAAAACAAAAAAACAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAACAAAAAAACAAAAAAACQAAAAAACQAAAAAACAAAAAAACAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,2: + ind: 2,2 + tiles: BAAAAAAABAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAACgAAAAAACgAAAAAACgAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAACgAAAAAACgAAAAAACgAAAAAACgAAAAAACgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAACgAAAAAACgAAAAAACgAAAAAACgAAAAAACgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,3: + ind: 2,3 + tiles: ggAAAAAACgAAAAAACgAAAAAACgAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,1: + ind: 2,1 + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAAAAAAAgAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAAgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAAAAAAAgAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAggAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAggAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAggAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAggAAAAAABQAAAAAABQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: BecomesStation + id: dm01-entryway + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + inherent: True + enabled: True + - type: OccluderTree + - type: Shuttle + - type: GridPathfinding + - type: SpreaderGrid + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#FFFFFFFF' + id: Basalt5 + decals: + 2: 23.04596,26.850483 + 26: 14,26 + - node: + color: '#FFFFFFFF' + id: Basalt6 + decals: + 3: 24.35846,24.506733 + 24: 17,25 + - node: + color: '#FFFFFFFF' + id: Basalt7 + decals: + 4: 31.366272,24.178608 + 25: 13,23 + - node: + color: '#FFFFFFFF' + id: Basalt8 + decals: + 1: 27.944397,25.65517 + - node: + color: '#FFFFFFFF' + id: Basalt9 + decals: + 23: 23,21 + - node: + color: '#FFFFFFFF' + id: Box + decals: + 89: 27,45 + 90: 28,44 + 91: 29,44 + 92: 30,45 + 93: 30,48 + 94: 29,49 + 95: 28,49 + 96: 27,48 + - node: + color: '#FED83DFF' + id: BrickTileWhiteCornerNe + decals: + 115: 35,47 + - node: + color: '#FED83DFF' + id: BrickTileWhiteCornerSe + decals: + 114: 35,46 + - node: + color: '#FED83DFF' + id: BrickTileWhiteLineN + decals: + 97: 26,47 + 98: 31,47 + 99: 30,47 + 100: 29,47 + 101: 28,47 + 102: 27,47 + 112: 33,47 + 113: 34,47 + - node: + color: '#FED83DFF' + id: BrickTileWhiteLineS + decals: + 103: 26,46 + 104: 27,46 + 105: 28,46 + 106: 29,46 + 107: 30,46 + 108: 31,46 + 109: 33,46 + 110: 34,46 + - node: + color: '#FFFFFFFF' + id: Bushb2 + decals: + 6: 3.6906247,27.70607 + - node: + color: '#FFFFFFFF' + id: Bushc3 + decals: + 5: 10.440625,26.783571 + - node: + color: '#FFFFFFFF' + id: Bushf3 + decals: + 7: 3.803125,24.87107 + - node: + color: '#FFFFFFFF' + id: Bushg2 + decals: + 11: 3.159235,32.132763 + - node: + color: '#FFFFFFFF' + id: Bushg3 + decals: + 12: 3.065485,34.070263 + - node: + color: '#FFFFFFFF' + id: Bushg4 + decals: + 10: 7.020625,28.223572 + 13: 3.002985,35.960888 + - node: + color: '#FFFFFFFF' + id: Bushk2 + decals: + 9: 9.000626,28.20107 + - node: + color: '#FFFFFFFF' + id: Grassa2 + decals: + 15: 1.2504587,29.88207 + - node: + color: '#FFFFFFFF' + id: Grassd3 + decals: + 18: 34,23 + - node: + color: '#FFFFFFFF' + id: Grasse1 + decals: + 21: 18,25 + 22: 25,24 + - node: + color: '#FFFFFFFF' + id: Grasse3 + decals: + 19: 31,20 + 20: 20,22 + - node: + color: '#FF0000FF' + id: LoadingAreaGreyscale + decals: + 135: 20,45 + 136: 21,45 + - node: + angle: 3.141592653589793 rad + color: '#FF0000FF' + id: LoadingAreaGreyscale + decals: + 133: 18,48 + 134: 17,48 + - node: + color: '#FFFFFFFF' + id: Rock05 + decals: + 14: 5.0160837,38.977135 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallNW + decals: + 72: 18,28 + - node: + color: '#FFFFFFFF' + id: WarnCornerSmallSW + decals: + 53: 18,32 + - node: + color: '#FFFFFFFF' + id: WarnLineE + decals: + 30: 22,60 + 31: 22,59 + - node: + color: '#FFFFFFFF' + id: WarnLineN + decals: + 55: 17,32 + 56: 16,32 + - node: + color: '#FFFFFFFF' + id: WarnLineS + decals: + 50: 18,31 + 68: 18,30 + 71: 18,29 + - node: + color: '#FFFFFFFF' + id: WarnLineW + decals: + 46: 16,28 + 47: 17,28 + - node: + color: '#FFFFFFFF' + id: i + decals: + 85: 16.272797,43.892918 + - node: + color: '#FFFFFFFF' + id: l + decals: + 88: 17.304047,43.846043 + - node: + color: '#FFFFFFFF' + id: n + decals: + 84: 15.975922,43.877293 + - node: + color: '#FFFFFFFF' + id: o + decals: + 87: 16.960297,43.861668 + - node: + cleanable: True + zIndex: 1 + angle: -1.5707963267948966 rad + color: '#740000FF' + id: pawprint + decals: + 59: 17.11303,29.36412 + 65: 18.83525,29.44051 + 74: 17.501917,29.086342 + 75: 18.328306,29.405787 + 76: 18.619972,29.162731 + - node: + cleanable: True + angle: 4.71238898038469 rad + color: '#740000FF' + id: pawprint + decals: + 37: 16.459316,29.32548 + 38: 16.788021,29.149553 + 45: 19.324793,29.279182 + - node: + color: '#FFFFFFFF' + id: s + decals: + 86: 16.600922,43.861668 + - node: + color: '#FFFFFFFF' + id: space + decals: + 34: 28,36 + - node: + cleanable: True + color: '#740000FF' + id: splatter + decals: + 35: 16.607176,30.011822 + - node: + cleanable: True + zIndex: 1 + color: '#740000FF' + id: splatter + decals: + 73: 17.890806,29.343287 + - node: + color: '#FFFFFFFF' + id: u + decals: + 83: 15.663422,43.892918 + - type: GridAtmosphere + version: 2 + data: + tiles: + 0,6: + 0: 60544 + 0,7: + 0: 61166 + 0,8: + 0: 61166 + 0,5: + 0: 34944 + 1,5: + 0: 65520 + 1,6: + 0: 65520 + 1,7: + 0: 60735 + 1,8: + 0: 26222 + 2,5: + 0: 65520 + 2,6: + 0: 65528 + 2,7: + 0: 63235 + 2,8: + 0: 59535 + 3,5: + 0: 65535 + 3,6: + 0: 32767 + 3,7: + 0: 4096 + 3,8: + 0: 63351 + 4,4: + 0: 63488 + 4,5: + 0: 65535 + 4,6: + 0: 57599 + 4,7: + 0: 65535 + 4,8: + 0: 7407 + 5,4: + 0: 65504 + 5,5: + 0: 65535 + 5,6: + 0: 48383 + 5,7: + 0: 65523 + 5,8: + 0: 65535 + 6,4: + 0: 65520 + 6,5: + 0: 65535 + 6,6: + 0: 65535 + 6,7: + 0: 65520 + 6,8: + 0: 65535 + 7,4: + 0: 65520 + 7,5: + 0: 65535 + 7,6: + 0: 56319 + 7,7: + 0: 65532 + 7,8: + 0: 65535 + 8,4: + 0: 65392 + 8,5: + 0: 65535 + 8,6: + 0: 47615 + 8,7: + 0: 13243 + 0,9: + 0: 61166 + 1,9: + 0: 30566 + 2,9: + 0: 62271 + 2,10: + 0: 255 + 3,9: + 0: 62271 + 3,10: + 0: 13311 + 3,11: + 0: 65331 + 4,9: + 0: 13107 + 4,10: + 0: 12339 + 4,11: + 0: 65283 + 4,12: + 0: 26214 + 5,9: + 0: 13071 + 5,10: + 0: 45875 + 5,11: + 0: 65339 + 6,9: + 0: 15 + 6,10: + 0: 4096 + 6,11: + 0: 65481 + 6,12: + 0: 140 + 7,9: + 0: 15 + 7,11: + 0: 65527 + 7,12: + 0: 127 + 8,8: + 0: 4915 + 8,11: + 0: 65504 + 3,13: + 0: 61132 + 3,14: + 0: 61166 + 3,15: + 0: 14 + 4,13: + 0: 65535 + 4,14: + 0: 63078 + 4,15: + 0: 15 + 5,13: + 0: 30515 + 5,14: + 0: 30583 + 5,15: + 0: 7 + 8,12: + 0: 14 + 9,11: + 0: 13056 + 9,4: + 0: 4096 + 9,5: + 0: 4369 + 9,6: + 0: 4369 + 9,7: + 0: 17 + uniqueMixes: + - volume: 2500 + temperature: 293.15 + moles: + - 21.824879 + - 82.10312 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance + - type: NavMap +- proto: Airlock + entities: + - uid: 3 + components: + - type: Transform + pos: 32.5,47.5 + parent: 2 + - uid: 4 + components: + - type: Transform + pos: 32.5,46.5 + parent: 2 + - uid: 5 + components: + - type: Transform + pos: 31.5,26.5 + parent: 2 + - uid: 6 + components: + - type: Transform + pos: 32.5,26.5 + parent: 2 + - uid: 7 + components: + - type: Transform + pos: 25.5,46.5 + parent: 2 + - uid: 8 + components: + - type: Transform + pos: 25.5,47.5 + parent: 2 + - uid: 9 + components: + - type: Transform + pos: 5.5,37.5 + parent: 2 + - uid: 10 + components: + - type: Transform + pos: 6.5,37.5 + parent: 2 + - uid: 11 + components: + - type: Transform + pos: 18.5,51.5 + parent: 2 + - uid: 12 + components: + - type: Transform + pos: 17.5,51.5 + parent: 2 +- proto: AlertEssenceSpriteView + entities: + - uid: 957 + components: + - type: Transform + pos: 14.935286,13.400251 + parent: 1 +- proto: APCBasic + entities: + - uid: 13 + components: + - type: Transform + pos: 25.5,43.5 + parent: 2 +- proto: AutolatheHyperConvection + entities: + - uid: 872 + components: + - type: Transform + pos: 34.5,48.5 + parent: 2 +- proto: BannerBlue + entities: + - uid: 14 + components: + - type: Transform + pos: 10.5,35.5 + parent: 2 + - uid: 15 + components: + - type: Transform + pos: 15.5,35.5 + parent: 2 +- proto: BannerRed + entities: + - uid: 16 + components: + - type: Transform + pos: 23.5,29.5 + parent: 2 + - uid: 17 + components: + - type: Transform + pos: 28.5,29.5 + parent: 2 +- proto: BarricadeBlock + entities: + - uid: 18 + components: + - type: Transform + pos: 28.5,37.5 + parent: 2 +- proto: BaseComputer + entities: + - uid: 19 + components: + - type: Transform + pos: 15.5,58.5 + parent: 2 + - uid: 20 + components: + - type: Transform + pos: 20.5,58.5 + parent: 2 + - uid: 21 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 20.5,56.5 + parent: 2 + - uid: 22 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 15.5,56.5 + parent: 2 +- proto: CableApcExtension + entities: + - uid: 23 + components: + - type: Transform + pos: 12.5,55.5 + parent: 2 + - uid: 24 + components: + - type: Transform + pos: 12.5,54.5 + parent: 2 + - uid: 25 + components: + - type: Transform + pos: 32.5,45.5 + parent: 2 + - uid: 26 + components: + - type: Transform + pos: 32.5,48.5 + parent: 2 + - uid: 27 + components: + - type: Transform + pos: 31.5,44.5 + parent: 2 + - uid: 28 + components: + - type: Transform + pos: 25.5,43.5 + parent: 2 + - uid: 29 + components: + - type: Transform + pos: 25.5,44.5 + parent: 2 + - uid: 30 + components: + - type: Transform + pos: 25.5,45.5 + parent: 2 + - uid: 31 + components: + - type: Transform + pos: 26.5,43.5 + parent: 2 + - uid: 32 + components: + - type: Transform + pos: 28.5,43.5 + parent: 2 + - uid: 33 + components: + - type: Transform + pos: 29.5,43.5 + parent: 2 + - uid: 34 + components: + - type: Transform + pos: 30.5,43.5 + parent: 2 + - uid: 35 + components: + - type: Transform + pos: 27.5,43.5 + parent: 2 + - uid: 36 + components: + - type: Transform + pos: 31.5,43.5 + parent: 2 + - uid: 37 + components: + - type: Transform + pos: 33.5,44.5 + parent: 2 + - uid: 38 + components: + - type: Transform + pos: 32.5,44.5 + parent: 2 + - uid: 39 + components: + - type: Transform + pos: 34.5,44.5 + parent: 2 + - uid: 40 + components: + - type: Transform + pos: 35.5,44.5 + parent: 2 + - uid: 41 + components: + - type: Transform + pos: 36.5,44.5 + parent: 2 + - uid: 42 + components: + - type: Transform + pos: 36.5,45.5 + parent: 2 + - uid: 43 + components: + - type: Transform + pos: 38.5,45.5 + parent: 2 + - uid: 44 + components: + - type: Transform + pos: 37.5,45.5 + parent: 2 + - uid: 45 + components: + - type: Transform + pos: 38.5,46.5 + parent: 2 + - uid: 46 + components: + - type: Transform + pos: 38.5,47.5 + parent: 2 + - uid: 47 + components: + - type: Transform + pos: 38.5,48.5 + parent: 2 + - uid: 48 + components: + - type: Transform + pos: 38.5,48.5 + parent: 2 + - uid: 49 + components: + - type: Transform + pos: 36.5,48.5 + parent: 2 + - uid: 50 + components: + - type: Transform + pos: 37.5,48.5 + parent: 2 + - uid: 51 + components: + - type: Transform + pos: 36.5,49.5 + parent: 2 + - uid: 52 + components: + - type: Transform + pos: 34.5,49.5 + parent: 2 + - uid: 53 + components: + - type: Transform + pos: 33.5,49.5 + parent: 2 + - uid: 54 + components: + - type: Transform + pos: 35.5,49.5 + parent: 2 + - uid: 55 + components: + - type: Transform + pos: 32.5,49.5 + parent: 2 + - uid: 56 + components: + - type: Transform + pos: 31.5,49.5 + parent: 2 + - uid: 57 + components: + - type: Transform + pos: 31.5,50.5 + parent: 2 + - uid: 58 + components: + - type: Transform + pos: 30.5,50.5 + parent: 2 + - uid: 59 + components: + - type: Transform + pos: 28.5,50.5 + parent: 2 + - uid: 60 + components: + - type: Transform + pos: 27.5,50.5 + parent: 2 + - uid: 61 + components: + - type: Transform + pos: 26.5,50.5 + parent: 2 + - uid: 62 + components: + - type: Transform + pos: 29.5,50.5 + parent: 2 + - uid: 63 + components: + - type: Transform + pos: 26.5,49.5 + parent: 2 + - uid: 64 + components: + - type: Transform + pos: 25.5,49.5 + parent: 2 + - uid: 65 + components: + - type: Transform + pos: 25.5,48.5 + parent: 2 + - uid: 66 + components: + - type: Transform + pos: 24.5,48.5 + parent: 2 + - uid: 67 + components: + - type: Transform + pos: 22.5,48.5 + parent: 2 + - uid: 68 + components: + - type: Transform + pos: 21.5,48.5 + parent: 2 + - uid: 69 + components: + - type: Transform + pos: 20.5,48.5 + parent: 2 + - uid: 70 + components: + - type: Transform + pos: 23.5,48.5 + parent: 2 + - uid: 71 + components: + - type: Transform + pos: 19.5,48.5 + parent: 2 + - uid: 72 + components: + - type: Transform + pos: 19.5,49.5 + parent: 2 + - uid: 73 + components: + - type: Transform + pos: 19.5,51.5 + parent: 2 + - uid: 74 + components: + - type: Transform + pos: 19.5,50.5 + parent: 2 + - uid: 75 + components: + - type: Transform + pos: 20.5,51.5 + parent: 2 + - uid: 76 + components: + - type: Transform + pos: 22.5,51.5 + parent: 2 + - uid: 77 + components: + - type: Transform + pos: 21.5,51.5 + parent: 2 + - uid: 78 + components: + - type: Transform + pos: 22.5,52.5 + parent: 2 + - uid: 79 + components: + - type: Transform + pos: 22.5,53.5 + parent: 2 + - uid: 80 + components: + - type: Transform + pos: 23.5,53.5 + parent: 2 + - uid: 81 + components: + - type: Transform + pos: 23.5,54.5 + parent: 2 + - uid: 82 + components: + - type: Transform + pos: 23.5,56.5 + parent: 2 + - uid: 83 + components: + - type: Transform + pos: 23.5,57.5 + parent: 2 + - uid: 84 + components: + - type: Transform + pos: 23.5,58.5 + parent: 2 + - uid: 85 + components: + - type: Transform + pos: 23.5,55.5 + parent: 2 + - uid: 86 + components: + - type: Transform + pos: 23.5,60.5 + parent: 2 + - uid: 87 + components: + - type: Transform + pos: 23.5,59.5 + parent: 2 + - uid: 88 + components: + - type: Transform + pos: 23.5,61.5 + parent: 2 + - uid: 89 + components: + - type: Transform + pos: 22.5,61.5 + parent: 2 + - uid: 90 + components: + - type: Transform + pos: 20.5,61.5 + parent: 2 + - uid: 91 + components: + - type: Transform + pos: 19.5,61.5 + parent: 2 + - uid: 92 + components: + - type: Transform + pos: 18.5,61.5 + parent: 2 + - uid: 93 + components: + - type: Transform + pos: 17.5,61.5 + parent: 2 + - uid: 94 + components: + - type: Transform + pos: 15.5,61.5 + parent: 2 + - uid: 95 + components: + - type: Transform + pos: 21.5,61.5 + parent: 2 + - uid: 96 + components: + - type: Transform + pos: 13.5,61.5 + parent: 2 + - uid: 97 + components: + - type: Transform + pos: 14.5,61.5 + parent: 2 + - uid: 98 + components: + - type: Transform + pos: 12.5,61.5 + parent: 2 + - uid: 99 + components: + - type: Transform + pos: 16.5,61.5 + parent: 2 + - uid: 100 + components: + - type: Transform + pos: 12.5,60.5 + parent: 2 + - uid: 101 + components: + - type: Transform + pos: 12.5,58.5 + parent: 2 + - uid: 102 + components: + - type: Transform + pos: 12.5,57.5 + parent: 2 + - uid: 103 + components: + - type: Transform + pos: 12.5,56.5 + parent: 2 + - uid: 104 + components: + - type: Transform + pos: 12.5,59.5 + parent: 2 + - uid: 105 + components: + - type: Transform + pos: 33.5,26.5 + parent: 2 + - uid: 106 + components: + - type: Transform + pos: 34.5,26.5 + parent: 2 + - uid: 107 + components: + - type: Transform + pos: 34.5,27.5 + parent: 2 + - uid: 108 + components: + - type: Transform + pos: 34.5,29.5 + parent: 2 + - uid: 109 + components: + - type: Transform + pos: 34.5,30.5 + parent: 2 + - uid: 110 + components: + - type: Transform + pos: 34.5,31.5 + parent: 2 + - uid: 111 + components: + - type: Transform + pos: 34.5,32.5 + parent: 2 + - uid: 112 + components: + - type: Transform + pos: 34.5,33.5 + parent: 2 + - uid: 113 + components: + - type: Transform + pos: 34.5,34.5 + parent: 2 + - uid: 114 + components: + - type: Transform + pos: 34.5,28.5 + parent: 2 + - uid: 115 + components: + - type: Transform + pos: 34.5,35.5 + parent: 2 + - uid: 116 + components: + - type: Transform + pos: 33.5,35.5 + parent: 2 + - uid: 117 + components: + - type: Transform + pos: 33.5,36.5 + parent: 2 + - uid: 118 + components: + - type: Transform + pos: 32.5,36.5 + parent: 2 + - uid: 119 + components: + - type: Transform + pos: 32.5,37.5 + parent: 2 + - uid: 120 + components: + - type: Transform + pos: 30.5,37.5 + parent: 2 + - uid: 121 + components: + - type: Transform + pos: 29.5,37.5 + parent: 2 + - uid: 122 + components: + - type: Transform + pos: 29.5,38.5 + parent: 2 + - uid: 123 + components: + - type: Transform + pos: 28.5,38.5 + parent: 2 + - uid: 124 + components: + - type: Transform + pos: 27.5,38.5 + parent: 2 + - uid: 125 + components: + - type: Transform + pos: 27.5,37.5 + parent: 2 + - uid: 126 + components: + - type: Transform + pos: 26.5,37.5 + parent: 2 + - uid: 127 + components: + - type: Transform + pos: 24.5,37.5 + parent: 2 + - uid: 128 + components: + - type: Transform + pos: 23.5,37.5 + parent: 2 + - uid: 129 + components: + - type: Transform + pos: 22.5,37.5 + parent: 2 + - uid: 130 + components: + - type: Transform + pos: 25.5,37.5 + parent: 2 + - uid: 131 + components: + - type: Transform + pos: 22.5,38.5 + parent: 2 + - uid: 132 + components: + - type: Transform + pos: 22.5,39.5 + parent: 2 + - uid: 133 + components: + - type: Transform + pos: 22.5,41.5 + parent: 2 + - uid: 134 + components: + - type: Transform + pos: 22.5,40.5 + parent: 2 + - uid: 135 + components: + - type: Transform + pos: 15.5,48.5 + parent: 2 + - uid: 136 + components: + - type: Transform + pos: 12.5,53.5 + parent: 2 + - uid: 137 + components: + - type: Transform + pos: 13.5,53.5 + parent: 2 + - uid: 138 + components: + - type: Transform + pos: 13.5,51.5 + parent: 2 + - uid: 139 + components: + - type: Transform + pos: 13.5,52.5 + parent: 2 + - uid: 140 + components: + - type: Transform + pos: 14.5,51.5 + parent: 2 + - uid: 141 + components: + - type: Transform + pos: 16.5,51.5 + parent: 2 + - uid: 142 + components: + - type: Transform + pos: 15.5,51.5 + parent: 2 + - uid: 143 + components: + - type: Transform + pos: 16.5,50.5 + parent: 2 + - uid: 144 + components: + - type: Transform + pos: 16.5,49.5 + parent: 2 + - uid: 145 + components: + - type: Transform + pos: 16.5,48.5 + parent: 2 + - uid: 146 + components: + - type: Transform + pos: 14.5,48.5 + parent: 2 + - uid: 147 + components: + - type: Transform + pos: 12.5,48.5 + parent: 2 + - uid: 148 + components: + - type: Transform + pos: 11.5,48.5 + parent: 2 + - uid: 149 + components: + - type: Transform + pos: 13.5,48.5 + parent: 2 + - uid: 150 + components: + - type: Transform + pos: 11.5,47.5 + parent: 2 + - uid: 151 + components: + - type: Transform + pos: 11.5,45.5 + parent: 2 + - uid: 152 + components: + - type: Transform + pos: 11.5,44.5 + parent: 2 + - uid: 153 + components: + - type: Transform + pos: 11.5,43.5 + parent: 2 + - uid: 154 + components: + - type: Transform + pos: 11.5,42.5 + parent: 2 + - uid: 155 + components: + - type: Transform + pos: 11.5,46.5 + parent: 2 + - uid: 156 + components: + - type: Transform + pos: 10.5,42.5 + parent: 2 + - uid: 157 + components: + - type: Transform + pos: 8.5,42.5 + parent: 2 + - uid: 158 + components: + - type: Transform + pos: 7.5,42.5 + parent: 2 + - uid: 159 + components: + - type: Transform + pos: 9.5,42.5 + parent: 2 + - uid: 160 + components: + - type: Transform + pos: 7.5,41.5 + parent: 2 + - uid: 161 + components: + - type: Transform + pos: 7.5,39.5 + parent: 2 + - uid: 162 + components: + - type: Transform + pos: 7.5,38.5 + parent: 2 + - uid: 163 + components: + - type: Transform + pos: 7.5,37.5 + parent: 2 + - uid: 164 + components: + - type: Transform + pos: 7.5,40.5 + parent: 2 + - uid: 165 + components: + - type: Transform + pos: 31.5,37.5 + parent: 2 + - uid: 166 + components: + - type: Transform + pos: 25.5,42.5 + parent: 2 + - uid: 167 + components: + - type: Transform + pos: 24.5,42.5 + parent: 2 + - uid: 168 + components: + - type: Transform + pos: 23.5,42.5 + parent: 2 + - uid: 169 + components: + - type: Transform + pos: 13.5,57.5 + parent: 2 + - uid: 170 + components: + - type: Transform + pos: 21.5,57.5 + parent: 2 + - uid: 173 + components: + - type: Transform + pos: 22.5,42.5 + parent: 2 + - uid: 174 + components: + - type: Transform + pos: 22.5,57.5 + parent: 2 + - uid: 175 + components: + - type: Transform + pos: 6.5,37.5 + parent: 2 + - uid: 176 + components: + - type: Transform + pos: 14.5,57.5 + parent: 2 + - uid: 177 + components: + - type: Transform + pos: 5.5,37.5 + parent: 2 + - uid: 897 + components: + - type: Transform + pos: 0.5,34.5 + parent: 2 + - uid: 898 + components: + - type: Transform + pos: 0.5,35.5 + parent: 2 + - uid: 899 + components: + - type: Transform + pos: 0.5,37.5 + parent: 2 + - uid: 900 + components: + - type: Transform + pos: 0.5,38.5 + parent: 2 + - uid: 901 + components: + - type: Transform + pos: 0.5,39.5 + parent: 2 + - uid: 902 + components: + - type: Transform + pos: 0.5,36.5 + parent: 2 + - uid: 903 + components: + - type: Transform + pos: 0.5,40.5 + parent: 2 + - uid: 904 + components: + - type: Transform + pos: 1.5,40.5 + parent: 2 + - uid: 905 + components: + - type: Transform + pos: 2.5,40.5 + parent: 2 + - uid: 906 + components: + - type: Transform + pos: 5.5,40.5 + parent: 2 + - uid: 907 + components: + - type: Transform + pos: 3.5,40.5 + parent: 2 + - uid: 908 + components: + - type: Transform + pos: 6.5,40.5 + parent: 2 + - uid: 909 + components: + - type: Transform + pos: 4.5,40.5 + parent: 2 + - uid: 910 + components: + - type: Transform + pos: 4.5,37.5 + parent: 2 + - uid: 911 + components: + - type: Transform + pos: 4.5,34.5 + parent: 2 + - uid: 912 + components: + - type: Transform + pos: 4.5,33.5 + parent: 2 + - uid: 913 + components: + - type: Transform + pos: 4.5,35.5 + parent: 2 + - uid: 914 + components: + - type: Transform + pos: 4.5,32.5 + parent: 2 + - uid: 915 + components: + - type: Transform + pos: 4.5,36.5 + parent: 2 + - uid: 916 + components: + - type: Transform + pos: 4.5,31.5 + parent: 2 + - uid: 917 + components: + - type: Transform + pos: 5.5,31.5 + parent: 2 + - uid: 918 + components: + - type: Transform + pos: 5.5,30.5 + parent: 2 + - uid: 919 + components: + - type: Transform + pos: 6.5,30.5 + parent: 2 + - uid: 920 + components: + - type: Transform + pos: 6.5,29.5 + parent: 2 + - uid: 921 + components: + - type: Transform + pos: 7.5,29.5 + parent: 2 + - uid: 922 + components: + - type: Transform + pos: 8.5,29.5 + parent: 2 + - uid: 923 + components: + - type: Transform + pos: 8.5,28.5 + parent: 2 +- proto: CableHV + entities: + - uid: 178 + components: + - type: Transform + pos: 24.5,44.5 + parent: 2 + - uid: 183 + components: + - type: Transform + pos: 24.5,43.5 + parent: 2 +- proto: CableMV + entities: + - uid: 181 + components: + - type: Transform + pos: 25.5,43.5 + parent: 2 + - uid: 182 + components: + - type: Transform + pos: 24.5,43.5 + parent: 2 +- proto: Carpet + entities: + - uid: 185 + components: + - type: Transform + pos: 25.5,30.5 + parent: 2 + - uid: 186 + components: + - type: Transform + pos: 26.5,29.5 + parent: 2 + - uid: 187 + components: + - type: Transform + pos: 27.5,30.5 + parent: 2 + - uid: 188 + components: + - type: Transform + pos: 28.5,29.5 + parent: 2 + - uid: 189 + components: + - type: Transform + pos: 27.5,29.5 + parent: 2 + - uid: 190 + components: + - type: Transform + pos: 25.5,29.5 + parent: 2 + - uid: 191 + components: + - type: Transform + pos: 23.5,29.5 + parent: 2 + - uid: 192 + components: + - type: Transform + pos: 23.5,30.5 + parent: 2 + - uid: 193 + components: + - type: Transform + pos: 24.5,29.5 + parent: 2 + - uid: 194 + components: + - type: Transform + pos: 24.5,30.5 + parent: 2 + - uid: 195 + components: + - type: Transform + pos: 26.5,30.5 + parent: 2 + - uid: 196 + components: + - type: Transform + pos: 27.5,31.5 + parent: 2 + - uid: 197 + components: + - type: Transform + pos: 28.5,30.5 + parent: 2 + - uid: 198 + components: + - type: Transform + pos: 26.5,31.5 + parent: 2 + - uid: 199 + components: + - type: Transform + pos: 24.5,31.5 + parent: 2 + - uid: 200 + components: + - type: Transform + pos: 25.5,31.5 + parent: 2 +- proto: ChairWood + entities: + - uid: 201 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,33.5 + parent: 2 + - uid: 202 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 29.5,32.5 + parent: 2 + - uid: 203 + components: + - type: Transform + pos: 29.5,34.5 + parent: 2 + - uid: 204 + components: + - type: Transform + pos: 27.5,34.5 + parent: 2 + - uid: 205 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 26.5,33.5 + parent: 2 + - uid: 206 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 27.5,32.5 + parent: 2 + - uid: 207 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,33.5 + parent: 2 + - uid: 208 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,31.5 + parent: 2 + - uid: 209 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 20.5,31.5 + parent: 2 + - uid: 210 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 20.5,33.5 + parent: 2 + - uid: 211 + components: + - type: Transform + pos: 21.5,34.5 + parent: 2 + - uid: 212 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 21.5,30.5 + parent: 2 +- proto: ComputerBroken + entities: + - uid: 850 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 36.5,46.5 + parent: 2 +- proto: CrateTrashCart + entities: + - uid: 885 + components: + - type: Transform + pos: 3.5,31.5 + parent: 2 + - uid: 958 + components: + - type: Transform + pos: 20.5,25.5 + parent: 2 +- proto: FenceWoodHighGate + entities: + - uid: 879 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 6.5,26.5 + parent: 2 + - uid: 890 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 10.5,25.5 + parent: 2 +- proto: FenceWoodSmallStraight + entities: + - uid: 878 + components: + - type: Transform + pos: 6.5,27.5 + parent: 2 + - uid: 880 + components: + - type: Transform + pos: 6.5,25.5 + parent: 2 + - uid: 881 + components: + - type: Transform + pos: 10.5,27.5 + parent: 2 + - uid: 882 + components: + - type: Transform + pos: 10.5,26.5 + parent: 2 + - uid: 884 + components: + - type: Transform + pos: 6.5,28.5 + parent: 2 +- proto: FloorDrain + entities: + - uid: 172 + components: + - type: Transform + pos: 36.5,45.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 179 + components: + - type: Transform + pos: 3.5,28.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 180 + components: + - type: Transform + pos: 15.5,22.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 400 + components: + - type: Transform + pos: 18.5,21.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 407 + components: + - type: Transform + pos: 36.5,48.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 412 + components: + - type: Transform + pos: 32.5,48.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 413 + components: + - type: Transform + pos: 32.5,45.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 442 + components: + - type: Transform + pos: 12.5,23.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 467 + components: + - type: Transform + pos: 25.5,45.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 468 + components: + - type: Transform + pos: 25.5,48.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 478 + components: + - type: Transform + pos: 29.5,50.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 479 + components: + - type: Transform + pos: 29.5,43.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 876 + components: + - type: Transform + pos: 22.5,45.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 927 + components: + - type: Transform + pos: 19.5,45.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 928 + components: + - type: Transform + pos: 19.5,48.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 930 + components: + - type: Transform + pos: 22.5,48.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 931 + components: + - type: Transform + pos: 16.5,48.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 932 + components: + - type: Transform + pos: 16.5,45.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 933 + components: + - type: Transform + pos: 11.5,45.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 934 + components: + - type: Transform + pos: 14.5,48.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 935 + components: + - type: Transform + pos: 11.5,42.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 936 + components: + - type: Transform + pos: 14.5,42.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 937 + components: + - type: Transform + pos: 11.5,38.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 938 + components: + - type: Transform + pos: 14.5,38.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 939 + components: + - type: Transform + pos: 15.5,34.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 940 + components: + - type: Transform + pos: 10.5,34.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 941 + components: + - type: Transform + pos: 8.5,42.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 942 + components: + - type: Transform + pos: 7.5,39.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 943 + components: + - type: Transform + pos: 8.5,35.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 944 + components: + - type: Transform + pos: 17.5,35.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 945 + components: + - type: Transform + pos: 18.5,39.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 946 + components: + - type: Transform + pos: 17.5,42.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 948 + components: + - type: Transform + pos: 13.5,31.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 949 + components: + - type: Transform + pos: 11.5,30.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 950 + components: + - type: Transform + pos: 6.5,29.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 951 + components: + - type: Transform + pos: 4.5,31.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 953 + components: + - type: Transform + pos: 4.5,37.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 954 + components: + - type: Transform + pos: 5.5,40.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 959 + components: + - type: Transform + pos: 2.5,40.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 960 + components: + - type: Transform + pos: 0.5,38.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 961 + components: + - type: Transform + pos: 0.5,34.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 962 + components: + - type: Transform + pos: 0.5,31.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 963 + components: + - type: Transform + pos: 0.5,28.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 964 + components: + - type: Transform + pos: 2.5,25.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 965 + components: + - type: Transform + pos: 4.5,24.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 966 + components: + - type: Transform + pos: 7.5,24.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 967 + components: + - type: Transform + pos: 10.5,24.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 968 + components: + - type: Transform + pos: 10.5,28.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 969 + components: + - type: Transform + pos: 13.5,28.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 970 + components: + - type: Transform + pos: 16.5,26.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 971 + components: + - type: Transform + pos: 19.5,26.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 972 + components: + - type: Transform + pos: 22.5,27.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 973 + components: + - type: Transform + pos: 30.5,29.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 974 + components: + - type: Transform + pos: 21.5,29.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 975 + components: + - type: Transform + pos: 29.5,27.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 976 + components: + - type: Transform + pos: 33.5,26.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 977 + components: + - type: Transform + pos: 34.5,29.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 978 + components: + - type: Transform + pos: 34.5,32.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 979 + components: + - type: Transform + pos: 34.5,35.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 980 + components: + - type: Transform + pos: 32.5,37.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 981 + components: + - type: Transform + pos: 29.5,37.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 982 + components: + - type: Transform + pos: 26.5,37.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 983 + components: + - type: Transform + pos: 22.5,37.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 984 + components: + - type: Transform + pos: 16.5,56.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 985 + components: + - type: Transform + pos: 16.5,58.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 986 + components: + - type: Transform + pos: 19.5,58.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 987 + components: + - type: Transform + pos: 19.5,56.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 988 + components: + - type: Transform + pos: 12.5,56.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 989 + components: + - type: Transform + pos: 12.5,58.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 990 + components: + - type: Transform + pos: 23.5,58.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 991 + components: + - type: Transform + pos: 23.5,56.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 992 + components: + - type: Transform + pos: 13.5,61.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 993 + components: + - type: Transform + pos: 16.5,61.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 994 + components: + - type: Transform + pos: 19.5,61.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 995 + components: + - type: Transform + pos: 22.5,61.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 996 + components: + - type: Transform + pos: 22.5,53.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 997 + components: + - type: Transform + pos: 20.5,51.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 998 + components: + - type: Transform + pos: 15.5,51.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 999 + components: + - type: Transform + pos: 13.5,53.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1000 + components: + - type: Transform + pos: 30.5,45.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1001 + components: + - type: Transform + pos: 27.5,45.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1002 + components: + - type: Transform + pos: 27.5,48.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1003 + components: + - type: Transform + pos: 29.5,33.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1004 + components: + - type: Transform + pos: 27.5,33.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1005 + components: + - type: Transform + pos: 21.5,31.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1006 + components: + - type: Transform + pos: 21.5,33.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1007 + components: + - type: Transform + pos: 16.5,30.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1008 + components: + - type: Transform + pos: 19.5,35.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1009 + components: + - type: Transform + pos: 10.5,37.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1010 + components: + - type: Transform + pos: 15.5,37.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1011 + components: + - type: Transform + pos: 21.5,20.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1012 + components: + - type: Transform + pos: 24.5,19.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1013 + components: + - type: Transform + pos: 27.5,18.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1014 + components: + - type: Transform + pos: 30.5,19.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1015 + components: + - type: Transform + pos: 33.5,20.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1016 + components: + - type: Transform + pos: 35.5,23.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1019 + components: + - type: Transform + pos: 20.5,17.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1020 + components: + - type: Transform + pos: 17.5,18.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1021 + components: + - type: Transform + pos: 14.5,19.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1022 + components: + - type: Transform + pos: 11.5,20.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1023 + components: + - type: Transform + pos: 23.5,16.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1024 + components: + - type: Transform + pos: 27.5,16.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1025 + components: + - type: Transform + pos: 30.5,16.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1026 + components: + - type: Transform + pos: 33.5,16.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1027 + components: + - type: Transform + pos: 35.5,17.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1028 + components: + - type: Transform + pos: 37.5,20.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1029 + components: + - type: Transform + pos: 37.5,24.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1030 + components: + - type: Transform + pos: 37.5,27.5 + parent: 2 + - type: Fixtures + fixtures: {} + - uid: 1031 + components: + - type: Transform + pos: 36.5,30.5 + parent: 2 + - type: Fixtures + fixtures: {} +- proto: FloorWaterEntity + entities: + - uid: 213 + components: + - type: Transform + pos: 35.5,25.5 + parent: 2 + - uid: 214 + components: + - type: Transform + pos: 35.5,23.5 + parent: 2 + - uid: 215 + components: + - type: Transform + pos: 35.5,21.5 + parent: 2 + - uid: 216 + components: + - type: Transform + pos: 35.5,24.5 + parent: 2 + - uid: 217 + components: + - type: Transform + pos: 35.5,22.5 + parent: 2 + - uid: 218 + components: + - type: Transform + pos: 35.5,19.5 + parent: 2 + - uid: 219 + components: + - type: Transform + pos: 35.5,20.5 + parent: 2 + - uid: 220 + components: + - type: Transform + pos: 36.5,25.5 + parent: 2 + - uid: 221 + components: + - type: Transform + pos: 35.5,18.5 + parent: 2 + - uid: 222 + components: + - type: Transform + pos: 36.5,23.5 + parent: 2 + - uid: 223 + components: + - type: Transform + pos: 36.5,21.5 + parent: 2 + - uid: 224 + components: + - type: Transform + pos: 36.5,22.5 + parent: 2 + - uid: 225 + components: + - type: Transform + pos: 36.5,20.5 + parent: 2 + - uid: 226 + components: + - type: Transform + pos: 36.5,24.5 + parent: 2 + - uid: 227 + components: + - type: Transform + pos: 24.5,19.5 + parent: 2 + - uid: 228 + components: + - type: Transform + pos: 21.5,20.5 + parent: 2 + - uid: 229 + components: + - type: Transform + pos: 24.5,18.5 + parent: 2 + - uid: 230 + components: + - type: Transform + pos: 23.5,19.5 + parent: 2 + - uid: 231 + components: + - type: Transform + pos: 19.5,20.5 + parent: 2 + - uid: 232 + components: + - type: Transform + pos: 19.5,21.5 + parent: 2 + - uid: 233 + components: + - type: Transform + pos: 19.5,18.5 + parent: 2 + - uid: 234 + components: + - type: Transform + pos: 16.5,20.5 + parent: 2 + - uid: 235 + components: + - type: Transform + pos: 20.5,18.5 + parent: 2 + - uid: 236 + components: + - type: Transform + pos: 21.5,18.5 + parent: 2 + - uid: 237 + components: + - type: Transform + pos: 22.5,18.5 + parent: 2 + - uid: 238 + components: + - type: Transform + pos: 24.5,17.5 + parent: 2 + - uid: 239 + components: + - type: Transform + pos: 21.5,17.5 + parent: 2 + - uid: 240 + components: + - type: Transform + pos: 21.5,19.5 + parent: 2 + - uid: 241 + components: + - type: Transform + pos: 18.5,19.5 + parent: 2 + - uid: 242 + components: + - type: Transform + pos: 22.5,17.5 + parent: 2 + - uid: 243 + components: + - type: Transform + pos: 17.5,20.5 + parent: 2 + - uid: 244 + components: + - type: Transform + pos: 18.5,20.5 + parent: 2 + - uid: 245 + components: + - type: Transform + pos: 23.5,17.5 + parent: 2 + - uid: 246 + components: + - type: Transform + pos: 17.5,19.5 + parent: 2 + - uid: 247 + components: + - type: Transform + pos: 16.5,19.5 + parent: 2 + - uid: 248 + components: + - type: Transform + pos: 20.5,20.5 + parent: 2 + - uid: 249 + components: + - type: Transform + pos: 26.5,17.5 + parent: 2 + - uid: 250 + components: + - type: Transform + pos: 25.5,18.5 + parent: 2 + - uid: 251 + components: + - type: Transform + pos: 28.5,17.5 + parent: 2 + - uid: 252 + components: + - type: Transform + pos: 25.5,17.5 + parent: 2 + - uid: 253 + components: + - type: Transform + pos: 20.5,21.5 + parent: 2 + - uid: 254 + components: + - type: Transform + pos: 12.5,21.5 + parent: 2 + - uid: 255 + components: + - type: Transform + pos: 15.5,21.5 + parent: 2 + - uid: 256 + components: + - type: Transform + pos: 16.5,21.5 + parent: 2 + - uid: 257 + components: + - type: Transform + pos: 18.5,21.5 + parent: 2 + - uid: 258 + components: + - type: Transform + pos: 17.5,21.5 + parent: 2 + - uid: 259 + components: + - type: Transform + pos: 27.5,17.5 + parent: 2 + - uid: 260 + components: + - type: Transform + pos: 20.5,19.5 + parent: 2 + - uid: 261 + components: + - type: Transform + pos: 23.5,18.5 + parent: 2 + - uid: 262 + components: + - type: Transform + pos: 19.5,19.5 + parent: 2 + - uid: 263 + components: + - type: Transform + pos: 22.5,19.5 + parent: 2 + - uid: 264 + components: + - type: Transform + pos: 13.5,21.5 + parent: 2 + - uid: 265 + components: + - type: Transform + pos: 34.5,18.5 + parent: 2 + - uid: 266 + components: + - type: Transform + pos: 33.5,18.5 + parent: 2 + - uid: 267 + components: + - type: Transform + pos: 33.5,17.5 + parent: 2 + - uid: 268 + components: + - type: Transform + pos: 32.5,18.5 + parent: 2 + - uid: 269 + components: + - type: Transform + pos: 32.5,17.5 + parent: 2 + - uid: 270 + components: + - type: Transform + pos: 31.5,18.5 + parent: 2 + - uid: 271 + components: + - type: Transform + pos: 30.5,18.5 + parent: 2 + - uid: 272 + components: + - type: Transform + pos: 30.5,17.5 + parent: 2 + - uid: 273 + components: + - type: Transform + pos: 29.5,18.5 + parent: 2 + - uid: 274 + components: + - type: Transform + pos: 29.5,17.5 + parent: 2 + - uid: 275 + components: + - type: Transform + pos: 31.5,17.5 + parent: 2 + - uid: 276 + components: + - type: Transform + pos: 28.5,18.5 + parent: 2 + - uid: 277 + components: + - type: Transform + pos: 27.5,18.5 + parent: 2 + - uid: 278 + components: + - type: Transform + pos: 26.5,18.5 + parent: 2 + - uid: 279 + components: + - type: Transform + pos: 34.5,19.5 + parent: 2 + - uid: 280 + components: + - type: Transform + pos: 33.5,19.5 + parent: 2 + - uid: 281 + components: + - type: Transform + pos: 34.5,20.5 + parent: 2 + - uid: 282 + components: + - type: Transform + pos: 34.5,21.5 + parent: 2 + - uid: 283 + components: + - type: Transform + pos: 34.5,22.5 + parent: 2 + - uid: 284 + components: + - type: Transform + pos: 33.5,20.5 + parent: 2 + - uid: 285 + components: + - type: Transform + pos: 32.5,19.5 + parent: 2 + - uid: 286 + components: + - type: Transform + pos: 31.5,19.5 + parent: 2 + - uid: 287 + components: + - type: Transform + pos: 30.5,19.5 + parent: 2 + - uid: 288 + components: + - type: Transform + pos: 35.5,26.5 + parent: 2 + - uid: 289 + components: + - type: Transform + pos: 14.5,21.5 + parent: 2 + - uid: 290 + components: + - type: Transform + pos: 15.5,20.5 + parent: 2 + - uid: 291 + components: + - type: Transform + pos: 13.5,20.5 + parent: 2 + - uid: 292 + components: + - type: Transform + pos: 14.5,20.5 + parent: 2 + - uid: 293 + components: + - type: Transform + pos: 12.5,20.5 + parent: 2 + - uid: 294 + components: + - type: Transform + pos: 15.5,22.5 + parent: 2 + - uid: 295 + components: + - type: Transform + pos: 16.5,22.5 + parent: 2 + - uid: 296 + components: + - type: Transform + pos: 17.5,22.5 + parent: 2 + - uid: 297 + components: + - type: Transform + pos: 11.5,21.5 + parent: 2 + - uid: 298 + components: + - type: Transform + pos: 9.5,21.5 + parent: 2 + - uid: 299 + components: + - type: Transform + pos: 8.5,21.5 + parent: 2 + - uid: 300 + components: + - type: Transform + pos: 10.5,21.5 + parent: 2 + - uid: 301 + components: + - type: Transform + pos: 14.5,22.5 + parent: 2 + - uid: 302 + components: + - type: Transform + pos: 12.5,22.5 + parent: 2 + - uid: 303 + components: + - type: Transform + pos: 13.5,22.5 + parent: 2 + - uid: 304 + components: + - type: Transform + pos: 11.5,22.5 + parent: 2 + - uid: 305 + components: + - type: Transform + pos: 10.5,22.5 + parent: 2 + - uid: 306 + components: + - type: Transform + pos: 9.5,22.5 + parent: 2 + - uid: 307 + components: + - type: Transform + pos: 8.5,22.5 + parent: 2 + - uid: 308 + components: + - type: Transform + pos: 6.5,22.5 + parent: 2 + - uid: 309 + components: + - type: Transform + pos: 7.5,22.5 + parent: 2 + - uid: 310 + components: + - type: Transform + pos: 36.5,26.5 + parent: 2 + - uid: 311 + components: + - type: Transform + pos: 3.5,23.5 + parent: 2 + - uid: 312 + components: + - type: Transform + pos: 12.5,23.5 + parent: 2 + - uid: 313 + components: + - type: Transform + pos: 10.5,23.5 + parent: 2 + - uid: 314 + components: + - type: Transform + pos: 9.5,23.5 + parent: 2 + - uid: 315 + components: + - type: Transform + pos: 8.5,23.5 + parent: 2 + - uid: 316 + components: + - type: Transform + pos: 7.5,23.5 + parent: 2 + - uid: 317 + components: + - type: Transform + pos: 6.5,23.5 + parent: 2 + - uid: 318 + components: + - type: Transform + pos: 11.5,23.5 + parent: 2 + - uid: 319 + components: + - type: Transform + pos: 7.5,21.5 + parent: 2 + - uid: 320 + components: + - type: Transform + pos: 6.5,21.5 + parent: 2 + - uid: 321 + components: + - type: Transform + pos: 4.5,22.5 + parent: 2 + - uid: 322 + components: + - type: Transform + pos: 5.5,21.5 + parent: 2 + - uid: 323 + components: + - type: Transform + pos: 4.5,23.5 + parent: 2 + - uid: 324 + components: + - type: Transform + pos: 3.5,22.5 + parent: 2 + - uid: 325 + components: + - type: Transform + pos: 4.5,21.5 + parent: 2 + - uid: 326 + components: + - type: Transform + pos: 5.5,23.5 + parent: 2 + - uid: 327 + components: + - type: Transform + pos: 5.5,22.5 + parent: 2 + - uid: 328 + components: + - type: Transform + pos: 3.5,21.5 + parent: 2 + - uid: 329 + components: + - type: Transform + pos: 36.5,27.5 + parent: 2 + - uid: 330 + components: + - type: Transform + pos: 36.5,29.5 + parent: 2 + - uid: 331 + components: + - type: Transform + pos: 35.5,27.5 + parent: 2 + - uid: 332 + components: + - type: Transform + pos: 35.5,28.5 + parent: 2 + - uid: 333 + components: + - type: Transform + pos: 35.5,29.5 + parent: 2 + - uid: 334 + components: + - type: Transform + pos: 36.5,28.5 + parent: 2 + - uid: 335 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 22.5,20.5 + parent: 2 +- proto: GeneratorRTG + entities: + - uid: 336 + components: + - type: Transform + pos: 24.5,44.5 + parent: 2 +- proto: GlassBoxBroken + entities: + - uid: 337 + components: + - type: Transform + pos: 16.5,30.5 + parent: 2 +- proto: HighSecCentralCommandLocked + entities: + - uid: 338 + components: + - type: Transform + pos: 28.5,37.5 + parent: 2 +- proto: hydroponicsSoil + entities: + - uid: 877 + components: + - type: Transform + pos: 7.5,27.5 + parent: 2 + - type: PlantHolder + weedLevel: 18 + - uid: 886 + components: + - type: Transform + pos: 9.5,27.5 + parent: 2 + - type: PlantHolder + weedLevel: 14 + - uid: 887 + components: + - type: Transform + pos: 9.5,25.5 + parent: 2 + - type: PlantHolder + weedLevel: 24 + - uid: 888 + components: + - type: Transform + pos: 7.5,25.5 + parent: 2 + - type: PlantHolder + weedLevel: 18 +- proto: LockerBotanist + entities: + - uid: 891 + components: + - type: Transform + pos: 8.5,25.5 + parent: 2 +- proto: MachineFrameDestroyed + entities: + - uid: 849 + components: + - type: Transform + pos: 36.5,47.5 + parent: 2 +- proto: PlastitaniumWindowIndestructible + entities: + - uid: 339 + components: + - type: Transform + pos: 4.5,34.5 + parent: 2 + - uid: 340 + components: + - type: Transform + pos: 4.5,32.5 + parent: 2 + - uid: 341 + components: + - type: Transform + pos: 4.5,33.5 + parent: 2 + - uid: 342 + components: + - type: Transform + pos: 4.5,36.5 + parent: 2 + - uid: 343 + components: + - type: Transform + pos: 4.5,35.5 + parent: 2 + - uid: 344 + components: + - type: Transform + pos: 7.5,29.5 + parent: 2 + - uid: 345 + components: + - type: Transform + pos: 9.5,29.5 + parent: 2 + - uid: 346 + components: + - type: Transform + pos: 8.5,29.5 + parent: 2 + - uid: 347 + components: + - type: Transform + pos: 23.5,28.5 + parent: 2 + - uid: 348 + components: + - type: Transform + pos: 25.5,28.5 + parent: 2 + - uid: 349 + components: + - type: Transform + pos: 26.5,28.5 + parent: 2 + - uid: 350 + components: + - type: Transform + pos: 27.5,28.5 + parent: 2 + - uid: 351 + components: + - type: Transform + pos: 28.5,28.5 + parent: 2 + - uid: 352 + components: + - type: Transform + pos: 24.5,28.5 + parent: 2 + - uid: 353 + components: + - type: Transform + pos: 18.5,44.5 + parent: 2 + - uid: 354 + components: + - type: Transform + pos: 18.5,43.5 + parent: 2 + - uid: 355 + components: + - type: Transform + pos: 15.5,43.5 + parent: 2 + - uid: 356 + components: + - type: Transform + pos: 15.5,44.5 + parent: 2 +- proto: PlushieLamp + entities: + - uid: 357 + components: + - type: Transform + pos: 21.5,32.5 + parent: 2 + - type: Physics + canCollide: False + - uid: 358 + components: + - type: Transform + pos: 28.5,33.5 + parent: 2 + - type: Physics + canCollide: False +- proto: PlushieSharkBlue + entities: + - uid: 359 + components: + - type: Transform + pos: 3.5,22.5 + parent: 2 + - type: Physics + canCollide: False +- proto: PlushieSpaceLizard + entities: + - uid: 360 + components: + - type: Transform + pos: 36.5,19.5 + parent: 2 + - type: Physics + canCollide: False +- proto: PortableGeneratorJrPacman + entities: + - uid: 404 + components: + - type: Transform + pos: 27.5,45.5 + parent: 2 +- proto: ProtolatheHyperConvection + entities: + - uid: 873 + components: + - type: Transform + pos: 34.5,45.5 + parent: 2 +- proto: RadiationCollectorNoTank + entities: + - uid: 403 + components: + - type: Transform + pos: 27.5,48.5 + parent: 2 + - uid: 852 + components: + - type: Transform + pos: 28.5,49.5 + parent: 2 + - uid: 853 + components: + - type: Transform + pos: 29.5,49.5 + parent: 2 +- proto: Railing + entities: + - uid: 361 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 34.5,24.5 + parent: 2 + - uid: 362 + components: + - type: Transform + pos: 12.5,24.5 + parent: 2 + - uid: 363 + components: + - type: Transform + pos: 11.5,24.5 + parent: 2 + - uid: 364 + components: + - type: Transform + pos: 14.5,23.5 + parent: 2 + - uid: 365 + components: + - type: Transform + pos: 15.5,23.5 + parent: 2 + - uid: 366 + components: + - type: Transform + pos: 16.5,23.5 + parent: 2 + - uid: 367 + components: + - type: Transform + pos: 17.5,23.5 + parent: 2 + - uid: 368 + components: + - type: Transform + pos: 19.5,22.5 + parent: 2 + - uid: 369 + components: + - type: Transform + pos: 20.5,22.5 + parent: 2 + - uid: 370 + components: + - type: Transform + pos: 24.5,20.5 + parent: 2 + - uid: 371 + components: + - type: Transform + pos: 25.5,20.5 + parent: 2 + - uid: 372 + components: + - type: Transform + pos: 26.5,20.5 + parent: 2 + - uid: 373 + components: + - type: Transform + pos: 27.5,20.5 + parent: 2 + - uid: 374 + components: + - type: Transform + pos: 29.5,20.5 + parent: 2 + - uid: 375 + components: + - type: Transform + pos: 28.5,20.5 + parent: 2 + - uid: 376 + components: + - type: Transform + pos: 30.5,20.5 + parent: 2 + - uid: 377 + components: + - type: Transform + pos: 31.5,20.5 + parent: 2 + - uid: 378 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 34.5,25.5 + parent: 2 + - uid: 379 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 33.5,22.5 + parent: 2 +- proto: RailingCorner + entities: + - uid: 380 + components: + - type: Transform + pos: 34.5,23.5 + parent: 2 +- proto: RailingCornerSmall + entities: + - uid: 381 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 13.5,23.5 + parent: 2 + - uid: 382 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 23.5,20.5 + parent: 2 + - uid: 383 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 18.5,22.5 + parent: 2 + - uid: 384 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 13.5,24.5 + parent: 2 + - uid: 385 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,23.5 + parent: 2 + - uid: 386 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 21.5,22.5 + parent: 2 + - uid: 387 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 32.5,20.5 + parent: 2 + - uid: 388 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 33.5,23.5 + parent: 2 + - uid: 389 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 33.5,21.5 + parent: 2 +- proto: RandomPosterAny + entities: + - uid: 390 + components: + - type: Transform + pos: 14.5,42.5 + parent: 2 + - uid: 391 + components: + - type: Transform + pos: 14.5,61.5 + parent: 2 + - uid: 392 + components: + - type: Transform + pos: 20.5,48.5 + parent: 2 + - uid: 393 + components: + - type: Transform + pos: 21.5,48.5 + parent: 2 + - uid: 394 + components: + - type: Transform + pos: 25.5,37.5 + parent: 2 + - uid: 395 + components: + - type: Transform + pos: 12.5,28.5 + parent: 2 + - uid: 396 + components: + - type: Transform + pos: 0.5,30.5 + parent: 2 + - uid: 397 + components: + - type: Transform + pos: 4.5,40.5 + parent: 2 + - uid: 892 + components: + - type: Transform + pos: 7.5,33.5 + parent: 2 + - uid: 893 + components: + - type: Transform + pos: 10.5,33.5 + parent: 2 +- proto: RandomVending + entities: + - uid: 894 + components: + - type: Transform + pos: 1.5,36.5 + parent: 2 + - uid: 895 + components: + - type: Transform + pos: 1.5,35.5 + parent: 2 + - uid: 896 + components: + - type: Transform + pos: 1.5,34.5 + parent: 2 +- proto: SeedExtractor + entities: + - uid: 883 + components: + - type: Transform + pos: 8.5,28.5 + parent: 2 +- proto: SignBiohazard + entities: + - uid: 398 + components: + - type: Transform + pos: 34.5,26.5 + parent: 2 + - uid: 399 + components: + - type: Transform + pos: 10.5,24.5 + parent: 2 +- proto: SpawnPointLatejoin + entities: + - uid: 401 + components: + - type: Transform + pos: 15.5,57.5 + parent: 2 + - uid: 402 + components: + - type: Transform + pos: 18.5,49.5 + parent: 2 + - uid: 405 + components: + - type: Transform + pos: 16.5,38.5 + parent: 2 + - uid: 406 + components: + - type: Transform + pos: 9.5,38.5 + parent: 2 + - uid: 408 + components: + - type: Transform + pos: 6.5,35.5 + parent: 2 + - uid: 409 + components: + - type: Transform + pos: 4.5,29.5 + parent: 2 + - uid: 410 + components: + - type: Transform + pos: 14.5,27.5 + parent: 2 + - uid: 411 + components: + - type: Transform + pos: 21.5,27.5 + parent: 2 + - uid: 414 + components: + - type: Transform + pos: 30.5,27.5 + parent: 2 + - uid: 415 + components: + - type: Transform + pos: 33.5,25.5 + parent: 2 + - uid: 416 + components: + - type: Transform + pos: 20.5,57.5 + parent: 2 + - uid: 429 + components: + - type: Transform + pos: 30.5,48.5 + parent: 2 + - uid: 848 + components: + - type: Transform + pos: 35.5,47.5 + parent: 2 +- proto: SpawnPointObserver + entities: + - uid: 417 + components: + - type: Transform + pos: 12.5,33.5 + parent: 2 +- proto: SpawnPointPassenger + entities: + - uid: 418 + components: + - type: Transform + pos: 6.5,35.5 + parent: 2 + - uid: 419 + components: + - type: Transform + pos: 9.5,38.5 + parent: 2 + - uid: 420 + components: + - type: Transform + pos: 16.5,38.5 + parent: 2 + - uid: 421 + components: + - type: Transform + pos: 12.5,33.5 + parent: 2 + - uid: 422 + components: + - type: Transform + pos: 4.5,29.5 + parent: 2 + - uid: 423 + components: + - type: Transform + pos: 21.5,27.5 + parent: 2 + - uid: 424 + components: + - type: Transform + pos: 30.5,27.5 + parent: 2 + - uid: 425 + components: + - type: Transform + pos: 28.5,32.5 + parent: 2 + - uid: 426 + components: + - type: Transform + pos: 22.5,32.5 + parent: 2 + - uid: 427 + components: + - type: Transform + pos: 15.5,57.5 + parent: 2 + - uid: 430 + components: + - type: Transform + pos: 33.5,25.5 + parent: 2 + - uid: 431 + components: + - type: Transform + pos: 14.5,27.5 + parent: 2 + - uid: 432 + components: + - type: Transform + pos: 18.5,49.5 + parent: 2 + - uid: 433 + components: + - type: Transform + pos: 20.5,57.5 + parent: 2 + - uid: 874 + components: + - type: Transform + pos: 30.5,48.5 + parent: 2 + - uid: 875 + components: + - type: Transform + pos: 35.5,47.5 + parent: 2 +- proto: StairWhite + entities: + - uid: 434 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 12.5,34.5 + parent: 2 + - uid: 435 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 11.5,34.5 + parent: 2 + - uid: 436 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 13.5,34.5 + parent: 2 + - uid: 437 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 14.5,34.5 + parent: 2 + - uid: 438 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 14.5,41.5 + parent: 2 + - uid: 439 + components: + - type: Transform + pos: 13.5,40.5 + parent: 2 + - uid: 440 + components: + - type: Transform + pos: 12.5,40.5 + parent: 2 + - uid: 441 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 11.5,41.5 + parent: 2 +- proto: SubstationBasic + entities: + - uid: 184 + components: + - type: Transform + pos: 24.5,43.5 + parent: 2 +- proto: TableReinforced + entities: + - uid: 443 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 21.5,31.5 + parent: 2 + - uid: 444 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 21.5,32.5 + parent: 2 + - uid: 445 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 29.5,33.5 + parent: 2 + - uid: 446 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 21.5,33.5 + parent: 2 + - uid: 447 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 27.5,33.5 + parent: 2 + - uid: 448 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 28.5,33.5 + parent: 2 +- proto: TintedWindow + entities: + - uid: 449 + components: + - type: Transform + pos: 19.5,44.5 + parent: 2 + - uid: 450 + components: + - type: Transform + pos: 19.5,43.5 + parent: 2 + - uid: 451 + components: + - type: Transform + pos: 14.5,43.5 + parent: 2 + - uid: 452 + components: + - type: Transform + pos: 14.5,44.5 + parent: 2 +- proto: ToyFigurineWarden + entities: + - uid: 453 + components: + - type: Transform + pos: 16.894085,43.425842 + parent: 2 + - type: Physics + canCollide: False +- proto: Truncheon + entities: + - uid: 454 + components: + - type: Transform + pos: 17.44096,43.363342 + parent: 2 + - type: Physics + canCollide: False +- proto: VendingMachineSeeds + entities: + - uid: 889 + components: + - type: Transform + pos: 8.5,27.5 + parent: 2 + - type: Advertise + nextAdvertisementTime: 6277.3942716 +- proto: WallPlastitaniumDiagonalIndestructible + entities: + - uid: 171 + components: + - type: Transform + pos: 16.5,35.5 + parent: 2 + - uid: 455 + components: + - type: Transform + pos: 31.5,45.5 + parent: 2 + - uid: 456 + components: + - type: Transform + pos: 37.5,46.5 + parent: 2 + - uid: 457 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 31.5,48.5 + parent: 2 + - uid: 458 + components: + - type: Transform + pos: 30.5,44.5 + parent: 2 + - uid: 459 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 33.5,45.5 + parent: 2 + - uid: 460 + components: + - type: Transform + pos: 35.5,45.5 + parent: 2 + - uid: 461 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 30.5,49.5 + parent: 2 + - uid: 462 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 33.5,48.5 + parent: 2 + - uid: 463 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 37.5,47.5 + parent: 2 + - uid: 464 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 35.5,48.5 + parent: 2 + - uid: 465 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 26.5,45.5 + parent: 2 + - uid: 466 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 27.5,44.5 + parent: 2 + - uid: 469 + components: + - type: Transform + pos: 10.5,30.5 + parent: 2 + - uid: 470 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.5,30.5 + parent: 2 + - uid: 471 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,29.5 + parent: 2 + - uid: 472 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 5.5,31.5 + parent: 2 + - uid: 473 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,30.5 + parent: 2 + - uid: 474 + components: + - type: Transform + pos: 12.5,31.5 + parent: 2 + - uid: 475 + components: + - type: Transform + pos: 14.5,32.5 + parent: 2 + - uid: 476 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 9.5,35.5 + parent: 2 + - uid: 477 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.5,36.5 + parent: 2 + - uid: 480 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 18.5,34.5 + parent: 2 + - uid: 481 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 17.5,33.5 + parent: 2 + - uid: 482 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 16.5,32.5 + parent: 2 + - uid: 483 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 16.5,28.5 + parent: 2 + - uid: 484 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,27.5 + parent: 2 + - uid: 485 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 31.5,36.5 + parent: 2 + - uid: 486 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 32.5,35.5 + parent: 2 + - uid: 487 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 33.5,34.5 + parent: 2 + - uid: 488 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 29.5,26.5 + parent: 2 + - uid: 489 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 22.5,26.5 + parent: 2 + - uid: 490 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 21.5,28.5 + parent: 2 + - uid: 491 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,29.5 + parent: 2 + - uid: 492 + components: + - type: Transform + pos: 29.5,29.5 + parent: 2 + - uid: 493 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 30.5,28.5 + parent: 2 + - uid: 494 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 16.5,19.5 + parent: 2 + - uid: 495 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 19.5,18.5 + parent: 2 + - uid: 496 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 21.5,17.5 + parent: 2 + - uid: 497 + components: + - type: Transform + pos: 35.5,18.5 + parent: 2 + - uid: 498 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,27.5 + parent: 2 + - uid: 499 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,26.5 + parent: 2 + - uid: 500 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,25.5 + parent: 2 + - uid: 501 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 13.5,54.5 + parent: 2 + - uid: 502 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.5,52.5 + parent: 2 + - uid: 503 + components: + - type: Transform + pos: 21.5,52.5 + parent: 2 + - uid: 504 + components: + - type: Transform + pos: 22.5,54.5 + parent: 2 + - uid: 929 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 26.5,48.5 + parent: 2 + - uid: 947 + components: + - type: Transform + pos: 17.5,36.5 + parent: 2 + - uid: 952 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 27.5,49.5 + parent: 2 +- proto: WallPlastitaniumIndestructible + entities: + - uid: 505 + components: + - type: Transform + pos: 30.5,29.5 + parent: 2 + - uid: 506 + components: + - type: Transform + pos: 21.5,29.5 + parent: 2 + - uid: 507 + components: + - type: Transform + pos: 25.5,42.5 + parent: 2 + - uid: 508 + components: + - type: Transform + pos: 24.5,42.5 + parent: 2 + - uid: 509 + components: + - type: Transform + pos: 23.5,42.5 + parent: 2 + - uid: 510 + components: + - type: Transform + pos: 4.5,37.5 + parent: 2 + - uid: 511 + components: + - type: Transform + pos: 17.5,42.5 + parent: 2 + - uid: 512 + components: + - type: Transform + pos: 29.5,43.5 + parent: 2 + - uid: 513 + components: + - type: Transform + pos: 25.5,49.5 + parent: 2 + - uid: 514 + components: + - type: Transform + pos: 26.5,43.5 + parent: 2 + - uid: 515 + components: + - type: Transform + pos: 25.5,48.5 + parent: 2 + - uid: 516 + components: + - type: Transform + pos: 31.5,43.5 + parent: 2 + - uid: 517 + components: + - type: Transform + pos: 26.5,50.5 + parent: 2 + - uid: 518 + components: + - type: Transform + pos: 27.5,50.5 + parent: 2 + - uid: 519 + components: + - type: Transform + pos: 25.5,44.5 + parent: 2 + - uid: 520 + components: + - type: Transform + pos: 31.5,50.5 + parent: 2 + - uid: 521 + components: + - type: Transform + pos: 32.5,45.5 + parent: 2 + - uid: 522 + components: + - type: Transform + pos: 33.5,44.5 + parent: 2 + - uid: 523 + components: + - type: Transform + pos: 32.5,48.5 + parent: 2 + - uid: 524 + components: + - type: Transform + pos: 26.5,44.5 + parent: 2 + - uid: 525 + components: + - type: Transform + pos: 25.5,45.5 + parent: 2 + - uid: 526 + components: + - type: Transform + pos: 26.5,49.5 + parent: 2 + - uid: 527 + components: + - type: Transform + pos: 29.5,50.5 + parent: 2 + - uid: 528 + components: + - type: Transform + pos: 32.5,49.5 + parent: 2 + - uid: 529 + components: + - type: Transform + pos: 27.5,43.5 + parent: 2 + - uid: 530 + components: + - type: Transform + pos: 35.5,44.5 + parent: 2 + - uid: 531 + components: + - type: Transform + pos: 35.5,49.5 + parent: 2 + - uid: 532 + components: + - type: Transform + pos: 36.5,49.5 + parent: 2 + - uid: 533 + components: + - type: Transform + pos: 33.5,49.5 + parent: 2 + - uid: 534 + components: + - type: Transform + pos: 34.5,49.5 + parent: 2 + - uid: 535 + components: + - type: Transform + pos: 36.5,48.5 + parent: 2 + - uid: 536 + components: + - type: Transform + pos: 38.5,48.5 + parent: 2 + - uid: 537 + components: + - type: Transform + pos: 38.5,45.5 + parent: 2 + - uid: 538 + components: + - type: Transform + pos: 38.5,47.5 + parent: 2 + - uid: 539 + components: + - type: Transform + pos: 37.5,45.5 + parent: 2 + - uid: 540 + components: + - type: Transform + pos: 34.5,44.5 + parent: 2 + - uid: 541 + components: + - type: Transform + pos: 36.5,45.5 + parent: 2 + - uid: 542 + components: + - type: Transform + pos: 36.5,44.5 + parent: 2 + - uid: 543 + components: + - type: Transform + pos: 31.5,44.5 + parent: 2 + - uid: 544 + components: + - type: Transform + pos: 32.5,44.5 + parent: 2 + - uid: 545 + components: + - type: Transform + pos: 38.5,46.5 + parent: 2 + - uid: 546 + components: + - type: Transform + pos: 37.5,48.5 + parent: 2 + - uid: 547 + components: + - type: Transform + pos: 31.5,49.5 + parent: 2 + - uid: 548 + components: + - type: Transform + pos: 28.5,50.5 + parent: 2 + - uid: 549 + components: + - type: Transform + pos: 30.5,50.5 + parent: 2 + - uid: 550 + components: + - type: Transform + pos: 30.5,43.5 + parent: 2 + - uid: 551 + components: + - type: Transform + pos: 28.5,43.5 + parent: 2 + - uid: 552 + components: + - type: Transform + pos: 5.5,30.5 + parent: 2 + - uid: 553 + components: + - type: Transform + pos: 7.5,35.5 + parent: 2 + - uid: 554 + components: + - type: Transform + pos: 4.5,31.5 + parent: 2 + - uid: 555 + components: + - type: Transform + pos: 10.5,29.5 + parent: 2 + - uid: 556 + components: + - type: Transform + pos: 7.5,34.5 + parent: 2 + - uid: 557 + components: + - type: Transform + pos: 9.5,33.5 + parent: 2 + - uid: 558 + components: + - type: Transform + pos: 10.5,33.5 + parent: 2 + - uid: 559 + components: + - type: Transform + pos: 8.5,33.5 + parent: 2 + - uid: 560 + components: + - type: Transform + pos: 8.5,35.5 + parent: 2 + - uid: 561 + components: + - type: Transform + pos: 7.5,33.5 + parent: 2 + - uid: 562 + components: + - type: Transform + pos: 10.5,34.5 + parent: 2 + - uid: 563 + components: + - type: Transform + pos: 9.5,34.5 + parent: 2 + - uid: 564 + components: + - type: Transform + pos: 8.5,34.5 + parent: 2 + - uid: 565 + components: + - type: Transform + pos: 15.5,32.5 + parent: 2 + - uid: 566 + components: + - type: Transform + pos: 14.5,31.5 + parent: 2 + - uid: 567 + components: + - type: Transform + pos: 13.5,31.5 + parent: 2 + - uid: 568 + components: + - type: Transform + pos: 11.5,30.5 + parent: 2 + - uid: 569 + components: + - type: Transform + pos: 15.5,31.5 + parent: 2 + - uid: 570 + components: + - type: Transform + pos: 12.5,30.5 + parent: 2 + - uid: 571 + components: + - type: Transform + pos: 17.5,34.5 + parent: 2 + - uid: 572 + components: + - type: Transform + pos: 16.5,34.5 + parent: 2 + - uid: 573 + components: + - type: Transform + pos: 16.5,33.5 + parent: 2 + - uid: 574 + components: + - type: Transform + pos: 17.5,35.5 + parent: 2 + - uid: 575 + components: + - type: Transform + pos: 15.5,34.5 + parent: 2 + - uid: 576 + components: + - type: Transform + pos: 15.5,33.5 + parent: 2 + - uid: 577 + components: + - type: Transform + pos: 10.5,37.5 + parent: 2 + - uid: 578 + components: + - type: Transform + pos: 7.5,41.5 + parent: 2 + - uid: 579 + components: + - type: Transform + pos: 15.5,37.5 + parent: 2 + - uid: 580 + components: + - type: Transform + pos: 7.5,39.5 + parent: 2 + - uid: 581 + components: + - type: Transform + pos: 7.5,38.5 + parent: 2 + - uid: 582 + components: + - type: Transform + pos: 7.5,40.5 + parent: 2 + - uid: 583 + components: + - type: Transform + pos: 7.5,37.5 + parent: 2 + - uid: 584 + components: + - type: Transform + pos: 7.5,36.5 + parent: 2 + - uid: 585 + components: + - type: Transform + pos: 7.5,42.5 + parent: 2 + - uid: 586 + components: + - type: Transform + pos: 18.5,42.5 + parent: 2 + - uid: 587 + components: + - type: Transform + pos: 8.5,42.5 + parent: 2 + - uid: 588 + components: + - type: Transform + pos: 9.5,42.5 + parent: 2 + - uid: 589 + components: + - type: Transform + pos: 10.5,42.5 + parent: 2 + - uid: 590 + components: + - type: Transform + pos: 22.5,45.5 + parent: 2 + - uid: 591 + components: + - type: Transform + pos: 16.5,42.5 + parent: 2 + - uid: 592 + components: + - type: Transform + pos: 15.5,42.5 + parent: 2 + - uid: 593 + components: + - type: Transform + pos: 14.5,42.5 + parent: 2 + - uid: 594 + components: + - type: Transform + pos: 18.5,35.5 + parent: 2 + - uid: 595 + components: + - type: Transform + pos: 18.5,41.5 + parent: 2 + - uid: 596 + components: + - type: Transform + pos: 18.5,40.5 + parent: 2 + - uid: 597 + components: + - type: Transform + pos: 18.5,39.5 + parent: 2 + - uid: 598 + components: + - type: Transform + pos: 18.5,37.5 + parent: 2 + - uid: 599 + components: + - type: Transform + pos: 18.5,36.5 + parent: 2 + - uid: 600 + components: + - type: Transform + pos: 18.5,38.5 + parent: 2 + - uid: 601 + components: + - type: Transform + pos: 11.5,42.5 + parent: 2 + - uid: 602 + components: + - type: Transform + pos: 23.5,45.5 + parent: 2 + - uid: 603 + components: + - type: Transform + pos: 14.5,45.5 + parent: 2 + - uid: 604 + components: + - type: Transform + pos: 15.5,45.5 + parent: 2 + - uid: 605 + components: + - type: Transform + pos: 16.5,45.5 + parent: 2 + - uid: 606 + components: + - type: Transform + pos: 17.5,45.5 + parent: 2 + - uid: 607 + components: + - type: Transform + pos: 18.5,45.5 + parent: 2 + - uid: 608 + components: + - type: Transform + pos: 19.5,45.5 + parent: 2 + - uid: 609 + components: + - type: Transform + pos: 11.5,47.5 + parent: 2 + - uid: 610 + components: + - type: Transform + pos: 11.5,48.5 + parent: 2 + - uid: 611 + components: + - type: Transform + pos: 24.5,45.5 + parent: 2 + - uid: 612 + components: + - type: Transform + pos: 16.5,50.5 + parent: 2 + - uid: 613 + components: + - type: Transform + pos: 13.5,48.5 + parent: 2 + - uid: 614 + components: + - type: Transform + pos: 16.5,51.5 + parent: 2 + - uid: 615 + components: + - type: Transform + pos: 16.5,49.5 + parent: 2 + - uid: 616 + components: + - type: Transform + pos: 12.5,48.5 + parent: 2 + - uid: 617 + components: + - type: Transform + pos: 16.5,48.5 + parent: 2 + - uid: 618 + components: + - type: Transform + pos: 11.5,44.5 + parent: 2 + - uid: 619 + components: + - type: Transform + pos: 22.5,48.5 + parent: 2 + - uid: 620 + components: + - type: Transform + pos: 23.5,48.5 + parent: 2 + - uid: 621 + components: + - type: Transform + pos: 24.5,48.5 + parent: 2 + - uid: 622 + components: + - type: Transform + pos: 21.5,48.5 + parent: 2 + - uid: 623 + components: + - type: Transform + pos: 20.5,48.5 + parent: 2 + - uid: 624 + components: + - type: Transform + pos: 19.5,48.5 + parent: 2 + - uid: 625 + components: + - type: Transform + pos: 15.5,48.5 + parent: 2 + - uid: 626 + components: + - type: Transform + pos: 14.5,48.5 + parent: 2 + - uid: 627 + components: + - type: Transform + pos: 19.5,49.5 + parent: 2 + - uid: 628 + components: + - type: Transform + pos: 19.5,50.5 + parent: 2 + - uid: 629 + components: + - type: Transform + pos: 19.5,51.5 + parent: 2 + - uid: 630 + components: + - type: Transform + pos: 11.5,45.5 + parent: 2 + - uid: 631 + components: + - type: Transform + pos: 11.5,43.5 + parent: 2 + - uid: 632 + components: + - type: Transform + pos: 11.5,46.5 + parent: 2 + - uid: 633 + components: + - type: Transform + pos: 6.5,29.5 + parent: 2 + - uid: 634 + components: + - type: Transform + pos: 22.5,44.5 + parent: 2 + - uid: 635 + components: + - type: Transform + pos: 19.5,42.5 + parent: 2 + - uid: 636 + components: + - type: Transform + pos: 19.5,41.5 + parent: 2 + - uid: 637 + components: + - type: Transform + pos: 19.5,39.5 + parent: 2 + - uid: 638 + components: + - type: Transform + pos: 19.5,38.5 + parent: 2 + - uid: 639 + components: + - type: Transform + pos: 19.5,40.5 + parent: 2 + - uid: 640 + components: + - type: Transform + pos: 19.5,36.5 + parent: 2 + - uid: 641 + components: + - type: Transform + pos: 19.5,37.5 + parent: 2 + - uid: 642 + components: + - type: Transform + pos: 19.5,35.5 + parent: 2 + - uid: 643 + components: + - type: Transform + pos: 22.5,43.5 + parent: 2 + - uid: 644 + components: + - type: Transform + pos: 22.5,41.5 + parent: 2 + - uid: 645 + components: + - type: Transform + pos: 22.5,40.5 + parent: 2 + - uid: 646 + components: + - type: Transform + pos: 22.5,39.5 + parent: 2 + - uid: 647 + components: + - type: Transform + pos: 22.5,38.5 + parent: 2 + - uid: 648 + components: + - type: Transform + pos: 22.5,37.5 + parent: 2 + - uid: 649 + components: + - type: Transform + pos: 22.5,42.5 + parent: 2 + - uid: 650 + components: + - type: Transform + pos: 23.5,37.5 + parent: 2 + - uid: 651 + components: + - type: Transform + pos: 24.5,37.5 + parent: 2 + - uid: 652 + components: + - type: Transform + pos: 15.5,30.5 + parent: 2 + - uid: 653 + components: + - type: Transform + pos: 15.5,29.5 + parent: 2 + - uid: 654 + components: + - type: Transform + pos: 15.5,28.5 + parent: 2 + - uid: 655 + components: + - type: Transform + pos: 15.5,27.5 + parent: 2 + - uid: 656 + components: + - type: Transform + pos: 16.5,27.5 + parent: 2 + - uid: 657 + components: + - type: Transform + pos: 26.5,37.5 + parent: 2 + - uid: 658 + components: + - type: Transform + pos: 27.5,37.5 + parent: 2 + - uid: 659 + components: + - type: Transform + pos: 29.5,37.5 + parent: 2 + - uid: 660 + components: + - type: Transform + pos: 30.5,37.5 + parent: 2 + - uid: 661 + components: + - type: Transform + pos: 31.5,37.5 + parent: 2 + - uid: 662 + components: + - type: Transform + pos: 25.5,37.5 + parent: 2 + - uid: 663 + components: + - type: Transform + pos: 32.5,36.5 + parent: 2 + - uid: 664 + components: + - type: Transform + pos: 33.5,35.5 + parent: 2 + - uid: 665 + components: + - type: Transform + pos: 34.5,34.5 + parent: 2 + - uid: 666 + components: + - type: Transform + pos: 34.5,33.5 + parent: 2 + - uid: 667 + components: + - type: Transform + pos: 34.5,32.5 + parent: 2 + - uid: 668 + components: + - type: Transform + pos: 34.5,31.5 + parent: 2 + - uid: 669 + components: + - type: Transform + pos: 34.5,30.5 + parent: 2 + - uid: 670 + components: + - type: Transform + pos: 34.5,29.5 + parent: 2 + - uid: 671 + components: + - type: Transform + pos: 34.5,27.5 + parent: 2 + - uid: 672 + components: + - type: Transform + pos: 34.5,28.5 + parent: 2 + - uid: 673 + components: + - type: Transform + pos: 33.5,36.5 + parent: 2 + - uid: 674 + components: + - type: Transform + pos: 33.5,26.5 + parent: 2 + - uid: 675 + components: + - type: Transform + pos: 32.5,37.5 + parent: 2 + - uid: 676 + components: + - type: Transform + pos: 34.5,26.5 + parent: 2 + - uid: 677 + components: + - type: Transform + pos: 30.5,26.5 + parent: 2 + - uid: 678 + components: + - type: Transform + pos: 17.5,26.5 + parent: 2 + - uid: 679 + components: + - type: Transform + pos: 19.5,26.5 + parent: 2 + - uid: 680 + components: + - type: Transform + pos: 21.5,26.5 + parent: 2 + - uid: 681 + components: + - type: Transform + pos: 18.5,26.5 + parent: 2 + - uid: 682 + components: + - type: Transform + pos: 29.5,28.5 + parent: 2 + - uid: 683 + components: + - type: Transform + pos: 22.5,28.5 + parent: 2 + - uid: 684 + components: + - type: Transform + pos: 29.5,27.5 + parent: 2 + - uid: 685 + components: + - type: Transform + pos: 22.5,27.5 + parent: 2 + - uid: 686 + components: + - type: Transform + pos: 20.5,26.5 + parent: 2 + - uid: 687 + components: + - type: Transform + pos: 34.5,35.5 + parent: 2 + - uid: 688 + components: + - type: Transform + pos: 37.5,22.5 + parent: 2 + - uid: 689 + components: + - type: Transform + pos: 37.5,24.5 + parent: 2 + - uid: 690 + components: + - type: Transform + pos: 37.5,20.5 + parent: 2 + - uid: 691 + components: + - type: Transform + pos: 37.5,21.5 + parent: 2 + - uid: 692 + components: + - type: Transform + pos: 37.5,25.5 + parent: 2 + - uid: 693 + components: + - type: Transform + pos: 37.5,19.5 + parent: 2 + - uid: 694 + components: + - type: Transform + pos: 37.5,23.5 + parent: 2 + - uid: 695 + components: + - type: Transform + pos: 14.5,38.5 + parent: 2 + - uid: 696 + components: + - type: Transform + pos: 36.5,17.5 + parent: 2 + - uid: 697 + components: + - type: Transform + pos: 36.5,18.5 + parent: 2 + - uid: 698 + components: + - type: Transform + pos: 35.5,17.5 + parent: 2 + - uid: 699 + components: + - type: Transform + pos: 14.5,37.5 + parent: 2 + - uid: 700 + components: + - type: Transform + pos: 6.5,40.5 + parent: 2 + - uid: 701 + components: + - type: Transform + pos: 2.5,40.5 + parent: 2 + - uid: 702 + components: + - type: Transform + pos: 34.5,16.5 + parent: 2 + - uid: 703 + components: + - type: Transform + pos: 32.5,16.5 + parent: 2 + - uid: 704 + components: + - type: Transform + pos: 31.5,16.5 + parent: 2 + - uid: 705 + components: + - type: Transform + pos: 30.5,16.5 + parent: 2 + - uid: 706 + components: + - type: Transform + pos: 29.5,16.5 + parent: 2 + - uid: 707 + components: + - type: Transform + pos: 28.5,16.5 + parent: 2 + - uid: 708 + components: + - type: Transform + pos: 27.5,16.5 + parent: 2 + - uid: 709 + components: + - type: Transform + pos: 25.5,16.5 + parent: 2 + - uid: 710 + components: + - type: Transform + pos: 24.5,16.5 + parent: 2 + - uid: 711 + components: + - type: Transform + pos: 23.5,16.5 + parent: 2 + - uid: 712 + components: + - type: Transform + pos: 22.5,16.5 + parent: 2 + - uid: 713 + components: + - type: Transform + pos: 33.5,16.5 + parent: 2 + - uid: 714 + components: + - type: Transform + pos: 26.5,16.5 + parent: 2 + - uid: 715 + components: + - type: Transform + pos: 21.5,16.5 + parent: 2 + - uid: 716 + components: + - type: Transform + pos: 3.5,40.5 + parent: 2 + - uid: 717 + components: + - type: Transform + pos: 20.5,16.5 + parent: 2 + - uid: 718 + components: + - type: Transform + pos: 5.5,40.5 + parent: 2 + - uid: 719 + components: + - type: Transform + pos: 4.5,40.5 + parent: 2 + - uid: 720 + components: + - type: Transform + pos: 0.5,40.5 + parent: 2 + - uid: 721 + components: + - type: Transform + pos: 37.5,26.5 + parent: 2 + - uid: 722 + components: + - type: Transform + pos: 37.5,18.5 + parent: 2 + - uid: 723 + components: + - type: Transform + pos: 35.5,16.5 + parent: 2 + - uid: 724 + components: + - type: Transform + pos: 15.5,38.5 + parent: 2 + - uid: 725 + components: + - type: Transform + pos: 11.5,38.5 + parent: 2 + - uid: 726 + components: + - type: Transform + pos: 10.5,38.5 + parent: 2 + - uid: 727 + components: + - type: Transform + pos: 11.5,37.5 + parent: 2 + - uid: 728 + components: + - type: Transform + pos: 16.5,26.5 + parent: 2 + - uid: 729 + components: + - type: Transform + pos: 13.5,30.5 + parent: 2 + - uid: 730 + components: + - type: Transform + pos: 11.5,29.5 + parent: 2 + - uid: 731 + components: + - type: Transform + pos: 8.5,20.5 + parent: 2 + - uid: 732 + components: + - type: Transform + pos: 7.5,20.5 + parent: 2 + - uid: 733 + components: + - type: Transform + pos: 5.5,20.5 + parent: 2 + - uid: 734 + components: + - type: Transform + pos: 10.5,20.5 + parent: 2 + - uid: 735 + components: + - type: Transform + pos: 6.5,20.5 + parent: 2 + - uid: 736 + components: + - type: Transform + pos: 14.5,28.5 + parent: 2 + - uid: 737 + components: + - type: Transform + pos: 13.5,28.5 + parent: 2 + - uid: 738 + components: + - type: Transform + pos: 11.5,28.5 + parent: 2 + - uid: 739 + components: + - type: Transform + pos: 10.5,28.5 + parent: 2 + - uid: 740 + components: + - type: Transform + pos: 12.5,28.5 + parent: 2 + - uid: 741 + components: + - type: Transform + pos: 20.5,17.5 + parent: 2 + - uid: 742 + components: + - type: Transform + pos: 18.5,17.5 + parent: 2 + - uid: 743 + components: + - type: Transform + pos: 19.5,17.5 + parent: 2 + - uid: 744 + components: + - type: Transform + pos: 18.5,18.5 + parent: 2 + - uid: 745 + components: + - type: Transform + pos: 16.5,18.5 + parent: 2 + - uid: 746 + components: + - type: Transform + pos: 15.5,18.5 + parent: 2 + - uid: 747 + components: + - type: Transform + pos: 17.5,18.5 + parent: 2 + - uid: 748 + components: + - type: Transform + pos: 15.5,19.5 + parent: 2 + - uid: 749 + components: + - type: Transform + pos: 14.5,19.5 + parent: 2 + - uid: 750 + components: + - type: Transform + pos: 13.5,19.5 + parent: 2 + - uid: 751 + components: + - type: Transform + pos: 11.5,19.5 + parent: 2 + - uid: 752 + components: + - type: Transform + pos: 9.5,20.5 + parent: 2 + - uid: 753 + components: + - type: Transform + pos: 11.5,20.5 + parent: 2 + - uid: 754 + components: + - type: Transform + pos: 14.5,29.5 + parent: 2 + - uid: 755 + components: + - type: Transform + pos: 14.5,30.5 + parent: 2 + - uid: 756 + components: + - type: Transform + pos: 12.5,19.5 + parent: 2 + - uid: 757 + components: + - type: Transform + pos: 1.5,40.5 + parent: 2 + - uid: 758 + components: + - type: Transform + pos: 0.5,33.5 + parent: 2 + - uid: 759 + components: + - type: Transform + pos: 0.5,26.5 + parent: 2 + - uid: 760 + components: + - type: Transform + pos: 12.5,29.5 + parent: 2 + - uid: 761 + components: + - type: Transform + pos: 0.5,39.5 + parent: 2 + - uid: 762 + components: + - type: Transform + pos: 0.5,38.5 + parent: 2 + - uid: 763 + components: + - type: Transform + pos: 0.5,37.5 + parent: 2 + - uid: 764 + components: + - type: Transform + pos: 0.5,36.5 + parent: 2 + - uid: 765 + components: + - type: Transform + pos: 0.5,35.5 + parent: 2 + - uid: 766 + components: + - type: Transform + pos: 0.5,34.5 + parent: 2 + - uid: 767 + components: + - type: Transform + pos: 0.5,32.5 + parent: 2 + - uid: 768 + components: + - type: Transform + pos: 0.5,31.5 + parent: 2 + - uid: 769 + components: + - type: Transform + pos: 0.5,30.5 + parent: 2 + - uid: 770 + components: + - type: Transform + pos: 0.5,29.5 + parent: 2 + - uid: 771 + components: + - type: Transform + pos: 0.5,28.5 + parent: 2 + - uid: 772 + components: + - type: Transform + pos: 0.5,27.5 + parent: 2 + - uid: 773 + components: + - type: Transform + pos: 5.5,24.5 + parent: 2 + - uid: 774 + components: + - type: Transform + pos: 6.5,24.5 + parent: 2 + - uid: 775 + components: + - type: Transform + pos: 4.5,24.5 + parent: 2 + - uid: 776 + components: + - type: Transform + pos: 3.5,24.5 + parent: 2 + - uid: 777 + components: + - type: Transform + pos: 2.5,24.5 + parent: 2 + - uid: 778 + components: + - type: Transform + pos: 7.5,24.5 + parent: 2 + - uid: 779 + components: + - type: Transform + pos: 8.5,24.5 + parent: 2 + - uid: 780 + components: + - type: Transform + pos: 13.5,29.5 + parent: 2 + - uid: 781 + components: + - type: Transform + pos: 9.5,24.5 + parent: 2 + - uid: 782 + components: + - type: Transform + pos: 10.5,24.5 + parent: 2 + - uid: 783 + components: + - type: Transform + pos: 1.5,26.5 + parent: 2 + - uid: 784 + components: + - type: Transform + pos: 1.5,25.5 + parent: 2 + - uid: 785 + components: + - type: Transform + pos: 2.5,25.5 + parent: 2 + - uid: 786 + components: + - type: Transform + pos: 37.5,27.5 + parent: 2 + - uid: 787 + components: + - type: Transform + pos: 37.5,28.5 + parent: 2 + - uid: 788 + components: + - type: Transform + pos: 37.5,30.5 + parent: 2 + - uid: 789 + components: + - type: Transform + pos: 37.5,29.5 + parent: 2 + - uid: 790 + components: + - type: Transform + pos: 36.5,30.5 + parent: 2 + - uid: 791 + components: + - type: Transform + pos: 35.5,30.5 + parent: 2 + - uid: 792 + components: + - type: Transform + pos: 2.5,20.5 + parent: 2 + - uid: 793 + components: + - type: Transform + pos: 2.5,21.5 + parent: 2 + - uid: 794 + components: + - type: Transform + pos: 2.5,23.5 + parent: 2 + - uid: 795 + components: + - type: Transform + pos: 2.5,22.5 + parent: 2 + - uid: 796 + components: + - type: Transform + pos: 3.5,20.5 + parent: 2 + - uid: 797 + components: + - type: Transform + pos: 4.5,20.5 + parent: 2 + - uid: 798 + components: + - type: Transform + pos: 20.5,51.5 + parent: 2 + - uid: 799 + components: + - type: Transform + pos: 21.5,51.5 + parent: 2 + - uid: 800 + components: + - type: Transform + pos: 22.5,51.5 + parent: 2 + - uid: 801 + components: + - type: Transform + pos: 23.5,56.5 + parent: 2 + - uid: 802 + components: + - type: Transform + pos: 23.5,55.5 + parent: 2 + - uid: 803 + components: + - type: Transform + pos: 23.5,58.5 + parent: 2 + - uid: 804 + components: + - type: Transform + pos: 23.5,57.5 + parent: 2 + - uid: 805 + components: + - type: Transform + pos: 23.5,54.5 + parent: 2 + - uid: 806 + components: + - type: Transform + pos: 16.5,57.5 + parent: 2 + - uid: 807 + components: + - type: Transform + pos: 12.5,53.5 + parent: 2 + - uid: 808 + components: + - type: Transform + pos: 12.5,56.5 + parent: 2 + - uid: 809 + components: + - type: Transform + pos: 12.5,54.5 + parent: 2 + - uid: 810 + components: + - type: Transform + pos: 12.5,55.5 + parent: 2 + - uid: 811 + components: + - type: Transform + pos: 16.5,58.5 + parent: 2 + - uid: 812 + components: + - type: Transform + pos: 12.5,60.5 + parent: 2 + - uid: 813 + components: + - type: Transform + pos: 12.5,59.5 + parent: 2 + - uid: 814 + components: + - type: Transform + pos: 13.5,61.5 + parent: 2 + - uid: 815 + components: + - type: Transform + pos: 15.5,61.5 + parent: 2 + - uid: 816 + components: + - type: Transform + pos: 14.5,61.5 + parent: 2 + - uid: 817 + components: + - type: Transform + pos: 20.5,61.5 + parent: 2 + - uid: 818 + components: + - type: Transform + pos: 12.5,61.5 + parent: 2 + - uid: 819 + components: + - type: Transform + pos: 13.5,51.5 + parent: 2 + - uid: 820 + components: + - type: Transform + pos: 14.5,51.5 + parent: 2 + - uid: 821 + components: + - type: Transform + pos: 15.5,51.5 + parent: 2 + - uid: 822 + components: + - type: Transform + pos: 21.5,61.5 + parent: 2 + - uid: 823 + components: + - type: Transform + pos: 23.5,53.5 + parent: 2 + - uid: 824 + components: + - type: Transform + pos: 18.5,61.5 + parent: 2 + - uid: 825 + components: + - type: Transform + pos: 19.5,61.5 + parent: 2 + - uid: 826 + components: + - type: Transform + pos: 23.5,59.5 + parent: 2 + - uid: 827 + components: + - type: Transform + pos: 17.5,61.5 + parent: 2 + - uid: 828 + components: + - type: Transform + pos: 23.5,61.5 + parent: 2 + - uid: 829 + components: + - type: Transform + pos: 23.5,60.5 + parent: 2 + - uid: 830 + components: + - type: Transform + pos: 12.5,57.5 + parent: 2 + - uid: 831 + components: + - type: Transform + pos: 16.5,61.5 + parent: 2 + - uid: 832 + components: + - type: Transform + pos: 12.5,58.5 + parent: 2 + - uid: 833 + components: + - type: Transform + pos: 22.5,61.5 + parent: 2 + - uid: 834 + components: + - type: Transform + pos: 19.5,57.5 + parent: 2 + - uid: 835 + components: + - type: Transform + pos: 16.5,56.5 + parent: 2 + - uid: 836 + components: + - type: Transform + pos: 19.5,58.5 + parent: 2 + - uid: 837 + components: + - type: Transform + pos: 19.5,56.5 + parent: 2 + - uid: 838 + components: + - type: Transform + pos: 13.5,53.5 + parent: 2 + - uid: 839 + components: + - type: Transform + pos: 13.5,52.5 + parent: 2 + - uid: 840 + components: + - type: Transform + pos: 22.5,53.5 + parent: 2 + - uid: 841 + components: + - type: Transform + pos: 22.5,52.5 + parent: 2 + - uid: 842 + components: + - type: Transform + pos: 27.5,38.5 + parent: 2 + - uid: 843 + components: + - type: Transform + pos: 28.5,38.5 + parent: 2 + - uid: 844 + components: + - type: Transform + pos: 29.5,38.5 + parent: 2 + - uid: 845 + components: + - type: Transform + pos: 25.5,43.5 + parent: 2 + - uid: 1017 + components: + - type: Transform + pos: 23.5,44.5 + parent: 2 + - uid: 1018 + components: + - type: Transform + pos: 23.5,43.5 + parent: 2 +- proto: WeldingFuelTank + entities: + - uid: 428 + components: + - type: Transform + pos: 30.445045,45.445004 + parent: 2 + - uid: 851 + components: + - type: Transform + pos: 29.5,44.5 + parent: 2 +- proto: WhiteKnight + entities: + - uid: 956 + components: + - type: Transform + pos: 27.580927,19.606592 + parent: 2 + - type: Physics + canCollide: False +- proto: WhiteQueen + entities: + - uid: 955 + components: + - type: Transform + pos: 26.950459,19.561592 + parent: 2 + - type: Physics + canCollide: False +- proto: WindoorSecure + entities: + - uid: 854 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 29.5,45.5 + parent: 2 + - uid: 855 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 28.5,45.5 + parent: 2 + - uid: 864 + components: + - type: Transform + pos: 28.5,48.5 + parent: 2 + - uid: 865 + components: + - type: Transform + pos: 29.5,48.5 + parent: 2 +- proto: WindoorSecureCommandLocked + entities: + - uid: 870 + components: + - type: Transform + pos: 34.5,48.5 + parent: 2 + - uid: 871 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 34.5,45.5 + parent: 2 +- proto: WindowReinforcedDirectional + entities: + - uid: 856 + components: + - type: Transform + pos: 27.5,48.5 + parent: 2 + - uid: 857 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 26.5,48.5 + parent: 2 + - uid: 858 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,48.5 + parent: 2 + - uid: 859 + components: + - type: Transform + pos: 30.5,48.5 + parent: 2 + - uid: 860 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 26.5,45.5 + parent: 2 + - uid: 861 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 27.5,45.5 + parent: 2 + - uid: 862 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 30.5,45.5 + parent: 2 + - uid: 863 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,45.5 + parent: 2 + - uid: 866 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 35.5,48.5 + parent: 2 + - uid: 867 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 35.5,45.5 + parent: 2 + - uid: 868 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 33.5,45.5 + parent: 2 + - uid: 869 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 33.5,48.5 + parent: 2 +- proto: WoodDoor + entities: + - uid: 846 + components: + - type: Transform + pos: 20.5,37.5 + parent: 2 + - uid: 847 + components: + - type: Transform + pos: 21.5,37.5 + parent: 2 +- proto: WoodenSupportBeam + entities: + - uid: 924 + components: + - type: Transform + pos: 3.5,33.5 + parent: 2 +- proto: WoodenSupportWall + entities: + - uid: 925 + components: + - type: Transform + pos: 2.5,33.5 + parent: 2 + - uid: 926 + components: + - type: Transform + pos: 1.5,33.5 + parent: 2 +... diff --git a/Resources/Maps/Ruins/hydro_outpost.yml b/Resources/Maps/Ruins/hydro_outpost.yml new file mode 100644 index 0000000000..3c9dc1b0e8 --- /dev/null +++ b/Resources/Maps/Ruins/hydro_outpost.yml @@ -0,0 +1,3114 @@ +meta: + format: 7 + category: Grid + engineVersion: 254.1.0 + forkId: "" + forkVersion: "" + time: 04/22/2025 08:17:21 + entityCount: 529 +maps: [] +grids: +- 1 +orphans: +- 1 +nullspace: [] +tilemap: + 1: Space + 0: FloorAsteroidSand + 5: FloorSteel + 6: FloorSteelDamaged + 3: Lattice + 2: Plating + 4: PlatingDamaged +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + name: grid + - type: Transform + pos: -2.7436135,3.2901328 + parent: invalid + - type: MapGrid + chunks: + 0,0: + ind: 0,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAALAAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAABAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAEAAAAAAAAAgAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAABAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABQAAAAAABQAAAAABBQAAAAACAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-1: + ind: -1,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAHAAAAAAAFAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAFAAAAAAAAAAAAAAAIAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAIAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAgAAAAAABQAAAAADBQAAAAABBQAAAAADAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAABQAAAAACBQAAAAABBQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAgAAAAAAAgAAAAAAAgAAAAAABQAAAAACBQAAAAAABQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAACBQAAAAAABQAAAAADBQAAAAADBQAAAAABBQAAAAABBQAAAAABAgAAAAAAAgAAAAAABQAAAAACBQAAAAADBgAAAAADAgAAAAAABQAAAAABBQAAAAACBQAAAAABBQAAAAADBQAAAAADBgAAAAABAgAAAAAAAgAAAAAABQAAAAADBQAAAAAAAgAAAAAAAgAAAAAABQAAAAABBQAAAAADBQAAAAAABAAAAAABAgAAAAAABQAAAAACBQAAAAAABQAAAAACAgAAAAAABQAAAAAAAgAAAAAABQAAAAAABgAAAAAEBQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAACBAAAAAACAgAAAAAABQAAAAACBQAAAAAABQAAAAAAAgAAAAAABQAAAAADAwAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAABAgAAAAAABQAAAAADAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAgAAAAAABQAAAAABBQAAAAADBQAAAAAAAgAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,-2: + ind: -1,-2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAB + version: 6 + 0,-2: + ind: 0,-2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAA + version: 6 + 1,-1: + ind: 1,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -2,-1: + ind: -2,-1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAgAAAAAABQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABQAAAAAABgAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABQAAAAABAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABQAAAAABBgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAgAAAAAABQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + version: 6 + - type: Broadphase + - type: Physics + bodyStatus: InAir + angularDamping: 0.05 + linearDamping: 0.05 + fixedRotation: False + bodyType: Dynamic + - type: Fixtures + fixtures: {} + - type: OccluderTree + - type: SpreaderGrid + - type: Shuttle + - type: GridPathfinding + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: + - node: + color: '#9FED5896' + id: BrickTileWhiteCornerNe + decals: + 52: -2,-1 + - node: + color: '#9FED5896' + id: BrickTileWhiteCornerNw + decals: + 21: -15,-4 + 23: -19,-3 + 46: -8,-3 + 51: -4,-1 + - node: + color: '#9FED5896' + id: BrickTileWhiteCornerSe + decals: + 45: -7,-6 + 57: -2,-6 + - node: + color: '#9FED5896' + id: BrickTileWhiteCornerSw + decals: + 22: -15,-5 + 44: -8,-6 + 58: -3,-6 + - node: + color: '#9FED5896' + id: BrickTileWhiteEndN + decals: + 24: -18,-2 + - node: + color: '#9FED5896' + id: BrickTileWhiteEndS + decals: + 61: -5,-8 + - node: + color: '#9FED5896' + id: BrickTileWhiteInnerNe + decals: + 26: -18,-3 + - node: + color: '#9FED5896' + id: BrickTileWhiteInnerNw + decals: + 25: -18,-3 + 42: -8,-4 + 50: -4,-3 + - node: + color: '#9FED5896' + id: BrickTileWhiteInnerSw + decals: + 43: -8,-5 + - node: + color: '#9FED5896' + id: BrickTileWhiteLineE + decals: + 53: -2,-2 + 55: -2,-4 + 56: -2,-5 + 62: -5,-7 + 63: -5,-6 + - node: + color: '#9FED5896' + id: BrickTileWhiteLineN + decals: + 32: -14,-4 + 36: -10,-4 + 37: -13,-4 + 40: -9,-4 + 49: -5,-3 + 60: -3,-1 + - node: + color: '#9FED5896' + id: BrickTileWhiteLineS + decals: + 27: -14,-5 + 30: -11,-5 + 31: -10,-5 + 41: -9,-5 + 66: -13,-5 + - node: + color: '#9FED5896' + id: BrickTileWhiteLineW + decals: + 59: -4,-2 + 64: -5,-7 + 65: -5,-6 + - node: + color: '#9FED5896' + id: FullTileOverlayGreyscale + decals: + 12: -6,-6 + 13: -6,-7 + 14: -6,-8 + 15: -6,-9 + 16: -5,-9 + 17: -4,-9 + 18: -4,-8 + 19: -4,-7 + 20: -4,-6 + - node: + cleanable: True + color: '#FFFFFFFF' + id: burnt1 + decals: + 84: -10,-5 + 85: -9,-4 + 86: -8,-3 + 87: -8,-5 + 88: -4,-3 + 89: -4,-2 + 90: -2,-2 + 91: -2,-3 + 92: -3,-5 + 93: -4,-5 + 94: -5,-8 + 95: -5,-7 + 96: -6,-7 + 97: -6,-6 + 98: -20,-4 + - node: + cleanable: True + color: '#FFFFFFFF' + id: burnt2 + decals: + 75: -19,-5 + 76: -19,-4 + 77: -15,-4 + 78: -13,-5 + 79: -10,-4 + 80: -9,-5 + 81: -8,-5 + 82: -7,-4 + 83: -6,-3 + 99: 1,-6 + 100: 4,-15 + 101: 3,-16 + 102: 9,-15 + 103: 11,-15 + 104: 2,-13 + 105: 2,-12 + - node: + cleanable: True + color: '#FFFFFFFF' + id: burnt4 + decals: + 67: -6,-3 + 68: -2,-6 + 69: 2,-5 + 70: 3,-6 + 71: 3,-7 + 72: 4,-7 + 73: -6,-9 + 74: -17,-4 + - type: GridAtmosphere + version: 2 + data: + chunkSize: 4 + - type: GasTileOverlay + - type: RadiationGridResistance +- proto: AirlockExternalGlass + entities: + - uid: 20 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-2.5 + parent: 1 + - uid: 21 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-2.5 + parent: 1 + - uid: 316 + components: + - type: Transform + pos: -8.5,-4.5 + parent: 1 +- proto: AirlockExternalGlassShuttleLocked + entities: + - uid: 283 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -14.5,-4.5 + parent: 1 + - uid: 284 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -14.5,-3.5 + parent: 1 + - uid: 285 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-3.5 + parent: 1 + - uid: 286 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-4.5 + parent: 1 +- proto: APCBasic + entities: + - uid: 141 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 1 + - uid: 212 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 +- proto: AsteroidRock + entities: + - uid: 130 + components: + - type: Transform + pos: 1.5,-14.5 + parent: 1 + - uid: 279 + components: + - type: Transform + pos: -9.5,-1.5 + parent: 1 + - uid: 327 + components: + - type: Transform + pos: -7.5,-0.5 + parent: 1 + - uid: 328 + components: + - type: Transform + pos: -8.5,-0.5 + parent: 1 + - uid: 329 + components: + - type: Transform + pos: -2.5,1.5 + parent: 1 + - uid: 331 + components: + - type: Transform + pos: -1.5,2.5 + parent: 1 + - uid: 332 + components: + - type: Transform + pos: -0.5,2.5 + parent: 1 + - uid: 334 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 340 + components: + - type: Transform + pos: -8.5,-7.5 + parent: 1 + - uid: 344 + components: + - type: Transform + pos: -9.5,-9.5 + parent: 1 + - uid: 345 + components: + - type: Transform + pos: -8.5,-10.5 + parent: 1 + - uid: 347 + components: + - type: Transform + pos: -9.5,-7.5 + parent: 1 + - uid: 348 + components: + - type: Transform + pos: -10.5,-7.5 + parent: 1 + - uid: 350 + components: + - type: Transform + pos: -3.5,-10.5 + parent: 1 + - uid: 353 + components: + - type: Transform + pos: -0.5,-11.5 + parent: 1 + - uid: 354 + components: + - type: Transform + pos: 0.5,-12.5 + parent: 1 + - uid: 355 + components: + - type: Transform + pos: 1.5,-13.5 + parent: 1 + - uid: 356 + components: + - type: Transform + pos: 0.5,-11.5 + parent: 1 + - uid: 357 + components: + - type: Transform + pos: -3.5,-11.5 + parent: 1 + - uid: 358 + components: + - type: Transform + pos: -4.5,-10.5 + parent: 1 + - uid: 359 + components: + - type: Transform + pos: 1.5,-15.5 + parent: 1 + - uid: 361 + components: + - type: Transform + pos: -0.5,-16.5 + parent: 1 + - uid: 362 + components: + - type: Transform + pos: 0.5,-16.5 + parent: 1 + - uid: 365 + components: + - type: Transform + pos: -12.5,-1.5 + parent: 1 + - uid: 367 + components: + - type: Transform + pos: -13.5,-1.5 + parent: 1 + - uid: 368 + components: + - type: Transform + pos: -12.5,0.5 + parent: 1 + - uid: 369 + components: + - type: Transform + pos: -10.5,1.5 + parent: 1 + - uid: 370 + components: + - type: Transform + pos: -9.5,1.5 + parent: 1 + - uid: 373 + components: + - type: Transform + pos: -10.5,0.5 + parent: 1 + - uid: 380 + components: + - type: Transform + pos: -11.5,-7.5 + parent: 1 + - uid: 387 + components: + - type: Transform + pos: -3.5,-18.5 + parent: 1 + - uid: 389 + components: + - type: Transform + pos: -1.5,-18.5 + parent: 1 + - uid: 390 + components: + - type: Transform + pos: -1.5,-19.5 + parent: 1 + - uid: 392 + components: + - type: Transform + pos: -3.5,-15.5 + parent: 1 + - uid: 393 + components: + - type: Transform + pos: -4.5,-14.5 + parent: 1 + - uid: 409 + components: + - type: Transform + pos: 0.5,-14.5 + parent: 1 + - uid: 413 + components: + - type: Transform + pos: -3.5,-16.5 + parent: 1 + - uid: 415 + components: + - type: Transform + pos: -5.5,-15.5 + parent: 1 + - uid: 416 + components: + - type: Transform + pos: -5.5,-14.5 + parent: 1 + - uid: 418 + components: + - type: Transform + pos: 0.5,-10.5 + parent: 1 + - uid: 420 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 427 + components: + - type: Transform + pos: 0.5,2.5 + parent: 1 + - uid: 428 + components: + - type: Transform + pos: -0.5,3.5 + parent: 1 + - uid: 490 + components: + - type: Transform + pos: -6.5,-10.5 + parent: 1 + - uid: 509 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 510 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 511 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 512 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 + - uid: 513 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 514 + components: + - type: Transform + pos: -0.5,1.5 + parent: 1 + - uid: 515 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 + - uid: 516 + components: + - type: Transform + pos: 1.5,-0.5 + parent: 1 + - uid: 521 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 522 + components: + - type: Transform + pos: 5.5,1.5 + parent: 1 + - uid: 523 + components: + - type: Transform + pos: 3.5,5.5 + parent: 1 + - uid: 524 + components: + - type: Transform + pos: -1.5,4.5 + parent: 1 + - uid: 525 + components: + - type: Transform + pos: -2.5,3.5 + parent: 1 +- proto: AsteroidRockCoal + entities: + - uid: 366 + components: + - type: Transform + pos: -12.5,-0.5 + parent: 1 + - uid: 372 + components: + - type: Transform + pos: -9.5,0.5 + parent: 1 + - uid: 385 + components: + - type: Transform + pos: -2.5,-17.5 + parent: 1 + - uid: 407 + components: + - type: Transform + pos: -3.5,-14.5 + parent: 1 + - uid: 410 + components: + - type: Transform + pos: 0.5,-13.5 + parent: 1 + - uid: 411 + components: + - type: Transform + pos: -0.5,-12.5 + parent: 1 +- proto: AsteroidRockCoalCrab + entities: + - uid: 333 + components: + - type: Transform + pos: 0.5,3.5 + parent: 1 + - uid: 336 + components: + - type: Transform + pos: 3.5,-0.5 + parent: 1 + - uid: 338 + components: + - type: Transform + pos: -0.5,-7.5 + parent: 1 + - uid: 341 + components: + - type: Transform + pos: -9.5,-6.5 + parent: 1 +- proto: AsteroidRockDiamond + entities: + - uid: 396 + components: + - type: Transform + pos: -1.5,-14.5 + parent: 1 +- proto: AsteroidRockGold + entities: + - uid: 402 + components: + - type: Transform + pos: -2.5,-12.5 + parent: 1 + - uid: 406 + components: + - type: Transform + pos: -2.5,-15.5 + parent: 1 + - uid: 414 + components: + - type: Transform + pos: -4.5,-15.5 + parent: 1 + - uid: 424 + components: + - type: Transform + pos: 1.5,4.5 + parent: 1 +- proto: AsteroidRockMining + entities: + - uid: 335 + components: + - type: Transform + pos: 5.5,2.5 + parent: 1 + - uid: 339 + components: + - type: Transform + pos: -1.5,-7.5 + parent: 1 + - uid: 343 + components: + - type: Transform + pos: -9.5,-8.5 + parent: 1 + - uid: 351 + components: + - type: Transform + pos: -2.5,-11.5 + parent: 1 + - uid: 352 + components: + - type: Transform + pos: -1.5,-11.5 + parent: 1 + - uid: 384 + components: + - type: Transform + pos: -1.5,-17.5 + parent: 1 + - uid: 386 + components: + - type: Transform + pos: -3.5,-17.5 + parent: 1 + - uid: 388 + components: + - type: Transform + pos: -2.5,-18.5 + parent: 1 + - uid: 391 + components: + - type: Transform + pos: -2.5,-16.5 + parent: 1 + - uid: 397 + components: + - type: Transform + pos: -1.5,-15.5 + parent: 1 + - uid: 398 + components: + - type: Transform + pos: -0.5,-15.5 + parent: 1 + - uid: 399 + components: + - type: Transform + pos: -0.5,-14.5 + parent: 1 + - uid: 401 + components: + - type: Transform + pos: -1.5,-12.5 + parent: 1 + - uid: 404 + components: + - type: Transform + pos: -4.5,-12.5 + parent: 1 + - uid: 405 + components: + - type: Transform + pos: -2.5,-14.5 + parent: 1 + - uid: 417 + components: + - type: Transform + pos: -4.5,-13.5 + parent: 1 + - uid: 421 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 + - uid: 422 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 + - uid: 423 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 425 + components: + - type: Transform + pos: -0.5,4.5 + parent: 1 + - uid: 426 + components: + - type: Transform + pos: -1.5,3.5 + parent: 1 + - uid: 429 + components: + - type: Transform + pos: 0.5,4.5 + parent: 1 + - uid: 431 + components: + - type: Transform + pos: 3.5,0.5 + parent: 1 + - uid: 432 + components: + - type: Transform + pos: -8.5,2.5 + parent: 1 + - uid: 433 + components: + - type: Transform + pos: -9.5,2.5 + parent: 1 + - uid: 434 + components: + - type: Transform + pos: -10.5,2.5 + parent: 1 + - uid: 435 + components: + - type: Transform + pos: -11.5,1.5 + parent: 1 + - uid: 436 + components: + - type: Transform + pos: -11.5,0.5 + parent: 1 + - uid: 437 + components: + - type: Transform + pos: -10.5,3.5 + parent: 1 + - uid: 438 + components: + - type: Transform + pos: -9.5,3.5 + parent: 1 + - uid: 486 + components: + - type: Transform + pos: -10.5,-0.5 + parent: 1 + - uid: 491 + components: + - type: Transform + pos: -5.5,-10.5 + parent: 1 + - uid: 492 + components: + - type: Transform + pos: -5.5,-11.5 + parent: 1 + - uid: 493 + components: + - type: Transform + pos: 1.5,5.5 + parent: 1 + - uid: 494 + components: + - type: Transform + pos: 0.5,5.5 + parent: 1 + - uid: 495 + components: + - type: Transform + pos: 2.5,5.5 + parent: 1 + - uid: 496 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 497 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 518 + components: + - type: Transform + pos: 4.5,3.5 + parent: 1 + - uid: 519 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 520 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 +- proto: AsteroidRockQuartz + entities: + - uid: 326 + components: + - type: Transform + pos: -9.5,-0.5 + parent: 1 + - uid: 349 + components: + - type: Transform + pos: -4.5,-11.5 + parent: 1 + - uid: 394 + components: + - type: Transform + pos: -3.5,-13.5 + parent: 1 + - uid: 403 + components: + - type: Transform + pos: -3.5,-12.5 + parent: 1 +- proto: AsteroidRockQuartzCrab + entities: + - uid: 346 + components: + - type: Transform + pos: -9.5,-10.5 + parent: 1 + - uid: 363 + components: + - type: Transform + pos: 1.5,-12.5 + parent: 1 + - uid: 371 + components: + - type: Transform + pos: -8.5,0.5 + parent: 1 + - uid: 430 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 +- proto: AsteroidRockSilver + entities: + - uid: 315 + components: + - type: Transform + pos: -0.5,-17.5 + parent: 1 +- proto: AsteroidRockSilverCrab + entities: + - uid: 395 + components: + - type: Transform + pos: -1.5,-13.5 + parent: 1 +- proto: AsteroidRockTin + entities: + - uid: 330 + components: + - type: Transform + pos: -1.5,1.5 + parent: 1 + - uid: 337 + components: + - type: Transform + pos: 2.5,-0.5 + parent: 1 + - uid: 360 + components: + - type: Transform + pos: 0.5,-15.5 + parent: 1 + - uid: 400 + components: + - type: Transform + pos: -0.5,-13.5 + parent: 1 + - uid: 408 + components: + - type: Transform + pos: -2.5,-13.5 + parent: 1 + - uid: 412 + components: + - type: Transform + pos: -1.5,-16.5 + parent: 1 + - uid: 419 + components: + - type: Transform + pos: -0.5,-10.5 + parent: 1 +- proto: AsteroidRockUranium + entities: + - uid: 342 + components: + - type: Transform + pos: -10.5,-6.5 + parent: 1 +- proto: Bed + entities: + - uid: 323 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 +- proto: BedsheetSpawner + entities: + - uid: 324 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 +- proto: CableApcExtension + entities: + - uid: 14 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: -4.5,-2.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: -4.5,-3.5 + parent: 1 + - uid: 187 + components: + - type: Transform + pos: 3.5,-13.5 + parent: 1 + - uid: 214 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 + - uid: 215 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 1 + - uid: 216 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 1 + - uid: 217 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 1 + - uid: 218 + components: + - type: Transform + pos: 0.5,-3.5 + parent: 1 + - uid: 219 + components: + - type: Transform + pos: 0.5,-2.5 + parent: 1 + - uid: 220 + components: + - type: Transform + pos: 1.5,-2.5 + parent: 1 + - uid: 221 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 222 + components: + - type: Transform + pos: 2.5,-5.5 + parent: 1 + - uid: 223 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 1 + - uid: 224 + components: + - type: Transform + pos: 2.5,-7.5 + parent: 1 + - uid: 225 + components: + - type: Transform + pos: 2.5,-8.5 + parent: 1 + - uid: 226 + components: + - type: Transform + pos: 2.5,-9.5 + parent: 1 + - uid: 227 + components: + - type: Transform + pos: 2.5,-10.5 + parent: 1 + - uid: 228 + components: + - type: Transform + pos: 2.5,-11.5 + parent: 1 + - uid: 229 + components: + - type: Transform + pos: 3.5,-11.5 + parent: 1 + - uid: 230 + components: + - type: Transform + pos: 3.5,-12.5 + parent: 1 + - uid: 231 + components: + - type: Transform + pos: 4.5,-17.5 + parent: 1 + - uid: 232 + components: + - type: Transform + pos: 4.5,-13.5 + parent: 1 + - uid: 233 + components: + - type: Transform + pos: 5.5,-13.5 + parent: 1 + - uid: 234 + components: + - type: Transform + pos: 5.5,-14.5 + parent: 1 + - uid: 235 + components: + - type: Transform + pos: 5.5,-15.5 + parent: 1 + - uid: 236 + components: + - type: Transform + pos: 4.5,-15.5 + parent: 1 + - uid: 237 + components: + - type: Transform + pos: 4.5,-16.5 + parent: 1 + - uid: 238 + components: + - type: Transform + pos: 4.5,-18.5 + parent: 1 + - uid: 239 + components: + - type: Transform + pos: 4.5,-19.5 + parent: 1 + - uid: 240 + components: + - type: Transform + pos: 4.5,-20.5 + parent: 1 + - uid: 241 + components: + - type: Transform + pos: 4.5,-21.5 + parent: 1 + - uid: 242 + components: + - type: Transform + pos: 4.5,-22.5 + parent: 1 + - uid: 243 + components: + - type: Transform + pos: 4.5,-23.5 + parent: 1 + - uid: 244 + components: + - type: Transform + pos: 4.5,-24.5 + parent: 1 + - uid: 245 + components: + - type: Transform + pos: 4.5,-25.5 + parent: 1 + - uid: 246 + components: + - type: Transform + pos: 6.5,-14.5 + parent: 1 + - uid: 247 + components: + - type: Transform + pos: 7.5,-14.5 + parent: 1 + - uid: 248 + components: + - type: Transform + pos: 8.5,-14.5 + parent: 1 + - uid: 249 + components: + - type: Transform + pos: 9.5,-14.5 + parent: 1 + - uid: 250 + components: + - type: Transform + pos: 10.5,-14.5 + parent: 1 + - uid: 251 + components: + - type: Transform + pos: 11.5,-14.5 + parent: 1 + - uid: 252 + components: + - type: Transform + pos: 12.5,-14.5 + parent: 1 + - uid: 253 + components: + - type: Transform + pos: 13.5,-14.5 + parent: 1 + - uid: 254 + components: + - type: Transform + pos: 14.5,-14.5 + parent: 1 + - uid: 255 + components: + - type: Transform + pos: 15.5,-14.5 + parent: 1 + - uid: 256 + components: + - type: Transform + pos: 16.5,-14.5 + parent: 1 + - uid: 263 + components: + - type: Transform + pos: -4.5,-4.5 + parent: 1 + - uid: 264 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 1 + - uid: 265 + components: + - type: Transform + pos: -4.5,-6.5 + parent: 1 + - uid: 266 + components: + - type: Transform + pos: -4.5,-7.5 + parent: 1 + - uid: 267 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 1 + - uid: 268 + components: + - type: Transform + pos: -6.5,-4.5 + parent: 1 + - uid: 269 + components: + - type: Transform + pos: -7.5,-4.5 + parent: 1 + - uid: 270 + components: + - type: Transform + pos: -8.5,-4.5 + parent: 1 + - uid: 271 + components: + - type: Transform + pos: -9.5,-4.5 + parent: 1 + - uid: 272 + components: + - type: Transform + pos: -10.5,-4.5 + parent: 1 + - uid: 273 + components: + - type: Transform + pos: -11.5,-4.5 + parent: 1 + - uid: 274 + components: + - type: Transform + pos: -3.5,-4.5 + parent: 1 + - uid: 275 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 1 + - uid: 276 + components: + - type: Transform + pos: -2.5,-3.5 + parent: 1 + - uid: 277 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 278 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 305 + components: + - type: Transform + pos: -12.5,-4.5 + parent: 1 + - uid: 306 + components: + - type: Transform + pos: -13.5,-4.5 + parent: 1 + - uid: 501 + components: + - type: Transform + pos: -17.5,-2.5 + parent: 1 + - uid: 502 + components: + - type: Transform + pos: -17.5,-3.5 + parent: 1 + - uid: 503 + components: + - type: Transform + pos: -17.5,-4.5 + parent: 1 + - uid: 504 + components: + - type: Transform + pos: -17.5,-5.5 + parent: 1 + - uid: 505 + components: + - type: Transform + pos: -17.5,-6.5 + parent: 1 + - uid: 506 + components: + - type: Transform + pos: -17.5,-7.5 + parent: 1 + - uid: 507 + components: + - type: Transform + pos: -18.5,-3.5 + parent: 1 + - uid: 508 + components: + - type: Transform + pos: -16.5,-3.5 + parent: 1 +- proto: CableHV + entities: + - uid: 116 + components: + - type: Transform + pos: 4.5,-14.5 + parent: 1 + - uid: 119 + components: + - type: Transform + pos: 4.5,-15.5 + parent: 1 + - uid: 120 + components: + - type: Transform + pos: 4.5,-16.5 + parent: 1 + - uid: 121 + components: + - type: Transform + pos: 4.5,-17.5 + parent: 1 + - uid: 122 + components: + - type: Transform + pos: 4.5,-18.5 + parent: 1 + - uid: 123 + components: + - type: Transform + pos: 4.5,-19.5 + parent: 1 + - uid: 124 + components: + - type: Transform + pos: 4.5,-20.5 + parent: 1 + - uid: 125 + components: + - type: Transform + pos: 4.5,-21.5 + parent: 1 + - uid: 126 + components: + - type: Transform + pos: 4.5,-22.5 + parent: 1 + - uid: 127 + components: + - type: Transform + pos: 4.5,-23.5 + parent: 1 + - uid: 128 + components: + - type: Transform + pos: 4.5,-24.5 + parent: 1 + - uid: 131 + components: + - type: Transform + pos: 5.5,-14.5 + parent: 1 + - uid: 132 + components: + - type: Transform + pos: 6.5,-14.5 + parent: 1 + - uid: 133 + components: + - type: Transform + pos: 7.5,-14.5 + parent: 1 + - uid: 134 + components: + - type: Transform + pos: 8.5,-14.5 + parent: 1 + - uid: 135 + components: + - type: Transform + pos: 9.5,-14.5 + parent: 1 + - uid: 136 + components: + - type: Transform + pos: 10.5,-14.5 + parent: 1 + - uid: 137 + components: + - type: Transform + pos: 11.5,-14.5 + parent: 1 + - uid: 138 + components: + - type: Transform + pos: 12.5,-14.5 + parent: 1 + - uid: 139 + components: + - type: Transform + pos: 13.5,-14.5 + parent: 1 + - uid: 140 + components: + - type: Transform + pos: 15.5,-14.5 + parent: 1 + - uid: 143 + components: + - type: Transform + pos: 14.5,-14.5 + parent: 1 + - uid: 144 + components: + - type: Transform + pos: 15.5,-13.5 + parent: 1 + - uid: 145 + components: + - type: Transform + pos: 15.5,-12.5 + parent: 1 + - uid: 146 + components: + - type: Transform + pos: 15.5,-11.5 + parent: 1 + - uid: 147 + components: + - type: Transform + pos: 13.5,-11.5 + parent: 1 + - uid: 148 + components: + - type: Transform + pos: 13.5,-12.5 + parent: 1 + - uid: 149 + components: + - type: Transform + pos: 13.5,-13.5 + parent: 1 + - uid: 150 + components: + - type: Transform + pos: 11.5,-13.5 + parent: 1 + - uid: 151 + components: + - type: Transform + pos: 11.5,-12.5 + parent: 1 + - uid: 152 + components: + - type: Transform + pos: 11.5,-11.5 + parent: 1 + - uid: 153 + components: + - type: Transform + pos: 9.5,-11.5 + parent: 1 + - uid: 154 + components: + - type: Transform + pos: 9.5,-12.5 + parent: 1 + - uid: 155 + components: + - type: Transform + pos: 9.5,-13.5 + parent: 1 + - uid: 156 + components: + - type: Transform + pos: 9.5,-15.5 + parent: 1 + - uid: 157 + components: + - type: Transform + pos: 9.5,-16.5 + parent: 1 + - uid: 158 + components: + - type: Transform + pos: 9.5,-17.5 + parent: 1 + - uid: 159 + components: + - type: Transform + pos: 11.5,-17.5 + parent: 1 + - uid: 160 + components: + - type: Transform + pos: 11.5,-16.5 + parent: 1 + - uid: 161 + components: + - type: Transform + pos: 11.5,-15.5 + parent: 1 + - uid: 162 + components: + - type: Transform + pos: 13.5,-15.5 + parent: 1 + - uid: 163 + components: + - type: Transform + pos: 13.5,-16.5 + parent: 1 + - uid: 164 + components: + - type: Transform + pos: 13.5,-17.5 + parent: 1 + - uid: 165 + components: + - type: Transform + pos: 15.5,-17.5 + parent: 1 + - uid: 166 + components: + - type: Transform + pos: 15.5,-16.5 + parent: 1 + - uid: 167 + components: + - type: Transform + pos: 15.5,-15.5 + parent: 1 + - uid: 168 + components: + - type: Transform + pos: 7.5,-20.5 + parent: 1 + - uid: 169 + components: + - type: Transform + pos: 6.5,-20.5 + parent: 1 + - uid: 170 + components: + - type: Transform + pos: 5.5,-20.5 + parent: 1 + - uid: 171 + components: + - type: Transform + pos: 5.5,-22.5 + parent: 1 + - uid: 172 + components: + - type: Transform + pos: 6.5,-22.5 + parent: 1 + - uid: 173 + components: + - type: Transform + pos: 7.5,-22.5 + parent: 1 + - uid: 174 + components: + - type: Transform + pos: 7.5,-24.5 + parent: 1 + - uid: 175 + components: + - type: Transform + pos: 6.5,-24.5 + parent: 1 + - uid: 176 + components: + - type: Transform + pos: 5.5,-24.5 + parent: 1 + - uid: 177 + components: + - type: Transform + pos: 3.5,-24.5 + parent: 1 + - uid: 178 + components: + - type: Transform + pos: 2.5,-24.5 + parent: 1 + - uid: 179 + components: + - type: Transform + pos: 1.5,-24.5 + parent: 1 + - uid: 180 + components: + - type: Transform + pos: 3.5,-22.5 + parent: 1 + - uid: 181 + components: + - type: Transform + pos: 2.5,-22.5 + parent: 1 + - uid: 182 + components: + - type: Transform + pos: 1.5,-22.5 + parent: 1 + - uid: 183 + components: + - type: Transform + pos: 3.5,-20.5 + parent: 1 + - uid: 184 + components: + - type: Transform + pos: 2.5,-20.5 + parent: 1 + - uid: 185 + components: + - type: Transform + pos: 1.5,-20.5 + parent: 1 + - uid: 186 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 + - uid: 188 + components: + - type: Transform + pos: 3.5,-14.5 + parent: 1 + - uid: 189 + components: + - type: Transform + pos: 3.5,-13.5 + parent: 1 + - uid: 190 + components: + - type: Transform + pos: 3.5,-12.5 + parent: 1 + - uid: 191 + components: + - type: Transform + pos: 3.5,-11.5 + parent: 1 + - uid: 192 + components: + - type: Transform + pos: 3.5,-10.5 + parent: 1 + - uid: 193 + components: + - type: Transform + pos: 3.5,-9.5 + parent: 1 + - uid: 194 + components: + - type: Transform + pos: 3.5,-6.5 + parent: 1 + - uid: 195 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 1 + - uid: 196 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 197 + components: + - type: Transform + pos: 3.5,-8.5 + parent: 1 +- proto: CableMV + entities: + - uid: 142 + components: + - type: Transform + pos: -4.5,-1.5 + parent: 1 + - uid: 201 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 + - uid: 202 + components: + - type: Transform + pos: 2.5,-4.5 + parent: 1 + - uid: 203 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 1 + - uid: 204 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 1 + - uid: 205 + components: + - type: Transform + pos: 0.5,-3.5 + parent: 1 + - uid: 206 + components: + - type: Transform + pos: 0.5,-2.5 + parent: 1 + - uid: 207 + components: + - type: Transform + pos: -0.5,-2.5 + parent: 1 + - uid: 208 + components: + - type: Transform + pos: -1.5,-2.5 + parent: 1 + - uid: 209 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 210 + components: + - type: Transform + pos: -3.5,-2.5 + parent: 1 + - uid: 211 + components: + - type: Transform + pos: -4.5,-2.5 + parent: 1 + - uid: 213 + components: + - type: Transform + pos: 2.5,-3.5 + parent: 1 +- proto: ComputerBroken + entities: + - uid: 312 + components: + - type: Transform + pos: -17.5,-1.5 + parent: 1 +- proto: CrateFilledSpawner + entities: + - uid: 313 + components: + - type: Transform + pos: -18.5,-5.5 + parent: 1 + - uid: 314 + components: + - type: Transform + pos: -11.5,-3.5 + parent: 1 +- proto: Grille + entities: + - uid: 56 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,-7.5 + parent: 1 + - uid: 58 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,-9.5 + parent: 1 + - uid: 59 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -5.5,-9.5 + parent: 1 + - uid: 60 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-9.5 + parent: 1 + - uid: 61 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-9.5 + parent: 1 + - uid: 62 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-9.5 + parent: 1 + - uid: 63 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-8.5 + parent: 1 + - uid: 64 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-7.5 + parent: 1 + - uid: 297 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-4.5 + parent: 1 + - uid: 298 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -18.5,-1.5 + parent: 1 + - uid: 299 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -18.5,-0.5 + parent: 1 + - uid: 300 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -17.5,-0.5 + parent: 1 + - uid: 301 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -16.5,-0.5 + parent: 1 + - uid: 302 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -16.5,-1.5 + parent: 1 + - uid: 440 + components: + - type: Transform + pos: -5.5,-1.5 + parent: 1 + - uid: 441 + components: + - type: Transform + pos: -6.5,-1.5 + parent: 1 +- proto: GrilleBroken + entities: + - uid: 57 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -6.5,-8.5 + parent: 1 + - uid: 303 + components: + - type: Transform + pos: -19.5,-3.5 + parent: 1 + - uid: 304 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-5.5 + parent: 1 + - uid: 484 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 4.5,-6.5 + parent: 1 + - uid: 485 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 0.5,-1.5 + parent: 1 +- proto: HydroponicsToolClippers + entities: + - uid: 73 + components: + - type: Transform + pos: -5.3844795,-8.140566 + parent: 1 +- proto: HydroponicsToolHatchet + entities: + - uid: 75 + components: + - type: Transform + pos: -3.5159404,-6.320487 + parent: 1 +- proto: HydroponicsToolMiniHoe + entities: + - uid: 74 + components: + - type: Transform + pos: -4.4882,-8.1509905 + parent: 1 +- proto: HydroponicsToolScythe + entities: + - uid: 72 + components: + - type: Transform + pos: -7.3643475,-3.5810344 + parent: 1 +- proto: HydroponicsToolSpade + entities: + - uid: 71 + components: + - type: Transform + pos: -3.4224727,-3.1169958 + parent: 1 +- proto: hydroponicsTray + entities: + - uid: 54 + components: + - type: Transform + pos: -5.5,-5.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: -3.5,-6.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: -5.5,-6.5 + parent: 1 + - uid: 67 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-7.5 + parent: 1 + - uid: 69 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-8.5 + parent: 1 + - uid: 439 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 1 +- proto: HydroponicsTrayMachineCircuitboard + entities: + - uid: 70 + components: + - type: Transform + pos: -5.202286,-8.5382 + parent: 1 +- proto: KitchenMicrowave + entities: + - uid: 447 + components: + - type: Transform + pos: -1.5,-3.5 + parent: 1 +- proto: LockerBotanistFilled + entities: + - uid: 474 + components: + - type: Transform + pos: -3.5,-0.5 + parent: 1 +- proto: LockerBotanistLoot + entities: + - uid: 475 + components: + - type: Transform + pos: -7.5,-2.5 + parent: 1 +- proto: LootSpawnerIndustrialFluff + entities: + - uid: 480 + components: + - type: Transform + pos: -17.5,-6.5 + parent: 1 +- proto: LootSpawnerMaterials + entities: + - uid: 478 + components: + - type: Transform + pos: 0.5,-5.5 + parent: 1 +- proto: LootSpawnerMaterialsSupplementary + entities: + - uid: 476 + components: + - type: Transform + pos: -7.5,-5.5 + parent: 1 + - uid: 477 + components: + - type: Transform + pos: 0.5,-1.5 + parent: 1 +- proto: LootSpawnerScienceMajor + entities: + - uid: 479 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 1 +- proto: MachineFrame + entities: + - uid: 117 + components: + - type: Transform + pos: 3.5,-14.5 + parent: 1 + - uid: 318 + components: + - type: Transform + pos: -19.5,-1.5 + parent: 1 + - uid: 483 + components: + - type: Transform + pos: 1.5,-4.5 + parent: 1 +- proto: MachineFrameDestroyed + entities: + - uid: 65 + components: + - type: Transform + pos: -5.5,-7.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: -3.5,-8.5 + parent: 1 + - uid: 321 + components: + - type: Transform + pos: -19.5,-6.5 + parent: 1 +- proto: MaintenanceFluffSpawner + entities: + - uid: 465 + components: + - type: Transform + pos: -2.5,-1.5 + parent: 1 + - uid: 466 + components: + - type: Transform + pos: -5.5,-4.5 + parent: 1 +- proto: MaintenanceToolSpawner + entities: + - uid: 452 + components: + - type: Transform + pos: -4.5,-7.5 + parent: 1 + - uid: 467 + components: + - type: Transform + pos: -12.5,-3.5 + parent: 1 + - uid: 468 + components: + - type: Transform + pos: -17.5,-4.5 + parent: 1 + - uid: 469 + components: + - type: Transform + pos: -18.5,-2.5 + parent: 1 + - uid: 470 + components: + - type: Transform + pos: -17.5,-8.5 + parent: 1 +- proto: MaintenanceWeaponSpawner + entities: + - uid: 498 + components: + - type: Transform + pos: -3.5,-1.5 + parent: 1 +- proto: Pickaxe + entities: + - uid: 487 + components: + - type: Transform + pos: -11.402668,-1.4671254 + parent: 1 +- proto: PoweredDimSmallLight + entities: + - uid: 527 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-6.5 + parent: 1 + - uid: 528 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -5.5,-6.5 + parent: 1 +- proto: PoweredLightPostSmall + entities: + - uid: 129 + components: + - type: Transform + pos: 4.5,-26.5 + parent: 1 + - uid: 257 + components: + - type: Transform + pos: 17.5,-14.5 + parent: 1 + - uid: 529 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 4.5,-8.5 + parent: 1 +- proto: PoweredSmallLightEmpty + entities: + - uid: 526 + components: + - type: Transform + pos: -12.5,-3.5 + parent: 1 +- proto: RandomServiceCorpseSpawner + entities: + - uid: 325 + components: + - type: Transform + pos: -2.5,-0.5 + parent: 1 + - uid: 488 + components: + - type: Transform + pos: -11.5,-4.5 + parent: 1 +- proto: ReinforcedGirder + entities: + - uid: 39 + components: + - type: Transform + pos: -13.5,-5.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: -11.5,-5.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: -10.5,-2.5 + parent: 1 + - uid: 258 + components: + - type: Transform + pos: -4.5,0.5 + parent: 1 + - uid: 287 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -15.5,-2.5 + parent: 1 + - uid: 288 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-5.5 + parent: 1 + - uid: 289 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -18.5,-6.5 + parent: 1 + - uid: 290 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -19.5,-2.5 + parent: 1 + - uid: 489 + components: + - type: Transform + pos: 2.5,-13.5 + parent: 1 +- proto: ReinforcedWindow + entities: + - uid: 24 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,-7.5 + parent: 1 + - uid: 26 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-7.5 + parent: 1 + - uid: 27 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -3.5,-9.5 + parent: 1 + - uid: 28 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-8.5 + parent: 1 + - uid: 29 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-9.5 + parent: 1 + - uid: 30 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-9.5 + parent: 1 + - uid: 32 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -5.5,-9.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: -5.5,-1.5 + parent: 1 +- proto: SalvageLootSpawner + entities: + - uid: 464 + components: + - type: Transform + pos: 2.5,-2.5 + parent: 1 + - uid: 481 + components: + - type: Transform + pos: -5.5,-3.5 + parent: 1 +- proto: SalvageMaterialCrateSpawner + entities: + - uid: 449 + components: + - type: Transform + pos: -10.5,-3.5 + parent: 1 +- proto: SalvageSpawnerEquipment + entities: + - uid: 459 + components: + - type: Transform + pos: 5.5,-15.5 + parent: 1 + - uid: 460 + components: + - type: Transform + pos: 3.5,-5.5 + parent: 1 + - uid: 461 + components: + - type: Transform + pos: -6.5,-12.5 + parent: 1 +- proto: SalvageSpawnerEquipmentValuable + entities: + - uid: 448 + components: + - type: Transform + pos: -16.5,-5.5 + parent: 1 +- proto: SalvageSpawnerScrapCommon75 + entities: + - uid: 25 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 2.5,-15.5 + parent: 1 + - uid: 31 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-6.5 + parent: 1 + - uid: 48 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -13.5,-4.5 + parent: 1 + - uid: 453 + components: + - type: Transform + pos: -4.5,-5.5 + parent: 1 + - uid: 454 + components: + - type: Transform + pos: -2.5,-4.5 + parent: 1 + - uid: 455 + components: + - type: Transform + pos: 2.5,-6.5 + parent: 1 + - uid: 456 + components: + - type: Transform + pos: 1.5,-5.5 + parent: 1 + - uid: 457 + components: + - type: Transform + pos: 0.5,-4.5 + parent: 1 + - uid: 463 + components: + - type: Transform + pos: -6.5,-2.5 + parent: 1 +- proto: SalvageSpawnerScrapValuable + entities: + - uid: 458 + components: + - type: Transform + pos: 3.5,-13.5 + parent: 1 +- proto: SalvageSpawnerScrapValuable75 + entities: + - uid: 450 + components: + - type: Transform + pos: -11.5,-6.5 + parent: 1 + - uid: 451 + components: + - type: Transform + pos: -8.5,-3.5 + parent: 1 + - uid: 499 + components: + - type: Transform + pos: -17.5,-9.5 + parent: 1 + - uid: 500 + components: + - type: Transform + pos: -16.5,-2.5 + parent: 1 +- proto: SalvageSpawnerTreasureValuable + entities: + - uid: 462 + components: + - type: Transform + pos: -1.5,-5.5 + parent: 1 +- proto: SeedExtractor + entities: + - uid: 446 + components: + - type: Transform + pos: -6.5,-5.5 + parent: 1 +- proto: ShuttleWindow + entities: + - uid: 291 + components: + - type: Transform + pos: -16.5,-0.5 + parent: 1 + - uid: 292 + components: + - type: Transform + pos: -17.5,-0.5 + parent: 1 + - uid: 293 + components: + - type: Transform + pos: -18.5,-0.5 + parent: 1 + - uid: 294 + components: + - type: Transform + pos: -18.5,-1.5 + parent: 1 + - uid: 295 + components: + - type: Transform + pos: -19.5,-4.5 + parent: 1 + - uid: 296 + components: + - type: Transform + pos: -16.5,-1.5 + parent: 1 +- proto: SignHydro1 + entities: + - uid: 471 + components: + - type: Transform + pos: -14.5,-5.5 + parent: 1 + - uid: 472 + components: + - type: Transform + pos: -14.5,-2.5 + parent: 1 +- proto: SolarPanel + entities: + - uid: 93 + components: + - type: Transform + pos: 7.5,-20.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: 9.5,-16.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: 9.5,-15.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: 9.5,-13.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: 9.5,-12.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: 11.5,-13.5 + parent: 1 + - uid: 100 + components: + - type: Transform + pos: 13.5,-13.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 13.5,-12.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 13.5,-11.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 11.5,-15.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 11.5,-16.5 + parent: 1 + - uid: 105 + components: + - type: Transform + pos: 15.5,-15.5 + parent: 1 + - uid: 106 + components: + - type: Transform + pos: 15.5,-13.5 + parent: 1 + - uid: 107 + components: + - type: Transform + pos: 6.5,-20.5 + parent: 1 + - uid: 108 + components: + - type: Transform + pos: 5.5,-20.5 + parent: 1 + - uid: 109 + components: + - type: Transform + pos: 3.5,-20.5 + parent: 1 + - uid: 110 + components: + - type: Transform + pos: 2.5,-20.5 + parent: 1 + - uid: 111 + components: + - type: Transform + pos: 3.5,-22.5 + parent: 1 + - uid: 112 + components: + - type: Transform + pos: 7.5,-22.5 + parent: 1 + - uid: 113 + components: + - type: Transform + pos: 7.5,-24.5 + parent: 1 + - uid: 114 + components: + - type: Transform + pos: 6.5,-24.5 + parent: 1 + - uid: 115 + components: + - type: Transform + pos: 5.5,-24.5 + parent: 1 +- proto: SolarPanelBroken + entities: + - uid: 2 + components: + - type: Transform + pos: 1.5,-24.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 2.5,-24.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 3.5,-24.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 15.5,-17.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 5.5,-22.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 6.5,-22.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 2.5,-22.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 1.5,-22.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: 1.5,-20.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 15.5,-16.5 + parent: 1 + - uid: 85 + components: + - type: Transform + pos: 15.5,-12.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: 15.5,-11.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 13.5,-16.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: 13.5,-17.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: 11.5,-17.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: 11.5,-12.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: 11.5,-11.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: 9.5,-11.5 + parent: 1 + - uid: 94 + components: + - type: Transform + pos: 9.5,-17.5 + parent: 1 +- proto: SpawnMobOreCrab + entities: + - uid: 42 + components: + - type: Transform + pos: -6.5,-4.5 + parent: 1 + - uid: 364 + components: + - type: Transform + pos: 2.5,-5.5 + parent: 1 + - uid: 374 + components: + - type: Transform + pos: -10.5,-4.5 + parent: 1 + - uid: 375 + components: + - type: Transform + pos: -4.5,-3.5 + parent: 1 + - uid: 376 + components: + - type: Transform + pos: -2.5,-2.5 + parent: 1 + - uid: 377 + components: + - type: Transform + pos: -3.5,-5.5 + parent: 1 + - uid: 378 + components: + - type: Transform + pos: 4.5,-20.5 + parent: 1 + - uid: 379 + components: + - type: Transform + pos: 4.5,-13.5 + parent: 1 + - uid: 381 + components: + - type: Transform + pos: -2.5,-10.5 + parent: 1 + - uid: 382 + components: + - type: Transform + pos: -8.5,-8.5 + parent: 1 + - uid: 383 + components: + - type: Transform + pos: -17.5,-3.5 + parent: 1 + - uid: 517 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 +- proto: SubstationBasic + entities: + - uid: 198 + components: + - type: Transform + pos: 3.5,-4.5 + parent: 1 +- proto: SuitStorageEVA + entities: + - uid: 473 + components: + - type: Transform + pos: -1.5,-0.5 + parent: 1 +- proto: TableFrame + entities: + - uid: 442 + components: + - type: Transform + pos: -2.5,-5.5 + parent: 1 +- proto: TableReinforced + entities: + - uid: 443 + components: + - type: Transform + pos: -1.5,-5.5 + parent: 1 + - uid: 444 + components: + - type: Transform + pos: -1.5,-4.5 + parent: 1 + - uid: 445 + components: + - type: Transform + pos: -1.5,-3.5 + parent: 1 +- proto: Thruster + entities: + - uid: 317 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -18.5,-9.5 + parent: 1 + - uid: 319 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -15.5,-6.5 + parent: 1 + - uid: 322 + components: + - type: Transform + pos: -15.5,-1.5 + parent: 1 +- proto: ToiletEmpty + entities: + - uid: 3 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-2.5 + parent: 1 +- proto: UnfinishedMachineFrame + entities: + - uid: 118 + components: + - type: Transform + pos: 5.5,-13.5 + parent: 1 + - uid: 320 + components: + - type: Transform + pos: -16.5,-9.5 + parent: 1 +- proto: WallReinforced + entities: + - uid: 4 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-1.5 + parent: 1 + - uid: 5 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-1.5 + parent: 1 + - uid: 6 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-1.5 + parent: 1 + - uid: 7 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-2.5 + parent: 1 + - uid: 8 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-3.5 + parent: 1 + - uid: 9 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 3.5,-3.5 + parent: 1 + - uid: 10 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 2.5,-3.5 + parent: 1 + - uid: 11 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-3.5 + parent: 1 + - uid: 12 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-1.5 + parent: 1 + - uid: 13 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-0.5 + parent: 1 + - uid: 15 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-4.5 + parent: 1 + - uid: 16 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-5.5 + parent: 1 + - uid: 17 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-6.5 + parent: 1 + - uid: 18 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -1.5,-6.5 + parent: 1 + - uid: 19 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -2.5,-6.5 + parent: 1 + - uid: 22 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-3.5 + parent: 1 + - uid: 23 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-1.5 + parent: 1 + - uid: 33 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,-6.5 + parent: 1 + - uid: 34 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -7.5,-6.5 + parent: 1 + - uid: 35 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -8.5,-6.5 + parent: 1 + - uid: 36 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -8.5,-5.5 + parent: 1 + - uid: 37 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -9.5,-5.5 + parent: 1 + - uid: 38 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -10.5,-5.5 + parent: 1 + - uid: 41 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,-2.5 + parent: 1 + - uid: 43 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -9.5,-2.5 + parent: 1 + - uid: 44 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -8.5,-2.5 + parent: 1 + - uid: 46 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -8.5,-1.5 + parent: 1 + - uid: 47 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -7.5,-1.5 + parent: 1 + - uid: 50 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-1.5 + parent: 1 + - uid: 51 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-0.5 + parent: 1 + - uid: 199 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-4.5 + parent: 1 + - uid: 200 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 4.5,-5.5 + parent: 1 + - uid: 259 + components: + - type: Transform + pos: -3.5,0.5 + parent: 1 + - uid: 260 + components: + - type: Transform + pos: -2.5,0.5 + parent: 1 + - uid: 261 + components: + - type: Transform + pos: -1.5,0.5 + parent: 1 + - uid: 262 + components: + - type: Transform + pos: -0.5,0.5 + parent: 1 + - uid: 280 + components: + - type: Transform + pos: -14.5,-5.5 + parent: 1 + - uid: 281 + components: + - type: Transform + pos: -14.5,-2.5 + parent: 1 + - uid: 282 + components: + - type: Transform + pos: -13.5,-2.5 + parent: 1 +- proto: WallShuttle + entities: + - uid: 307 + components: + - type: Transform + pos: -16.5,-6.5 + parent: 1 + - uid: 308 + components: + - type: Transform + pos: -16.5,-7.5 + parent: 1 + - uid: 309 + components: + - type: Transform + pos: -16.5,-8.5 + parent: 1 + - uid: 310 + components: + - type: Transform + pos: -18.5,-8.5 + parent: 1 + - uid: 311 + components: + - type: Transform + pos: -18.5,-7.5 + parent: 1 +- proto: WaterTankFull + entities: + - uid: 482 + components: + - type: Transform + pos: -4.5,-2.5 + parent: 1 +... diff --git a/Resources/Maps/Shuttles/ShuttleEvent/incorporation.yml b/Resources/Maps/Shuttles/ShuttleEvent/incorporation.yml index 75362b414e..bbcef8f933 100644 --- a/Resources/Maps/Shuttles/ShuttleEvent/incorporation.yml +++ b/Resources/Maps/Shuttles/ShuttleEvent/incorporation.yml @@ -5292,8 +5292,7 @@ entities: components: - type: Transform parent: 766 - - type: Artifact - isSuppressed: True + - type: XenoArtifact - type: Physics canCollide: False - type: InsideEntityStorage @@ -5301,8 +5300,7 @@ entities: components: - type: Transform parent: 768 - - type: Artifact - isSuppressed: True + - type: XenoArtifact - type: Physics canCollide: False - type: InsideEntityStorage @@ -5312,14 +5310,12 @@ entities: rot: 1.5707963267948966 rad pos: -5.5242987,-12.5 parent: 1 - - type: BiasedArtifact - uid: 789 components: - type: Transform rot: 1.5707963267948966 rad pos: 6.506952,-12.5 parent: 1 - - type: BiasedArtifact - proto: VendingMachineMedical entities: - uid: 230 diff --git a/Resources/Maps/_CP14/Dungeon/artifact_room.yml b/Resources/Maps/_CP14/Dungeon/artifact_room.yml index 43a80a4cd3..91c45afebf 100644 --- a/Resources/Maps/_CP14/Dungeon/artifact_room.yml +++ b/Resources/Maps/_CP14/Dungeon/artifact_room.yml @@ -402,7 +402,7 @@ entities: rot: -1.5707963267948966 rad pos: 22.5,1.5 parent: 1 -- proto: CP14IronDoorGuardWeaponStorage +- proto: CP14IronDoorRandomLocked entities: - uid: 62 components: diff --git a/Resources/Maps/_CP14/Dungeon/demiplane_core.yml b/Resources/Maps/_CP14/Dungeon/demiplane_core.yml new file mode 100644 index 0000000000..d32848226f --- /dev/null +++ b/Resources/Maps/_CP14/Dungeon/demiplane_core.yml @@ -0,0 +1,648 @@ +meta: + format: 7 + category: Map + engineVersion: 255.0.0 + forkId: "" + forkVersion: "" + time: 05/03/2025 21:59:43 + entityCount: 104 +maps: +- 1 +grids: +- 1 +orphans: [] +nullspace: [] +tilemap: + 0: Space + 20: CP14FloorBase + 9: CP14FloorFoundation + 13: CP14FloorGrass + 14: CP14FloorGrassLight + 15: CP14FloorGrassTall + 10: CP14FloorOakWoodPlanksBig + 12: CP14FloorOakWoodPlanksBroken + 11: CP14FloorOakWoodPlanksCruciform + 17: CP14FloorStonebricks + 16: CP14FloorStonebricksSmallCarved1 + 19: CP14FloorStonebricksSmallCarved2 + 18: CP14FloorStonebricksSquareCarved + 2: FloorAsteroidSand + 6: FloorAsteroidSandUnvariantized + 5: FloorAsteroidTile + 8: FloorBrokenWood + 82: FloorShuttleOrange + 1: FloorShuttlePurple + 89: FloorSteel + 7: FloorWood + 3: Plating + 4: PlatingAsteroid +entities: +- proto: "" + entities: + - uid: 1 + components: + - type: MetaData + - type: Transform + - type: Map + mapPaused: True + - type: PhysicsMap + - type: GridTree + - type: MovedGrids + - type: Broadphase + - type: OccluderTree + - type: MapGrid + chunks: + -1,-1: + ind: -1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA + version: 6 + 0,0: + ind: 0,0 + tiles: FAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,1: + ind: 0,1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 0,-1: + ind: 0,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,0: + ind: -1,0 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA + version: 6 + -1,1: + ind: -1,1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA + version: 6 + 1,-1: + ind: 1,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 1,0: + ind: 1,0 + tiles: AQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + 1,1: + ind: 1,1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + version: 6 + -1,2: + ind: -1,2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 0,2: + ind: 0,2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 1,2: + ind: 1,2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,-1: + ind: 2,-1 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,0: + ind: 2,0 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,1: + ind: 2,1 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 2,2: + ind: 2,2 + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + - type: Gravity + gravityShakeSound: !type:SoundPathSpecifier + path: /Audio/Effects/alert.ogg + - type: DecalGrid + chunkCollection: + version: 2 + nodes: [] + - type: SpreaderGrid + - type: GridPathfinding + - type: RadiationGridResistance +- proto: CP14DemiplaneCore + entities: + - uid: 14 + components: + - type: Transform + pos: 11.5,2.5 + parent: 1 + - uid: 24 + components: + - type: Transform + pos: 19.5,3.5 + parent: 1 + - uid: 25 + components: + - type: Transform + pos: 27.5,3.5 + parent: 1 + - uid: 71 + components: + - type: Transform + pos: 3.5,3.5 + parent: 1 +- proto: CP14WallDimensit + entities: + - uid: 2 + components: + - type: Transform + pos: 20.5,0.5 + parent: 1 + - uid: 3 + components: + - type: Transform + pos: 10.5,1.5 + parent: 1 + - uid: 4 + components: + - type: Transform + pos: 14.5,0.5 + parent: 1 + - uid: 5 + components: + - type: Transform + pos: 4.5,1.5 + parent: 1 + - uid: 6 + components: + - type: Transform + pos: 4.5,5.5 + parent: 1 + - uid: 7 + components: + - type: Transform + pos: 1.5,0.5 + parent: 1 + - uid: 8 + components: + - type: Transform + pos: 3.5,4.5 + parent: 1 + - uid: 9 + components: + - type: Transform + pos: 4.5,4.5 + parent: 1 + - uid: 10 + components: + - type: Transform + pos: 4.5,2.5 + parent: 1 + - uid: 11 + components: + - type: Transform + pos: 28.5,1.5 + parent: 1 + - uid: 12 + components: + - type: Transform + pos: 20.5,5.5 + parent: 1 + - uid: 13 + components: + - type: Transform + pos: 20.5,4.5 + parent: 1 + - uid: 15 + components: + - type: Transform + pos: 20.5,1.5 + parent: 1 + - uid: 16 + components: + - type: Transform + pos: 20.5,2.5 + parent: 1 + - uid: 17 + components: + - type: Transform + pos: 19.5,4.5 + parent: 1 + - uid: 18 + components: + - type: Transform + pos: 19.5,5.5 + parent: 1 + - uid: 19 + components: + - type: Transform + pos: 20.5,3.5 + parent: 1 + - uid: 20 + components: + - type: Transform + pos: 28.5,2.5 + parent: 1 + - uid: 21 + components: + - type: Transform + pos: 29.5,2.5 + parent: 1 + - uid: 22 + components: + - type: Transform + pos: 22.5,1.5 + parent: 1 + - uid: 23 + components: + - type: Transform + pos: 24.5,5.5 + parent: 1 + - uid: 26 + components: + - type: Transform + pos: 22.5,2.5 + parent: 1 + - uid: 27 + components: + - type: Transform + pos: 27.5,0.5 + parent: 1 + - uid: 28 + components: + - type: Transform + pos: 29.5,5.5 + parent: 1 + - uid: 29 + components: + - type: Transform + pos: 27.5,1.5 + parent: 1 + - uid: 30 + components: + - type: Transform + pos: 21.5,1.5 + parent: 1 + - uid: 31 + components: + - type: Transform + pos: 21.5,0.5 + parent: 1 + - uid: 32 + components: + - type: Transform + pos: 21.5,2.5 + parent: 1 + - uid: 33 + components: + - type: Transform + pos: 21.5,3.5 + parent: 1 + - uid: 34 + components: + - type: Transform + pos: 21.5,4.5 + parent: 1 + - uid: 35 + components: + - type: Transform + pos: 25.5,4.5 + parent: 1 + - uid: 36 + components: + - type: Transform + pos: 18.5,0.5 + parent: 1 + - uid: 37 + components: + - type: Transform + pos: 18.5,1.5 + parent: 1 + - uid: 38 + components: + - type: Transform + pos: 18.5,2.5 + parent: 1 + - uid: 39 + components: + - type: Transform + pos: 16.5,4.5 + parent: 1 + - uid: 40 + components: + - type: Transform + pos: 25.5,3.5 + parent: 1 + - uid: 41 + components: + - type: Transform + pos: 9.5,5.5 + parent: 1 + - uid: 42 + components: + - type: Transform + pos: 24.5,4.5 + parent: 1 + - uid: 43 + components: + - type: Transform + pos: 27.5,5.5 + parent: 1 + - uid: 44 + components: + - type: Transform + pos: 17.5,2.5 + parent: 1 + - uid: 45 + components: + - type: Transform + pos: 13.5,6.5 + parent: 1 + - uid: 46 + components: + - type: Transform + pos: 17.5,5.5 + parent: 1 + - uid: 47 + components: + - type: Transform + pos: 17.5,1.5 + parent: 1 + - uid: 48 + components: + - type: Transform + pos: 17.5,3.5 + parent: 1 + - uid: 49 + components: + - type: Transform + pos: 13.5,5.5 + parent: 1 + - uid: 50 + components: + - type: Transform + pos: 9.5,4.5 + parent: 1 + - uid: 51 + components: + - type: Transform + pos: 19.5,2.5 + parent: 1 + - uid: 52 + components: + - type: Transform + pos: 18.5,5.5 + parent: 1 + - uid: 53 + components: + - type: Transform + pos: 18.5,3.5 + parent: 1 + - uid: 54 + components: + - type: Transform + pos: 19.5,0.5 + parent: 1 + - uid: 55 + components: + - type: Transform + pos: 19.5,1.5 + parent: 1 + - uid: 56 + components: + - type: Transform + pos: 18.5,4.5 + parent: 1 + - uid: 57 + components: + - type: Transform + pos: 8.5,5.5 + parent: 1 + - uid: 58 + components: + - type: Transform + pos: 8.5,6.5 + parent: 1 + - uid: 59 + components: + - type: Transform + pos: 16.5,2.5 + parent: 1 + - uid: 60 + components: + - type: Transform + pos: 16.5,3.5 + parent: 1 + - uid: 61 + components: + - type: Transform + pos: 14.5,5.5 + parent: 1 + - uid: 62 + components: + - type: Transform + pos: 12.5,3.5 + parent: 1 + - uid: 63 + components: + - type: Transform + pos: 12.5,1.5 + parent: 1 + - uid: 64 + components: + - type: Transform + pos: 10.5,4.5 + parent: 1 + - uid: 65 + components: + - type: Transform + pos: 8.5,2.5 + parent: 1 + - uid: 66 + components: + - type: Transform + pos: 11.5,5.5 + parent: 1 + - uid: 67 + components: + - type: Transform + pos: 25.5,1.5 + parent: 1 + - uid: 68 + components: + - type: Transform + pos: 12.5,2.5 + parent: 1 + - uid: 69 + components: + - type: Transform + pos: 10.5,3.5 + parent: 1 + - uid: 70 + components: + - type: Transform + pos: 8.5,1.5 + parent: 1 + - uid: 72 + components: + - type: Transform + pos: 1.5,2.5 + parent: 1 + - uid: 73 + components: + - type: Transform + pos: 5.5,2.5 + parent: 1 + - uid: 74 + components: + - type: Transform + pos: 11.5,0.5 + parent: 1 + - uid: 75 + components: + - type: Transform + pos: 10.5,5.5 + parent: 1 + - uid: 76 + components: + - type: Transform + pos: 2.5,1.5 + parent: 1 + - uid: 77 + components: + - type: Transform + pos: 1.5,3.5 + parent: 1 + - uid: 78 + components: + - type: Transform + pos: 0.5,0.5 + parent: 1 + - uid: 79 + components: + - type: Transform + pos: 6.5,6.5 + parent: 1 + - uid: 80 + components: + - type: Transform + pos: 6.5,4.5 + parent: 1 + - uid: 81 + components: + - type: Transform + pos: 11.5,1.5 + parent: 1 + - uid: 82 + components: + - type: Transform + pos: 11.5,3.5 + parent: 1 + - uid: 83 + components: + - type: Transform + pos: 0.5,1.5 + parent: 1 + - uid: 84 + components: + - type: Transform + pos: 6.5,5.5 + parent: 1 + - uid: 85 + components: + - type: Transform + pos: 5.5,3.5 + parent: 1 + - uid: 86 + components: + - type: Transform + pos: 12.5,4.5 + parent: 1 + - uid: 87 + components: + - type: Transform + pos: 14.5,4.5 + parent: 1 + - uid: 88 + components: + - type: Transform + pos: 5.5,4.5 + parent: 1 + - uid: 89 + components: + - type: Transform + pos: 5.5,5.5 + parent: 1 + - uid: 90 + components: + - type: Transform + pos: 4.5,3.5 + parent: 1 + - uid: 91 + components: + - type: Transform + pos: 1.5,1.5 + parent: 1 + - uid: 92 + components: + - type: Transform + pos: 2.5,0.5 + parent: 1 + - uid: 93 + components: + - type: Transform + pos: 3.5,2.5 + parent: 1 + - uid: 94 + components: + - type: Transform + pos: 2.5,4.5 + parent: 1 + - uid: 95 + components: + - type: Transform + pos: 2.5,2.5 + parent: 1 + - uid: 96 + components: + - type: Transform + pos: 2.5,3.5 + parent: 1 + - uid: 97 + components: + - type: Transform + pos: 3.5,1.5 + parent: 1 + - uid: 98 + components: + - type: Transform + pos: 18.5,6.5 + parent: 1 + - uid: 99 + components: + - type: Transform + pos: 21.5,5.5 + parent: 1 + - uid: 100 + components: + - type: Transform + pos: 22.5,3.5 + parent: 1 + - uid: 101 + components: + - type: Transform + pos: 9.5,6.5 + parent: 1 + - uid: 102 + components: + - type: Transform + pos: 17.5,4.5 + parent: 1 + - uid: 103 + components: + - type: Transform + pos: 10.5,2.5 + parent: 1 + - uid: 104 + components: + - type: Transform + pos: 11.5,4.5 + parent: 1 +... diff --git a/Resources/Maps/_CP14/Dungeon/demiplan_enter.yml b/Resources/Maps/_CP14/Dungeon/demiplane_enter.yml similarity index 100% rename from Resources/Maps/_CP14/Dungeon/demiplan_enter.yml rename to Resources/Maps/_CP14/Dungeon/demiplane_enter.yml diff --git a/Resources/Maps/_CP14/Frigid_Coast.yml b/Resources/Maps/_CP14/Frigid_Coast.yml index 8ab24d4a91..ad9f3d733b 100644 --- a/Resources/Maps/_CP14/Frigid_Coast.yml +++ b/Resources/Maps/_CP14/Frigid_Coast.yml @@ -51511,13 +51511,6 @@ entities: rot: 1.5707963267948966 rad pos: 102.332535,53.33797 parent: 1 -- proto: CP14SpellScrollFireRune - entities: - - uid: 8072 - components: - - type: Transform - pos: -100.13099,21.66595 - parent: 1 - proto: CP14SpellScrollFlameCreation entities: - uid: 8073 diff --git a/Resources/Maps/_CP14/comoss.yml b/Resources/Maps/_CP14/comoss.yml index 0a75e537df..d3babced34 100644 --- a/Resources/Maps/_CP14/comoss.yml +++ b/Resources/Maps/_CP14/comoss.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 251.0.0 + engineVersion: 255.0.0 forkId: "" forkVersion: "" - time: 04/26/2025 08:16:09 - entityCount: 15387 + time: 05/20/2025 19:15:42 + entityCount: 15339 maps: - 1 grids: @@ -76,16 +76,25 @@ entities: - type: SunShadow - type: SunShadowCycle - type: Biome + forcedMarkerLayers: [] + markerLayers: [] + loadedMarkers: {} + pendingMarkers: {} + loadedChunks: [] + entities: {} + decals: {} + modifiedTiles: {} template: CP14SandOceanFill + layers: [] - type: MapGrid chunks: 0,0: ind: 0,0 - tiles: IQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAOAgAAAAABBgAAAAACBgAAAAACBAAAAAAEBgAAAAAABgAAAAAAAgAAAAAPBgAAAAADBwAAAAABBwAAAAACBQAAAAAABgAAAAABIQAAAAAAHgAAAAADHgAAAAAEAgAAAAAFAgAAAAADBgAAAAAABQAAAAABBQAAAAADBQAAAAADBgAAAAACHgAAAAAFBgAAAAACBQAAAAADBQAAAAABBQAAAAACBQAAAAABIQAAAAAAHgAAAAABBgAAAAAABgAAAAACBQAAAAABBAAAAAAFBQAAAAABBQAAAAABBQAAAAADBAAAAAAEHgAAAAABBgAAAAABBwAAAAADBQAAAAACBQAAAAADBwAAAAADIQAAAAAAHgAAAAAABgAAAAAABAAAAAANBAAAAAAIBAAAAAABBAAAAAADBQAAAAAABQAAAAADBAAAAAAJHgAAAAACBgAAAAADBgAAAAACBgAAAAAABQAAAAACBgAAAAACIQAAAAAAHgAAAAAFBAAAAAANBQAAAAADBAAAAAABBAAAAAALBAAAAAAGBAAAAAAKBAAAAAALBAAAAAABHgAAAAABBgAAAAAABwAAAAADBgAAAAABBwAAAAACBQAAAAACIQAAAAAAHgAAAAAABAAAAAANBQAAAAACBQAAAAADBAAAAAAHBAAAAAAJBAAAAAAFBQAAAAABBgAAAAABHgAAAAAFBgAAAAACBwAAAAADBwAAAAACBQAAAAAABQAAAAADIQAAAAAAGAAAAAAFBgAAAAAABgAAAAABBgAAAAADBAAAAAAHBAAAAAAGBQAAAAAABgAAAAADBAAAAAAIHgAAAAAFBgAAAAABBgAAAAACBgAAAAABBgAAAAABBgAAAAABIQAAAAAAHgAAAAACHgAAAAACAgAAAAAKAgAAAAAGAgAAAAAEAgAAAAAAHQAAAAAFHgAAAAACHgAAAAADHgAAAAAAHgAAAAABHgAAAAAEHgAAAAADHgAAAAAAAgAAAAANIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHQAAAAABHgAAAAAFHgAAAAAEHAAAAAAEGAAAAAABAgAAAAAFAgAAAAAMAgAAAAAMAgAAAAAIHgAAAAAAHgAAAAADAgAAAAAMAgAAAAANAgAAAAAOHgAAAAABBwAAAAAABwAAAAADBwAAAAABBwAAAAAABwAAAAACBwAAAAADBwAAAAABAgAAAAAFBgAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAADBQAAAAAABgAAAAABBgAAAAACBQAAAAABBQAAAAACBQAAAAAABQAAAAAABwAAAAABBwAAAAAABwAAAAAAHgAAAAAFBgAAAAACBgAAAAACBgAAAAADBQAAAAACBQAAAAADBwAAAAACBwAAAAAABgAAAAACBQAAAAADBQAAAAACBQAAAAACBQAAAAACBwAAAAACBwAAAAACBwAAAAADGAAAAAACBgAAAAAABgAAAAADBQAAAAAABQAAAAADBgAAAAAABwAAAAADBwAAAAADBgAAAAACBQAAAAABBgAAAAADBQAAAAADBwAAAAABBwAAAAACBwAAAAADBwAAAAACHgAAAAADBgAAAAACBQAAAAACBwAAAAACBQAAAAABBQAAAAAABQAAAAACBgAAAAAABgAAAAABBgAAAAAABQAAAAADBQAAAAABBwAAAAACBwAAAAADBwAAAAABBwAAAAABHgAAAAADBgAAAAABBgAAAAAABgAAAAABBQAAAAACBQAAAAACBQAAAAACBgAAAAAABgAAAAAC + tiles: IQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAOAgAAAAABBgAAAAACBgAAAAACBAAAAAAEBgAAAAAABgAAAAAAAgAAAAAPBgAAAAADBwAAAAABBwAAAAACBQAAAAAABgAAAAABIQAAAAAAHgAAAAADHgAAAAAEAgAAAAAFAgAAAAADBgAAAAAABQAAAAABBQAAAAADBQAAAAADBgAAAAACHgAAAAAFBgAAAAACBQAAAAADBQAAAAABBQAAAAACBQAAAAABIQAAAAAAHgAAAAABBgAAAAAABgAAAAACBQAAAAABBAAAAAAFBQAAAAABBQAAAAABBQAAAAADBAAAAAAEHgAAAAABBgAAAAABBwAAAAADBQAAAAACBQAAAAADBwAAAAADIQAAAAAAHgAAAAAABgAAAAAABAAAAAANBAAAAAAIBAAAAAABBAAAAAADBQAAAAAABQAAAAADBAAAAAAJHgAAAAACBgAAAAADBgAAAAACBgAAAAAABQAAAAACBgAAAAACIQAAAAAAHgAAAAAFBAAAAAANBQAAAAADBAAAAAABBAAAAAALBAAAAAAGBAAAAAAKBAAAAAALBAAAAAABHgAAAAABBgAAAAAABwAAAAADBgAAAAABBwAAAAACBQAAAAACIQAAAAAAHgAAAAAABAAAAAANBQAAAAACBQAAAAADBAAAAAAHBAAAAAAJBAAAAAAFBQAAAAABBgAAAAABHgAAAAAFBgAAAAACBwAAAAADBwAAAAACBQAAAAAABQAAAAADIQAAAAAAHQAAAAAABgAAAAAABgAAAAABBgAAAAADBAAAAAAHBAAAAAAGBQAAAAAABgAAAAADBAAAAAAIHgAAAAAFBgAAAAABBgAAAAACBgAAAAABBgAAAAABBgAAAAABIQAAAAAAHgAAAAACHgAAAAACAgAAAAAKAgAAAAAGAgAAAAAEAgAAAAAAHQAAAAAFHgAAAAACHgAAAAADHgAAAAAAHgAAAAABHgAAAAAEHgAAAAADHgAAAAAAAgAAAAANIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAABgAAAAAAHQAAAAABHgAAAAAFHgAAAAAEHAAAAAAEHQAAAAAAAgAAAAAFAgAAAAAMAgAAAAAMAgAAAAAIHgAAAAAAHgAAAAADAgAAAAAMBgAAAAAAAgAAAAAOHgAAAAABBwAAAAAABwAAAAADBwAAAAABBwAAAAAABwAAAAACBwAAAAADBwAAAAABAgAAAAAFBgAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAADBQAAAAAABgAAAAABBgAAAAACBQAAAAABBQAAAAACBQAAAAAABQAAAAAABwAAAAABBwAAAAAABwAAAAAAHgAAAAAFBgAAAAACBgAAAAACBgAAAAADBQAAAAACBQAAAAADBwAAAAACBwAAAAAABgAAAAACBQAAAAADBQAAAAACBQAAAAACBQAAAAACBwAAAAACBwAAAAACBwAAAAADHQAAAAAABgAAAAAABgAAAAADBQAAAAAABQAAAAADBgAAAAAABwAAAAADBwAAAAADBgAAAAACBQAAAAABBgAAAAADBQAAAAADBwAAAAABBwAAAAACBwAAAAADBwAAAAACHgAAAAADBgAAAAACBQAAAAACBwAAAAACBQAAAAABBQAAAAAABQAAAAACBgAAAAAABgAAAAABBgAAAAAABQAAAAADBQAAAAABBwAAAAACBwAAAAADBwAAAAABBwAAAAABHgAAAAADBgAAAAABBgAAAAAABgAAAAABBQAAAAACBQAAAAACBQAAAAACBgAAAAAABgAAAAAC version: 6 0,-1: ind: 0,-1 - tiles: AgAAAAAOEAAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAEAAAAAAAHgAAAAADIQAAAAAAIQAAAAAAHgAAAAACAwAAAAABBQAAAAABBQAAAAACBQAAAAADBQAAAAACBQAAAAACHgAAAAABEAAAAAAAEAAAAAAAIgAAAAAAEAAAAAAAEAAAAAAAHgAAAAAEIQAAAAAAIQAAAAAAHgAAAAAEAwAAAAABBQAAAAACBQAAAAAABQAAAAAABQAAAAADBQAAAAADHgAAAAACEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAADAwAAAAADAwAAAAADAwAAAAAEAwAAAAADAwAAAAAAAwAAAAAEHgAAAAACAgAAAAAHAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAACHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAABHgAAAAAFHgAAAAAAHgAAAAACHgAAAAABHgAAAAAEAgAAAAAMIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAMAgAAAAAJHgAAAAADHgAAAAAAIQAAAAAAIQAAAAAAHgAAAAABHgAAAAAFAgAAAAAAAgAAAAALAgAAAAACHgAAAAAEHQAAAAAFAgAAAAAKHgAAAAABIQAAAAAAAgAAAAACBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAABBgAAAAABBgAAAAABBgAAAAACBQAAAAADBQAAAAAABQAAAAACHgAAAAADAgAAAAAKHgAAAAADIQAAAAAAHgAAAAABBgAAAAAABQAAAAACBQAAAAACBgAAAAAABgAAAAADBQAAAAABBgAAAAAABQAAAAAABQAAAAADBgAAAAACBQAAAAABAgAAAAAJAgAAAAACAgAAAAAMIQAAAAAAHgAAAAADBgAAAAABBgAAAAABBQAAAAACBgAAAAAABgAAAAADBwAAAAAABgAAAAABBgAAAAAABQAAAAABBQAAAAACBQAAAAAAAgAAAAANAgAAAAAOAgAAAAABIQAAAAAAHQAAAAAABQAAAAABBgAAAAACBQAAAAABBwAAAAADBQAAAAAABwAAAAABBwAAAAAABgAAAAABBQAAAAACBQAAAAADBQAAAAADAgAAAAAHAgAAAAAHAgAAAAAPIQAAAAAAHgAAAAABBgAAAAACBgAAAAADBgAAAAADBgAAAAADBQAAAAABBwAAAAADBQAAAAADBgAAAAADBQAAAAABBQAAAAAABQAAAAADAgAAAAADAgAAAAAHAgAAAAAJIQAAAAAAHgAAAAADHgAAAAAAHgAAAAAEHgAAAAADBgAAAAABBQAAAAABBQAAAAADBQAAAAADBgAAAAABAgAAAAADAgAAAAADAgAAAAACAgAAAAAMAgAAAAAAAgAAAAAKIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAFHgAAAAAFBgAAAAADBQAAAAACBgAAAAADBgAAAAABBgAAAAADAgAAAAAEAgAAAAAEAgAAAAAOAgAAAAAAAgAAAAAMAgAAAAABIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAADBgAAAAACBgAAAAADBgAAAAACBgAAAAADBgAAAAACAgAAAAAPAgAAAAAAAgAAAAAOAgAAAAALAgAAAAAAAgAAAAAEIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAACHgAAAAAFHgAAAAAEHgAAAAADHgAAAAABAgAAAAAHAgAAAAAPBgAAAAABBwAAAAACBgAAAAADBgAAAAADBgAAAAAB + tiles: AgAAAAAOEAAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAEAAAAAAAHgAAAAADIQAAAAAAIQAAAAAAHgAAAAACAwAAAAABBQAAAAABBQAAAAACBQAAAAADBQAAAAACBQAAAAACHgAAAAABEAAAAAAAEAAAAAAAIgAAAAAAEAAAAAAAEAAAAAAAHgAAAAAEIQAAAAAAIQAAAAAAHgAAAAAEAwAAAAABBQAAAAACBQAAAAAABQAAAAAABQAAAAADBQAAAAADHgAAAAACEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAADAwAAAAADAwAAAAADAwAAAAAEAwAAAAADAwAAAAAAAwAAAAAEHgAAAAACAgAAAAAHAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAACHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAABHgAAAAAFHgAAAAAAHgAAAAACHgAAAAABHgAAAAAEAgAAAAAMIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAMAgAAAAAJHgAAAAADHgAAAAAABgAAAAAABgAAAAAAHgAAAAABHgAAAAAFAgAAAAAAAgAAAAALAgAAAAACHgAAAAAEHQAAAAAFAgAAAAAKHgAAAAABIQAAAAAAAgAAAAACBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAABBgAAAAABBgAAAAABBgAAAAACBQAAAAADBQAAAAAABQAAAAACHgAAAAADAgAAAAAKHgAAAAADIQAAAAAAHgAAAAABBgAAAAAABQAAAAACBQAAAAACBgAAAAAABgAAAAADBQAAAAABBgAAAAAABQAAAAAABQAAAAADBgAAAAACBQAAAAABAgAAAAAJAgAAAAACAgAAAAAMIQAAAAAAHgAAAAADBgAAAAABBgAAAAABBQAAAAACBgAAAAAABgAAAAADBwAAAAAABgAAAAABBgAAAAAABQAAAAABBQAAAAACBQAAAAAAAgAAAAANAgAAAAAOAgAAAAABIQAAAAAAHQAAAAAABQAAAAABBgAAAAACBQAAAAABBwAAAAADBQAAAAAABwAAAAABBwAAAAAABgAAAAABBQAAAAACBQAAAAADBQAAAAADAgAAAAAHAgAAAAAHAgAAAAAPIQAAAAAAHgAAAAABBgAAAAACBgAAAAADBgAAAAADBgAAAAADBQAAAAABBwAAAAADBQAAAAADBgAAAAADBQAAAAABBQAAAAAABQAAAAADAgAAAAADAgAAAAAHAgAAAAAJIQAAAAAAHgAAAAADHgAAAAAAHgAAAAAEHgAAAAADBgAAAAABBQAAAAABBQAAAAADBQAAAAADBgAAAAABAgAAAAADAgAAAAADAgAAAAACAgAAAAAMAgAAAAAAAgAAAAAKIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAFHgAAAAAFBgAAAAADBQAAAAACBgAAAAADBgAAAAABBgAAAAADAgAAAAAEAgAAAAAEAgAAAAAOAgAAAAAAAgAAAAAMAgAAAAABIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAADBgAAAAACBgAAAAADBgAAAAACBgAAAAADBgAAAAACAgAAAAAPAgAAAAAAAgAAAAAOAgAAAAALAgAAAAAAAgAAAAAEIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAACHgAAAAAFHgAAAAAEHgAAAAADHgAAAAABAgAAAAAHAgAAAAAPBgAAAAABBwAAAAACBgAAAAADBgAAAAADBgAAAAAB version: 6 -1,-1: ind: -1,-1 @@ -93,15 +102,15 @@ entities: version: 6 -1,0: ind: -1,0 - tiles: BgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAAHgAAAAACBAAAAAAIBgAAAAADBgAAAAABBgAAAAADAgAAAAAMAgAAAAAHAgAAAAAFIQAAAAAAIQAAAAAAIQAAAAAABwAAAAAABQAAAAACBwAAAAACBwAAAAADBgAAAAACHgAAAAADBAAAAAAIBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAAAAgAAAAABAgAAAAALAgAAAAAFIQAAAAAABQAAAAAABAAAAAAIBAAAAAAGBAAAAAAIBgAAAAABHgAAAAAEBAAAAAADBgAAAAACBgAAAAACBAAAAAAHBAAAAAALBgAAAAABBAAAAAAEBAAAAAABAgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAAABQAAAAACBgAAAAABGAAAAAABBAAAAAAGBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAABBgAAAAABBAAAAAAMAgAAAAACIQAAAAAABwAAAAABBgAAAAACBgAAAAABBQAAAAAABgAAAAAAHgAAAAAABAAAAAAGBgAAAAADBgAAAAACBgAAAAAABgAAAAACBgAAAAACBgAAAAADBAAAAAAIHgAAAAACIQAAAAAABQAAAAACBQAAAAABBwAAAAADBwAAAAACBgAAAAADHgAAAAAEBAAAAAAKBgAAAAAABgAAAAADBgAAAAACBgAAAAACBgAAAAACBgAAAAADBAAAAAACGAAAAAAAIQAAAAAABgAAAAAABgAAAAADBgAAAAADBgAAAAAABgAAAAADHgAAAAABBAAAAAAFBAAAAAAGBAAAAAANBAAAAAAIBAAAAAAHBAAAAAAFBAAAAAAIBAAAAAABHgAAAAAFIQAAAAAABgAAAAABHgAAAAADHgAAAAAEHgAAAAAFHgAAAAAEHgAAAAACHgAAAAAFGAAAAAAAGAAAAAAAHgAAAAACHgAAAAAEHgAAAAAFHgAAAAAFHgAAAAAFHgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAEHAAAAAAAHAAAAAAAGAAAAAAFHAAAAAADHgAAAAAFHgAAAAAEHQAAAAADHAAAAAADHAAAAAAAGAAAAAADHgAAAAAEHgAAAAAFHgAAAAADHAAAAAACIQAAAAAAHAAAAAAFHAAAAAABHAAAAAACHAAAAAAFHAAAAAAFBgAAAAABBgAAAAABBgAAAAABBgAAAAACBgAAAAABBgAAAAACBgAAAAACHgAAAAAABwAAAAADBwAAAAABBwAAAAAAHAAAAAACHAAAAAAAHAAAAAACHAAAAAAFHAAAAAAABgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAACBgAAAAADBgAAAAAAHgAAAAABBwAAAAAABgAAAAACBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAAFHAAAAAAEBgAAAAAABgAAAAABBgAAAAAABQAAAAAABQAAAAADBQAAAAADBgAAAAABHgAAAAAFBwAAAAACBwAAAAADBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAABHAAAAAAEBgAAAAAABgAAAAAABgAAAAAABQAAAAABBQAAAAABBQAAAAABBgAAAAACHgAAAAACBwAAAAAABQAAAAAABQAAAAADHAAAAAABHAAAAAADHAAAAAADHAAAAAACHAAAAAACBgAAAAACBQAAAAAABQAAAAAABgAAAAAABgAAAAABBgAAAAAABgAAAAADHgAAAAACBwAAAAACBwAAAAACBgAAAAAA + tiles: BgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAAHgAAAAACBAAAAAAIBgAAAAADBgAAAAABBgAAAAADAgAAAAAMAgAAAAAHAgAAAAAFIQAAAAAAIQAAAAAAIQAAAAAABwAAAAAABQAAAAACBwAAAAACBwAAAAADBgAAAAACHgAAAAADBAAAAAAIBgAAAAAABgAAAAABBgAAAAAABgAAAAADBgAAAAAAAgAAAAABAgAAAAALAgAAAAAFIQAAAAAABQAAAAAABAAAAAAIBAAAAAAGBAAAAAAIBgAAAAABHgAAAAAEBAAAAAADBgAAAAACBgAAAAACBAAAAAAHBAAAAAALBgAAAAABBAAAAAAEBAAAAAABAgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAAABQAAAAACBgAAAAABHQAAAAAABAAAAAAGBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAABBgAAAAABBAAAAAAMAgAAAAACIQAAAAAABwAAAAABBgAAAAACBgAAAAABBQAAAAAABgAAAAAAHgAAAAAABAAAAAAGBgAAAAADBgAAAAACBgAAAAAABgAAAAACBgAAAAACBgAAAAADBAAAAAAIHgAAAAACIQAAAAAABQAAAAACBQAAAAABBwAAAAADBwAAAAACBgAAAAADHgAAAAAEBAAAAAAKBgAAAAAABgAAAAADBgAAAAACBgAAAAACBgAAAAACBgAAAAADBAAAAAACHQAAAAAAIQAAAAAABgAAAAAABgAAAAADBgAAAAADBgAAAAAABgAAAAADHgAAAAABBAAAAAAFBAAAAAAGBAAAAAANBAAAAAAIBAAAAAAHBAAAAAAFBAAAAAAIBAAAAAABHgAAAAAFIQAAAAAABgAAAAABHgAAAAADHgAAAAAEHgAAAAAFHgAAAAAEHgAAAAACHgAAAAAFHQAAAAAAHQAAAAAAHgAAAAACHgAAAAAEHgAAAAAFHgAAAAAFHgAAAAAFHgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAEHAAAAAAAHAAAAAAAHQAAAAAAHAAAAAADHgAAAAAFHgAAAAAEHQAAAAADHAAAAAADBgAAAAAAHQAAAAAAHgAAAAAEHgAAAAAFHgAAAAADHAAAAAACBgAAAAAAHAAAAAAFHAAAAAABHAAAAAACHAAAAAAFHAAAAAAFBgAAAAABBgAAAAABBgAAAAABBgAAAAACBgAAAAABBgAAAAACBgAAAAACHgAAAAAABwAAAAADBwAAAAABBwAAAAAAHAAAAAACHAAAAAAAHAAAAAACHAAAAAAFHAAAAAAABgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAACBgAAAAADBgAAAAAAHgAAAAABBwAAAAAABgAAAAACBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAAFHAAAAAAEBgAAAAAABgAAAAABBgAAAAAABQAAAAAABQAAAAADBQAAAAADBgAAAAABHgAAAAAFBwAAAAACBwAAAAADBwAAAAACHAAAAAADHAAAAAAAHAAAAAAEHAAAAAABHAAAAAAEBgAAAAAABgAAAAAABgAAAAAABQAAAAABBQAAAAABBQAAAAABBgAAAAACHgAAAAACBwAAAAAABQAAAAAABQAAAAADHAAAAAABHAAAAAADHAAAAAADHAAAAAACHAAAAAACBgAAAAACBQAAAAAABQAAAAAABgAAAAAABgAAAAABBgAAAAAABgAAAAADHgAAAAACBwAAAAACBwAAAAACBgAAAAAA version: 6 -1,-2: ind: -1,-2 - tiles: BwAAAAADBwAAAAAAAgAAAAAHCQAAAAAFCQAAAAAECQAAAAAJBgAAAAADBQAAAAACBgAAAAABBQAAAAADBgAAAAACBwAAAAAABgAAAAACBgAAAAADHgAAAAABAgAAAAAABQAAAAADBwAAAAACBwAAAAABBwAAAAAABwAAAAABCQAAAAAHBgAAAAABBgAAAAADBQAAAAAABQAAAAADBAAAAAACBgAAAAADBwAAAAAABgAAAAACHgAAAAABIQAAAAAABwAAAAABBwAAAAAABQAAAAADBQAAAAADBwAAAAADCQAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAABgAAAAAABQAAAAAABgAAAAABBgAAAAABHgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAABBQAAAAACBwAAAAAAHgAAAAABHgAAAAABHgAAAAAAHgAAAAABHgAAAAADAgAAAAAKAgAAAAAIAgAAAAAOFgAAAAADHgAAAAADIQAAAAAABwAAAAABBgAAAAAABgAAAAACBQAAAAABBwAAAAADAgAAAAABIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAABwAAAAACBwAAAAABBwAAAAABBwAAAAACBwAAAAABAgAAAAAGIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAACHgAAAAAAHgAAAAAEHgAAAAABHgAAAAAEHgAAAAACHgAAAAADHQAAAAABFgAAAAADHgAAAAAEFgAAAAACHgAAAAAEHgAAAAABAgAAAAACAgAAAAAPHgAAAAADBgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAAABgAAAAABBgAAAAACBgAAAAABBgAAAAADBgAAAAACBgAAAAABBgAAAAABBgAAAAAABgAAAAAABgAAAAACBgAAAAABBQAAAAAABQAAAAACBQAAAAACBQAAAAADBAAAAAADBQAAAAACBQAAAAAABgAAAAADBgAAAAADBgAAAAACBQAAAAACBgAAAAAABgAAAAADBgAAAAADBQAAAAAABgAAAAAABQAAAAACBQAAAAABBQAAAAABBgAAAAAABgAAAAADBgAAAAADBQAAAAADBgAAAAABBgAAAAACBgAAAAACBQAAAAABBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAABBQAAAAAABQAAAAABBQAAAAADBgAAAAACBgAAAAAABgAAAAADBQAAAAADBQAAAAACBQAAAAABBQAAAAADBQAAAAABBQAAAAACBQAAAAADBQAAAAAABgAAAAAABgAAAAAABQAAAAAABQAAAAABBQAAAAABBQAAAAABBwAAAAACBQAAAAABBwAAAAABBwAAAAADBQAAAAAABwAAAAABBwAAAAADBwAAAAABBwAAAAABBQAAAAABBQAAAAABBgAAAAABBQAAAAACBQAAAAAABQAAAAABBQAAAAAABQAAAAACBQAAAAADBwAAAAACBwAAAAACBQAAAAABBwAAAAACBwAAAAADBwAAAAADBwAAAAADBQAAAAADBQAAAAADBgAAAAAABgAAAAACBgAAAAADBgAAAAADBAAAAAACBAAAAAANAwAAAAAEAwAAAAAAAwAAAAAIBQAAAAADBAAAAAALDQAAAAAADQAAAAAABAAAAAAFDQAAAAAABAAAAAAHAwAAAAAGBQAAAAACBQAAAAADBgAAAAACHAAAAAAFHQAAAAAAAwAAAAAAAwAAAAACAwAAAAACBQAAAAABGgAAAAAAGgAAAAADGgAAAAADGgAAAAABGgAAAAACGgAAAAACAwAAAAACBQAAAAABBQAAAAACBgAAAAAAHAAAAAAEHQAAAAACAwAAAAAAAwAAAAAGAwAAAAACAwAAAAAEGgAAAAACGwAAAAACGwAAAAAAGgAAAAACGwAAAAABGwAAAAABAwAAAAAD + tiles: BwAAAAADBwAAAAAAAgAAAAAHCQAAAAAFCQAAAAAECQAAAAAJBgAAAAADBQAAAAACBgAAAAABBQAAAAADBgAAAAACBwAAAAAABgAAAAACBgAAAAADHgAAAAABAgAAAAAABQAAAAADBwAAAAACBwAAAAABBwAAAAAABwAAAAABCQAAAAAHBgAAAAABBgAAAAADBQAAAAAABQAAAAADBAAAAAACBgAAAAADBwAAAAAABgAAAAACHgAAAAABIQAAAAAABwAAAAABBwAAAAAABQAAAAADBQAAAAADBwAAAAADCQAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAAABgAAAAAABQAAAAAABgAAAAABBgAAAAABHgAAAAACIQAAAAAABQAAAAABBgAAAAADBgAAAAABBQAAAAACBwAAAAAAHgAAAAABHgAAAAABHgAAAAAAHgAAAAABHgAAAAADAgAAAAAKBgAAAAAAAgAAAAAOHAAAAAAAHgAAAAADIQAAAAAABwAAAAABBgAAAAAABgAAAAACBQAAAAABBwAAAAADBgAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAABwAAAAACBwAAAAABBwAAAAABBwAAAAACBwAAAAABAgAAAAAGIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAACHgAAAAAAHgAAAAAEHgAAAAABHgAAAAAEHgAAAAACHgAAAAADHQAAAAABHAAAAAAAHgAAAAAEHAAAAAAAHgAAAAAEHgAAAAABAgAAAAACAgAAAAAPHgAAAAADBgAAAAACBgAAAAACBgAAAAABBgAAAAABBgAAAAAABgAAAAABBgAAAAACBgAAAAABBgAAAAADBgAAAAACBgAAAAABBgAAAAABBgAAAAAABgAAAAAABgAAAAACBgAAAAABBQAAAAAABQAAAAACBQAAAAACBQAAAAADBAAAAAADBQAAAAACBQAAAAAABgAAAAADBgAAAAADBgAAAAACBQAAAAACBgAAAAAABgAAAAADBgAAAAADBQAAAAAABgAAAAAABQAAAAACBQAAAAABBQAAAAABBgAAAAAABgAAAAADBgAAAAADBQAAAAADBgAAAAABBgAAAAACBgAAAAACBQAAAAABBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAABBQAAAAAABQAAAAABBQAAAAADBgAAAAACBgAAAAAABgAAAAADBQAAAAADBQAAAAACBQAAAAABBQAAAAADBQAAAAABBQAAAAACBQAAAAADBQAAAAAABgAAAAAABgAAAAAABQAAAAAABQAAAAABBQAAAAABBQAAAAABBwAAAAACBQAAAAABBwAAAAABBwAAAAADBQAAAAAABwAAAAABBwAAAAADBwAAAAABBwAAAAABBQAAAAABBQAAAAABBgAAAAABBQAAAAACBQAAAAAABQAAAAABBQAAAAAABQAAAAACBQAAAAADBwAAAAACBwAAAAACBQAAAAABBwAAAAACBwAAAAADBwAAAAADBwAAAAADBQAAAAADBQAAAAADBgAAAAAABgAAAAACBgAAAAADBgAAAAADBAAAAAACBAAAAAANAwAAAAAEAwAAAAAAAwAAAAAIBQAAAAADBAAAAAALDQAAAAAADQAAAAAABAAAAAAFDQAAAAAABAAAAAAHAwAAAAAGBQAAAAACBQAAAAADBgAAAAACHAAAAAAFHQAAAAAAAwAAAAAAAwAAAAACAwAAAAACBQAAAAABGgAAAAAAGgAAAAADGgAAAAADGgAAAAABGgAAAAACGgAAAAACAwAAAAACBQAAAAABBQAAAAACBgAAAAAAHAAAAAAEHQAAAAACAwAAAAAAAwAAAAAGAwAAAAACAwAAAAAEGgAAAAACGwAAAAACGwAAAAAAGgAAAAACGwAAAAABGwAAAAABAwAAAAAD version: 6 0,-2: ind: 0,-2 - tiles: IQAAAAAAAgAAAAANBgAAAAABBQAAAAADBQAAAAADBQAAAAABBQAAAAAABQAAAAADBgAAAAACHgAAAAAFAwAAAAAFAwAAAAAAAwAAAAAFAwAAAAAAAwAAAAAEAwAAAAAEIQAAAAAAFgAAAAADBgAAAAADBQAAAAADBQAAAAADBQAAAAABBQAAAAADBQAAAAABBgAAAAAAHgAAAAAAAwAAAAAAAwAAAAAHAwAAAAAEAwAAAAAGAwAAAAAHAwAAAAAHAgAAAAAAAgAAAAAABgAAAAADBQAAAAADBgAAAAAABgAAAAACBgAAAAABBgAAAAADBgAAAAADHgAAAAAEAwAAAAAHAwAAAAAEAwAAAAABAwAAAAADAwAAAAAEAwAAAAAHIQAAAAAAAgAAAAAAAgAAAAABIQAAAAAAAgAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAOAwAAAAAIAwAAAAAHAwAAAAAABQAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAAwAAAAABAwAAAAAGAwAAAAABAwAAAAAFAwAAAAAIAwAAAAABIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAwAAAAAGAwAAAAAHAwAAAAAEAwAAAAAGAwAAAAAGAwAAAAAIHgAAAAADFgAAAAACAgAAAAAAHgAAAAABHgAAAAAFAgAAAAAAAgAAAAAAIQAAAAAAAgAAAAAAHgAAAAAAAwAAAAAGAwAAAAACAwAAAAAFAwAAAAAAAwAAAAAAAwAAAAAHHgAAAAACHgAAAAAAAgAAAAAIHgAAAAAFHgAAAAACHgAAAAAEHgAAAAAEAgAAAAAAAgAAAAAAHgAAAAAAAwAAAAAAAwAAAAAHAwAAAAACAwAAAAACAwAAAAAEAwAAAAAGHgAAAAABAgAAAAAFAgAAAAALAgAAAAAEHgAAAAAAHgAAAAABHgAAAAACAgAAAAAAIQAAAAAAHgAAAAAAAwAAAAAHAwAAAAADAwAAAAAAAwAAAAAEAwAAAAABAwAAAAADBgAAAAADIQAAAAAAAgAAAAAMAgAAAAABAgAAAAACIQAAAAAAAgAAAAAPIQAAAAAAIQAAAAAAAgAAAAAAAwAAAAADAwAAAAAHAwAAAAAHAwAAAAAGAwAAAAAIAwAAAAAABgAAAAACIQAAAAAAAgAAAAAJAgAAAAAFIQAAAAAAAgAAAAACAgAAAAACIQAAAAAAIQAAAAAAHgAAAAAEAwAAAAADAwAAAAAGAwAAAAACAwAAAAAEAwAAAAABAwAAAAAAHgAAAAADHgAAAAADAgAAAAAOAgAAAAAIAgAAAAAKHAAAAAACHQAAAAAFIQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAHBQAAAAACBQAAAAABBQAAAAADBQAAAAACBQAAAAACHgAAAAAFAgAAAAADAwAAAAAAAwAAAAAAAwAAAAAAHgAAAAADHAAAAAAEIQAAAAAAIQAAAAAAAgAAAAAAAwAAAAAABQAAAAAABQAAAAABBQAAAAAABQAAAAADBQAAAAABHgAAAAAAAgAAAAAMEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAABHQAAAAAEAgAAAAAAIQAAAAAAAgAAAAAEAwAAAAAIBQAAAAACBQAAAAAABQAAAAABBQAAAAABBQAAAAACAgAAAAAJEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAAAAgAAAAAAIQAAAAAAAgAAAAACAwAAAAACAwAAAAACAwAAAAADAwAAAAAFAwAAAAABBQAAAAACHgAAAAABEAAAAAAAEAAAAAAAIgAAAAAAEAAAAAAAEAAAAAAAHgAAAAAEIQAAAAAAIQAAAAAAAgAAAAACAwAAAAAIBQAAAAABBQAAAAACBQAAAAAABQAAAAACBQAAAAAC + tiles: IQAAAAAAAgAAAAANBgAAAAABBQAAAAADBQAAAAADBQAAAAABBQAAAAAABQAAAAADBgAAAAACHgAAAAAFAwAAAAAFAwAAAAAAAwAAAAAFAwAAAAAAAwAAAAAEAwAAAAAEIQAAAAAAHAAAAAAABgAAAAADBQAAAAADBQAAAAADBQAAAAABBQAAAAADBQAAAAABBgAAAAAAHgAAAAAAAwAAAAAAAwAAAAAHAwAAAAAEAwAAAAAGAwAAAAAHAwAAAAAHAgAAAAAAAgAAAAAABgAAAAADBQAAAAADBgAAAAAABgAAAAACBgAAAAABBgAAAAADBgAAAAADHgAAAAAEAwAAAAAHAwAAAAAEAwAAAAABAwAAAAADAwAAAAAEAwAAAAAHIQAAAAAAAgAAAAAAAgAAAAABBgAAAAAAAgAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAOAwAAAAAIAwAAAAAHAwAAAAAABQAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAAwAAAAABAwAAAAAGAwAAAAABAwAAAAAFAwAAAAAIAwAAAAABIQAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAwAAAAAGAwAAAAAHAwAAAAAEAwAAAAAGAwAAAAAGAwAAAAAIHgAAAAADHAAAAAAAAgAAAAAAHgAAAAABHgAAAAAFAgAAAAAAAgAAAAAAIQAAAAAAAgAAAAAAHgAAAAAAAwAAAAAGAwAAAAACAwAAAAAFAwAAAAAAAwAAAAAAAwAAAAAHHgAAAAACHgAAAAAAAgAAAAAIHgAAAAAFHgAAAAACHgAAAAAEHgAAAAAEAgAAAAAAAgAAAAAAHgAAAAAAAwAAAAAAAwAAAAAHAwAAAAACAwAAAAACAwAAAAAEAwAAAAAGHgAAAAABAgAAAAAFAgAAAAALAgAAAAAEHgAAAAAAHgAAAAABHgAAAAACAgAAAAAAIQAAAAAAHgAAAAAAAwAAAAAHAwAAAAADAwAAAAAAAwAAAAAEAwAAAAABAwAAAAADBgAAAAADIQAAAAAAAgAAAAAMAgAAAAABAgAAAAACIQAAAAAAAgAAAAAPIQAAAAAAIQAAAAAAAgAAAAAAAwAAAAADAwAAAAAHAwAAAAAHAwAAAAAGAwAAAAAIAwAAAAAABgAAAAACIQAAAAAAAgAAAAAJAgAAAAAFIQAAAAAAAgAAAAACAgAAAAACIQAAAAAAIQAAAAAAHgAAAAAEAwAAAAADAwAAAAAGAwAAAAACAwAAAAAEAwAAAAABAwAAAAAAHgAAAAADHgAAAAADAgAAAAAOAgAAAAAIAgAAAAAKHAAAAAACHQAAAAAFIQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAHBQAAAAACBQAAAAABBQAAAAADBQAAAAACBQAAAAACHgAAAAAFAgAAAAADAwAAAAAAAwAAAAAAAwAAAAAAHgAAAAADHAAAAAAEIQAAAAAAIQAAAAAAAgAAAAAAAwAAAAAABQAAAAAABQAAAAABBQAAAAAABQAAAAADBQAAAAABHgAAAAAAAgAAAAAMEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAABHQAAAAAEAgAAAAAAIQAAAAAAAgAAAAAEAwAAAAAIBQAAAAACBQAAAAAABQAAAAABBQAAAAABBQAAAAACAgAAAAAJEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAHgAAAAAAAgAAAAAAIQAAAAAAAgAAAAACAwAAAAACAwAAAAACAwAAAAADAwAAAAAFAwAAAAABBQAAAAACHgAAAAABEAAAAAAAEAAAAAAAIgAAAAAAEAAAAAAAEAAAAAAAHgAAAAAEIQAAAAAAIQAAAAAAAgAAAAACAwAAAAAIBQAAAAABBQAAAAACBQAAAAAABQAAAAACBQAAAAAC version: 6 -2,-2: ind: -2,-2 @@ -117,11 +126,11 @@ entities: version: 6 1,0: ind: 1,0 - tiles: BQAAAAABBwAAAAABBgAAAAADAgAAAAAAAgAAAAAAIQAAAAAAHgAAAAAAAwAAAAAGBQAAAAABDQAAAAAADQAAAAAADQAAAAAAAwAAAAABHAAAAAAAHAAAAAAEHAAAAAACBQAAAAAABQAAAAACBgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAHgAAAAAEAwAAAAAEDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHAwAAAAADAwAAAAADAwAAAAAEBwAAAAAABgAAAAABBgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAGAAAAAAEAwAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAABAwAAAAADAwAAAAAIBwAAAAABBQAAAAABBgAAAAADAgAAAAAAIQAAAAAAAgAAAAAAAgAAAAANAwAAAAACAwAAAAACAwAAAAAABQAAAAABDQAAAAAADQAAAAAAAwAAAAADAwAAAAAFAwAAAAADBgAAAAACBgAAAAAABgAAAAAAHgAAAAABIQAAAAAAAgAAAAAAAgAAAAADAwAAAAAHAwAAAAABAwAAAAAGBQAAAAADDQAAAAAADQAAAAAAAwAAAAAFAwAAAAACAwAAAAAEBgAAAAADBgAAAAABBgAAAAABHgAAAAACIQAAAAAAAgAAAAAAAgAAAAAOAwAAAAABAwAAAAABAwAAAAAHAwAAAAAHDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHBQAAAAADBgAAAAADBgAAAAADHgAAAAAEIQAAAAAAIQAAAAAAGAAAAAADAwAAAAADAwAAAAAEAwAAAAAFAwAAAAAHAwAAAAACAwAAAAAGAwAAAAAEAwAAAAABAwAAAAACAgAAAAAAAgAAAAAJAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAGAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAACHgAAAAAFAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAGAAAAAAEAgAAAAAJAgAAAAAGAgAAAAAOHgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAEHQAAAAACHgAAAAABHgAAAAAFAgAAAAAGAgAAAAAJAgAAAAAAHgAAAAACHgAAAAAFBgAAAAACBwAAAAADBgAAAAABBgAAAAACBgAAAAAABgAAAAACBgAAAAAAHgAAAAAAAwAAAAADAwAAAAAHAwAAAAAIAwAAAAACAwAAAAAHAwAAAAAIAwAAAAADHgAAAAAFBgAAAAAABwAAAAADBgAAAAAABQAAAAABBgAAAAAABwAAAAABBQAAAAABGAAAAAAEAwAAAAADDQAAAAAADQAAAAAAAwAAAAAAAwAAAAABAwAAAAAHAwAAAAAHHQAAAAAEBgAAAAADBQAAAAADBQAAAAABBgAAAAAABwAAAAADBwAAAAABBQAAAAABGAAAAAABAwAAAAABDQAAAAAADQAAAAAAAwAAAAAHAwAAAAAAAwAAAAAEAwAAAAADHQAAAAAEBgAAAAADBgAAAAAABgAAAAADBgAAAAAABwAAAAAABwAAAAAABgAAAAAAHAAAAAADAwAAAAAEDQAAAAAADQAAAAAAAwAAAAAEAwAAAAAAAwAAAAAFAwAAAAADHQAAAAAEBgAAAAAABgAAAAADBgAAAAACBQAAAAADBQAAAAAABQAAAAAABgAAAAACHAAAAAACAwAAAAAIDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAA + tiles: BQAAAAABBwAAAAABBgAAAAADAgAAAAAAAgAAAAAAIQAAAAAAHgAAAAAAAwAAAAAGBQAAAAABDQAAAAAADQAAAAAADQAAAAAAAwAAAAABHAAAAAAAHAAAAAAEHAAAAAACBQAAAAAABQAAAAACBgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAHgAAAAAEAwAAAAAEDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHAwAAAAADAwAAAAADAwAAAAAEBwAAAAAABgAAAAABBgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAHQAAAAAAAwAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAABAwAAAAADAwAAAAAIBwAAAAABBQAAAAABBgAAAAADAgAAAAAAIQAAAAAAAgAAAAAAAgAAAAANAwAAAAACAwAAAAACAwAAAAAABQAAAAABDQAAAAAADQAAAAAAAwAAAAADAwAAAAAFAwAAAAADBgAAAAACBgAAAAAABgAAAAAAHgAAAAABIQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAHAwAAAAABAwAAAAAGBQAAAAADDQAAAAAADQAAAAAAAwAAAAAFAwAAAAACAwAAAAAEBgAAAAADBgAAAAABBgAAAAABHgAAAAACIQAAAAAAAgAAAAAAAgAAAAAOAwAAAAABAwAAAAABAwAAAAAHAwAAAAAHDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHBQAAAAADBgAAAAADBgAAAAADHgAAAAAEIQAAAAAAIQAAAAAAHQAAAAAAAwAAAAADAwAAAAAEAwAAAAAFAwAAAAAHAwAAAAACAwAAAAAGAwAAAAAEAwAAAAABAwAAAAACBgAAAAAAAgAAAAAJAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAACHgAAAAAFAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHQAAAAAAAgAAAAAJBgAAAAAAAgAAAAAOHgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAEHQAAAAACHgAAAAABHgAAAAAFAgAAAAAGAgAAAAAJAgAAAAAAHgAAAAACHgAAAAAFBgAAAAACBwAAAAADBgAAAAABBgAAAAACBgAAAAAABgAAAAACBgAAAAAAHgAAAAAAAwAAAAADAwAAAAAHAwAAAAAIAwAAAAACAwAAAAAHAwAAAAAIAwAAAAADHgAAAAAFBgAAAAAABwAAAAADBgAAAAAABQAAAAABBgAAAAAABwAAAAABBQAAAAABHQAAAAAAAwAAAAADDQAAAAAADQAAAAAAAwAAAAAAAwAAAAABAwAAAAAHAwAAAAAHHQAAAAAEBgAAAAADBQAAAAADBQAAAAABBgAAAAAABwAAAAADBwAAAAABBQAAAAABHQAAAAAAAwAAAAABDQAAAAAADQAAAAAAAwAAAAAHAwAAAAAAAwAAAAAEAwAAAAADHQAAAAAEBgAAAAADBgAAAAAABgAAAAADBgAAAAAABwAAAAAABwAAAAAABgAAAAAAHAAAAAADAwAAAAAEDQAAAAAADQAAAAAAAwAAAAAEAwAAAAAAAwAAAAAFAwAAAAADHQAAAAAEBgAAAAAABgAAAAADBgAAAAACBQAAAAADBQAAAAAABQAAAAAABgAAAAACHAAAAAACAwAAAAAIDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAA version: 6 1,-1: ind: 1,-1 - tiles: BQAAAAABBQAAAAABAwAAAAAHAwAAAAAHAwAAAAAGAwAAAAAFAwAAAAAIAwAAAAAEDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAABQAAAAAABQAAAAADAwAAAAAHAwAAAAAHAwAAAAAHAwAAAAAFAwAAAAAGAwAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHAwAAAAAGAwAAAAAEAgAAAAAKAgAAAAABAgAAAAAMHgAAAAABAwAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAgAAAAAAAgAAAAAOAgAAAAAJAgAAAAAEIQAAAAAAIQAAAAAAAgAAAAAGHgAAAAABHgAAAAAAHgAAAAACHgAAAAAEHgAAAAACHgAAAAAEHgAAAAAFDQAAAAAADQAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAABgAAAAABBgAAAAADBgAAAAADBgAAAAADBgAAAAADBgAAAAACHgAAAAADDQAAAAAADQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAHgAAAAACBgAAAAAABQAAAAAABgAAAAADBgAAAAABBQAAAAADBgAAAAAAHgAAAAADDQAAAAAADQAAAAAAHgAAAAAAHgAAAAAFHgAAAAAAHgAAAAAFIQAAAAAAAgAAAAAABgAAAAADBgAAAAADBQAAAAADBgAAAAAABgAAAAAABwAAAAACBgAAAAADHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAMAgAAAAAEHgAAAAABHgAAAAAAIQAAAAAAAgAAAAAABgAAAAACBgAAAAACBQAAAAADBQAAAAACBwAAAAABBwAAAAACBgAAAAABHgAAAAACDQAAAAAADQAAAAAAAgAAAAALHgAAAAAEAgAAAAAOHgAAAAABIQAAAAAAAgAAAAAAAgAAAAAPBgAAAAADBQAAAAADBQAAAAACBgAAAAABBgAAAAAABgAAAAAAHgAAAAABDQAAAAAADQAAAAAAAgAAAAAKAgAAAAAEAgAAAAAEHgAAAAAAIQAAAAAAIQAAAAAAHgAAAAADBwAAAAADBgAAAAACBQAAAAADBgAAAAACAwAAAAAIAwAAAAAEHgAAAAAFDQAAAAAADQAAAAAAAgAAAAAHAgAAAAADHgAAAAAAHgAAAAADIQAAAAAAIQAAAAAAGAAAAAAFBwAAAAABBwAAAAAABwAAAAACBgAAAAABHgAAAAAFFgAAAAAFHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAIAgAAAAAOAgAAAAAKHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAAEBgAAAAADBwAAAAABBwAAAAABBgAAAAABBgAAAAABHgAAAAAFFgAAAAADDQAAAAAADQAAAAAAAgAAAAAMAgAAAAAHAgAAAAAKAgAAAAABAgAAAAAAIQAAAAAAHgAAAAAABgAAAAAABgAAAAADBgAAAAAABgAAAAAAHgAAAAAAHgAAAAACHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAHAgAAAAAAAgAAAAAIHgAAAAACAgAAAAAAIQAAAAAAHgAAAAABHgAAAAABHgAAAAACHgAAAAACHgAAAAACHgAAAAAFHgAAAAACHgAAAAAFHAAAAAABHAAAAAAEAgAAAAAHAgAAAAAJHgAAAAADHgAAAAACAgAAAAAAIQAAAAAAHgAAAAAEAwAAAAAAAwAAAAAHAwAAAAAIAwAAAAAIDQAAAAAAAwAAAAAHHgAAAAAEHAAAAAACHAAAAAACBgAAAAACBgAAAAAABgAAAAABAgAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAAwAAAAAHDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAABHgAAAAAEHAAAAAAEHAAAAAAD + tiles: BQAAAAABBQAAAAABAwAAAAAHAwAAAAAHAwAAAAAGAwAAAAAFAwAAAAAIAwAAAAAEDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAABQAAAAAABQAAAAADAwAAAAAHAwAAAAAHAwAAAAAHAwAAAAAFAwAAAAAGAwAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAHAwAAAAAGAwAAAAAEAgAAAAAKAgAAAAABAgAAAAAMHgAAAAABAwAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAgAAAAAAAgAAAAAOAgAAAAAJAgAAAAAEIQAAAAAAIQAAAAAAAgAAAAAGHgAAAAABHgAAAAAAHgAAAAACHgAAAAAEHgAAAAACHgAAAAAEHgAAAAAFDQAAAAAADQAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHgAAAAAABgAAAAABBgAAAAADBgAAAAADBgAAAAADBgAAAAADBgAAAAACHgAAAAADDQAAAAAADQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAAgAAAAAAHgAAAAACBgAAAAAABQAAAAAABgAAAAADBgAAAAABBQAAAAADBgAAAAAAHgAAAAADDQAAAAAADQAAAAAAHgAAAAAAHgAAAAAFHgAAAAAAHgAAAAAFIQAAAAAAAgAAAAAABgAAAAADBgAAAAADBQAAAAADBgAAAAAABgAAAAAABwAAAAACBgAAAAADHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAMAgAAAAAEHgAAAAABHgAAAAAAIQAAAAAAAgAAAAAABgAAAAACBgAAAAACBQAAAAADBQAAAAACBwAAAAABBwAAAAACBgAAAAABHgAAAAACDQAAAAAADQAAAAAAAgAAAAALHgAAAAAEAgAAAAAOHgAAAAABIQAAAAAAAgAAAAAAAgAAAAAPBgAAAAADBQAAAAADBQAAAAACBgAAAAABBgAAAAAABgAAAAAAHgAAAAABDQAAAAAADQAAAAAAAgAAAAAKAgAAAAAEAgAAAAAEHgAAAAAAIQAAAAAAIQAAAAAAHgAAAAADBwAAAAADBgAAAAACBQAAAAADBgAAAAACAwAAAAAIAwAAAAAEHgAAAAAFDQAAAAAADQAAAAAAAgAAAAAHAgAAAAADHgAAAAAAHgAAAAADIQAAAAAAIQAAAAAAHQAAAAAABwAAAAABBwAAAAAABwAAAAACBgAAAAABHgAAAAAFHAAAAAAAHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAIAgAAAAAOAgAAAAAKHgAAAAAFIQAAAAAAIQAAAAAAHgAAAAAEBgAAAAADBwAAAAABBwAAAAABBgAAAAABBgAAAAABHgAAAAAFHAAAAAAADQAAAAAADQAAAAAAAgAAAAAMAgAAAAAHAgAAAAAKAgAAAAABAgAAAAAAIQAAAAAAHgAAAAAABgAAAAAABgAAAAADBgAAAAAABgAAAAAAHgAAAAAAHgAAAAACHgAAAAAEDQAAAAAADQAAAAAAAgAAAAAHAgAAAAAAAgAAAAAIHgAAAAACAgAAAAAAIQAAAAAAHgAAAAABHgAAAAABHgAAAAACHgAAAAACHgAAAAACHgAAAAAFHgAAAAACHgAAAAAFHAAAAAABHAAAAAAEAgAAAAAHAgAAAAAJHgAAAAADHgAAAAACAgAAAAAAIQAAAAAAHgAAAAAEAwAAAAAAAwAAAAAHAwAAAAAIAwAAAAAIDQAAAAAAAwAAAAAHHgAAAAAEHAAAAAACHAAAAAACBgAAAAACBgAAAAAABgAAAAABAgAAAAAAIQAAAAAAIQAAAAAAHgAAAAAAAwAAAAAHDQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAABHgAAAAAEHAAAAAAEHAAAAAAD version: 6 1,-2: ind: 1,-2 @@ -129,11 +138,11 @@ entities: version: 6 1,1: ind: 1,1 - tiles: HQAAAAACBgAAAAADBgAAAAABBgAAAAABBwAAAAADBQAAAAAABQAAAAABBgAAAAACHAAAAAABAwAAAAACAwAAAAABAwAAAAAGAwAAAAABDQAAAAAADQAAAAAADQAAAAAAHgAAAAAEBgAAAAAABwAAAAADBwAAAAAABwAAAAADBQAAAAACBgAAAAADBgAAAAAAHAAAAAACAwAAAAAFAwAAAAACAwAAAAAEAwAAAAAHAwAAAAAHAwAAAAACAwAAAAAAFgAAAAABBgAAAAABBwAAAAAABwAAAAACBwAAAAADBgAAAAACBgAAAAABBgAAAAACHAAAAAACAwAAAAAGAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACHgAAAAAAHgAAAAAFHgAAAAAABgAAAAAABwAAAAABBwAAAAABBwAAAAAABwAAAAADHgAAAAACHgAAAAABHgAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHgAAAAADBgAAAAABBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHgAAAAABHgAAAAAACQAAAAAJDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHQAAAAAAHgAAAAADHgAAAAABAgAAAAALAgAAAAAFHgAAAAABHgAAAAACHgAAAAACCQAAAAANDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHQAAAAAAHQAAAAAFAgAAAAAHAgAAAAAMAgAAAAABAgAAAAAGHgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAMCQAAAAALCQAAAAAICQAAAAAAHQAAAAADAgAAAAAPAgAAAAACAgAAAAANAgAAAAACAgAAAAAIHgAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAICQAAAAANCQAAAAALCQAAAAANHQAAAAABHQAAAAABAgAAAAABAgAAAAACAgAAAAACAgAAAAAAAgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAECQAAAAAMCQAAAAALCQAAAAACHgAAAAACHQAAAAADHQAAAAAEAgAAAAADAgAAAAAKAgAAAAAHHgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAHCQAAAAANCQAAAAAFCQAAAAABCQAAAAAHHQAAAAABHQAAAAAAHgAAAAABHgAAAAADHgAAAAACHQAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAKCQAAAAAECQAAAAAKCQAAAAABCQAAAAAKCQAAAAAACQAAAAALCQAAAAAEHgAAAAABHQAAAAADHQAAAAAACQAAAAAGCQAAAAAACQAAAAAHCQAAAAAGCQAAAAAJCQAAAAANCQAAAAAMCQAAAAAACQAAAAAKCQAAAAANCQAAAAANCQAAAAAHCQAAAAACCQAAAAAJHgAAAAADHAAAAAAECQAAAAADCQAAAAALCQAAAAACCQAAAAAFCQAAAAAKCQAAAAAICQAAAAADCQAAAAAJCQAAAAAGCQAAAAABCQAAAAAHCQAAAAANCQAAAAAMCQAAAAAACQAAAAAHHgAAAAABCQAAAAAHCQAAAAAKCQAAAAAACQAAAAAGCQAAAAAECQAAAAACCQAAAAAHCQAAAAANCQAAAAAECQAAAAADCQAAAAAGCQAAAAAJCQAAAAAMCQAAAAADCQAAAAAMCQAAAAADCQAAAAABCQAAAAAGCQAAAAADCQAAAAAACQAAAAAACQAAAAAECQAAAAAFCQAAAAAGCQAAAAAFCQAAAAAFCQAAAAALCQAAAAABCQAAAAAACQAAAAAKCQAAAAAGCQAAAAAHCQAAAAAHCQAAAAADCQAAAAAMCQAAAAABCQAAAAAJCQAAAAANCQAAAAAACQAAAAAHCQAAAAAE + tiles: HQAAAAACBgAAAAADBgAAAAABBgAAAAABBwAAAAADBQAAAAAABQAAAAABBgAAAAACHAAAAAABAwAAAAACAwAAAAABAwAAAAAGAwAAAAABDQAAAAAADQAAAAAADQAAAAAAHgAAAAAEBgAAAAAABwAAAAADBwAAAAAABwAAAAADBQAAAAACBgAAAAADBgAAAAAAHAAAAAACAwAAAAAFAwAAAAACAwAAAAAEAwAAAAAHAwAAAAAHAwAAAAACAwAAAAAAHAAAAAAABgAAAAABBwAAAAAABwAAAAACBwAAAAADBgAAAAACBgAAAAABBgAAAAACHAAAAAACAwAAAAAGAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACHgAAAAAAHgAAAAAFHgAAAAAABgAAAAAABwAAAAABBwAAAAABBwAAAAAABwAAAAADHgAAAAACHgAAAAABHgAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHgAAAAADBgAAAAABBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHgAAAAABHgAAAAAACQAAAAAJDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHQAAAAAAHgAAAAADHgAAAAABAgAAAAALAgAAAAAFHgAAAAABHgAAAAACHgAAAAACCQAAAAANDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHQAAAAAAHQAAAAAFAgAAAAAHAgAAAAAMAgAAAAABAgAAAAAGHgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAMCQAAAAALCQAAAAAICQAAAAAAHQAAAAADAgAAAAAPAgAAAAACAgAAAAANAgAAAAACAgAAAAAIHgAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAICQAAAAANCQAAAAALCQAAAAANHQAAAAABHQAAAAABAgAAAAABAgAAAAACAgAAAAACAgAAAAAAAgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAECQAAAAAMCQAAAAALCQAAAAACHgAAAAACHQAAAAADHQAAAAAEAgAAAAADAgAAAAAKAgAAAAAHHgAAAAADDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAHCQAAAAANCQAAAAAFCQAAAAABCQAAAAAHHQAAAAABHQAAAAAAHgAAAAABHgAAAAADHgAAAAACHQAAAAAFDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAACQAAAAAKCQAAAAAECQAAAAAKCQAAAAABCQAAAAAKCQAAAAAACQAAAAALCQAAAAAEHgAAAAABHQAAAAADHQAAAAAACQAAAAAGCQAAAAAACQAAAAAHCQAAAAAGCQAAAAAJCQAAAAANCQAAAAAMCQAAAAAACQAAAAAKCQAAAAANCQAAAAANCQAAAAAHCQAAAAACCQAAAAAJHgAAAAADHAAAAAAECQAAAAADCQAAAAALCQAAAAACCQAAAAAFCQAAAAAKCQAAAAAICQAAAAADCQAAAAAJCQAAAAAGCQAAAAABCQAAAAAHCQAAAAANCQAAAAAMCQAAAAAACQAAAAAHHgAAAAABCQAAAAAHCQAAAAAKCQAAAAAACQAAAAAGCQAAAAAECQAAAAACCQAAAAAHCQAAAAANCQAAAAAECQAAAAADCQAAAAAGCQAAAAAJCQAAAAAMCQAAAAADCQAAAAAMCQAAAAADCQAAAAABCQAAAAAGCQAAAAADCQAAAAAACQAAAAAACQAAAAAECQAAAAAFCQAAAAAGCQAAAAAFCQAAAAAFCQAAAAALCQAAAAABCQAAAAAACQAAAAAKCQAAAAAGCQAAAAAHCQAAAAAHCQAAAAADCQAAAAAMCQAAAAABCQAAAAAJCQAAAAANCQAAAAAACQAAAAAHCQAAAAAE version: 6 0,1: ind: 0,1 - tiles: BgAAAAADBwAAAAABBQAAAAACBQAAAAABBQAAAAABBQAAAAADBQAAAAABHgAAAAAFBgAAAAADBwAAAAADBwAAAAAABwAAAAADBwAAAAAABQAAAAAABgAAAAADHQAAAAAABwAAAAABBwAAAAABBQAAAAABBQAAAAADBQAAAAACBQAAAAADBQAAAAACHgAAAAABBgAAAAABBgAAAAABBgAAAAADBwAAAAABBgAAAAABBgAAAAADBgAAAAABHQAAAAACBwAAAAAABwAAAAADBwAAAAADBQAAAAAABQAAAAADBQAAAAACBQAAAAADHgAAAAABHgAAAAABHgAAAAABHgAAAAADHQAAAAABHQAAAAACHQAAAAACHQAAAAABHQAAAAACHgAAAAACHgAAAAABHgAAAAAFHgAAAAACGAAAAAADFgAAAAABAgAAAAACFgAAAAADHgAAAAAAHgAAAAADHgAAAAAEHgAAAAABHgAAAAAAHQAAAAADHgAAAAAEHgAAAAAAHgAAAAADHgAAAAAFGAAAAAAAAgAAAAANAgAAAAAIGAAAAAAAFgAAAAADGAAAAAAEBgAAAAABCwAAAAAACwAAAAAACwAAAAAABgAAAAAACwAAAAAABAAAAAAKBgAAAAACHAAAAAAAHAAAAAADFgAAAAAEAgAAAAAAAgAAAAAIAgAAAAABGAAAAAAEHQAAAAAABgAAAAADCwAAAAAACwAAAAAADAAAAAAACwAAAAAABQAAAAACBQAAAAAABgAAAAABHAAAAAAAHAAAAAACHAAAAAACFgAAAAADAgAAAAAFAgAAAAALAgAAAAAMHQAAAAAFBgAAAAAACwAAAAAADAAAAAAADAAAAAAABgAAAAADBQAAAAADCwAAAAAABgAAAAAAHAAAAAAEHAAAAAABHAAAAAADHgAAAAABGAAAAAADHgAAAAACCQAAAAAHCQAAAAAIBgAAAAACBQAAAAABCwAAAAAABgAAAAADBQAAAAABCwAAAAAACwAAAAAABgAAAAACHAAAAAAFHAAAAAABHAAAAAACCQAAAAACCQAAAAANCQAAAAAMCQAAAAALCQAAAAAHBgAAAAABCwAAAAAACwAAAAAACwAAAAAABQAAAAABCwAAAAAACwAAAAAABgAAAAAACQAAAAACCQAAAAAMCQAAAAAECQAAAAACCQAAAAAFCQAAAAACCQAAAAAECQAAAAAHBgAAAAABDAAAAAAADAAAAAAACwAAAAAABgAAAAABCwAAAAAABAAAAAABBgAAAAADCQAAAAAICQAAAAADCQAAAAAJCQAAAAACCQAAAAAFCQAAAAAGCQAAAAABCQAAAAABBgAAAAAADAAAAAAADAAAAAAACwAAAAAADAAAAAAADAAAAAAABAAAAAAGBgAAAAACCQAAAAALCQAAAAAKCQAAAAANCQAAAAAGCQAAAAACCQAAAAAICQAAAAAICQAAAAAHBgAAAAADDAAAAAAADAAAAAAACwAAAAAACwAAAAAACwAAAAAACwAAAAAABgAAAAABCQAAAAAKCQAAAAALCQAAAAAACQAAAAAMCQAAAAAMCQAAAAAICQAAAAAFCQAAAAAHBgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAACBgAAAAABBgAAAAAABgAAAAAACQAAAAALCQAAAAACCQAAAAALCQAAAAAFCQAAAAAHCQAAAAALCQAAAAACCQAAAAACCQAAAAAFCQAAAAANCQAAAAAFCQAAAAAICQAAAAAICQAAAAABCQAAAAABCQAAAAAKCQAAAAAFCQAAAAAKCQAAAAAECQAAAAAECQAAAAAKCQAAAAAMCQAAAAABCQAAAAAMCQAAAAADCQAAAAAKCQAAAAACCQAAAAALCQAAAAADCQAAAAABCQAAAAAICQAAAAAKCQAAAAAGCQAAAAAMCQAAAAAHCQAAAAACCQAAAAALCQAAAAAICQAAAAANCQAAAAAHCQAAAAADCQAAAAALCQAAAAABCQAAAAANCQAAAAACCQAAAAAJCQAAAAABCQAAAAAN + tiles: BgAAAAADBwAAAAABBQAAAAACBQAAAAABBQAAAAABBQAAAAADBQAAAAABHgAAAAAFBgAAAAADBwAAAAADBwAAAAAABwAAAAADBwAAAAAABQAAAAAABgAAAAADHQAAAAAABwAAAAABBwAAAAABBQAAAAABBQAAAAADBQAAAAACBQAAAAADBQAAAAACHgAAAAABBgAAAAABBgAAAAABBgAAAAADBwAAAAABBgAAAAABBgAAAAADBgAAAAABHQAAAAACBwAAAAAABwAAAAADBwAAAAADBQAAAAAABQAAAAADBQAAAAACBQAAAAADHgAAAAABHgAAAAABHgAAAAABHgAAAAADHQAAAAABHQAAAAACHQAAAAACHQAAAAABHQAAAAACHgAAAAACHgAAAAABHgAAAAAFHgAAAAACHQAAAAAAHAAAAAAAAgAAAAACHAAAAAAAHgAAAAAAHgAAAAADHgAAAAAEHgAAAAABHgAAAAAAHQAAAAADHgAAAAAEHgAAAAAAHgAAAAADHgAAAAAFHQAAAAAAAgAAAAANAgAAAAAIHQAAAAAAHAAAAAAAHQAAAAAABgAAAAABCwAAAAAACwAAAAAACwAAAAAABgAAAAAACwAAAAAABAAAAAAKBgAAAAACHAAAAAAAHAAAAAADHAAAAAAAAgAAAAAAAgAAAAAIAgAAAAABHQAAAAAAHQAAAAAABgAAAAADCwAAAAAACwAAAAAADAAAAAAACwAAAAAABQAAAAACBQAAAAAABgAAAAABHAAAAAAAHAAAAAACHAAAAAACHAAAAAAAAgAAAAAFAgAAAAALAgAAAAAMHQAAAAAFBgAAAAAACwAAAAAADAAAAAAADAAAAAAABgAAAAADBQAAAAADCwAAAAAABgAAAAAAHAAAAAAEHAAAAAABHAAAAAADHgAAAAABHQAAAAAAHgAAAAACCQAAAAAHCQAAAAAIBgAAAAACBQAAAAABCwAAAAAABgAAAAADBQAAAAABCwAAAAAACwAAAAAABgAAAAACHAAAAAAFHAAAAAABHAAAAAACCQAAAAACCQAAAAANCQAAAAAMCQAAAAALCQAAAAAHBgAAAAABCwAAAAAACwAAAAAACwAAAAAABQAAAAABCwAAAAAACwAAAAAABgAAAAAACQAAAAACCQAAAAAMCQAAAAAECQAAAAACCQAAAAAFCQAAAAACCQAAAAAECQAAAAAHBgAAAAABDAAAAAAADAAAAAAACwAAAAAABgAAAAABCwAAAAAABAAAAAABBgAAAAADCQAAAAAICQAAAAADCQAAAAAJCQAAAAACCQAAAAAFCQAAAAAGCQAAAAABCQAAAAABBgAAAAAADAAAAAAADAAAAAAACwAAAAAADAAAAAAADAAAAAAABAAAAAAGBgAAAAACCQAAAAALCQAAAAAKCQAAAAANCQAAAAAGCQAAAAACCQAAAAAICQAAAAAICQAAAAAHBgAAAAADDAAAAAAADAAAAAAACwAAAAAACwAAAAAACwAAAAAACwAAAAAABgAAAAABCQAAAAAKCQAAAAALCQAAAAAACQAAAAAMCQAAAAAMCQAAAAAICQAAAAAFCQAAAAAHBgAAAAABBgAAAAAABgAAAAACBgAAAAAABgAAAAACBgAAAAABBgAAAAAABgAAAAAACQAAAAALCQAAAAACCQAAAAALCQAAAAAFCQAAAAAHCQAAAAALCQAAAAACCQAAAAACCQAAAAAFCQAAAAANCQAAAAAFCQAAAAAICQAAAAAICQAAAAABCQAAAAABCQAAAAAKCQAAAAAFCQAAAAAKCQAAAAAECQAAAAAECQAAAAAKCQAAAAAMCQAAAAABCQAAAAAMCQAAAAADCQAAAAAKCQAAAAACCQAAAAALCQAAAAADCQAAAAABCQAAAAAICQAAAAAKCQAAAAAGCQAAAAAMCQAAAAAHCQAAAAACCQAAAAALCQAAAAAICQAAAAANCQAAAAAHCQAAAAADCQAAAAALCQAAAAABCQAAAAANCQAAAAACCQAAAAAJCQAAAAABCQAAAAAN version: 6 1,2: ind: 1,2 @@ -145,7 +154,7 @@ entities: version: 6 -1,1: ind: -1,1 - tiles: HAAAAAABHAAAAAAAHAAAAAAFHAAAAAAEGAAAAAADBgAAAAADBQAAAAAABQAAAAAABgAAAAABBgAAAAADHgAAAAADHgAAAAACHgAAAAAABwAAAAADBQAAAAADBgAAAAACHAAAAAAFHAAAAAAEHAAAAAAAHAAAAAAFHAAAAAADBgAAAAADBQAAAAAABQAAAAACBgAAAAADBgAAAAACHgAAAAADHgAAAAADHgAAAAAFBwAAAAACBQAAAAACBQAAAAABHAAAAAAFHAAAAAABHAAAAAAEHAAAAAAEHAAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHQAAAAACHgAAAAAFHgAAAAAFBwAAAAADBwAAAAACBwAAAAABHAAAAAAFHAAAAAACHAAAAAAEHAAAAAAEHAAAAAAAHgAAAAAAHgAAAAADHgAAAAACHgAAAAAAHQAAAAABGAAAAAAEHAAAAAAEHAAAAAABHAAAAAAEHgAAAAACHgAAAAAFAgAAAAAMHAAAAAACHAAAAAAEAgAAAAACAgAAAAACAgAAAAANGAAAAAADHAAAAAAAGAAAAAACGAAAAAAEAgAAAAACAgAAAAAFAgAAAAAGHAAAAAAAHgAAAAADHgAAAAAFAgAAAAAKAgAAAAAFCQAAAAAIAgAAAAAIAgAAAAAMAgAAAAADAgAAAAAOGAAAAAAEAgAAAAALAgAAAAAEAgAAAAAEHAAAAAAFGAAAAAADHgAAAAACHgAAAAAFHgAAAAABCQAAAAADCQAAAAANCQAAAAAFAgAAAAAMAgAAAAADAgAAAAANAgAAAAAHAgAAAAAIAgAAAAAAAgAAAAANAgAAAAABAgAAAAACHAAAAAADHgAAAAADHgAAAAAEHAAAAAABCQAAAAABCQAAAAAACQAAAAALCQAAAAAHCQAAAAAIAgAAAAALAgAAAAAKAgAAAAACAgAAAAADAgAAAAAIGAAAAAAFAgAAAAAPCQAAAAACHgAAAAAEHgAAAAAEHAAAAAACCQAAAAAGCQAAAAAKCQAAAAAGCQAAAAAMCQAAAAABCQAAAAAFCQAAAAACAgAAAAAJAgAAAAAKAgAAAAAIAgAAAAAJAgAAAAAICQAAAAADCQAAAAACHgAAAAADHAAAAAADCQAAAAAECQAAAAAMCQAAAAANCQAAAAAHCQAAAAAKCQAAAAAMCQAAAAANCQAAAAAACQAAAAADCQAAAAACCQAAAAAECQAAAAAFCQAAAAADCQAAAAAMCQAAAAAACQAAAAAICQAAAAADCQAAAAANCQAAAAALCQAAAAALCQAAAAABCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAADCQAAAAAKCQAAAAALCQAAAAACCQAAAAANCQAAAAALCQAAAAAFCQAAAAAMCQAAAAAFCQAAAAAACQAAAAAECQAAAAACCQAAAAAKCQAAAAABCQAAAAABCQAAAAAFCQAAAAAICQAAAAACCQAAAAAFCQAAAAAACQAAAAAJCQAAAAAHCQAAAAAFCQAAAAAFCQAAAAABCQAAAAALCQAAAAAICQAAAAAKCQAAAAAHCQAAAAADCQAAAAAKCQAAAAABCQAAAAADCQAAAAABCQAAAAAICQAAAAAJCQAAAAANCQAAAAANCQAAAAABCQAAAAAHCQAAAAAICQAAAAAKCQAAAAAJCQAAAAAACQAAAAAHCQAAAAANCQAAAAAACQAAAAADCQAAAAAJCQAAAAAHCQAAAAACCQAAAAAICQAAAAAHCQAAAAAJCQAAAAABCQAAAAAICQAAAAAGCQAAAAAMCQAAAAACCQAAAAADCQAAAAAHCQAAAAAICQAAAAANCQAAAAAMCQAAAAAFCQAAAAAGCQAAAAAGCQAAAAADCQAAAAAECQAAAAAACQAAAAACCQAAAAAKCQAAAAAACQAAAAADCQAAAAAMCQAAAAAJCQAAAAAFCQAAAAAFCQAAAAAACQAAAAAACQAAAAAICQAAAAALCQAAAAAACQAAAAALCQAAAAAHCQAAAAAFCQAAAAAJCQAAAAAM + tiles: HAAAAAABHAAAAAAAHAAAAAAFHAAAAAAEHQAAAAAABgAAAAADBQAAAAAABQAAAAAABgAAAAABBgAAAAADHgAAAAADHgAAAAACHgAAAAAABwAAAAADBQAAAAADBgAAAAACHAAAAAAFHAAAAAAEHAAAAAAAHAAAAAAFHAAAAAADBgAAAAADBQAAAAAABQAAAAACBgAAAAADBgAAAAACHgAAAAADHgAAAAADHgAAAAAFBwAAAAACBQAAAAACBQAAAAABHAAAAAAFHAAAAAABHAAAAAAEHAAAAAAEHAAAAAACBgAAAAACBgAAAAACBgAAAAAABgAAAAABBgAAAAAAHQAAAAACHgAAAAAFHgAAAAAFBwAAAAADBwAAAAACBwAAAAABHAAAAAAFHAAAAAACHAAAAAAEHAAAAAAEHAAAAAAAHgAAAAAAHgAAAAADHgAAAAACHgAAAAAAHQAAAAABHQAAAAAAHAAAAAAEHAAAAAABHAAAAAAEHgAAAAACHgAAAAAFAgAAAAAMHAAAAAACHAAAAAAEAgAAAAACAgAAAAACAgAAAAANHQAAAAAAHAAAAAAAHQAAAAAAHQAAAAAAAgAAAAACAgAAAAAFAgAAAAAGHAAAAAAAHgAAAAADHgAAAAAFAgAAAAAKAgAAAAAFCQAAAAAIAgAAAAAIAgAAAAAMAgAAAAADAgAAAAAOHQAAAAAAAgAAAAALAgAAAAAEAgAAAAAEHAAAAAAFHQAAAAAAHgAAAAACHgAAAAAFHgAAAAABCQAAAAADCQAAAAANCQAAAAAFAgAAAAAMAgAAAAADAgAAAAANAgAAAAAHAgAAAAAIAgAAAAAAAgAAAAANAgAAAAABAgAAAAACHAAAAAADHgAAAAADHgAAAAAEHAAAAAABCQAAAAABCQAAAAAACQAAAAALCQAAAAAHCQAAAAAIAgAAAAALAgAAAAAKAgAAAAACAgAAAAADAgAAAAAIHQAAAAAAAgAAAAAPCQAAAAACHgAAAAAEHgAAAAAEHAAAAAACCQAAAAAGCQAAAAAKCQAAAAAGCQAAAAAMCQAAAAABCQAAAAAFCQAAAAACAgAAAAAJAgAAAAAKAgAAAAAIAgAAAAAJAgAAAAAICQAAAAADCQAAAAACHgAAAAADHAAAAAADCQAAAAAECQAAAAAMCQAAAAANCQAAAAAHCQAAAAAKCQAAAAAMCQAAAAANCQAAAAAACQAAAAADCQAAAAACCQAAAAAECQAAAAAFCQAAAAADCQAAAAAMCQAAAAAACQAAAAAICQAAAAADCQAAAAANCQAAAAALCQAAAAALCQAAAAABCQAAAAAFCQAAAAAHCQAAAAAJCQAAAAADCQAAAAAKCQAAAAALCQAAAAACCQAAAAANCQAAAAALCQAAAAAFCQAAAAAMCQAAAAAFCQAAAAAACQAAAAAECQAAAAACCQAAAAAKCQAAAAABCQAAAAABCQAAAAAFCQAAAAAICQAAAAACCQAAAAAFCQAAAAAACQAAAAAJCQAAAAAHCQAAAAAFCQAAAAAFCQAAAAABCQAAAAALCQAAAAAICQAAAAAKCQAAAAAHCQAAAAADCQAAAAAKCQAAAAABCQAAAAADCQAAAAABCQAAAAAICQAAAAAJCQAAAAANCQAAAAANCQAAAAABCQAAAAAHCQAAAAAICQAAAAAKCQAAAAAJCQAAAAAACQAAAAAHCQAAAAANCQAAAAAACQAAAAADCQAAAAAJCQAAAAAHCQAAAAACCQAAAAAICQAAAAAHCQAAAAAJCQAAAAABCQAAAAAICQAAAAAGCQAAAAAMCQAAAAACCQAAAAADCQAAAAAHCQAAAAAICQAAAAANCQAAAAAMCQAAAAAFCQAAAAAGCQAAAAAGCQAAAAADCQAAAAAECQAAAAAACQAAAAACCQAAAAAKCQAAAAAACQAAAAADCQAAAAAMCQAAAAAJCQAAAAAFCQAAAAAFCQAAAAAACQAAAAAACQAAAAAICQAAAAALCQAAAAAACQAAAAALCQAAAAAHCQAAAAAFCQAAAAAJCQAAAAAM version: 6 -1,2: ind: -1,2 @@ -177,11 +186,11 @@ entities: version: 6 -1,-3: ind: -1,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHgAAAAAEHgAAAAAAHgAAAAAFAgAAAAALIQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAEAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAACHQAAAAAAHgAAAAAEAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAADHQAAAAAAHgAAAAACHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAAAAAAAAAQAAAAADHgAAAAABHgAAAAAEHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHAAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAQAAAAADAQAAAAAEHgAAAAAFAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAACIQAAAAAAAQAAAAACAgAAAAAEAgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHgAAAAACHgAAAAADHgAAAAAFHgAAAAAEFgAAAAAEHgAAAAABIQAAAAAAAgAAAAAGAgAAAAAPAgAAAAAIAgAAAAAKBgAAAAADBgAAAAADBgAAAAAABgAAAAABBgAAAAACBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAAAHgAAAAAAIQAAAAAAHgAAAAADHgAAAAACCQAAAAAIAgAAAAAOBQAAAAACBQAAAAABBQAAAAABBgAAAAADBgAAAAAABQAAAAAABQAAAAADBgAAAAACBQAAAAACBgAAAAACHgAAAAABIQAAAAAABwAAAAABBwAAAAAAAgAAAAANAgAAAAABBgAAAAADBQAAAAABBQAAAAABBgAAAAAABgAAAAADBQAAAAADBgAAAAAABQAAAAACBQAAAAADBgAAAAADHgAAAAADIQAAAAAABgAAAAAABQAAAAAAAgAAAAACAgAAAAAFBgAAAAADBgAAAAABBgAAAAABBQAAAAADBQAAAAAABQAAAAABBAAAAAAGBgAAAAAABwAAAAADBgAAAAACHgAAAAAAIQAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAHgAAAAAEHgAAAAAAHgAAAAAFAgAAAAALIQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAABDQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAEAAAAAAAEAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAEAQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAACHQAAAAAAHgAAAAAEAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAADHQAAAAAAHgAAAAACHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAAAAAAAAAQAAAAADHgAAAAABHgAAAAAEHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHAAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAQAAAAADAQAAAAAEHgAAAAAFAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAIQAAAAAAAQAAAAAAAQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAACIQAAAAAAAQAAAAACAgAAAAAEAgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHgAAAAACHgAAAAADHgAAAAAFHgAAAAAEHAAAAAAAHgAAAAABIQAAAAAAAgAAAAAGAgAAAAAPAgAAAAAIAgAAAAAKBgAAAAADBgAAAAADBgAAAAAABgAAAAABBgAAAAACBgAAAAADBgAAAAAABgAAAAADBgAAAAACBgAAAAAAHgAAAAAAIQAAAAAAHgAAAAADHgAAAAACCQAAAAAIAgAAAAAOBQAAAAACBQAAAAABBQAAAAABBgAAAAADBgAAAAAABQAAAAAABQAAAAADBgAAAAACBQAAAAACBgAAAAACHgAAAAABIQAAAAAABwAAAAABBwAAAAAAAgAAAAANAgAAAAABBgAAAAADBQAAAAABBQAAAAABBgAAAAAABgAAAAADBQAAAAADBgAAAAAABQAAAAACBQAAAAADBgAAAAADHgAAAAADIQAAAAAABgAAAAAABQAAAAAAAgAAAAACAgAAAAAFBgAAAAADBgAAAAABBgAAAAABBQAAAAADBQAAAAAABQAAAAABBAAAAAAGBgAAAAAABwAAAAADBgAAAAACHgAAAAAAIQAAAAAA version: 6 0,-3: ind: 0,-3 - tiles: AgAAAAAAAgAAAAAAFgAAAAAAAgAAAAABAgAAAAAPHAAAAAAFAgAAAAAHAgAAAAAKAgAAAAACHAAAAAAEHAAAAAAFHAAAAAABHAAAAAABHAAAAAABHgAAAAABHgAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAIAwAAAAAAAwAAAAAAAwAAAAAEAwAAAAAAAwAAAAAAEAAAAAAAEAAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAEAQAAAAACAQAAAAADAQAAAAACDQAAAAAAHgAAAAAAIQAAAAAAAgAAAAAGHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHgAAAAACAwAAAAAAAQAAAAACHgAAAAAAAQAAAAAEAQAAAAABAQAAAAADIQAAAAAAAgAAAAANHgAAAAAAHAAAAAAAHAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAACAwAAAAAAHgAAAAADAQAAAAAEAQAAAAADAQAAAAABAQAAAAAEIQAAAAAAAgAAAAAEHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHgAAAAAFAwAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAAEHgAAAAAEIQAAAAAAHgAAAAAFHAAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAFAwAAAAAAAQAAAAADAQAAAAAAAQAAAAABAQAAAAACAQAAAAACIQAAAAAAHgAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAHgAAAAAAHgAAAAAAHgAAAAADAwAAAAAAAQAAAAABAQAAAAAEAQAAAAAEAQAAAAACAQAAAAAAIQAAAAAAHgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAwAAAAAAAQAAAAABAQAAAAACAQAAAAABAQAAAAAEAQAAAAAAIQAAAAAAAgAAAAANHAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAABAwAAAAAAAQAAAAACAQAAAAACAQAAAAAEAQAAAAADAQAAAAACIQAAAAAAFgAAAAAAHgAAAAABHgAAAAAAHgAAAAACHgAAAAAEHgAAAAACHQAAAAAAAgAAAAAGHgAAAAABAwAAAAAAAQAAAAADAQAAAAAAAQAAAAADAQAAAAADAQAAAAABIQAAAAAAHgAAAAAFBgAAAAACBgAAAAAABgAAAAACBgAAAAAABgAAAAAABgAAAAAABgAAAAACHgAAAAABAwAAAAACHgAAAAAFAQAAAAADAQAAAAAEAQAAAAAAAQAAAAACIQAAAAAAHgAAAAABBgAAAAACBQAAAAADBQAAAAADBQAAAAADBQAAAAACBQAAAAACBgAAAAADHgAAAAAEAwAAAAAAHgAAAAAAHgAAAAACHgAAAAAEHgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAEBgAAAAACBQAAAAADBQAAAAABBQAAAAABBgAAAAABBgAAAAADBgAAAAABHgAAAAABAwAAAAAAHgAAAAAFHgAAAAACHgAAAAABHgAAAAADHgAAAAAFAgAAAAAAAgAAAAAKBgAAAAABBQAAAAACBQAAAAAABQAAAAAABQAAAAABBQAAAAACBgAAAAABHgAAAAAFAwAAAAAGAwAAAAAEAwAAAAADAwAAAAAEAwAAAAADAwAAAAAB + tiles: AgAAAAAAAgAAAAAAHAAAAAAAAgAAAAABAgAAAAAPHAAAAAAFAgAAAAAHAgAAAAAKAgAAAAACHAAAAAAEHAAAAAAFHAAAAAABHAAAAAABHAAAAAABHgAAAAABHgAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAIAwAAAAAAAwAAAAAAAwAAAAAEAwAAAAAAAwAAAAAAEAAAAAAAEAAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAAAwAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAADQAAAAAAAwAAAAAEAQAAAAACAQAAAAADAQAAAAACDQAAAAAAHgAAAAAAIQAAAAAAAgAAAAAGHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHgAAAAACAwAAAAAAAQAAAAACHgAAAAAAAQAAAAAEAQAAAAABAQAAAAADIQAAAAAAAgAAAAANHgAAAAAAHAAAAAAAHAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAACAwAAAAAAHgAAAAADAQAAAAAEAQAAAAADAQAAAAABAQAAAAAEIQAAAAAAAgAAAAAEHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHgAAAAAFAwAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAAEHgAAAAAEIQAAAAAAHgAAAAAFHAAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAFAwAAAAAAAQAAAAADAQAAAAAAAQAAAAABAQAAAAACAQAAAAACIQAAAAAAHgAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAHgAAAAAAHgAAAAAAHgAAAAADAwAAAAAAAQAAAAABAQAAAAAEAQAAAAAEAQAAAAACAQAAAAAAIQAAAAAAHgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHAAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAwAAAAAAAQAAAAABAQAAAAACAQAAAAABAQAAAAAEAQAAAAAAIQAAAAAAAgAAAAANHAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAABAwAAAAAAAQAAAAACAQAAAAACAQAAAAAEAQAAAAADAQAAAAACIQAAAAAAHAAAAAAAHgAAAAABHgAAAAAAHgAAAAACHgAAAAAEHgAAAAACHQAAAAAAAgAAAAAGHgAAAAABAwAAAAAAAQAAAAADAQAAAAAAAQAAAAADAQAAAAADAQAAAAABIQAAAAAAHgAAAAAFBgAAAAACBgAAAAAABgAAAAACBgAAAAAABgAAAAAABgAAAAAABgAAAAACHgAAAAABAwAAAAACHgAAAAAFAQAAAAADAQAAAAAEAQAAAAAAAQAAAAACIQAAAAAAHgAAAAABBgAAAAACBQAAAAADBQAAAAADBQAAAAADBQAAAAACBQAAAAACBgAAAAADHgAAAAAEAwAAAAAAHgAAAAAAHgAAAAACHgAAAAAEHgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAEBgAAAAACBQAAAAADBQAAAAABBQAAAAABBgAAAAABBgAAAAADBgAAAAABHgAAAAABAwAAAAAAHgAAAAAFHgAAAAACHgAAAAABHgAAAAADHgAAAAAFAgAAAAAAAgAAAAAKBgAAAAABBQAAAAACBQAAAAAABQAAAAAABQAAAAABBQAAAAACBgAAAAABHgAAAAAFAwAAAAAGAwAAAAAEAwAAAAADAwAAAAAEAwAAAAADAwAAAAAB version: 6 1,-3: ind: 1,-3 @@ -449,7 +458,7 @@ entities: version: 6 7,4: ind: 7,4 - tiles: AQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAQAAAAADAQAAAAABAQAAAAACAQAAAAABAQAAAAAEAQAAAAACAQAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAABAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAEAQAAAAAAAQAAAAABAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQAAAAADAQAAAAAEAQAAAAAEAQAAAAABAQAAAAABAQAAAAABAQAAAAAAAQAAAAABAQAAAAABAQAAAAACAQAAAAACAQAAAAAEAQAAAAABAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAABAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAACAQAAAAAEAQAAAAACAQAAAAADAQAAAAABAQAAAAABAAAAAAAAAQAAAAABAQAAAAADAQAAAAAAAQAAAAAEAQAAAAADAQAAAAADAQAAAAADAQAAAAACAQAAAAADAQAAAAAEAQAAAAABAQAAAAADAQAAAAADAQAAAAABAQAAAAABAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAEAQAAAAACAQAAAAADAQAAAAACAQAAAAABAQAAAAAEAQAAAAAEAQAAAAABAQAAAAAAAQAAAAABAQAAAAAEAQAAAAADAAAAAAAAAQAAAAACAQAAAAACAQAAAAACAQAAAAACAQAAAAADAQAAAAACAQAAAAAEAQAAAAAEAQAAAAACAQAAAAABAQAAAAACAQAAAAABAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAADAQAAAAACAQAAAAACAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAADAQAAAAABAQAAAAABAQAAAAABAQAAAAADAQAAAAABAQAAAAACAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAABAQAAAAACAQAAAAACAQAAAAAAAQAAAAADAQAAAAAEAQAAAAACAQAAAAAEAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAABAQAAAAAAAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAADAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAACAQAAAAABAQAAAAADAQAAAAAAAQAAAAABAQAAAAACAQAAAAADAQAAAAADAQAAAAADAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAQAAAAABAQAAAAAEAQAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAAAQAAAAABAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAQAAAAABAQAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAEAQAAAAADAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAQAAAAADAQAAAAABAQAAAAACAQAAAAABAQAAAAAEAQAAAAACAQAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAABAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAEAQAAAAAAAQAAAAABAQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQAAAAADAQAAAAAEAQAAAAAEAQAAAAABAQAAAAABAQAAAAABAQAAAAAAAQAAAAABAQAAAAABAQAAAAACAQAAAAACAQAAAAAEAQAAAAABAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAABAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAACAQAAAAAEAQAAAAACAQAAAAADAQAAAAABAQAAAAABAAAAAAAAAQAAAAABAQAAAAADAQAAAAAAAQAAAAAEAQAAAAADAQAAAAADAQAAAAADAQAAAAACAQAAAAADAQAAAAAEAQAAAAABAQAAAAADAQAAAAADAQAAAAABAQAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAEAQAAAAACAQAAAAADAQAAAAACAQAAAAABAQAAAAAEAQAAAAAEAQAAAAABAQAAAAAAAQAAAAABAQAAAAAEAQAAAAADAQAAAAAAAQAAAAACAQAAAAACAQAAAAACAQAAAAACAQAAAAADAQAAAAACAQAAAAAEAQAAAAAEAQAAAAACAQAAAAABAQAAAAACAQAAAAABAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAADAQAAAAACAQAAAAACAQAAAAADAQAAAAAEAQAAAAAAAQAAAAAEAQAAAAADAQAAAAABAQAAAAABAQAAAAABAQAAAAADAQAAAAABAQAAAAACAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAABAQAAAAACAQAAAAACAQAAAAAAAQAAAAADAQAAAAAEAQAAAAACAQAAAAAEAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAABAQAAAAAAAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAADAQAAAAAEAQAAAAAEAQAAAAAAAQAAAAAAAQAAAAACAQAAAAACAQAAAAAAAQAAAAABAQAAAAABAQAAAAAAAQAAAAACAQAAAAABAQAAAAADAQAAAAAAAQAAAAABAQAAAAACAQAAAAADAQAAAAADAQAAAAADAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAAAQAAAAABAQAAAAAEAQAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAQAAAAAAAQAAAAABAQAAAAABAQAAAAAEAQAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAACAQAAAAABAQAAAAAAAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAADAQAAAAAAAQAAAAAEAQAAAAADAQAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAADAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -3,-1: ind: -3,-1 @@ -479,6 +488,18 @@ entities: ind: -3,-3 tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 + -3,-2: + ind: -3,-2 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + -6,-5: + ind: -6,-5 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 + 8,4: + ind: 8,4 + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + version: 6 - type: Physics bodyStatus: InAir angularDamping: 0.05 @@ -832,14 +853,6 @@ entities: 217: -15.227991,41.357822 - type: GasTileOverlay - type: RadiationGridResistance -- proto: ChessBoard - entities: - - uid: 2104 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5103,-40.338512 - parent: 1 - proto: CP14AlchemyFurnace entities: - uid: 2 @@ -902,7 +915,7 @@ entities: - uid: 12 components: - type: Transform - pos: 6.386755,19.645937 + pos: 5.8588877,22.397306 parent: 1 - uid: 15 components: @@ -1079,8 +1092,7 @@ entities: - uid: 50 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 22.489698,16.453072 + pos: 18.484926,19.120111 parent: 1 - proto: CP14BaseSharpeningStone entities: @@ -1271,6 +1283,17 @@ entities: parent: 1 - proto: CP14Bell entities: + - uid: 7678 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -11.295984,-22.20922 + parent: 1 + - uid: 7679 + components: + - type: Transform + pos: -8.50448,1.1592681 + parent: 1 - uid: 14307 components: - type: Transform @@ -38270,26 +38293,6 @@ entities: rot: 1.5707963267948966 rad pos: -4.5,4.5 parent: 1 - - uid: 7184 - components: - - type: Transform - pos: -23.5,10.5 - parent: 1 - - uid: 7185 - components: - - type: Transform - pos: -24.5,10.5 - parent: 1 - - uid: 7186 - components: - - type: Transform - pos: -23.5,8.5 - parent: 1 - - uid: 7187 - components: - - type: Transform - pos: -24.5,8.5 - parent: 1 - uid: 7188 components: - type: Transform @@ -40256,7 +40259,7 @@ entities: rot: -1.5707963267948966 rad pos: -1.751207,-15.858576 parent: 1 -- proto: CP14CrystalAir +- proto: CP14CrystalQuartz entities: - uid: 7552 components: @@ -40287,8 +40290,6 @@ entities: rot: -1.5707963267948966 rad pos: 5.5089397,23.222403 parent: 1 -- proto: CP14CrystalChaos - entities: - uid: 7557 components: - type: Transform @@ -40313,8 +40314,6 @@ entities: rot: 3.141592653589793 rad pos: -28.061974,-10.1861515 parent: 1 -- proto: CP14CrystalEmpty - entities: - uid: 7561 components: - type: Transform @@ -40333,8 +40332,6 @@ entities: rot: 3.141592653589793 rad pos: -25.89728,1.3308579 parent: 1 -- proto: CP14CrystalOrder - entities: - uid: 7564 components: - type: Transform @@ -40361,8 +40358,6 @@ entities: rot: 3.141592653589793 rad pos: -26.403711,-7.618255 parent: 1 -- proto: CP14CrystalWater - entities: - uid: 7569 components: - type: Transform @@ -40935,58 +40930,6 @@ entities: - type: Transform pos: 17.630857,-2.5448456 parent: 1 -- proto: CP14DemiplaneKeyT1 - entities: - - uid: 7674 - components: - - type: Transform - pos: -5.841518,-14.157722 - parent: 1 - - uid: 7675 - components: - - type: Transform - pos: -5.5601673,-14.180212 - parent: 1 - - uid: 7676 - components: - - type: Transform - pos: -5.2563095,-14.180212 - parent: 1 - - uid: 7677 - components: - - type: Transform - pos: -5.6839614,-14.337633 - parent: 1 - - uid: 7678 - components: - - type: Transform - pos: -5.3688498,-14.348878 - parent: 1 - - uid: 7679 - components: - - type: Transform - pos: -5.8527718,-14.472566 - parent: 1 - - uid: 7680 - components: - - type: Transform - pos: -5.4701347,-14.495055 - parent: 1 - - uid: 7681 - components: - - type: Transform - pos: -5.1662765,-14.517543 - parent: 1 - - uid: 7682 - components: - - type: Transform - pos: -5.1100073,-14.360122 - parent: 1 - - uid: 7683 - components: - - type: Transform - pos: -5.9540577,-14.337633 - parent: 1 - proto: CP14DemiplaneLinkCrystal entities: - uid: 9228 @@ -41037,16 +40980,17 @@ entities: parent: 1 - proto: CP14EssenceCollector entities: + - uid: 7674 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,16.5 + parent: 1 - uid: 7690 components: - type: Transform pos: 17.5,0.5 parent: 1 - - uid: 7691 - components: - - type: Transform - pos: 22.5,16.5 - parent: 1 - proto: CP14FenceBigIron entities: - uid: 7583 @@ -41107,18 +41051,6 @@ entities: rot: 1.5707963267948966 rad pos: 10.5,-37.5 parent: 1 - - uid: 7703 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-33.5 - parent: 1 - - uid: 7704 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,-34.5 - parent: 1 - uid: 7705 components: - type: Transform @@ -41693,6 +41625,31 @@ entities: rot: 3.141592653589793 rad pos: 105.5,58.5 parent: 1 +- proto: CP14FenceGateBigIronCityGate + entities: + - uid: 7184 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 37.5,8.5 + parent: 1 + - uid: 7185 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 0.5,-45.5 + parent: 1 + - uid: 7186 + components: + - type: Transform + pos: -0.5,-45.5 + parent: 1 + - uid: 7187 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 37.5,9.5 + parent: 1 - proto: CP14FenceGateBigIronDemiplaneCrystal entities: - uid: 7693 @@ -41706,14 +41663,8 @@ entities: rot: 3.141592653589793 rad pos: 3.5,-17.5 parent: 1 -- proto: CP14FenceGateBigIronGuard +- proto: CP14FenceGateBigIronGuardBarracks entities: - - uid: 4483 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,8.5 - parent: 1 - uid: 7694 components: - type: Transform @@ -41726,22 +41677,6 @@ entities: rot: -1.5707963267948966 rad pos: 15.5,-27.5 parent: 1 - - uid: 11124 - components: - - type: Transform - pos: -0.5,-45.5 - parent: 1 - - uid: 11131 - components: - - type: Transform - pos: 0.5,-45.5 - parent: 1 - - uid: 11628 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 37.5,9.5 - parent: 1 - uid: 13871 components: - type: Transform @@ -42126,12 +42061,6 @@ entities: rot: 3.141592653589793 rad pos: -14.5,-2.5 parent: 1 - - uid: 7805 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -3.5,4.5 - parent: 1 - uid: 7806 components: - type: Transform @@ -42150,12 +42079,6 @@ entities: rot: -1.5707963267948966 rad pos: 6.5,-24.5 parent: 1 - - uid: 7815 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 22.5,16.5 - parent: 1 - uid: 7816 components: - type: Transform @@ -42305,6 +42228,16 @@ entities: parent: 1 - proto: CP14FloorWater entities: + - uid: 7680 + components: + - type: Transform + pos: -32.5,-18.5 + parent: 1 + - uid: 7681 + components: + - type: Transform + pos: -80.5,-70.5 + parent: 1 - uid: 7822 components: - type: Transform @@ -42340,12 +42273,6 @@ entities: - type: Transform pos: 20.5,23.5 parent: 1 - - uid: 7897 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -19.5,-11.5 - parent: 1 - uid: 7898 components: - type: Transform @@ -42520,24 +42447,6 @@ entities: - type: Transform pos: 21.5,22.5 parent: 1 - - uid: 7940 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -20.5,-12.5 - parent: 1 - - uid: 7941 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -20.5,-11.5 - parent: 1 - - uid: 7942 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -21.5,-11.5 - parent: 1 - uid: 7943 components: - type: Transform @@ -42580,12 +42489,6 @@ entities: rot: 1.5707963267948966 rad pos: -25.5,39.5 parent: 1 - - uid: 7950 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -19.5,-12.5 - parent: 1 - uid: 7951 components: - type: Transform @@ -47293,7 +47196,7 @@ entities: rot: -1.5707963267948966 rad pos: -22.5,-69.5 parent: 1 -- proto: CP14IronDoorGuard +- proto: CP14IronDoorGuardBarracks entities: - uid: 11 components: @@ -47473,34 +47376,32 @@ entities: rot: 3.141592653589793 rad pos: 30.5,14.5 parent: 1 -- proto: CP14IronDoorWindowedGuardEntrance +- proto: CP14IronDoorWindowedCityGate entities: - - uid: 8843 + - uid: 7682 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 10.5,-26.5 - parent: 1 - - uid: 8844 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 21.5,-14.5 - parent: 1 -- proto: CP14IronDoorWindowedMirroredGuardEntrance - entities: - - uid: 8845 - components: - - type: Transform - rot: 3.141592653589793 rad pos: 20.5,-14.5 parent: 1 - - uid: 8846 + - uid: 7683 components: - type: Transform - rot: -1.5707963267948966 rad + rot: 1.5707963267948966 rad pos: 10.5,-27.5 parent: 1 +- proto: CP14IronDoorWindowedMirroredCityGate + entities: + - uid: 7691 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 10.5,-26.5 + parent: 1 + - uid: 7703 + components: + - type: Transform + pos: 21.5,-14.5 + parent: 1 - proto: CP14JewelryTopaz entities: - uid: 8847 @@ -48619,13 +48520,6 @@ entities: - type: Transform pos: -6.3940024,-47.417915 parent: 1 -- proto: CP14Nail20 - entities: - - uid: 8998 - components: - - type: Transform - pos: 7.829065,1.7326093 - parent: 1 - proto: CP14Paper entities: - uid: 9001 @@ -48893,13 +48787,6 @@ entities: - type: Transform pos: -23.5,-17.5 parent: 1 -- proto: CP14PlantPotato - entities: - - uid: 9047 - components: - - type: Transform - pos: -20.5,-21.5 - parent: 1 - proto: CP14PlantTomatoes entities: - uid: 9048 @@ -49127,12 +49014,6 @@ entities: - type: Transform pos: 19.5,-1.5 parent: 1 - - uid: 9091 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -20.5,-15.5 - parent: 1 - uid: 9092 components: - type: Transform @@ -67168,6 +67049,26 @@ entities: - type: Transform pos: 8.661774,3.3517995 parent: 1 +- proto: CP14StoneWell + entities: + - uid: 7675 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 34.5,5.5 + parent: 1 + - uid: 7676 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 17.5,-8.5 + parent: 1 + - uid: 7677 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -20.5,-15.5 + parent: 1 - proto: CP14String entities: - uid: 11431 @@ -69040,139 +68941,6 @@ entities: parent: 1 - type: Fixtures fixtures: {} -- proto: CP14WallmountCrystalAmethysts - entities: - - uid: 11754 - components: - - type: Transform - pos: 20.5,27.5 - parent: 1 - - uid: 11755 - components: - - type: Transform - pos: 21.5,28.5 - parent: 1 -- proto: CP14WallmountCrystalEmeralds - entities: - - uid: 11756 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 22.5,23.5 - parent: 1 - - uid: 11757 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 22.5,27.5 - parent: 1 - - uid: 11758 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 22.5,28.5 - parent: 1 - - uid: 11759 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 22.5,19.5 - parent: 1 -- proto: CP14WallmountCrystalRubies - entities: - - uid: 11761 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,0.5 - parent: 1 - - uid: 11762 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,1.5 - parent: 1 - - uid: 11763 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 10.5,3.5 - parent: 1 -- proto: CP14WallmountCrystalSapphires - entities: - - uid: 11764 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -25.5,38.5 - parent: 1 - - uid: 11765 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -23.5,40.5 - parent: 1 - - uid: 11766 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -23.5,41.5 - parent: 1 - - uid: 11767 - components: - - type: Transform - pos: -28.5,43.5 - parent: 1 - - uid: 11768 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -26.5,38.5 - parent: 1 - - uid: 11769 - components: - - type: Transform - pos: -25.5,43.5 - parent: 1 - - uid: 11770 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -28.5,41.5 - parent: 1 -- proto: CP14WallmountCrystalTopazes - entities: - - uid: 11771 - components: - - type: Transform - pos: 0.5,24.5 - parent: 1 - - uid: 11772 - components: - - type: Transform - pos: 1.5,24.5 - parent: 1 - - uid: 11773 - components: - - type: Transform - pos: -0.5,24.5 - parent: 1 - - uid: 11774 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,24.5 - parent: 1 - - uid: 11775 - components: - - type: Transform - pos: -1.5,23.5 - parent: 1 - - uid: 11776 - components: - - type: Transform - pos: -3.5,22.5 - parent: 1 - proto: CP14WallmountFlagAlchemist entities: - uid: 11777 @@ -70311,184 +70079,6 @@ entities: - type: Transform pos: -5.4832573,12.711022 parent: 1 -- proto: CP14WallSkulls - entities: - - uid: 11915 - components: - - type: Transform - pos: -23.5,-66.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: top - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: left - - uid: 11916 - components: - - type: Transform - pos: -26.5,-73.5 - parent: 1 - - uid: 11917 - components: - - type: Transform - pos: -22.5,-67.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: top - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: left - - uid: 11918 - components: - - type: Transform - pos: -22.5,-70.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: left - - uid: 11919 - components: - - type: Transform - pos: -22.5,-68.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: left - - uid: 11920 - components: - - type: Transform - pos: -27.5,-73.5 - parent: 1 - - uid: 11921 - components: - - type: Transform - pos: -28.5,-71.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: bottom - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: right - - uid: 11922 - components: - - type: Transform - pos: -22.5,-71.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: left - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: bottom - - uid: 11923 - components: - - type: Transform - pos: -23.5,-67.5 - parent: 1 - - uid: 11924 - components: - - type: Transform - pos: -27.5,-71.5 - parent: 1 - - uid: 11925 - components: - - type: Transform - pos: -28.5,-70.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: right - - uid: 11926 - components: - - type: Transform - pos: -27.5,-67.5 - parent: 1 - - uid: 11927 - components: - - type: Transform - pos: -28.5,-68.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: right - - uid: 11928 - components: - - type: Transform - pos: -28.5,-67.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: top - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: right - - uid: 11929 - components: - - type: Transform - pos: -27.5,-66.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: top - - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi - state: right - - uid: 11930 - components: - - type: Transform - pos: -23.5,-71.5 - parent: 1 - - uid: 11931 - components: - - type: Transform - pos: -28.5,-69.5 - parent: 1 - - type: CP14WallpaperHolder - layers: - - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi - state: right - - uid: 11932 - components: - - type: Transform - pos: -24.5,-73.5 - parent: 1 - - uid: 11933 - components: - - type: Transform - pos: -23.5,-73.5 - parent: 1 - - uid: 11934 - components: - - type: Transform - pos: -27.5,-72.5 - parent: 1 - - uid: 11935 - components: - - type: Transform - pos: -23.5,-72.5 - parent: 1 - - uid: 11936 - components: - - type: Transform - pos: -26.5,-72.5 - parent: 1 - - uid: 11937 - components: - - type: Transform - pos: -24.5,-72.5 - parent: 1 - - uid: 11938 - components: - - type: Transform - pos: -25.5,-72.5 - parent: 1 - proto: CP14WallStone entities: - uid: 7834 @@ -81348,6 +80938,11 @@ entities: - type: Transform pos: 9.5,-46.5 parent: 1 + - uid: 2104 + components: + - type: Transform + pos: 10.5,-33.5 + parent: 1 - uid: 2924 components: - type: Transform @@ -81423,6 +81018,11 @@ entities: - type: Transform pos: 34.5,-5.5 parent: 1 + - uid: 4483 + components: + - type: Transform + pos: 10.5,-34.5 + parent: 1 - uid: 4589 components: - type: Transform @@ -83288,6 +82888,184 @@ entities: - type: Transform pos: -32.5,-45.5 parent: 1 +- proto: CP14WallStonebrickOld + entities: + - uid: 11915 + components: + - type: Transform + pos: -23.5,-66.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: top + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: left + - uid: 11916 + components: + - type: Transform + pos: -26.5,-73.5 + parent: 1 + - uid: 11917 + components: + - type: Transform + pos: -22.5,-67.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: top + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: left + - uid: 11918 + components: + - type: Transform + pos: -22.5,-70.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: left + - uid: 11919 + components: + - type: Transform + pos: -22.5,-68.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: left + - uid: 11920 + components: + - type: Transform + pos: -27.5,-73.5 + parent: 1 + - uid: 11921 + components: + - type: Transform + pos: -28.5,-71.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: bottom + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: right + - uid: 11922 + components: + - type: Transform + pos: -22.5,-71.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: left + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: bottom + - uid: 11923 + components: + - type: Transform + pos: -23.5,-67.5 + parent: 1 + - uid: 11924 + components: + - type: Transform + pos: -27.5,-71.5 + parent: 1 + - uid: 11925 + components: + - type: Transform + pos: -28.5,-70.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: right + - uid: 11926 + components: + - type: Transform + pos: -27.5,-67.5 + parent: 1 + - uid: 11927 + components: + - type: Transform + pos: -28.5,-68.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: right + - uid: 11928 + components: + - type: Transform + pos: -28.5,-67.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: top + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: right + - uid: 11929 + components: + - type: Transform + pos: -27.5,-66.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: top + - sprite: _CP14/Structures/Wallpaper/wallpaper_white2.rsi + state: right + - uid: 11930 + components: + - type: Transform + pos: -23.5,-71.5 + parent: 1 + - uid: 11931 + components: + - type: Transform + pos: -28.5,-69.5 + parent: 1 + - type: CP14WallpaperHolder + layers: + - sprite: _CP14/Structures/Wallpaper/wallpaper_red.rsi + state: right + - uid: 11932 + components: + - type: Transform + pos: -24.5,-73.5 + parent: 1 + - uid: 11933 + components: + - type: Transform + pos: -23.5,-73.5 + parent: 1 + - uid: 11934 + components: + - type: Transform + pos: -27.5,-72.5 + parent: 1 + - uid: 11935 + components: + - type: Transform + pos: -23.5,-72.5 + parent: 1 + - uid: 11936 + components: + - type: Transform + pos: -26.5,-72.5 + parent: 1 + - uid: 11937 + components: + - type: Transform + pos: -24.5,-72.5 + parent: 1 + - uid: 11938 + components: + - type: Transform + pos: -25.5,-72.5 + parent: 1 - proto: CP14WallStoneCopperOre entities: - uid: 14301 @@ -87811,23 +87589,6 @@ entities: - type: Transform pos: 27.5,17.5 parent: 1 -- proto: DeskBell - entities: - - uid: 15178 - components: - - type: Transform - pos: 11.297916,-28.345606 - parent: 1 - - uid: 15179 - components: - - type: Transform - pos: -8.50448,1.1592681 - parent: 1 - - uid: 15180 - components: - - type: Transform - pos: -11.280857,-22.228916 - parent: 1 - proto: SpawnPointLatejoin entities: - uid: 11353 @@ -87859,44 +87620,4 @@ entities: - type: Transform pos: 0.5,-0.5 parent: 1 -- proto: WarpPoint - entities: - - uid: 15187 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -0.5,-1.5 - parent: 1 - - type: WarpPoint - location: Island center - - uid: 15188 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 18.5,-22.5 - parent: 1 - - type: WarpPoint - location: Guard - - uid: 15189 - components: - - type: Transform - pos: 29.5,15.5 - parent: 1 - - type: WarpPoint - location: Blacksmith - - uid: 15190 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 14.5,3.5 - parent: 1 - - type: WarpPoint - location: Alchemist - - uid: 15191 - components: - - type: Transform - pos: 81.5,41.5 - parent: 1 - - type: WarpPoint - location: Dungeon ... diff --git a/Resources/Maps/amber.yml b/Resources/Maps/amber.yml index 3aa47aa88c..cb8cb08e08 100644 --- a/Resources/Maps/amber.yml +++ b/Resources/Maps/amber.yml @@ -1,20 +1,20 @@ meta: format: 7 category: Map - engineVersion: 248.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/12/2025 08:28:12 - entityCount: 23606 + time: 04/20/2025 00:41:18 + entityCount: 23722 maps: - 1 grids: - 2 -- 23224 orphans: [] nullspace: [] tilemap: 46: Space + 12: FloorArcadeBlue 68: FloorArcadeBlue2 48: FloorAsteroidSand 11: FloorAstroAsteroidSand @@ -80,6 +80,8 @@ entities: - type: MovedGrids - type: Broadphase - type: OccluderTree + - type: Parallax + parallax: AmberStation - uid: 2 components: - type: MetaData @@ -93,7 +95,7 @@ entities: chunks: -1,-1: ind: -1,-1 - tiles: CQAAAAAACQAAAAABCQAAAAAACQAAAAADCQAAAAABDgAAAAAACQAAAAAACQAAAAABCQAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAACQAAAAADCQAAAAAACQAAAAADCQAAAAABCQAAAAADDgAAAAAACQAAAAADCQAAAAADCQAAAAADDgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAACQAAAAAADgAAAAAACQAAAAACCQAAAAACCQAAAAACCQAAAAADCQAAAAACCQAAAAACCQAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAACCQAAAAADDwAAAAACDwAAAAABDwAAAAADCQAAAAADCQAAAAACCQAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAAADwAAAAABDwAAAAADDwAAAAAACQAAAAACCQAAAAADCQAAAAADDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACDgAAAAAACQAAAAACCQAAAAABCQAAAAACCQAAAAAACQAAAAABCQAAAAACCQAAAAADDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAACQAAAAADCQAAAAACGgAAAAADCQAAAAABCQAAAAACCQAAAAAACQAAAAADDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACDgAAAAAACQAAAAADDwAAAAADDwAAAAACDwAAAAADCQAAAAACCQAAAAADCQAAAAABDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAACQAAAAACCQAAAAAAGgAAAAADCQAAAAABCQAAAAACCQAAAAAACQAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAA + tiles: CQAAAAAACQAAAAABCQAAAAAACQAAAAADCQAAAAABDgAAAAAACQAAAAAACQAAAAABCQAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAACQAAAAADCQAAAAAACQAAAAADCQAAAAABCQAAAAADDgAAAAAACQAAAAADCQAAAAADCQAAAAADGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAACQAAAAAADgAAAAAACQAAAAACCQAAAAACCQAAAAACCQAAAAADCQAAAAACCQAAAAACCQAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAACCQAAAAADDwAAAAACDwAAAAABDwAAAAADCQAAAAADCQAAAAACCQAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAAADwAAAAABDwAAAAADDwAAAAAACQAAAAACCQAAAAADCQAAAAADDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACDgAAAAAACQAAAAACCQAAAAABCQAAAAACCQAAAAAACQAAAAABCQAAAAACCQAAAAADDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAACQAAAAADCQAAAAACGgAAAAADCQAAAAABCQAAAAACCQAAAAAACQAAAAADDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACDgAAAAAACQAAAAADDwAAAAADDwAAAAACDwAAAAADCQAAAAACCQAAAAADCQAAAAABDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAACQAAAAACCQAAAAAAGgAAAAADCQAAAAABCQAAAAACCQAAAAAACQAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAABCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAA version: 6 -1,-2: ind: -1,-2 @@ -101,7 +103,7 @@ entities: version: 6 -1,-3: ind: -1,-3 - tiles: IwAAAAADIwAAAAAAIwAAAAADIwAAAAAAIwAAAAABDgAAAAAACQAAAAAACQAAAAACCQAAAAAACQAAAAACCQAAAAADCQAAAAAACQAAAAABCQAAAAACCQAAAAABCQAAAAAAIwAAAAACIwAAAAADIwAAAAACIwAAAAABIwAAAAABDgAAAAAACQAAAAAACQAAAAABCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAACHAAAAAACDgAAAAAACQAAAAACJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAHAAAAAADHAAAAAACHAAAAAABHAAAAAABDgAAAAAAHAAAAAAAHAAAAAABHAAAAAACIwAAAAACJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAHAAAAAADHAAAAAADHAAAAAACHAAAAAACDgAAAAAAHAAAAAADHAAAAAADHAAAAAACIwAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAACQAAAAADCQAAAAADCQAAAAADHAAAAAADHAAAAAADHAAAAAACHAAAAAACHAAAAAADIwAAAAAAIwAAAAABJAAAAAAAJAAAAAAAJAAAAAAAHAAAAAACDgAAAAAADgAAAAAACQAAAAADCQAAAAACCQAAAAACHAAAAAADHAAAAAACHAAAAAAAHAAAAAADHAAAAAACIwAAAAADIwAAAAAAIwAAAAAAIwAAAAACIwAAAAABHAAAAAABHAAAAAAADgAAAAAACQAAAAABCQAAAAACCQAAAAACHAAAAAABSQAAAAAASQAAAAADHAAAAAAAHAAAAAABSQAAAAABSQAAAAACHAAAAAAAHAAAAAACHAAAAAADHAAAAAAAHAAAAAACHAAAAAAAHAAAAAADDgAAAAAADgAAAAAAHAAAAAAAHAAAAAABHAAAAAADHAAAAAABHAAAAAAAHAAAAAADHAAAAAADHAAAAAADKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAABHAAAAAAAHAAAAAADHAAAAAABHAAAAAADHAAAAAADHAAAAAADHAAAAAAAHAAAAAACKQAAAAAAKwAAAAACKwAAAAAAKwAAAAAADgAAAAAACQAAAAACHAAAAAADDgAAAAAAHAAAAAACSQAAAAACSQAAAAADHAAAAAACHAAAAAAASQAAAAACSQAAAAABHAAAAAACDgAAAAAAKwAAAAACKwAAAAAAKwAAAAACDgAAAAAACQAAAAACDgAAAAAADgAAAAAAHAAAAAACHAAAAAACHAAAAAABHAAAAAAAHAAAAAABHAAAAAAAHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADHAAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAACDgAAAAAADgAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAACQAAAAADHAAAAAADHAAAAAABDgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAADCQAAAAAACQAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAIQAAAAADCQAAAAAACQAAAAADCQAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAADCQAAAAADCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIQAAAAACCQAAAAADCQAAAAABCQAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAAACQAAAAAACQAAAAACDgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAADgAAAAAAIQAAAAAA + tiles: IwAAAAADIwAAAAAAIwAAAAADIwAAAAAAIwAAAAABDgAAAAAACQAAAAAACQAAAAACCQAAAAAACQAAAAACCQAAAAADCQAAAAAACQAAAAABCQAAAAACCQAAAAABCQAAAAAAIwAAAAACIwAAAAADIwAAAAACIwAAAAABIwAAAAABDgAAAAAACQAAAAAACQAAAAABCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAACHAAAAAACDgAAAAAACQAAAAACJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAHAAAAAADHAAAAAACHAAAAAABHAAAAAABDgAAAAAAHAAAAAAAHAAAAAABHAAAAAACIwAAAAACJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAHAAAAAADHAAAAAADHAAAAAACHAAAAAACDgAAAAAAHAAAAAADHAAAAAADHAAAAAACIwAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAACQAAAAADCQAAAAADCQAAAAADHAAAAAADHAAAAAADHAAAAAACHAAAAAACHAAAAAADIwAAAAAAIwAAAAABJAAAAAAAJAAAAAAAJAAAAAAAHAAAAAACDgAAAAAADgAAAAAACQAAAAADCQAAAAACCQAAAAACHAAAAAADHAAAAAACHAAAAAAAHAAAAAADHAAAAAACIwAAAAADIwAAAAAAIwAAAAAAIwAAAAACIwAAAAABHAAAAAABHAAAAAAADgAAAAAACQAAAAABCQAAAAACCQAAAAACHAAAAAABSQAAAAAASQAAAAADHAAAAAAAHAAAAAABSQAAAAABSQAAAAACHAAAAAAAHAAAAAACHAAAAAADHAAAAAAAHAAAAAACHAAAAAAAHAAAAAADDgAAAAAADgAAAAAAHAAAAAAAHAAAAAABHAAAAAADHAAAAAABHAAAAAAAHAAAAAADHAAAAAADHAAAAAADKQAAAAAAKQAAAAAAKQAAAAAAKQAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAABHAAAAAAAHAAAAAADHAAAAAABHAAAAAADHAAAAAADHAAAAAADHAAAAAAAHAAAAAACKQAAAAAAKwAAAAACKwAAAAAAKwAAAAAADgAAAAAACQAAAAACHAAAAAADDgAAAAAAHAAAAAACSQAAAAACSQAAAAADHAAAAAACHAAAAAAASQAAAAACSQAAAAABHAAAAAACDgAAAAAAKwAAAAACKwAAAAAAKwAAAAACDgAAAAAACQAAAAACDgAAAAAADgAAAAAAHAAAAAACHAAAAAACHAAAAAABHAAAAAAAHAAAAAABHAAAAAAAHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADHAAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAACDgAAAAAADgAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAACQAAAAADHAAAAAADHAAAAAABDgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAADCQAAAAAACQAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAIQAAAAADCQAAAAAACQAAAAADCQAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAADCQAAAAADCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIQAAAAACCQAAAAADCQAAAAABCQAAAAAAGwAAAAAAGwAAAAAAGwAAAAAACQAAAAAACQAAAAAACQAAAAAACQAAAAACDgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAADgAAAAAAIQAAAAAA version: 6 -1,-4: ind: -1,-4 @@ -125,7 +127,7 @@ entities: version: 6 -2,-2: ind: -2,-2 - tiles: MwAAAAADMwAAAAADMwAAAAADMwAAAAACMwAAAAACMwAAAAABMwAAAAADCQAAAAACCQAAAAADCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAAAMwAAAAACMwAAAAACMwAAAAACMwAAAAADMwAAAAACMwAAAAADCQAAAAAACQAAAAABCQAAAAACDgAAAAAANwAAAAADNwAAAAABNwAAAAADNwAAAAAACQAAAAADMwAAAAACMwAAAAACMwAAAAAAMwAAAAADMwAAAAAAMwAAAAABMwAAAAABCQAAAAADCQAAAAACCQAAAAABDgAAAAAANwAAAAABNwAAAAADNwAAAAADNwAAAAADDgAAAAAAMwAAAAAAMwAAAAAAMwAAAAAAMwAAAAADMwAAAAADMwAAAAAAMwAAAAABCQAAAAABCQAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAADMwAAAAAAMwAAAAABMwAAAAADMwAAAAACMwAAAAABMwAAAAACCQAAAAADCQAAAAAACQAAAAAACQAAAAABGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAAHAAAAAAAHAAAAAABDgAAAAAADgAAAAAACQAAAAACCQAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAADHAAAAAADHAAAAAACHAAAAAACHAAAAAAAHAAAAAABHAAAAAAACQAAAAABCQAAAAADCQAAAAAADgAAAAAAOAAAAAADOAAAAAACOAAAAAACOAAAAAAAOAAAAAAAHAAAAAAAHAAAAAACHAAAAAAAHAAAAAADHAAAAAACHAAAAAACDgAAAAAACQAAAAAACQAAAAADCQAAAAACDgAAAAAAOAAAAAAAOAAAAAACOAAAAAAAOAAAAAABOAAAAAADDgAAAAAAHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAACCQAAAAABCQAAAAAAOAAAAAABOAAAAAABOAAAAAADOAAAAAADOAAAAAADHAAAAAABHAAAAAABHAAAAAADHAAAAAADHAAAAAACHAAAAAADDgAAAAAACQAAAAAACQAAAAACCQAAAAABDgAAAAAAOAAAAAACOAAAAAAAOAAAAAADOAAAAAACOAAAAAACDgAAAAAAHAAAAAAAHAAAAAAAHAAAAAADHAAAAAABHAAAAAAADgAAAAAACQAAAAABCQAAAAAACQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAACCQAAAAACCQAAAAADCQAAAAADCQAAAAAACQAAAAAACQAAAAACCQAAAAABGwAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAABCQAAAAAACQAAAAADCQAAAAACCQAAAAADCQAAAAACCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAAACQAAAAACCQAAAAADCQAAAAADCQAAAAAACQAAAAADCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACAAAAAAACAAAAAAADgAAAAAACQAAAAAACQAAAAABDgAAAAAACQAAAAABCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAAACQAAAAACCQAAAAADCQAAAAADCAAAAAAACQAAAAACCQAAAAAB + tiles: MwAAAAADMwAAAAADMwAAAAADMwAAAAACMwAAAAACMwAAAAABMwAAAAADCQAAAAACCQAAAAADCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAAAMwAAAAACMwAAAAACMwAAAAACMwAAAAADMwAAAAACMwAAAAADCQAAAAAACQAAAAABCQAAAAACDgAAAAAANwAAAAADNwAAAAABNwAAAAADNwAAAAAACQAAAAADMwAAAAACMwAAAAACMwAAAAAAMwAAAAADMwAAAAAAMwAAAAABMwAAAAABCQAAAAADCQAAAAACCQAAAAABDgAAAAAANwAAAAABNwAAAAADNwAAAAADNwAAAAADDgAAAAAAMwAAAAAAMwAAAAAAMwAAAAAAMwAAAAADMwAAAAADMwAAAAAAMwAAAAABCQAAAAABCQAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAADMwAAAAAAMwAAAAABMwAAAAADMwAAAAACMwAAAAABMwAAAAACCQAAAAADCQAAAAAACQAAAAAACQAAAAABGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAAHAAAAAAAHAAAAAABDgAAAAAADgAAAAAACQAAAAACCQAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAADHAAAAAADHAAAAAACHAAAAAACHAAAAAAAHAAAAAABHAAAAAAACQAAAAABCQAAAAADCQAAAAAADgAAAAAAOAAAAAADOAAAAAACOAAAAAACOAAAAAAAOAAAAAAAHAAAAAAAHAAAAAACHAAAAAAAHAAAAAADHAAAAAACHAAAAAACDgAAAAAACQAAAAAACQAAAAADCQAAAAACDgAAAAAAOAAAAAAAOAAAAAACOAAAAAAAOAAAAAABOAAAAAADDgAAAAAAHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAACCQAAAAABCQAAAAAAOAAAAAABOAAAAAABOAAAAAADOAAAAAADOAAAAAADHAAAAAABHAAAAAABHAAAAAADHAAAAAADHAAAAAACHAAAAAADDgAAAAAACQAAAAAACQAAAAACCQAAAAABDgAAAAAAOAAAAAACOAAAAAAAOAAAAAADOAAAAAACOAAAAAACDgAAAAAAHAAAAAAAHAAAAAAAHAAAAAADHAAAAAABHAAAAAAADgAAAAAACQAAAAABCQAAAAAACQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAACCQAAAAACCQAAAAADCQAAAAADCQAAAAAACQAAAAAACQAAAAACCQAAAAABGwAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAABCQAAAAAACQAAAAADCQAAAAACCQAAAAADCQAAAAACCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAAACQAAAAACCQAAAAADCQAAAAADCQAAAAAACQAAAAADCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACAAAAAAACAAAAAAADgAAAAAACQAAAAAACQAAAAABDgAAAAAACQAAAAABCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAACCQAAAAAACQAAAAACCQAAAAADCQAAAAADCAAAAAAACQAAAAACCQAAAAAB version: 6 -2,-3: ind: -2,-3 @@ -141,7 +143,7 @@ entities: version: 6 -2,0: ind: -2,0 - tiles: DgAAAAAAHAAAAAABHAAAAAAAHAAAAAACHAAAAAAAHAAAAAABHAAAAAAAHAAAAAABHAAAAAADHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAAHAAAAAAADgAAAAAADgAAAAAAHAAAAAABHAAAAAADHAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAACQAAAAABDgAAAAAAHAAAAAAAHAAAAAADHAAAAAACHAAAAAAAHAAAAAABHAAAAAADHAAAAAACDgAAAAAAHAAAAAABHAAAAAAAHAAAAAABDgAAAAAAHAAAAAABDgAAAAAACQAAAAADDgAAAAAAHAAAAAAAHAAAAAADDgAAAAAAHAAAAAADHAAAAAABHAAAAAACHAAAAAABHAAAAAAAHAAAAAABHAAAAAACHAAAAAABDgAAAAAAHAAAAAACDgAAAAAACQAAAAABDgAAAAAACQAAAAAACQAAAAAADgAAAAAAHAAAAAAAHAAAAAACHAAAAAABHAAAAAADDgAAAAAAHAAAAAADHAAAAAABHAAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAAHAAAAAABHAAAAAADHAAAAAAAHAAAAAADHAAAAAABHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAAAHAAAAAAALgAAAAAALAAAAAAADgAAAAAAHAAAAAABHAAAAAADHAAAAAADHAAAAAADDgAAAAAAHAAAAAACHAAAAAAAHAAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAACDgAAAAAALAAAAAAALAAAAAAADgAAAAAAHAAAAAABHAAAAAAAHAAAAAABHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAAMwAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAADDgAAAAAAIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAAMwAAAAADMwAAAAABMwAAAAABHAAAAAAAHAAAAAADHAAAAAABHAAAAAACHAAAAAABIwAAAAABIwAAAAABIwAAAAABDgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAAMwAAAAADMwAAAAAAMwAAAAACHAAAAAABHAAAAAACHAAAAAAAHAAAAAABDgAAAAAAIwAAAAADIwAAAAACIwAAAAABDgAAAAAADgAAAAAADgAAAAAALwAAAAACDgAAAAAADgAAAAAAMwAAAAACMwAAAAACHAAAAAADHAAAAAADHAAAAAADHAAAAAABDgAAAAAAIwAAAAADIwAAAAACIwAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAABHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAACDgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAAQAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAABCQAAAAADCQAAAAADCQAAAAADCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAAA + tiles: DgAAAAAAHAAAAAABHAAAAAAAHAAAAAACHAAAAAAAHAAAAAABHAAAAAAAHAAAAAABHAAAAAADHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAAHAAAAAAADgAAAAAADgAAAAAAHAAAAAABHAAAAAADHAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAAHAAAAAAAHAAAAAADHAAAAAACHAAAAAAAHAAAAAABHAAAAAADHAAAAAACDgAAAAAAHAAAAAABHAAAAAAAHAAAAAABDgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAAHAAAAAAAHAAAAAADDgAAAAAAHAAAAAADHAAAAAABHAAAAAACHAAAAAABHAAAAAAAHAAAAAABHAAAAAACHAAAAAABDgAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAACQAAAAAACQAAAAAADgAAAAAAHAAAAAAAHAAAAAACHAAAAAABHAAAAAADDgAAAAAAHAAAAAADHAAAAAABHAAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAAHAAAAAABHAAAAAADHAAAAAAAHAAAAAADHAAAAAABHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAAAHAAAAAAALgAAAAAALAAAAAAADgAAAAAAHAAAAAABHAAAAAADHAAAAAADHAAAAAADDgAAAAAAHAAAAAACHAAAAAAAHAAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAACDgAAAAAALAAAAAAALAAAAAAADgAAAAAAHAAAAAABHAAAAAAAHAAAAAABHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAAMwAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAADDgAAAAAAIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAAMwAAAAADMwAAAAABMwAAAAABHAAAAAAAHAAAAAADHAAAAAABHAAAAAACHAAAAAABIwAAAAABIwAAAAABIwAAAAABDgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAAMwAAAAADMwAAAAAAMwAAAAACHAAAAAABHAAAAAACHAAAAAAAHAAAAAABDgAAAAAAIwAAAAADIwAAAAACIwAAAAABDgAAAAAADgAAAAAADgAAAAAALwAAAAACDgAAAAAADgAAAAAAMwAAAAACMwAAAAACHAAAAAADHAAAAAADHAAAAAADHAAAAAABDgAAAAAAIwAAAAADIwAAAAACIwAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAABHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAACDgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAAQAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAABCQAAAAADCQAAAAADCQAAAAADCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAAA version: 6 -2,1: ind: -2,1 @@ -217,15 +219,15 @@ entities: version: 6 0,-1: ind: 0,-1 - tiles: GwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAHgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAABAQAAAAABDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAAAQAAAAADAQAAAAADDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAAAQAAAAAAAQAAAAADDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAAAQAAAAACDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAA + tiles: GwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAHgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAQAAAAABAQAAAAABDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAAAQAAAAADAQAAAAADDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAAAQAAAAAAAQAAAAADDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAAAQAAAAACDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAAGwAAAAAADgAAAAAADgAAAAAAHgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAA version: 6 0,-2: ind: 0,-2 - tiles: IQAAAAABIQAAAAADDgAAAAAADgAAAAAADgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAADgAAAAAACQAAAAABCQAAAAACCQAAAAAADwAAAAACDwAAAAADDwAAAAADCQAAAAADGwAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAPgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAACQAAAAAACQAAAAABCQAAAAABDwAAAAACMgAAAAAADwAAAAAACQAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAAACQAAAAADDwAAAAADDwAAAAAADwAAAAACCQAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAAGwAAAAAAMgAAAAAAMgAAAAAAMgAAAAAACQAAAAABCQAAAAABCQAAAAACCQAAAAABCQAAAAABCQAAAAACCQAAAAABCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMgAAAAAAMgAAAAAAMgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAABDgAAAAAADgAAAAAAHAAAAAAAHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAADDgAAAAAAHAAAAAADHAAAAAABHAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAABCQAAAAACCQAAAAAACQAAAAADCQAAAAABCQAAAAACDgAAAAAAHAAAAAAAHAAAAAADHAAAAAACDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAAACQAAAAACCQAAAAAACQAAAAABDgAAAAAAHAAAAAADHAAAAAADHAAAAAACCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAADCQAAAAABCQAAAAABDgAAAAAADgAAAAAAHAAAAAAAHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAACCQAAAAADCQAAAAABCQAAAAADCQAAAAACCQAAAAACCQAAAAABCQAAAAABDgAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAADCQAAAAABCQAAAAABCQAAAAAACQAAAAAACQAAAAADCQAAAAACCQAAAAACDgAAAAAACQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACDgAAAAAACQAAAAADCQAAAAABCQAAAAAACQAAAAADCQAAAAAACQAAAAABCQAAAAADCQAAAAACDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAACQAAAAAACQAAAAAACQAAAAAACQAAAAAACQAAAAABCQAAAAAACQAAAAABCQAAAAADDgAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAAACQAAAAACCQAAAAAACQAAAAAACQAAAAABCQAAAAADCQAAAAABCQAAAAADCQAAAAACDgAAAAAADgAAAAAADgAAAAAA + tiles: IQAAAAABIQAAAAADDgAAAAAADgAAAAAADgAAAAAAPgAAAAAAPgAAAAAAPgAAAAAADgAAAAAACQAAAAABCQAAAAACCQAAAAAADwAAAAACDwAAAAADDwAAAAADCQAAAAADGwAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAPgAAAAAAPgAAAAAAPgAAAAAACQAAAAAACQAAAAAACQAAAAABCQAAAAABDwAAAAACMgAAAAAADwAAAAAACQAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAAACQAAAAADDwAAAAADDwAAAAAADwAAAAACCQAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAAGwAAAAAAMgAAAAAAMgAAAAAAMgAAAAAACQAAAAABCQAAAAABCQAAAAACCQAAAAABCQAAAAABCQAAAAACCQAAAAABCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMgAAAAAAMgAAAAAAMgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAABDgAAAAAADgAAAAAAHAAAAAAAHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAADDgAAAAAAHAAAAAADHAAAAAABHAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAABCQAAAAACCQAAAAAACQAAAAADCQAAAAABCQAAAAACDgAAAAAAHAAAAAAAHAAAAAADHAAAAAACDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAAACQAAAAACCQAAAAAACQAAAAABDgAAAAAAHAAAAAADHAAAAAADHAAAAAACCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAADCQAAAAABCQAAAAABDgAAAAAADgAAAAAAHAAAAAAAHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAACCQAAAAADCQAAAAABCQAAAAADCQAAAAACCQAAAAACCQAAAAABCQAAAAABDgAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAADCQAAAAABCQAAAAABCQAAAAAACQAAAAAACQAAAAADCQAAAAACCQAAAAACDgAAAAAACQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACDgAAAAAACQAAAAADCQAAAAABCQAAAAAACQAAAAADCQAAAAAACQAAAAABCQAAAAADCQAAAAACDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAACQAAAAAACQAAAAAACQAAAAAACQAAAAAACQAAAAABCQAAAAAACQAAAAABCQAAAAADDgAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAAACQAAAAACCQAAAAAACQAAAAAACQAAAAABCQAAAAADCQAAAAABCQAAAAADCQAAAAACDgAAAAAADgAAAAAADgAAAAAA version: 6 0,-3: ind: 0,-3 - tiles: CQAAAAAACQAAAAADCQAAAAABCQAAAAACCQAAAAAACQAAAAADCQAAAAADCQAAAAACCQAAAAAACQAAAAAACQAAAAACCQAAAAABDgAAAAAACQAAAAAACQAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAABCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAACIwAAAAADDgAAAAAADgAAAAAADgAAAAAAAQAAAAAAAQAAAAACDgAAAAAACQAAAAAACQAAAAACCQAAAAADDgAAAAAAIwAAAAADIwAAAAABIwAAAAADDgAAAAAAIwAAAAADIwAAAAADGwAAAAAADgAAAAAAGwAAAAAAAQAAAAAAAQAAAAACCQAAAAABCQAAAAAACQAAAAABCQAAAAADDgAAAAAAIwAAAAABIwAAAAACIwAAAAACDgAAAAAAIwAAAAACIwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAABDgAAAAAADgAAAAAAIwAAAAAAIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACgAAAAAACgAAAAAACgAAAAAACQAAAAACCQAAAAAACQAAAAADCQAAAAACDgAAAAAAIwAAAAADIwAAAAADGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACgAAAAAACgAAAAAADgAAAAAACQAAAAADCQAAAAAACQAAAAADCQAAAAABCQAAAAABIwAAAAABIwAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAABCQAAAAABCQAAAAACIwAAAAACIwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAAPwAAAAAAPwAAAAAADgAAAAAACQAAAAADCQAAAAAACQAAAAAACQAAAAACCQAAAAAAIwAAAAAAIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAACQAAAAABCQAAAAACCQAAAAABCAAAAAAADgAAAAAAIwAAAAADIwAAAAADGwAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAACCQAAAAADDgAAAAAADgAAAAAAIwAAAAACIwAAAAADGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAADCQAAAAAACQAAAAABCQAAAAAADgAAAAAAIwAAAAADIwAAAAAAIwAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAAADgAAAAAAIwAAAAACIwAAAAADIwAAAAABIQAAAAAAIQAAAAADDgAAAAAADgAAAAAAGwAAAAAAJAAAAAAAJAAAAAAAJAAAAAAACQAAAAACCQAAAAADCQAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIQAAAAABIQAAAAABDgAAAAAADgAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAACQAAAAABCQAAAAAACQAAAAACCQAAAAABCQAAAAABCQAAAAADCQAAAAABIQAAAAACIQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABCQAAAAAACQAAAAACCQAAAAAACQAAAAABCQAAAAAD + tiles: CQAAAAAACQAAAAADCQAAAAABCQAAAAACCQAAAAAACQAAAAADCQAAAAADCQAAAAACCQAAAAAACQAAAAAACQAAAAACCQAAAAABDgAAAAAACQAAAAAACQAAAAAACQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAABCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAACIwAAAAADDgAAAAAAGwAAAAAADgAAAAAAAQAAAAAAAQAAAAACDgAAAAAACQAAAAAACQAAAAACCQAAAAADDgAAAAAAIwAAAAADIwAAAAABIwAAAAADJAAAAAAAIwAAAAADIwAAAAADGwAAAAAADgAAAAAAGwAAAAAAAQAAAAAAAQAAAAACCQAAAAABCQAAAAAACQAAAAABCQAAAAADDgAAAAAAIwAAAAABIwAAAAACIwAAAAACDgAAAAAAIwAAAAACIwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAABDgAAAAAADgAAAAAAIwAAAAAAIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACgAAAAAACgAAAAAACgAAAAAACQAAAAACCQAAAAAACQAAAAADCQAAAAACDgAAAAAAIwAAAAADIwAAAAADHAAAAAAAHAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACgAAAAAACgAAAAAADgAAAAAACQAAAAADCQAAAAAACQAAAAADCQAAAAABCQAAAAABIwAAAAABIwAAAAADHAAAAAAAHAAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAABCQAAAAABCQAAAAACIwAAAAACIwAAAAAAHAAAAAAAHAAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAPwAAAAAAPwAAAAAADgAAAAAACQAAAAADCQAAAAAACQAAAAAACQAAAAACCQAAAAAAIwAAAAAAIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAACQAAAAABCQAAAAACCQAAAAABCAAAAAAADgAAAAAAIwAAAAADIwAAAAADGwAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAACCQAAAAADDgAAAAAADgAAAAAAIwAAAAACIwAAAAADGwAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAADCQAAAAAACQAAAAABCQAAAAAADgAAAAAAIwAAAAADIwAAAAAAIwAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAAADgAAAAAAIwAAAAACIwAAAAADIwAAAAABIQAAAAAAIQAAAAADDgAAAAAADgAAAAAAGwAAAAAAJAAAAAAAJAAAAAAAJAAAAAAACQAAAAACCQAAAAADCQAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIQAAAAABIQAAAAABDgAAAAAADgAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAACQAAAAAACQAAAAABCQAAAAAACQAAAAACCQAAAAABCQAAAAABCQAAAAADCQAAAAABIQAAAAACIQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABCQAAAAAACQAAAAACCQAAAAAACQAAAAABCQAAAAAD version: 6 0,-4: ind: 0,-4 @@ -249,7 +251,7 @@ entities: version: 6 1,-1: ind: 1,-1 - tiles: HgAAAAAADgAAAAAASgAAAAACHAAAAAAAHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABDgAAAAAADgAAAAAASgAAAAAASgAAAAABSgAAAAADSgAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAADCQAAAAACCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAAACQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAACDgAAAAAADgAAAAAACQAAAAAACQAAAAAACQAAAAADCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAADCQAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAAHAAAAAABHAAAAAAADgAAAAAAHAAAAAACHAAAAAABCQAAAAABCQAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAACCQAAAAADCQAAAAACDgAAAAAADgAAAAAAHAAAAAADHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAACQAAAAACCQAAAAAACQAAAAADCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAABDgAAAAAAGwAAAAAACQAAAAAACQAAAAACCQAAAAACCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABCQAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAABDgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAACQAAAAABCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAAAwAAAAAAAwAAAAABGwAAAAAADgAAAAAAHgAAAAAADgAAAAAAHgAAAAAADgAAAAAAHgAAAAAADgAAAAAACQAAAAACCQAAAAACDgAAAAAAHgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAAAGwAAAAAADgAAAAAADgAAAAAAAwAAAAADHAAAAAABHAAAAAAAHAAAAAADDgAAAAAAHAAAAAABHAAAAAAAHAAAAAACHAAAAAADHAAAAAABDgAAAAAACQAAAAACCQAAAAAC + tiles: HgAAAAAADgAAAAAASgAAAAACHAAAAAAAHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABDgAAAAAADgAAAAAASgAAAAAASgAAAAABSgAAAAADSgAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAADCQAAAAACCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAAACQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAACDgAAAAAADgAAAAAACQAAAAAACQAAAAAACQAAAAADCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAADCQAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAAHAAAAAABHAAAAAAADgAAAAAAGwAAAAAAHAAAAAABCQAAAAABCQAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAACCQAAAAADCQAAAAACDgAAAAAADgAAAAAAHAAAAAADHAAAAAADHAAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAACQAAAAACCQAAAAAACQAAAAADCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAABDgAAAAAAGwAAAAAACQAAAAAACQAAAAACCQAAAAACCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAADCQAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABCQAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAADCQAAAAADCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAABDgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAACQAAAAABCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAAAwAAAAAAAwAAAAABGwAAAAAADgAAAAAAHgAAAAAADgAAAAAAHgAAAAAADgAAAAAAHgAAAAAADgAAAAAACQAAAAACCQAAAAACDgAAAAAAHgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAAAGwAAAAAADgAAAAAADgAAAAAAAwAAAAADHAAAAAABHAAAAAAAHAAAAAADDgAAAAAAHAAAAAABHAAAAAAAHAAAAAACHAAAAAADHAAAAAABDgAAAAAACQAAAAACCQAAAAAC version: 6 1,-2: ind: 1,-2 @@ -257,11 +259,11 @@ entities: version: 6 1,-3: ind: 1,-3 - tiles: DgAAAAAAIwAAAAABIwAAAAACIwAAAAABIwAAAAABIwAAAAACDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAAAIwAAAAAAIwAAAAABIwAAAAABIwAAAAACDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAAIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAAIwAAAAACIwAAAAABIwAAAAAAIwAAAAABDgAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAAAIwAAAAACIwAAAAABIwAAAAAAIwAAAAADJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAADIwAAAAAAIwAAAAACIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAADJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAAIwAAAAACJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACIwAAAAADJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAACQAAAAACDgAAAAAADgAAAAAAIwAAAAAAIwAAAAABIwAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAABAAAAAACCQAAAAACCQAAAAAACQAAAAADDgAAAAAAIwAAAAABIwAAAAABIwAAAAADDgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAGwAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAAACQAAAAADCQAAAAADCQAAAAABDgAAAAAAIwAAAAACIwAAAAAAIwAAAAACIwAAAAADJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAAIwAAAAACIwAAAAAAIwAAAAACDgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAADHAAAAAACHAAAAAADHAAAAAAAHAAAAAABHAAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAADHAAAAAACHAAAAAAAHAAAAAACHAAAAAACHAAAAAADCQAAAAADCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAAAHAAAAAADHAAAAAACHAAAAAAAHAAAAAABCQAAAAACCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAA + tiles: DgAAAAAAIwAAAAABIwAAAAACIwAAAAABIwAAAAABIwAAAAACDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAAAIwAAAAAAIwAAAAABIwAAAAABIwAAAAACDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAAIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAAIwAAAAACIwAAAAABIwAAAAAAIwAAAAABDgAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAAAIwAAAAACIwAAAAABIwAAAAAAIwAAAAADJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAADIwAAAAAAIwAAAAACIwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAADJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAAIwAAAAACJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACIwAAAAADJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAADDgAAAAAACQAAAAACDgAAAAAADgAAAAAAIwAAAAAAIwAAAAABIwAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAABAAAAAACCQAAAAACCQAAAAAACQAAAAADDgAAAAAAIwAAAAABIwAAAAABIwAAAAADDgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAGwAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAAACQAAAAADCQAAAAADCQAAAAABDgAAAAAAIwAAAAACIwAAAAAAIwAAAAACIwAAAAADJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAAIwAAAAACIwAAAAAAIwAAAAACDgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAADHAAAAAACHAAAAAADHAAAAAAAHAAAAAABHAAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAADHAAAAAACHAAAAAAAHAAAAAACHAAAAAACHAAAAAADCQAAAAADCQAAAAADGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAAAHAAAAAADHAAAAAACHAAAAAAAHAAAAAABCQAAAAACCQAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABDgAAAAAADgAAAAAA version: 6 1,-4: ind: 1,-4 - tiles: DgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAAADgAAAAAAMQAAAAABDgAAAAAAIwAAAAACIwAAAAAADgAAAAAAMwAAAAAAMwAAAAADDgAAAAAAQQAAAAAAQQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMQAAAAADDgAAAAAAIwAAAAAAIwAAAAACDgAAAAAAMwAAAAACMwAAAAAADgAAAAAAQQAAAAAAQQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMQAAAAABDgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAMQAAAAADMQAAAAABMQAAAAABDgAAAAAAMQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMQAAAAADMQAAAAACMQAAAAABDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAIwAAAAADIwAAAAACIwAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAAIwAAAAADIwAAAAADIwAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAMwAAAAABMwAAAAABDgAAAAAAGwAAAAAADgAAAAAAIwAAAAACIwAAAAAAIwAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAABDgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAAAIwAAAAABIwAAAAADIwAAAAACIwAAAAADDgAAAAAADgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAADgAAAAAAIwAAAAABIwAAAAABIwAAAAADIwAAAAAAIwAAAAACDgAAAAAAHgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAADgAAAAAAIwAAAAAAIwAAAAAAIwAAAAACIwAAAAABIwAAAAABDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMQAAAAADDgAAAAAALAAAAAAALAAAAAAA + tiles: DgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAAADgAAAAAAMQAAAAABDgAAAAAAIwAAAAACIwAAAAAADgAAAAAAMwAAAAAAMwAAAAADDgAAAAAAQQAAAAAAQQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMQAAAAADDgAAAAAAIwAAAAAAIwAAAAACDgAAAAAAMwAAAAACMwAAAAAADgAAAAAAQQAAAAAAQQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMQAAAAABDgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAMQAAAAADMQAAAAABMQAAAAABDgAAAAAAMQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAAMQAAAAADMQAAAAACMQAAAAABDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAIwAAAAADIwAAAAACIwAAAAADDgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAAIwAAAAADIwAAAAADIwAAAAACDgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAMwAAAAABMwAAAAABDgAAAAAAGwAAAAAADgAAAAAAIwAAAAACIwAAAAAAIwAAAAACDgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAABDgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAIwAAAAAAIwAAAAABIwAAAAADIwAAAAACIwAAAAADDgAAAAAADgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAADgAAAAAAIwAAAAABIwAAAAABIwAAAAADIwAAAAAAIwAAAAACDgAAAAAAHgAAAAAADgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAADgAAAAAAIwAAAAAAIwAAAAAAIwAAAAACIwAAAAABIwAAAAABDgAAAAAAHgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMQAAAAADDgAAAAAALAAAAAAALAAAAAAA version: 6 1,-5: ind: 1,-5 @@ -269,11 +271,11 @@ entities: version: 6 1,0: ind: 1,0 - tiles: DgAAAAAADgAAAAAAAwAAAAAAAwAAAAABHAAAAAAAHAAAAAABHAAAAAABDgAAAAAAHAAAAAADHAAAAAAAHAAAAAADHAAAAAAAHAAAAAABDgAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAAAwAAAAABAwAAAAADHAAAAAABHAAAAAAAHAAAAAACDgAAAAAAHAAAAAAAHAAAAAADHAAAAAABHAAAAAADCQAAAAABCQAAAAABCQAAAAAACQAAAAABDgAAAAAADgAAAAAAHAAAAAACHAAAAAAAHAAAAAABHAAAAAADHAAAAAAADgAAAAAAHAAAAAACHAAAAAACHAAAAAACHAAAAAACCQAAAAAACQAAAAACCQAAAAADCQAAAAACDgAAAAAADgAAAAAAHAAAAAAAHAAAAAACHAAAAAACHAAAAAADHAAAAAACDgAAAAAAHAAAAAAAHAAAAAABHAAAAAADHAAAAAAAHAAAAAACDgAAAAAACQAAAAABCQAAAAABGwAAAAAADgAAAAAADgAAAAAAHAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAADHAAAAAABCQAAAAAACQAAAAAACQAAAAABCQAAAAACCQAAAAAACQAAAAADCQAAAAACCQAAAAADCQAAAAADCQAAAAACCQAAAAABCQAAAAACDgAAAAAACQAAAAAAHAAAAAACHAAAAAACCQAAAAAACQAAAAACCQAAAAACCQAAAAABCQAAAAACCQAAAAABCQAAAAAACQAAAAADCQAAAAACCQAAAAABCQAAAAADCQAAAAABCQAAAAABCQAAAAABCQAAAAADCQAAAAACCQAAAAACCQAAAAABCQAAAAAACQAAAAAACQAAAAABCQAAAAABCQAAAAAACQAAAAAACQAAAAABCQAAAAADCQAAAAABCQAAAAADCQAAAAACCQAAAAACCQAAAAADCQAAAAAACQAAAAAACQAAAAABHAAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAACCQAAAAADCQAAAAAACQAAAAADCQAAAAADCQAAAAACCQAAAAABCQAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAACDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAACQAAAAAALwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAACQAAAAACCQAAAAABHAAAAAACHAAAAAAAHAAAAAADHAAAAAABHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAAHAAAAAAAHAAAAAABHAAAAAACDgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAACQAAAAABHAAAAAAAHAAAAAABHAAAAAACHAAAAAADHAAAAAAAHAAAAAACDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADHAAAAAADHAAAAAADHAAAAAADHAAAAAAAHAAAAAACHAAAAAADDgAAAAAAGwAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAACQAAAAAB + tiles: DgAAAAAADgAAAAAAAwAAAAAAAwAAAAABHAAAAAAAHAAAAAABHAAAAAABDgAAAAAAHAAAAAADHAAAAAAAHAAAAAADHAAAAAAAHAAAAAABDgAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAAAwAAAAABAwAAAAADHAAAAAABHAAAAAAAHAAAAAACDgAAAAAAHAAAAAAAHAAAAAADHAAAAAABHAAAAAADCQAAAAABCQAAAAABCQAAAAAACQAAAAABDgAAAAAADgAAAAAAHAAAAAACHAAAAAAAHAAAAAABHAAAAAADHAAAAAAADgAAAAAAHAAAAAACHAAAAAACHAAAAAACHAAAAAACCQAAAAAACQAAAAACCQAAAAADCQAAAAACDgAAAAAADgAAAAAAHAAAAAAAHAAAAAACHAAAAAACHAAAAAADHAAAAAACDgAAAAAAHAAAAAAAHAAAAAABHAAAAAADHAAAAAAAHAAAAAACDgAAAAAACQAAAAABCQAAAAABGwAAAAAADgAAAAAADgAAAAAAHAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAADHAAAAAABCQAAAAAACQAAAAAACQAAAAABCQAAAAACCQAAAAAACQAAAAADCQAAAAACCQAAAAADCQAAAAADCQAAAAACCQAAAAABCQAAAAACDgAAAAAACQAAAAAAHAAAAAACHAAAAAACCQAAAAAACQAAAAACCQAAAAACCQAAAAABCQAAAAACCQAAAAABCQAAAAAACQAAAAADCQAAAAACCQAAAAABCQAAAAADCQAAAAABCQAAAAABCQAAAAABCQAAAAADCQAAAAACCQAAAAACCQAAAAABCQAAAAAACQAAAAAACQAAAAABCQAAAAABCQAAAAAACQAAAAAACQAAAAABCQAAAAADCQAAAAABCQAAAAADCQAAAAACCQAAAAACCQAAAAADCQAAAAAACQAAAAAACQAAAAABHAAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAACCQAAAAADCQAAAAAACQAAAAADCQAAAAADCQAAAAACCQAAAAABCQAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAACGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAACQAAAAAALwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAACQAAAAACCQAAAAABHAAAAAACHAAAAAAAHAAAAAADHAAAAAABHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAAHAAAAAAAHAAAAAABHAAAAAACDgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAACQAAAAABHAAAAAAAHAAAAAABHAAAAAACHAAAAAADHAAAAAAAHAAAAAACDgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADHAAAAAADHAAAAAADHAAAAAADHAAAAAAAHAAAAAACHAAAAAADDgAAAAAAGwAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAACQAAAAAB version: 6 1,1: ind: 1,1 - tiles: HAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAACQAAAAAACQAAAAAACQAAAAADCQAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAABCQAAAAABCQAAAAADCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAABCQAAAAAACQAAAAADDgAAAAAACQAAAAACCQAAAAAACQAAAAABCQAAAAABCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAADgAAAAAACQAAAAADCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAABCQAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAACQAAAAAACQAAAAABCQAAAAADBAAAAAABCQAAAAACCQAAAAADCQAAAAADGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAACQAAAAADCQAAAAACCQAAAAABRwAAAAABRwAAAAABCQAAAAACCQAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAACDgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAACQAAAAAACQAAAAACDgAAAAAADgAAAAAABAAAAAACCQAAAAABCQAAAAABDgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAAGwAAAAAALAAAAAAALgAAAAAALgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAA + tiles: HAAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAADgAAAAAACQAAAAAACQAAAAAACQAAAAADCQAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAABCQAAAAABCQAAAAADCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAABCQAAAAAACQAAAAADDgAAAAAACQAAAAACCQAAAAAACQAAAAABCQAAAAABCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAADgAAAAAACQAAAAADCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABCQAAAAABCQAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAACQAAAAAACQAAAAABCQAAAAADBAAAAAABCQAAAAACCQAAAAADCQAAAAADGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAACQAAAAADCQAAAAACCQAAAAABRwAAAAABRwAAAAABCQAAAAACCQAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAACDgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAACDgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAACQAAAAAACQAAAAACDgAAAAAADgAAAAAABAAAAAACCQAAAAABCQAAAAABDgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALgAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAAGwAAAAAALAAAAAAALgAAAAAALgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALgAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAA version: 6 1,2: ind: 1,2 @@ -281,11 +283,11 @@ entities: version: 6 2,-1: ind: 2,-1 - tiles: CQAAAAAADgAAAAAAQAAAAAACQAAAAAAADwAAAAAAQAAAAAABQAAAAAABQAAAAAABQAAAAAACDgAAAAAALgAAAAAALgAAAAAADgAAAAAACQAAAAABDgAAAAAACQAAAAAACQAAAAACDgAAAAAAQAAAAAABQAAAAAABDwAAAAAAQAAAAAADQAAAAAACDgAAAAAAQAAAAAABDgAAAAAALAAAAAAALAAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAAQAAAAAACQAAAAAADDwAAAAABQAAAAAADQAAAAAADQAAAAAABQAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAARAAAAAAACQAAAAACDgAAAAAAQAAAAAABQAAAAAACQAAAAAABQAAAAAAAQAAAAAACDgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAACDgAAAAAADgAAAAAAGwAAAAAARAAAAAAACQAAAAABDgAAAAAAIwAAAAADIwAAAAACIwAAAAABIwAAAAABIwAAAAABDgAAAAAAHAAAAAABHAAAAAABHAAAAAADHAAAAAABDgAAAAAADgAAAAAADgAAAAAARAAAAAAACQAAAAACDgAAAAAAIwAAAAABIwAAAAAAIwAAAAADIwAAAAADIwAAAAADDgAAAAAAHAAAAAADHAAAAAADHAAAAAADHAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAAIwAAAAABIwAAAAAAIwAAAAAAIwAAAAABIwAAAAACDgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABCQAAAAADDgAAAAAADgAAAAAADgAAAAAAHAAAAAACDgAAAAAADgAAAAAADgAAAAAAHAAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACCQAAAAABCQAAAAAADgAAAAAAHAAAAAABHAAAAAADHAAAAAABHAAAAAADHAAAAAACHAAAAAADHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAACQAAAAACCQAAAAABDgAAAAAAHAAAAAACHAAAAAAAHAAAAAAAHAAAAAACHAAAAAACHAAAAAACHAAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAACCAAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAAACAAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAAGwAAAAAACQAAAAABCAAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAACQAAAAADCAAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAACQAAAAABCAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAA + tiles: CQAAAAAADgAAAAAAQAAAAAACQAAAAAAADwAAAAAAQAAAAAABQAAAAAABQAAAAAABQAAAAAACDgAAAAAALgAAAAAALgAAAAAADgAAAAAACQAAAAABDgAAAAAACQAAAAAACQAAAAACDgAAAAAAQAAAAAABQAAAAAABDwAAAAAAQAAAAAADQAAAAAACDgAAAAAAQAAAAAABDgAAAAAALAAAAAAALAAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAAQAAAAAACQAAAAAADDwAAAAABQAAAAAADQAAAAAADQAAAAAABQAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADAAAAAAACQAAAAACDgAAAAAAQAAAAAABQAAAAAACQAAAAAABQAAAAAAAQAAAAAACDgAAAAAADgAAAAAADgAAAAAAHAAAAAACHAAAAAACDgAAAAAADgAAAAAAGwAAAAAADAAAAAAACQAAAAABDgAAAAAAIwAAAAADIwAAAAACIwAAAAABIwAAAAABIwAAAAABDgAAAAAAHAAAAAABHAAAAAABHAAAAAADHAAAAAABDgAAAAAADgAAAAAADgAAAAAADAAAAAAACQAAAAACDgAAAAAAIwAAAAABIwAAAAAAIwAAAAADIwAAAAADIwAAAAADDgAAAAAAHAAAAAADHAAAAAADHAAAAAADHAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADDgAAAAAAIwAAAAABIwAAAAAAIwAAAAAAIwAAAAABIwAAAAACDgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAABCQAAAAADDgAAAAAADgAAAAAADgAAAAAAHAAAAAACDgAAAAAADgAAAAAADgAAAAAAHAAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAACCQAAAAABCQAAAAAADgAAAAAAHAAAAAABHAAAAAADHAAAAAABHAAAAAADHAAAAAACHAAAAAADHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAACQAAAAACCQAAAAABDgAAAAAAHAAAAAACHAAAAAAAHAAAAAAAHAAAAAACHAAAAAACHAAAAAACHAAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAHAAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAACCAAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAACQAAAAAACAAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAAGwAAAAAACQAAAAABCAAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAADgAAAAAADgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAADgAAAAAADgAAAAAACQAAAAADCAAAAAAADgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAJAAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAACQAAAAABCAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAA version: 6 2,-2: ind: 2,-2 - tiles: CQAAAAAACQAAAAABCQAAAAAACQAAAAABCQAAAAAACQAAAAABCQAAAAABGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAABCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAABCQAAAAABDgAAAAAAOQAAAAACOQAAAAAAOQAAAAADOQAAAAABDgAAAAAAGwAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAOQAAAAABOQAAAAACOQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABDgAAAAAACQAAAAAACQAAAAABCQAAAAAACQAAAAABCQAAAAABOQAAAAAAOQAAAAABOQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAADDgAAAAAACQAAAAABRQAAAAAARQAAAAAARQAAAAAACQAAAAAAHAAAAAACHAAAAAACHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADRQAAAAAARQAAAAAARQAAAAAACQAAAAADHAAAAAACHAAAAAAAHAAAAAADDgAAAAAALgAAAAAALAAAAAAADgAAAAAACQAAAAAACQAAAAACCQAAAAAACQAAAAADCQAAAAACRQAAAAAARQAAAAAARQAAAAAACQAAAAABHAAAAAACHAAAAAAAHAAAAAAADgAAAAAALAAAAAAALAAAAAAADgAAAAAACQAAAAACCQAAAAABGgAAAAACLwAAAAACDgAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAAAGgAAAAACDgAAAAAACQAAAAACCQAAAAAACQAAAAADCQAAAAACCQAAAAACCQAAAAABCQAAAAABCQAAAAAACQAAAAADCQAAAAAACQAAAAAACQAAAAABCQAAAAABCQAAAAAAGgAAAAABLwAAAAACCQAAAAABCQAAAAAACQAAAAAACQAAAAACCQAAAAABCQAAAAADCQAAAAACCQAAAAACCQAAAAADCQAAAAABCQAAAAABCQAAAAAACQAAAAAACQAAAAABGgAAAAACCQAAAAACCQAAAAAACQAAAAADCQAAAAABCQAAAAABCQAAAAABCQAAAAABCQAAAAAACQAAAAABCQAAAAABCQAAAAACCQAAAAAACQAAAAACCQAAAAAACQAAAAAAGgAAAAAALwAAAAADCQAAAAACDgAAAAAADgAAAAAACQAAAAABCQAAAAACCQAAAAADDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAAAGgAAAAADDgAAAAAACQAAAAACDgAAAAAAQAAAAAADQAAAAAADQAAAAAABQAAAAAADQAAAAAACQAAAAAAADgAAAAAALAAAAAAALAAAAAAADgAAAAAACQAAAAADCQAAAAABGgAAAAABLwAAAAAACQAAAAABDgAAAAAAQAAAAAAAQAAAAAADQAAAAAABQAAAAAAAQAAAAAADQAAAAAABDgAAAAAALAAAAAAALgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAABCQAAAAABCQAAAAABDgAAAAAAQAAAAAABQAAAAAACDwAAAAACQAAAAAABQAAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALAAAAAAADgAAAAAACQAAAAABCQAAAAABCQAAAAAC + tiles: CQAAAAAACQAAAAABCQAAAAAACQAAAAABCQAAAAAACQAAAAABCQAAAAABGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAABCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAABCQAAAAABCQAAAAABDgAAAAAAOQAAAAACOQAAAAAAOQAAAAADOQAAAAABDgAAAAAAGwAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAOQAAAAABOQAAAAACOQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAABDgAAAAAACQAAAAAACQAAAAABCQAAAAAACQAAAAABCQAAAAABOQAAAAAAOQAAAAABOQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAACCQAAAAADDgAAAAAACQAAAAABRQAAAAAARQAAAAAARQAAAAAACQAAAAAAHAAAAAACHAAAAAACHAAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADRQAAAAAARQAAAAAARQAAAAAACQAAAAADHAAAAAACHAAAAAAAHAAAAAADDgAAAAAALgAAAAAALAAAAAAADgAAAAAACQAAAAAACQAAAAACCQAAAAAACQAAAAADCQAAAAACRQAAAAAARQAAAAAARQAAAAAACQAAAAABHAAAAAACHAAAAAAAHAAAAAAADgAAAAAALAAAAAAALAAAAAAADgAAAAAACQAAAAACCQAAAAABGgAAAAACLwAAAAACDgAAAAAACQAAAAABCQAAAAACDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAAAGgAAAAACDgAAAAAACQAAAAACCQAAAAAACQAAAAADCQAAAAACCQAAAAACCQAAAAABCQAAAAABCQAAAAAACQAAAAADCQAAAAAACQAAAAAACQAAAAABCQAAAAABCQAAAAAAGgAAAAABLwAAAAACCQAAAAABCQAAAAAACQAAAAAACQAAAAACCQAAAAABCQAAAAADCQAAAAACCQAAAAACCQAAAAADCQAAAAABCQAAAAABCQAAAAAACQAAAAAACQAAAAABGgAAAAACCQAAAAACCQAAAAAACQAAAAADCQAAAAABCQAAAAABCQAAAAABCQAAAAABCQAAAAAACQAAAAABCQAAAAABCQAAAAACCQAAAAAACQAAAAACCQAAAAAACQAAAAAAGgAAAAAALwAAAAADCQAAAAACDgAAAAAADgAAAAAAQAAAAAAAQAAAAAAAQAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAADCQAAAAAAGgAAAAADDgAAAAAACQAAAAACDgAAAAAAQAAAAAADQAAAAAADQAAAAAABQAAAAAADQAAAAAACQAAAAAAADgAAAAAALAAAAAAALAAAAAAADgAAAAAACQAAAAADCQAAAAABGgAAAAABLwAAAAAACQAAAAABDgAAAAAAQAAAAAAAQAAAAAADQAAAAAABQAAAAAAAQAAAAAADQAAAAAABDgAAAAAALAAAAAAALgAAAAAADgAAAAAADgAAAAAACQAAAAAACQAAAAABCQAAAAABCQAAAAABDgAAAAAAQAAAAAABQAAAAAACDwAAAAACQAAAAAABQAAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALAAAAAAADgAAAAAACQAAAAABCQAAAAABCQAAAAAC version: 6 2,-3: ind: 2,-3 @@ -293,7 +295,7 @@ entities: version: 6 2,-4: ind: 2,-4 - tiles: DgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALAAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAOwAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALAAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAARgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAAMQAAAAAAMQAAAAACDgAAAAAADgAAAAAAMwAAAAADMwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAADDgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAACMwAAAAAAMwAAAAAAMwAAAAADDgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAA + tiles: DgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALAAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAOwAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALAAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAARgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAAMQAAAAAAMQAAAAACDgAAAAAADgAAAAAAMwAAAAADMwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAADDgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAMwAAAAACMwAAAAAAMwAAAAAAMwAAAAADDgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAA version: 6 2,-5: ind: 2,-5 @@ -305,11 +307,11 @@ entities: version: 6 2,1: ind: 2,1 - tiles: CQAAAAADCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAARwAAAAABCQAAAAABDgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALAAAAAAALgAAAAAACQAAAAABCQAAAAABBAAAAAABCQAAAAADDgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAABAAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAABAAAAAABCQAAAAACDgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAARwAAAAACDgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAACCQAAAAACRwAAAAACGwAAAAAAGwAAAAAAGwAAAAAACQAAAAADDgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAARwAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAACQAAAAABDgAAAAAADgAAAAAARwAAAAABDgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAARwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAA + tiles: CQAAAAADCQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAARwAAAAABCQAAAAABDgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALAAAAAAALgAAAAAACQAAAAABCQAAAAABBAAAAAABCQAAAAADDgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAABAAAAAAADgAAAAAADgAAAAAADgAAAAAACQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAABAAAAAABCQAAAAACDgAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAARwAAAAACDgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAACQAAAAACCQAAAAACRwAAAAACGwAAAAAAGwAAAAAAGwAAAAAACQAAAAADDgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAARwAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAADgAAAAAADgAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAACQAAAAABDgAAAAAADgAAAAAARwAAAAABDgAAAAAAGwAAAAAAGwAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAARwAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAAGwAAAAAALAAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAA version: 6 3,-1: ind: 3,-1 - tiles: CQAAAAABCQAAAAABCQAAAAADCQAAAAACCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAARAAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAARAAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAARAAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAHAAAAAADDgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAHAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAHAAAAAACDgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALAAAAAAALAAAAAAALgAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAA + tiles: CQAAAAABCQAAAAABCQAAAAADCQAAAAACCQAAAAABDgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADAAAAAAADAAAAAAADAAAAAAADAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAHAAAAAADDgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAHAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAHAAAAAACDgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALAAAAAAALAAAAAAALgAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAADgAAAAAADgAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAALAAAAAAAGwAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAADgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAALgAAAAAADgAAAAAALAAAAAAADgAAAAAA version: 6 3,-2: ind: 3,-2 @@ -333,7 +335,7 @@ entities: version: 6 3,1: ind: 3,1 - tiles: LgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAA + tiles: LgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAGwAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAAGwAAAAAAGwAAAAAAGwAAAAAAGwAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAA version: 6 4,-1: ind: 4,-1 @@ -553,6 +555,11 @@ entities: 18619: 26,-5 20038: -46,-57 20039: -48,-57 + 20696: 32,-30 + 20697: 33,-30 + 20698: 34,-30 + 20699: 35,-30 + 20721: 11,17 - node: zIndex: 1 color: '#FFFFFFFF' @@ -2316,12 +2323,6 @@ entities: 20413: 18,-38 20414: 12,-42 20415: 12,-41 - - node: - cleanable: True - zIndex: 5 - color: '#FFFFFF7F' - id: Dirt - decals: 20519: 17,14 20520: 20,12 20571: 45,-22 @@ -2345,42 +2346,6 @@ entities: 20353: -5,-9 20354: -2,-12 20355: -2,-8 - - node: - cleanable: True - zIndex: 5 - color: '#FFFFFF7F' - id: DirtHeavy - decals: - 20546: 16,15 - 20547: 14,16 - 20548: 16,16 - 20549: 17,14 - 20550: 10,17 - 20551: 10,16 - 20552: 9,17 - 20553: 11,19 - 20554: 15,22 - 20555: 15,23 - 20556: 19,21 - 20557: 17,6 - 20558: 18,6 - 20559: 22,6 - 20560: 20,6 - 20561: 24,6 - 20562: 24,7 - 20563: 31,6 - 20564: 31,3 - 20565: 30,-11 - 20566: 31,-12 - 20567: 31,-20 - 20568: 37,-22 - 20569: 42,-22 - 20570: 46,-18 - 20614: 35,-44 - 20615: 36,-42 - 20616: 35,-43 - 20617: 32,-46 - 20618: 32,-47 - node: cleanable: True zIndex: 5 @@ -3308,9 +3273,6 @@ entities: 11476: 24,-32 11477: 23,-32 11478: 22,-32 - 11479: 33,-31 - 11480: 33,-30 - 11481: 34,-30 11504: 34,-42 11505: 34,-41 11506: 33,-41 @@ -3535,7 +3497,6 @@ entities: 12443: 30,-30 12444: 29,-30 12445: 28,-30 - 12447: 33,-31 12449: 35,-33 12450: 34,-35 12451: 35,-35 @@ -3797,8 +3758,6 @@ entities: 14445: -20,-55 14446: -20,-56 14447: -9,-55 - 14453: 33,-32 - 14454: 34,-32 14455: 34,-31 14461: 32,-26 14462: 37,-26 @@ -5260,6 +5219,40 @@ entities: 20270: -6,-14 20271: -6,-13 20416: 12,-39 + 20546: 16,15 + 20547: 14,16 + 20548: 16,16 + 20549: 17,14 + 20550: 10,17 + 20551: 10,16 + 20552: 9,17 + 20553: 11,19 + 20554: 15,22 + 20555: 15,23 + 20556: 19,21 + 20557: 17,6 + 20558: 18,6 + 20559: 22,6 + 20560: 20,6 + 20561: 24,6 + 20562: 24,7 + 20563: 31,6 + 20564: 31,3 + 20565: 30,-11 + 20566: 31,-12 + 20567: 31,-20 + 20568: 37,-22 + 20569: 42,-22 + 20570: 46,-18 + 20614: 35,-44 + 20615: 36,-42 + 20616: 35,-43 + 20617: 32,-46 + 20618: 32,-47 + 20704: 30,-32 + 20705: 29,-32 + 20706: 33,-32 + 20707: 33,-31 - node: cleanable: True zIndex: 1 @@ -5295,28 +5288,6 @@ entities: 20349: -3,-8 20350: -2,-6 20351: -4,-6 - - node: - cleanable: True - zIndex: 5 - color: '#FFFFFF7F' - id: DirtHeavyMonotile - decals: - 20544: 19,13 - 20545: 19,12 - 20574: 33,-23 - 20575: 30,-22 - 20619: 33,-42 - 20620: 32,-42 - 20621: 31,-42 - 20622: 31,-41 - 20684: 20,-26 - 20685: 20,-27 - 20686: 29,-25 - 20687: 28,-25 - 20688: 30,-25 - 20689: 32,-26 - 20690: 38,-26 - 20691: 35,-23 - node: cleanable: True zIndex: 5 @@ -5492,7 +5463,6 @@ entities: 14416: 17,-56 14417: 16,-56 14418: 15,-56 - 14456: 34,-32 14457: 35,-31 14464: 39,-28 14509: 33,-3 @@ -5654,72 +5624,22 @@ entities: 19727: -13,-41 20114: -1,-14 20115: -1,-13 - - node: - cleanable: True - zIndex: 5 - color: '#FFFFFF7F' - id: DirtLight - decals: - 20537: 14,15 - 20538: 16,15 - 20539: 13,16 - 20541: 20,14 - 20542: 19,14 - 20543: 18,14 - 20576: 27,-22 - 20577: 26,-22 - 20578: 20,-22 - 20579: 14,-25 - 20580: 14,-27 - 20581: 13,-27 - 20582: 13,-26 - 20583: 11,-30 - 20623: 33,-42 - 20624: 33,-41 - 20625: 34,-41 - 20626: 34,-40 - 20627: 33,-40 - 20628: 36,-42 - 20629: 36,-41 - 20630: 37,-41 - 20631: 37,-42 - 20632: 36,-46 - 20633: 35,-46 - 20634: 35,-45 - 20635: 35,-43 - 20636: 35,-42 - 20637: 35,-41 - 20638: 36,-41 - 20639: 36,-43 - 20640: 36,-43 - 20641: 36,-45 - 20642: 35,-47 - 20643: 36,-47 - 20644: 28,-45 - 20645: 29,-34 - 20646: 29,-36 - 20647: 30,-31 - 20648: 29,-32 - 20649: 27,-31 - 20650: 28,-30 - 20651: 29,-29 - 20652: 29,-28 - 20653: 30,-26 - 20654: 27,-25 - 20655: 32,-31 - 20656: 34,-31 - 20657: 33,-32 - 20658: 36,-32 - 20659: 37,-32 - 20660: 34,-34 - 20661: 36,-37 - 20662: 37,-36 - 20663: 37,-38 - 20664: 39,-38 - 20665: 41,-38 - 20666: 34,-39 - 20667: 35,-37 - 20668: 34,-37 + 20544: 19,13 + 20545: 19,12 + 20574: 33,-23 + 20575: 30,-22 + 20619: 33,-42 + 20620: 32,-42 + 20621: 31,-42 + 20622: 31,-41 + 20684: 20,-26 + 20685: 20,-27 + 20686: 29,-25 + 20687: 28,-25 + 20688: 30,-25 + 20689: 32,-26 + 20690: 38,-26 + 20691: 35,-23 - node: cleanable: True zIndex: 5 @@ -7234,43 +7154,76 @@ entities: 20433: 16,-34 20434: 17,-33 20435: 16,-33 - - node: - cleanable: True - zIndex: 5 - color: '#FFFFFF7F' - id: DirtMedium - decals: - 20521: 14,15 - 20522: 14,16 - 20523: 15,16 - 20524: 15,15 - 20525: 18,14 - 20526: 18,15 - 20527: 19,15 - 20528: 19,14 - 20529: 20,14 - 20530: 19,13 - 20531: 18,12 - 20532: 17,12 - 20533: 16,13 - 20534: 15,13 - 20535: 15,14 - 20536: 15,15 - 20669: 32,-38 - 20670: 29,-38 - 20671: 30,-39 - 20672: 31,-35 - 20673: 30,-35 - 20674: 30,-34 - 20675: 31,-34 - 20676: 25,-31 - 20677: 25,-32 - 20678: 24,-32 - 20679: 22,-32 - 20680: 20,-28 - 20681: 19,-27 - 20682: 19,-26 - 20683: 19,-25 + 20537: 14,15 + 20538: 16,15 + 20539: 13,16 + 20541: 20,14 + 20542: 19,14 + 20543: 18,14 + 20576: 27,-22 + 20577: 26,-22 + 20578: 20,-22 + 20579: 14,-25 + 20580: 14,-27 + 20581: 13,-27 + 20582: 13,-26 + 20583: 11,-30 + 20623: 33,-42 + 20624: 33,-41 + 20625: 34,-41 + 20626: 34,-40 + 20627: 33,-40 + 20628: 36,-42 + 20629: 36,-41 + 20630: 37,-41 + 20631: 37,-42 + 20632: 36,-46 + 20633: 35,-46 + 20634: 35,-45 + 20635: 35,-43 + 20636: 35,-42 + 20637: 35,-41 + 20638: 36,-41 + 20639: 36,-43 + 20640: 36,-43 + 20641: 36,-45 + 20642: 35,-47 + 20643: 36,-47 + 20644: 28,-45 + 20645: 29,-34 + 20646: 29,-36 + 20647: 30,-31 + 20649: 27,-31 + 20650: 28,-30 + 20651: 29,-29 + 20652: 29,-28 + 20653: 30,-26 + 20654: 27,-25 + 20655: 32,-31 + 20656: 34,-31 + 20658: 36,-32 + 20659: 37,-32 + 20660: 34,-34 + 20661: 36,-37 + 20662: 37,-36 + 20663: 37,-38 + 20664: 39,-38 + 20665: 41,-38 + 20666: 34,-39 + 20667: 35,-37 + 20668: 34,-37 + 20708: 28,-32 + 20709: 29,-31 + 20710: 34,-32 + 20711: 33,-30 + 20712: 32,-30 + 20713: 34,-30 + 20714: 35,-30 + 20715: 35,-31 + 20716: 32,-32 + 20717: 32,-31 + 20718: 29,-27 + 20719: 34,-32 - node: cleanable: True zIndex: 5 @@ -8394,6 +8347,37 @@ entities: 20144: 6,-5 20145: 0,-8 20146: 2,-10 + 20521: 14,15 + 20522: 14,16 + 20523: 15,16 + 20524: 15,15 + 20525: 18,14 + 20526: 18,15 + 20527: 19,15 + 20528: 19,14 + 20529: 20,14 + 20530: 19,13 + 20531: 18,12 + 20532: 17,12 + 20533: 16,13 + 20534: 15,13 + 20535: 15,14 + 20536: 15,15 + 20669: 32,-38 + 20670: 29,-38 + 20671: 30,-39 + 20672: 31,-35 + 20673: 30,-35 + 20674: 30,-34 + 20675: 31,-34 + 20676: 25,-31 + 20677: 25,-32 + 20678: 24,-32 + 20679: 22,-32 + 20680: 20,-28 + 20681: 19,-27 + 20682: 19,-26 + 20683: 19,-25 - node: zIndex: 1 color: '#FFFFFFFF' @@ -9152,9 +9136,9 @@ entities: id: HalfTileOverlayGreyscale180 decals: 11246: 28,-32 - 11247: 29,-32 11274: 23,-32 11275: 24,-32 + 20703: 29,-32 - node: color: '#DE3A3A96' id: HalfTileOverlayGreyscale180 @@ -9492,9 +9476,8 @@ entities: 11282: 25,-26 11286: 35,-35 11293: 33,-37 - 11301: 34,-30 - 11302: 32,-30 11303: 32,-31 + 20700: 33,-31 - node: zIndex: 1 color: '#D381C996' @@ -9508,7 +9491,6 @@ entities: 9638: 32,-38 9731: 21,-28 9749: 34,-39 - 14452: 34,-32 - node: color: '#DE3A3A96' id: QuarterTileOverlayGreyscale @@ -9811,9 +9793,9 @@ entities: 11265: 22,-32 11280: 24,-26 11304: 32,-32 - 11309: 33,-31 11314: 27,-40 11315: 29,-40 + 20720: 33,-32 - node: zIndex: 1 color: '#D381C996' @@ -9949,8 +9931,7 @@ entities: 11285: 34,-36 11295: 35,-32 11296: 35,-31 - 11297: 35,-30 - 11300: 33,-30 + 20701: 34,-31 - node: zIndex: 1 color: '#D381C996' @@ -10199,13 +10180,7 @@ entities: id: ThreeQuarterTileOverlayGreyscale180 decals: 11244: 27,-30 - 11250: 30,-32 - - node: - zIndex: 1 - color: '#D381C996' - id: ThreeQuarterTileOverlayGreyscale180 - decals: - 14451: 33,-32 + 20702: 30,-32 - node: color: '#52B4E996' id: ThreeQuarterTileOverlayGreyscale270 @@ -10351,6 +10326,7 @@ entities: id: WarnCornerSmallGreyscaleNE decals: 9920: 9,12 + 20727: 10,16 - node: zIndex: 1 color: '#FFFFFFFF' @@ -10369,6 +10345,7 @@ entities: id: WarnCornerSmallGreyscaleNW decals: 9919: 13,12 + 20728: 12,16 - node: cleanable: True zIndex: 1 @@ -10387,6 +10364,7 @@ entities: id: WarnCornerSmallGreyscaleSE decals: 10985: -5,-5 + 20729: 10,18 - node: zIndex: 1 color: '#FFFFFFFF' @@ -10411,6 +10389,7 @@ entities: id: WarnCornerSmallGreyscaleSW decals: 10986: -1,-5 + 20726: 12,18 - node: cleanable: True zIndex: 1 @@ -10566,6 +10545,7 @@ entities: 15942: -46,-45 15943: -46,-46 15944: -46,-47 + 20722: 10,17 - node: cleanable: True zIndex: 1 @@ -10593,6 +10573,7 @@ entities: 9917: 12,12 11424: 34,-34 11425: 35,-34 + 20723: 11,16 - node: zIndex: 1 color: '#FFFFFFFF' @@ -10628,6 +10609,7 @@ entities: 10980: -3,-5 10981: -2,-5 11427: 20,-28 + 20725: 11,18 - node: zIndex: 1 color: '#FFFFFFFF' @@ -10660,6 +10642,7 @@ entities: 15938: -46,-44 15939: -46,-45 15940: -46,-47 + 20724: 12,17 - node: cleanable: True zIndex: 1 @@ -12339,7 +12322,7 @@ entities: 0: 7645 -5,-4: 0: 52431 - 2: 256 + 1: 256 -4,-3: 0: 53727 -5,-3: @@ -12354,7 +12337,7 @@ entities: 0: 65437 -4,0: 0: 13243 - 3: 2048 + 2: 2048 -3,-4: 0: 65501 -3,-3: @@ -12365,8 +12348,8 @@ entities: 0: 53247 -3,0: 0: 15 - 3: 13056 - 2: 3072 + 2: 13056 + 1: 3072 -3,-5: 0: 36863 -2,-4: @@ -12379,7 +12362,7 @@ entities: 0: 65535 -2,0: 0: 15 - 2: 3840 + 1: 3840 -2,-5: 0: 36349 -1,-4: @@ -12392,7 +12375,7 @@ entities: 0: 65535 -1,0: 0: 15 - 2: 3840 + 1: 3840 0,-4: 0: 30707 0,-3: @@ -12427,23 +12410,24 @@ entities: 0: 56793 -2,-8: 0: 61495 - 1: 136 + 3: 136 -2,-7: 0: 8176 -2,-6: 0: 64988 -2,-9: 0: 13299 - 1: 32768 + 3: 32768 -1,-8: - 1: 51 - 0: 63500 + 3: 51 + 0: 61452 + 4: 2048 -1,-6: 0: 65535 -1,-5: 0: 4095 -1,-9: - 1: 12288 + 3: 12288 0: 35059 -1,-7: 0: 3822 @@ -12498,17 +12482,17 @@ entities: 0,-12: 0: 62991 0,-11: - 0: 65286 + 0: 64262 0,-10: - 0: 64399 + 0: 64395 0,-9: 0: 48056 -4,-16: - 2: 17663 + 1: 17663 -5,-16: - 2: 255 + 1: 255 -4,-15: - 2: 100 + 1: 100 0: 45056 -5,-15: 0: 65024 @@ -12519,9 +12503,9 @@ entities: -5,-13: 0: 53759 -4,-17: - 2: 17663 + 1: 17663 -3,-16: - 2: 17 + 1: 17 0: 52428 -3,-15: 0: 47308 @@ -12529,63 +12513,63 @@ entities: 0: 35775 -3,-17: 0: 52360 - 2: 19 + 1: 19 -2,-16: 0: 13175 - 2: 32768 + 1: 32768 -2,-15: 0: 64435 -2,-14: 0: 65339 -2,-17: 0: 13119 - 2: 2048 + 1: 2048 -1,-15: 0: 65328 - 2: 8 + 1: 8 -1,-14: 0: 65295 -1,-16: - 2: 59392 + 1: 59392 0,-15: - 2: 15 + 1: 15 0: 65280 0,-14: 0: 65295 0,-13: 0: 65535 -4,-18: - 2: 59592 + 1: 59592 -5,-18: - 2: 40960 + 1: 40960 -5,-17: - 2: 255 + 1: 255 -4,-20: - 2: 51400 + 1: 51400 -4,-21: - 2: 51404 + 1: 51404 -4,-19: - 2: 51400 + 1: 51400 -3,-18: - 2: 12288 + 1: 12288 0: 34952 -3,-21: - 2: 18575 + 1: 18575 -3,-20: 0: 2176 -3,-19: 0: 34952 -2,-20: 0: 4913 - 2: 34816 + 1: 34816 -2,-19: 0: 15347 -2,-18: 0: 45875 - 2: 136 + 1: 136 -2,-21: 0: 4096 - 2: 17203 + 1: 17203 -1,-19: 0: 16 -1,-17: @@ -12594,7 +12578,7 @@ entities: 0: 43688 -4,1: 0: 62259 - 3: 128 + 2: 128 -5,1: 0: 43690 -4,2: @@ -12608,52 +12592,52 @@ entities: -4,4: 0: 21759 -3,1: - 3: 513 - 2: 8208 + 2: 513 + 1: 8208 -3,2: 0: 65280 - 2: 8 + 1: 8 -3,3: 0: 13119 - 2: 32768 + 1: 32768 -3,4: 0: 47283 -2,1: - 4: 273 - 5: 1092 + 5: 273 + 6: 1092 -2,2: 0: 65280 - 2: 10 + 1: 10 -2,3: 0: 13 - 2: 61696 + 1: 61696 -1,1: - 3: 1365 + 2: 1365 -1,2: 0: 65280 - 2: 10 + 1: 10 -1,3: 0: 15 - 2: 5120 + 1: 5120 -2,4: - 2: 8 + 1: 8 0: 16176 -1,4: 0: 61420 0,0: 0: 15 - 2: 3328 - 3: 512 + 1: 3328 + 2: 512 0,1: - 6: 273 - 3: 3276 + 7: 273 + 2: 3276 0,2: 0: 65280 - 2: 6 - 3: 8 + 1: 6 + 2: 8 0,3: 0: 19663 - 2: 256 + 1: 256 -5,4: 0: 62395 -4,5: @@ -12661,29 +12645,29 @@ entities: -5,5: 0: 8079 -4,6: - 2: 50272 + 1: 50272 -3,5: 0: 8099 -3,6: 0: 119 - 2: 53248 + 1: 53248 -3,7: - 2: 4401 + 1: 4401 -3,8: - 2: 4401 + 1: 4401 -2,5: 0: 13104 - 2: 2184 + 1: 2184 -2,6: 0: 63 - 2: 6144 + 1: 6144 -1,6: 0: 3311 - 2: 4096 + 1: 4096 -1,5: 0: 61038 -1,7: - 2: 2 + 1: 2 0,4: 0: 65535 0,5: @@ -12692,19 +12676,19 @@ entities: 0: 36863 -8,-4: 0: 15 - 2: 768 + 1: 768 -9,-4: 0: 26239 -8,-3: 0: 44782 -9,-3: 0: 34958 - 2: 12288 + 1: 12288 -8,-2: 0: 65034 -9,-2: 0: 64904 - 2: 3 + 1: 3 -8,-1: 0: 60942 -9,-1: @@ -12713,7 +12697,7 @@ entities: 0: 26190 -7,-4: 0: 17479 - 2: 256 + 1: 256 -7,-3: 0: 65535 -7,-2: @@ -12726,7 +12710,7 @@ entities: 0: 65359 -6,-4: 0: 15 - 2: 2304 + 1: 2304 -6,-3: 0: 53727 -6,-2: @@ -12819,29 +12803,29 @@ entities: 0: 65262 -8,-17: 0: 24576 - 2: 206 + 1: 206 -7,-16: - 2: 750 + 1: 750 -7,-15: - 2: 98 + 1: 98 0: 57344 -7,-14: 0: 58478 -6,-16: - 2: 17663 + 1: 17663 -6,-14: 0: 48042 -6,-15: 0: 40960 - 2: 196 + 1: 196 -6,-17: - 2: 17663 + 1: 17663 -8,-20: 0: 1 - 2: 512 + 1: 512 -8,-21: 0: 4096 - 2: 32 + 1: 32 -9,-20: 0: 61423 -9,-19: @@ -12849,25 +12833,25 @@ entities: -9,-18: 0: 61423 -8,-18: - 2: 40960 + 1: 40960 -9,-17: 0: 65519 -7,-17: - 2: 511 + 1: 511 -7,-18: - 2: 40960 + 1: 40960 -6,-18: - 2: 40960 + 1: 40960 -9,0: 0: 51404 - 2: 4096 + 1: 4096 -8,1: 0: 6 - 2: 25600 + 1: 25600 -9,1: 0: 61164 -8,2: - 2: 2 + 1: 2 0: 61056 -9,2: 0: 60668 @@ -12901,114 +12885,114 @@ entities: 0: 62990 -8,6: 0: 7 - 2: 1792 + 1: 1792 -9,6: - 2: 52288 + 1: 52288 -8,7: - 2: 4224 + 1: 4224 -8,8: - 2: 18163 + 1: 18163 -9,7: - 2: 64716 + 1: 64716 -7,5: 0: 26159 -7,6: - 2: 4368 + 1: 4368 -7,7: - 2: 4369 + 1: 4369 -7,8: - 2: 55569 + 1: 55569 -6,5: 0: 3903 -6,6: - 2: 16454 + 1: 16454 -6,7: - 2: 2 + 1: 2 0: 35968 -6,8: - 2: 4978 + 1: 4978 -5,6: 0: 4369 - 2: 16452 + 1: 16452 -5,7: 0: 14128 - 2: 8 + 1: 8 -5,8: 0: 1 - 2: 2248 + 1: 2248 -9,8: - 2: 15 + 1: 15 -8,9: - 2: 8 + 1: 8 -7,9: - 2: 19038 + 1: 19038 -7,10: - 2: 136 + 1: 136 -6,9: - 2: 61440 + 1: 61440 -6,10: - 2: 116 + 1: 116 -5,9: - 2: 61440 + 1: 61440 -5,10: - 2: 196 + 1: 196 -4,8: - 2: 29456 + 1: 29456 -4,9: - 2: 23118 + 1: 23118 -4,10: - 2: 50 + 1: 50 -12,-4: - 2: 3712 - 3: 57344 + 1: 3712 + 2: 57344 -13,-4: 0: 48896 - 3: 7 - 2: 8 + 2: 7 + 1: 8 -12,-3: 0: 1 - 2: 62126 + 1: 62126 -13,-3: 0: 11 - 3: 59136 - 2: 6144 + 2: 59136 + 1: 6144 -12,-2: - 3: 59185 - 2: 2254 + 2: 59185 + 1: 2254 -13,-2: - 3: 140 - 2: 2114 + 2: 140 + 1: 2114 -12,-1: - 3: 140 - 2: 34816 + 2: 140 + 1: 34816 -11,-4: - 2: 1841 - 3: 61440 + 1: 1841 + 2: 61440 -11,-3: - 2: 61759 + 1: 61759 -11,-2: - 2: 5 + 1: 5 0: 36352 -12,0: - 2: 35562 + 1: 35562 -11,-5: - 2: 8048 + 1: 8048 -11,-1: 0: 34958 - 2: 8704 + 1: 8704 -10,-4: 0: 59647 - 3: 4096 + 2: 4096 -10,-3: - 2: 61633 + 1: 61633 -10,-2: 0: 65280 - 2: 12 + 1: 12 -10,-1: 0: 13311 -10,0: 0: 13105 - 2: 34944 + 1: 34944 -12,-8: 0: 64991 -12,-9: @@ -13019,17 +13003,17 @@ entities: 0: 56349 -13,-7: 0: 51404 - 2: 17 + 1: 17 -12,-6: 0: 52701 -13,-6: 0: 3838 -12,-5: - 3: 305 - 2: 4800 + 2: 305 + 1: 4800 -13,-5: - 3: 60552 - 2: 4672 + 2: 60552 + 1: 4672 -11,-8: 0: 65535 -11,-7: @@ -13046,7 +13030,7 @@ entities: 0: 61695 -10,-5: 0: 3087 - 2: 256 + 1: 256 -10,-9: 0: 65287 -12,-12: @@ -13057,7 +13041,7 @@ entities: 0: 61058 -12,-11: 0: 4367 - 2: 1024 + 1: 1024 -13,-11: 0: 34958 -12,-10: @@ -13066,7 +13050,7 @@ entities: 0: 49080 -13,-9: 0: 52424 - 2: 272 + 1: 272 -11,-10: 0: 65399 -11,-13: @@ -13075,7 +13059,7 @@ entities: 0: 61152 -11,-11: 0: 14 - 2: 1024 + 1: 1024 -10,-12: 0: 32738 -10,-11: @@ -13085,7 +13069,7 @@ entities: -10,-13: 0: 65294 -12,-15: - 2: 3 + 1: 3 0: 30464 -12,-14: 0: 30576 @@ -13095,173 +13079,173 @@ entities: 0: 60629 -11,-15: 0: 7936 - 2: 10 + 1: 10 -11,-14: 0: 56799 -10,-15: 0: 3968 - 2: 2 + 1: 2 -10,-14: 0: 61166 -10,-16: - 2: 16384 + 1: 16384 -10,-20: - 2: 4 + 1: 4 0: 3072 -10,-21: - 2: 17536 + 1: 17536 -10,-19: 0: 12 - 2: 1024 + 1: 1024 -10,-18: - 2: 4 + 1: 4 0: 3072 -10,-17: 0: 12 - 2: 1024 + 1: 1024 -9,-21: 0: 64170 -12,1: - 2: 65416 + 1: 65416 -13,1: - 2: 65392 + 1: 65392 -12,2: - 3: 3840 - 2: 61440 + 2: 3840 + 1: 61440 -13,2: - 3: 43008 - 2: 21026 + 2: 43008 + 1: 21026 -12,3: - 3: 3855 - 2: 61440 + 2: 3855 + 1: 61440 -13,3: - 3: 43016 - 2: 21026 + 2: 43016 + 1: 21026 -12,4: - 3: 3855 - 2: 61440 + 2: 3855 + 1: 61440 -11,1: - 2: 63265 + 1: 63265 0: 8 -11,3: - 2: 34560 - 3: 2048 + 1: 34560 + 2: 2048 -11,0: 0: 52416 -10,1: 0: 51 - 2: 12424 + 1: 12424 -10,3: - 3: 49408 - 2: 4096 + 2: 49408 + 1: 4096 0: 140 -11,4: - 2: 15 + 1: 15 -10,2: - 2: 290 + 1: 290 0: 32960 -10,4: - 2: 8471 - 3: 3816 + 1: 8471 + 2: 3816 -13,4: - 3: 43016 - 2: 21026 + 2: 43016 + 1: 21026 -12,5: - 3: 8207 - 2: 53760 + 2: 8207 + 1: 53760 -13,5: - 3: 8200 - 2: 53794 + 2: 8200 + 1: 53794 -12,6: - 3: 21872 - 2: 8706 + 2: 21872 + 1: 8706 -12,7: - 3: 85 - 2: 61986 + 2: 85 + 1: 61986 -12,8: - 2: 127 + 1: 127 -13,7: - 2: 61986 - 3: 85 + 1: 61986 + 2: 85 -11,5: - 2: 61952 + 1: 61952 -11,7: - 2: 61440 + 1: 61440 -11,8: - 2: 15 + 1: 15 -11,6: - 2: 2 + 1: 2 -10,5: - 2: 5760 + 1: 5760 0: 57344 -10,7: - 2: 61440 + 1: 61440 -10,8: - 2: 15 + 1: 15 -10,6: - 2: 6 + 1: 6 -13,8: - 2: 127 + 1: 127 -16,-4: 0: 65327 -16,-5: 0: 61440 - 2: 145 + 1: 145 -16,-3: 0: 65327 -17,-4: 0: 62578 -16,-2: - 2: 240 + 1: 240 -16,-1: - 2: 35071 + 1: 35071 -17,-1: - 2: 255 + 1: 255 -15,-1: - 2: 9215 + 1: 9215 -16,0: - 2: 34952 + 1: 34952 -15,-4: 0: 24576 - 2: 12 + 1: 12 -15,-3: - 2: 60416 + 1: 60416 -15,-2: - 2: 55720 + 1: 55720 -15,-5: - 2: 59561 + 1: 59561 -15,0: - 2: 8995 + 1: 8995 -14,-4: 0: 65280 - 2: 14 + 1: 14 -14,-3: 0: 15 - 2: 43776 + 1: 43776 -14,-2: - 2: 32682 + 1: 32682 -14,-1: - 2: 23 + 1: 23 -14,-5: - 2: 43695 + 1: 43695 -16,-8: - 2: 10098 + 1: 10098 -16,-7: - 2: 8995 + 1: 8995 -16,-6: - 2: 4083 + 1: 4083 -17,-6: - 2: 36848 + 1: 36848 -17,-5: - 2: 72 + 1: 72 -16,-9: - 2: 12848 + 1: 12848 -15,-8: 0: 32631 -15,-6: - 2: 14196 + 1: 14196 -15,-7: - 2: 10240 + 1: 10240 -14,-8: 0: 30711 -14,-7: @@ -13269,105 +13253,105 @@ entities: -14,-6: 0: 4095 -16,-12: - 2: 16369 + 1: 16369 -16,-13: - 2: 4369 - 3: 8738 + 1: 4369 + 2: 8738 -17,-12: - 2: 49137 + 1: 49137 -16,-11: - 2: 12850 + 1: 12850 -16,-10: - 2: 5272 - 3: 49668 + 1: 5272 + 2: 49668 -15,-12: - 2: 4083 + 1: 4083 -15,-10: - 2: 39248 - 3: 160 + 1: 39248 + 2: 160 -15,-13: - 2: 4352 - 3: 8208 + 1: 4352 + 2: 8208 0: 8 -14,-12: - 2: 3888 + 1: 3888 0: 8 -14,-10: - 3: 816 - 2: 1 + 2: 816 + 1: 1 0: 34944 -15,-9: - 2: 8 + 1: 8 -14,-9: - 2: 273 - 3: 2 + 1: 273 + 2: 2 -14,-13: 0: 52428 -16,-16: - 2: 319 + 1: 319 -16,-17: - 2: 12288 + 1: 12288 -17,-16: - 2: 20991 - 3: 8192 + 1: 20991 + 2: 8192 -16,-15: 0: 287 - 3: 4096 - 2: 8192 + 2: 4096 + 1: 8192 -16,-14: - 3: 12337 - 2: 450 + 2: 12337 + 1: 450 -17,-15: - 2: 33045 - 3: 12834 + 1: 33045 + 2: 12834 -17,-14: - 2: 361 - 3: 45200 + 1: 361 + 2: 45200 -17,-13: - 3: 43690 - 2: 4369 + 2: 43690 + 1: 4369 -15,-16: - 2: 15 + 1: 15 0: 57344 -15,-15: 0: 239 - 2: 4096 + 1: 4096 -15,-14: - 2: 1 + 1: 1 0: 61120 -14,-16: - 2: 63 + 1: 63 0: 53248 -14,-15: 0: 3295 - 2: 4096 + 1: 4096 -14,-14: 0: 57308 -13,-16: - 2: 33843 + 1: 33843 0: 4096 -13,-15: 0: 22387 -20,-4: - 2: 52428 + 1: 52428 -20,-5: - 2: 52424 + 1: 52424 -20,-3: - 2: 52428 + 1: 52428 -20,-2: - 2: 2252 + 1: 2252 -19,-4: - 2: 29184 + 1: 29184 -19,-3: - 2: 31744 + 1: 31744 -19,-2: - 2: 29596 + 1: 29596 -19,-1: - 2: 206 + 1: 206 -18,-2: - 2: 39188 + 1: 39188 -18,-1: - 2: 255 + 1: 255 -18,-4: 0: 25792 -18,-3: @@ -13375,82 +13359,82 @@ entities: -17,-3: 0: 628 -17,-2: - 2: 34928 + 1: 34928 -19,-5: - 2: 31891 + 1: 31891 -19,-6: - 2: 32448 + 1: 32448 -18,-6: - 2: 40944 + 1: 40944 -18,-5: - 2: 1113 + 1: 1113 -21,-16: - 2: 52460 + 1: 52460 -21,-17: - 2: 57344 + 1: 57344 -21,-15: - 2: 52428 + 1: 52428 -21,-14: - 2: 52428 + 1: 52428 -21,-13: - 2: 50252 + 1: 50252 -21,-12: - 2: 61164 + 1: 61164 -20,-16: - 2: 159 - 3: 32768 - -20,-14: - 2: 722 - 3: 32800 - -20,-17: + 1: 159 2: 32768 + -20,-14: + 1: 722 + 2: 32800 + -20,-17: + 1: 32768 -19,-16: - 2: 4607 - 3: 40960 + 1: 4607 + 2: 40960 -20,-15: - 3: 34952 + 2: 34952 -19,-15: - 2: 273 - 3: 47786 + 1: 273 + 2: 47786 -19,-14: - 3: 45072 - 2: 481 + 2: 45072 + 1: 481 -20,-13: - 3: 34952 + 2: 34952 -19,-13: - 2: 4369 - 3: 43690 + 1: 4369 + 2: 43690 -19,-17: - 2: 45056 + 1: 45056 -19,-12: - 2: 49137 + 1: 49137 -18,-16: - 2: 4607 - 3: 40960 + 1: 4607 + 2: 40960 -18,-15: - 2: 273 - 3: 47786 + 1: 273 + 2: 47786 -18,-14: - 3: 45072 - 2: 481 + 2: 45072 + 1: 481 -18,-13: - 2: 4369 - 3: 43690 + 1: 4369 + 2: 43690 -18,-17: - 2: 45056 + 1: 45056 -18,-12: - 2: 49073 + 1: 49073 -17,-17: - 2: 45056 + 1: 45056 1,-4: 0: 1136 - 2: 61440 + 1: 61440 1,-3: - 3: 52417 - 2: 4368 + 2: 52417 + 1: 4368 1,-2: - 3: 1 - 2: 240 + 2: 1 + 1: 240 0: 61440 1,-1: 0: 65535 @@ -13458,24 +13442,24 @@ entities: 0: 65535 1,0: 0: 15 - 2: 20224 + 1: 20224 2,-4: 0: 119 - 2: 28672 + 1: 28672 2,-3: - 3: 4372 - 2: 17472 + 2: 4372 + 1: 17472 2,-2: - 2: 112 + 1: 112 0: 61568 - 3: 4 + 2: 4 2,-1: 0: 32631 2,-5: 0: 65535 2,0: 0: 2063 - 2: 1792 + 1: 1792 3,-4: 0: 4090 3,-3: @@ -13561,9 +13545,9 @@ entities: 4,-9: 0: 16151 0,-16: - 2: 43520 + 1: 43520 1,-16: - 2: 45056 + 1: 45056 1,-15: 0: 65248 1,-14: @@ -13592,63 +13576,63 @@ entities: 0: 2240 1,-17: 0: 12 - 2: 2048 + 1: 2048 1,-18: 0: 32768 - 2: 136 + 1: 136 1,-20: - 2: 34816 + 1: 34816 2,-19: 0: 61182 2,-21: - 2: 7918 + 1: 7918 0: 16384 2,-20: 0: 20196 2,-18: 0: 61166 3,-21: - 2: 39167 + 1: 39167 3,-18: - 2: 58600 + 1: 58600 3,-20: - 2: 34952 + 1: 34952 4,-20: - 2: 4112 + 1: 4112 3,-19: - 2: 34952 + 1: 34952 4,-19: - 2: 4112 + 1: 4112 4,-18: - 2: 62960 - 3: 2560 + 1: 62960 + 2: 2560 1,1: - 3: 16657 - 2: 1028 + 2: 16657 + 1: 1028 1,2: 0: 65280 - 3: 4 - 2: 8 + 2: 4 + 1: 8 1,3: 0: 14207 1,4: 0: 65535 2,1: - 3: 1911 + 2: 1911 2,2: 0: 65280 - 2: 4 + 1: 4 2,3: 0: 49359 - 2: 256 + 1: 256 2,4: 0: 65535 3,1: - 2: 4113 + 1: 4113 0: 52416 3,2: 0: 65484 - 2: 1 + 1: 1 3,3: 0: 55487 3,4: @@ -13681,25 +13665,25 @@ entities: 0: 30719 3,7: 0: 7 - 2: 17408 - 3: 32768 + 1: 17408 + 2: 32768 3,8: - 2: 36452 - 3: 136 + 1: 36452 + 2: 136 4,4: 0: 47553 4,5: 0: 16369 4,6: 0: 13107 - 2: 8 + 1: 8 4,7: 0: 823 - 3: 12288 - 2: 16384 + 2: 12288 + 1: 16392 4,8: - 3: 307 - 2: 16068 + 2: 307 + 1: 16068 5,-4: 0: 44987 5,-3: @@ -13746,7 +13730,7 @@ entities: 0: 15291 5,-8: 0: 13311 - 2: 32768 + 1: 32768 5,-7: 0: 32627 5,-6: @@ -13755,9 +13739,9 @@ entities: 0: 7943 6,-8: 0: 35067 - 2: 4096 + 1: 4096 6,-7: - 2: 1 + 1: 1 0: 65416 6,-6: 0: 65520 @@ -13805,7 +13789,7 @@ entities: 0: 12275 7,-13: 0: 4113 - 2: 50176 + 1: 50176 8,-12: 0: 65520 8,-11: @@ -13823,50 +13807,50 @@ entities: 6,-14: 0: 15295 6,-16: - 2: 32768 + 1: 32768 7,-16: - 2: 14476 - 3: 32768 + 1: 14476 + 2: 32768 7,-15: 0: 64432 7,-14: 0: 53247 7,-17: - 2: 19596 + 1: 19596 8,-16: - 3: 4096 + 2: 4096 8,-14: 0: 3838 8,-13: - 2: 36906 + 1: 36906 4,-21: - 2: 4112 + 1: 4112 5,-18: - 2: 62974 - 3: 2048 + 1: 62974 + 2: 2048 5,-19: - 2: 51200 + 1: 51200 6,-19: - 2: 4990 + 1: 4990 6,-18: - 2: 62960 - 3: 512 + 1: 62960 + 2: 512 6,-20: - 2: 51200 + 1: 51200 7,-20: - 2: 65530 - 3: 4 + 1: 65530 + 2: 4 7,-19: - 2: 17487 + 1: 17487 7,-18: - 2: 30068 - 3: 512 + 1: 30068 + 2: 512 7,-21: - 2: 64256 + 1: 64256 8,-20: - 2: 29456 + 1: 29456 8,-19: - 2: 2255 + 1: 2255 5,1: 0: 65522 5,2: @@ -13901,10 +13885,16 @@ entities: 0: 30711 5,5: 0: 61424 + 5,7: + 2: 39 + 1: 16 + 5,6: + 1: 4096 + 2: 8192 6,5: 0: 36848 6,6: - 2: 2 + 1: 2 0: 34952 6,7: 0: 140 @@ -13912,17 +13902,17 @@ entities: 0: 40952 7,6: 0: 221 - 2: 24576 + 1: 24576 7,7: 0: 1 - 2: 2 + 1: 2 8,4: 0: 65523 8,5: 0: 4369 8,6: 0: 3327 - 2: 4096 + 1: 4096 9,-4: 0: 30583 9,-3: @@ -13937,7 +13927,7 @@ entities: 0: 65339 10,-4: 0: 49425 - 2: 192 + 1: 192 10,-3: 0: 8191 10,-2: @@ -13950,7 +13940,7 @@ entities: 0: 48682 11,-1: 0: 59 - 2: 12288 + 1: 12288 11,-4: 0: 59946 11,-3: @@ -13958,14 +13948,13 @@ entities: 11,-5: 0: 61175 12,-4: - 0: 4367 - 2: 52224 + 0: 65327 12,-3: - 0: 4353 - 2: 1028 + 0: 4367 + 1: 1024 12,-2: 0: 4353 - 2: 52420 + 1: 52420 9,-8: 0: 60943 9,-7: @@ -13982,9 +13971,9 @@ entities: 0: 47291 10,-7: 0: 14 - 2: 25600 + 1: 25600 10,-5: - 2: 33376 + 1: 33376 11,-8: 0: 25328 11,-7: @@ -13995,7 +13984,7 @@ entities: 0: 58976 12,-8: 0: 4415 - 2: 51200 + 1: 51200 12,-7: 0: 65489 12,-6: @@ -14009,25 +13998,25 @@ entities: 9,-10: 0: 61408 9,-13: - 2: 4096 + 1: 4096 10,-12: 0: 4368 10,-10: 0: 48952 10,-13: - 2: 4368 + 1: 4368 0: 140 10,-11: - 2: 8736 + 1: 8736 11,-11: 0: 21776 11,-10: 0: 28455 11,-12: - 2: 5456 + 1: 5456 12,-12: 0: 13107 - 2: 32768 + 1: 32768 12,-11: 0: 56785 12,-10: @@ -14035,27 +14024,27 @@ entities: 12,-9: 0: 16157 8,-15: - 2: 1634 + 1: 1634 9,-14: 0: 61439 9,-15: - 2: 17 + 1: 17 0: 60620 9,-16: 0: 52364 9,-17: 0: 51336 - 2: 32 + 1: 32 10,-16: 0: 56704 - 2: 2 + 1: 2 10,-15: 0: 57309 10,-14: 0: 57297 10,-17: - 3: 34816 - 2: 576 + 2: 34816 + 1: 576 11,-16: 0: 65520 11,-15: @@ -14065,8 +14054,8 @@ entities: 11,-13: 0: 127 11,-17: - 3: 62208 - 2: 3104 + 2: 62208 + 1: 3104 12,-16: 0: 56712 12,-15: @@ -14076,36 +14065,36 @@ entities: 12,-13: 0: 47935 9,-19: - 2: 62736 - 3: 2082 + 1: 62736 + 2: 2082 9,-20: - 3: 3136 + 2: 3136 9,-18: - 2: 2126 + 1: 2126 10,-20: - 2: 1792 + 1: 1792 10,-18: - 2: 25862 + 1: 25862 11,-20: - 3: 13056 - 2: 50304 + 2: 13056 + 1: 50304 11,-19: - 3: 30583 - 2: 8 + 2: 30583 + 1: 8 11,-18: - 3: 375 - 2: 17920 + 2: 375 + 1: 17920 11,-21: - 2: 6513 - 3: 142 + 1: 6513 + 2: 142 12,-20: - 3: 13107 + 2: 13107 12,-19: - 2: 5633 - 3: 24610 + 1: 5633 + 2: 24610 12,-18: - 2: 17425 - 3: 8366 + 1: 17425 + 2: 8366 9,1: 0: 8083 9,2: @@ -14114,7 +14103,7 @@ entities: 0: 65339 10,1: 0: 9010 - 2: 2176 + 1: 2176 10,2: 0: 56575 10,3: @@ -14124,700 +14113,700 @@ entities: 11,0: 0: 32624 11,1: - 2: 16 + 1: 16 0: 57344 11,2: 0: 65535 11,3: 0: 271 12,0: - 2: 51393 + 1: 51393 0: 768 - 3: 1024 + 2: 1024 12,1: - 2: 49665 + 1: 49665 12,2: 0: 30577 12,3: 0: 7 - 2: 17408 + 1: 17408 9,6: 0: 119 - 2: 8192 + 1: 8192 9,5: 0: 28398 10,4: 0: 62256 - 2: 128 + 1: 128 10,5: 0: 511 - 2: 49152 + 1: 49152 10,6: - 2: 3 + 1: 3 11,4: - 2: 80 + 1: 80 0: 61440 11,5: 0: 44799 11,6: - 0: 170 + 0: 2730 12,4: 0: 61440 - 2: 68 + 1: 68 12,5: 0: 241 - 2: 24576 + 1: 24576 12,-1: - 2: 4 + 1: 4 13,-4: 0: 1 - 2: 64 + 1: 64 13,-2: - 2: 4080 + 1: 4080 13,-5: 0: 62451 14,-2: - 2: 20478 + 1: 20478 14,-5: 0: 12336 14,-1: - 3: 43690 - 2: 17476 + 2: 43690 + 1: 17476 14,0: - 3: 1038 - 2: 19264 + 2: 1038 + 1: 19264 15,-2: - 2: 20478 + 1: 20478 15,-1: - 3: 43690 - 2: 17476 + 2: 43690 + 1: 17476 15,0: - 3: 1038 - 2: 19264 + 2: 1038 + 1: 19264 16,-2: - 2: 20478 + 1: 20478 13,-8: 0: 3 - 2: 17476 + 1: 17476 13,-7: 0: 62448 13,-6: 0: 65523 13,-9: - 2: 16388 + 1: 16388 0: 257 14,-7: 0: 12336 14,-6: - 2: 8224 + 1: 8224 13,-12: - 2: 64512 + 1: 64512 13,-11: 0: 65520 13,-10: 0: 4607 - 2: 49152 + 1: 49152 13,-13: 0: 13075 - 2: 2176 + 1: 2176 14,-12: - 2: 36864 + 1: 36864 0: 238 14,-11: 0: 4368 - 3: 19656 - 2: 32768 + 2: 19656 + 1: 32768 14,-10: 0: 17 - 3: 2188 - 2: 64 + 2: 2188 + 1: 64 14,-13: 0: 58606 15,-11: - 3: 401 - 2: 4710 + 2: 401 + 1: 4710 15,-10: - 3: 48 - 2: 3784 + 2: 48 + 1: 3784 15,-12: - 2: 8712 + 1: 8712 15,-13: - 2: 52832 + 1: 52832 16,-12: - 2: 8435 - 3: 35328 + 1: 8435 + 2: 35328 16,-11: - 3: 10937 - 2: 36864 + 2: 10937 + 1: 36864 0: 1024 16,-10: - 3: 383 - 2: 2176 + 2: 383 + 1: 2176 12,-17: 0: 34880 - 2: 162 + 1: 162 13,-16: 0: 4353 - 2: 17408 + 1: 17408 13,-15: 0: 12561 - 2: 2116 + 1: 2116 13,-14: 0: 48123 13,-17: 0: 4096 - 3: 16 - 2: 230 + 2: 16 + 1: 230 14,-14: 0: 65535 14,-16: - 2: 28 + 1: 28 0: 8192 14,-17: - 2: 4096 - 3: 2 + 1: 4096 + 2: 2 14,-15: 0: 57890 15,-16: - 2: 32775 - 3: 2176 + 1: 32775 + 2: 2176 15,-14: 0: 10016 15,-15: - 2: 28360 + 1: 28360 15,-17: - 2: 34944 + 1: 34944 16,-16: - 3: 61105 - 2: 14 + 2: 61105 + 1: 14 16,-15: - 3: 119 + 2: 119 16,-13: - 2: 4098 + 1: 4098 12,-21: - 2: 20480 - 3: 8977 + 1: 20480 + 2: 8977 13,-18: - 3: 8448 - 2: 4096 + 2: 8448 + 1: 4096 14,-19: - 2: 14540 + 1: 14540 14,-18: - 2: 21789 - 3: 2 + 1: 21789 + 2: 2 14,-20: - 2: 60416 - 3: 192 + 1: 60416 + 2: 192 15,-19: - 3: 57102 - 2: 8192 + 2: 57102 + 1: 8192 15,-18: - 3: 19 - 2: 32780 + 2: 19 + 1: 32780 15,-21: - 3: 7680 + 2: 7680 0: 64 15,-20: - 3: 3686 + 2: 3686 16,-20: - 3: 63235 - 2: 2216 + 2: 63235 + 1: 2216 16,-19: - 3: 48031 + 2: 48031 16,-18: - 3: 139 - 2: 31744 + 2: 139 + 1: 31744 16,-17: - 3: 49022 - 2: 16384 + 2: 49022 + 1: 16384 13,0: - 2: 20288 + 1: 20288 13,2: - 2: 65280 + 1: 65280 14,2: - 2: 65348 - 3: 10 + 1: 65348 + 2: 10 14,1: - 3: 43694 - 2: 17472 + 2: 43694 + 1: 17472 14,3: - 2: 14 + 1: 14 15,2: - 2: 65348 - 3: 10 + 1: 65348 + 2: 10 15,1: - 3: 43694 - 2: 17472 + 2: 43694 + 1: 17472 15,3: - 2: 14 + 1: 14 16,0: - 2: 19264 - 3: 1038 + 1: 19264 + 2: 1038 16,2: - 2: 65348 - 3: 10 + 1: 65348 + 2: 10 12,6: - 2: 2 + 1: 2 16,-1: - 3: 43690 - 2: 17476 + 2: 43690 + 1: 17476 17,-2: - 2: 20478 + 1: 20478 17,-1: - 3: 43690 - 2: 17476 + 2: 43690 + 1: 17476 17,0: - 3: 1038 - 2: 19264 + 2: 1038 + 1: 19264 17,-3: - 2: 32768 + 1: 32768 18,-3: - 2: 14316 + 1: 14316 18,-2: - 2: 59185 + 1: 59185 18,-1: - 2: 34956 + 1: 34956 18,-4: - 2: 32768 + 1: 32768 19,-4: - 2: 14316 + 1: 14316 19,-3: - 2: 1 + 1: 1 19,-1: - 2: 4407 + 1: 4407 18,0: - 2: 44456 - 3: 512 - 19,0: - 2: 13105 - 19,-2: - 2: 60544 - 19,-5: - 2: 32896 - 20,-2: - 2: 311 - 20,-7: - 3: 24576 - 19,-7: - 2: 32768 - 20,-6: - 2: 16912 - 3: 36078 - 19,-6: - 2: 200 - 20,-5: - 2: 784 - 3: 60552 - 20,-4: - 3: 18022 - 21,-6: - 3: 18367 - 2: 2048 - 21,-5: - 3: 55735 - 2: 8 - 21,-8: - 2: 546 - 3: 34952 - 21,-7: - 3: 34958 + 1: 44456 2: 512 + 19,0: + 1: 13105 + 19,-2: + 1: 60544 + 19,-5: + 1: 32896 + 20,-2: + 1: 311 + 20,-7: + 2: 24576 + 19,-7: + 1: 32768 + 20,-6: + 1: 16912 + 2: 36078 + 19,-6: + 1: 200 + 20,-5: + 1: 784 + 2: 60552 + 20,-4: + 2: 18022 + 21,-6: + 2: 18367 + 1: 2048 + 21,-5: + 2: 55735 + 1: 8 + 21,-8: + 1: 546 + 2: 34952 + 21,-7: + 2: 34958 + 1: 512 21,-4: - 3: 31612 + 2: 31612 21,-9: - 3: 36352 - 2: 231 + 2: 36352 + 1: 231 22,-8: - 3: 57339 - 2: 4 + 2: 57339 + 1: 4 22,-7: - 3: 4271 - 2: 57600 + 2: 4271 + 1: 57600 22,-6: - 3: 60621 - 2: 16 + 2: 60621 + 1: 16 22,-5: - 2: 1 - 3: 65534 + 1: 1 + 2: 65534 22,-9: - 3: 40908 - 2: 16434 + 2: 40908 + 1: 16434 22,-4: - 3: 15031 - 2: 8 + 2: 15031 + 1: 8 23,-8: - 3: 65295 + 2: 65295 23,-7: - 2: 13056 - 3: 52462 + 1: 13056 + 2: 52462 23,-6: - 3: 34511 - 2: 2096 + 2: 34511 + 1: 2096 23,-5: - 3: 52215 - 2: 12288 + 2: 52215 + 1: 12288 0: 1024 23,-9: - 3: 60943 + 2: 60943 0: 144 23,-4: - 3: 4 - 2: 336 + 2: 4 + 1: 336 24,-8: - 3: 4899 + 2: 4899 24,-7: - 3: 4371 + 2: 4371 24,-6: - 3: 275 - 2: 4640 + 2: 275 + 1: 4640 16,1: - 3: 43694 - 2: 17472 + 2: 43694 + 1: 17472 16,3: - 2: 14 + 1: 14 17,2: - 2: 65348 - 3: 10 + 1: 65348 + 2: 10 17,1: - 3: 43694 - 2: 17472 + 2: 43694 + 1: 17472 17,3: - 2: 14 + 1: 14 18,2: - 2: 65416 + 1: 65416 18,1: - 2: 34952 + 1: 34952 19,1: - 2: 4369 + 1: 4369 19,2: - 2: 13073 + 1: 13073 18,3: - 2: 8 + 1: 8 19,3: - 2: 3 + 1: 3 24,-9: - 3: 12545 + 2: 12545 0: 16 4,-24: - 2: 13107 + 1: 13107 4,-25: - 2: 4096 + 1: 4096 3,-24: - 2: 224 - 3: 12567 + 1: 224 + 2: 12567 4,-23: - 2: 4915 + 1: 4915 3,-23: - 3: 4415 - 2: 34816 + 2: 4415 + 1: 34816 4,-22: - 2: 4369 + 1: 4369 3,-22: - 2: 35016 - 3: 1 - 8,-21: - 2: 4352 - 17,-12: - 3: 53248 - 2: 11980 - 17,-11: - 3: 40129 - 2: 24588 - 17,-10: - 2: 199 - 17,-13: - 2: 17476 - 18,-12: - 3: 61426 - 2: 4096 - 18,-11: - 3: 30591 - 18,-10: - 2: 112 - 18,-13: - 2: 51336 - 19,-12: - 3: 65520 - 19,-11: - 3: 32766 - 2: 32768 - 19,-13: - 2: 4096 - 19,-10: - 3: 2 - 20,-12: - 3: 4352 - 2: 8940 - 20,-11: - 3: 32784 - 2: 14790 - 11,-23: - 3: 49152 - 11,-22: - 3: 43148 - 2: 1088 - 12,-23: - 3: 4096 - 12,-22: - 3: 273 - -4,-24: - 3: 238 - 2: 19456 - -4,-25: - 3: 57344 - -4,-23: - 2: 52292 - 3: 128 - -4,-22: - 2: 52428 - -3,-24: - 2: 487 - 3: 63000 - -3,-23: - 3: 51071 - 2: 4096 - -3,-25: - 2: 11840 - 3: 49152 - -3,-22: - 3: 4 - 2: 34816 - -2,-24: - 3: 49147 - -2,-23: - 3: 49416 - 2: 13024 - -2,-22: - 2: 13106 - 3: 68 - -2,-25: - 3: 34816 - 2: 640 - -1,-24: - 3: 65535 - -1,-23: - 2: 248 - 3: 39426 - -1,-22: - 2: 48 - 3: 32974 - -1,-25: - 3: 7492 - 2: 178 - 0,-24: - 3: 30481 - 2: 35054 - 0,-23: - 2: 58 - 3: 57284 - 0,-22: - 3: 29439 - -16,8: - 2: 204 - -16,7: - 2: 51336 - -15,8: - 2: 31 - -15,7: - 2: 61713 - -14,8: - 2: 127 - -14,7: - 2: 61986 - 3: 85 - -3,9: - 2: 18 - -16,2: - 2: 52360 - -16,3: - 2: 52364 - -16,4: - 2: 52364 - -16,1: - 2: 34952 - -15,1: - 2: 65315 - -15,2: - 2: 61713 - 3: 2048 - -15,3: - 2: 61713 - 3: 2056 - -15,4: - 2: 61713 - 3: 2056 - -14,1: - 2: 65280 - -14,2: - 3: 36608 - 2: 28672 - -14,3: - 3: 36623 - 2: 28672 - -14,4: - 3: 36623 - 2: 28672 - 0,-21: - 3: 2 - 0,-25: - 2: 43679 - 3: 256 - 1,-24: - 2: 547 - 3: 60620 - 1,-23: - 3: 52730 - 1,-22: - 2: 96 - 1,-25: - 2: 8449 - 3: 50910 - 2,-24: - 3: 61438 - 2,-23: - 3: 32552 - 2,-22: - 3: 231 - 2: 60928 - 2,-25: - 3: 24576 - 2: 3329 - 24,-10: - 3: 4096 - 23,-10: - 2: 52851 - 3: 12288 - -16,5: - 2: 52364 - -16,6: - 2: 34956 - -15,5: - 2: 46353 - 3: 16392 - -15,6: - 2: 4373 - -14,5: - 3: 8207 - 2: 53760 - -14,6: - 3: 21872 - 2: 8706 - -13,6: - 3: 21872 - 2: 8706 - 20,-13: - 2: 12850 - 3: 257 - 20,-10: - 2: 35879 - 3: 8 - 21,-12: - 2: 52851 - 21,-11: - 2: 264 - 3: 4096 - 21,-10: - 3: 33 - 2: 29124 - 22,-12: - 2: 4096 - 22,-11: - 2: 52851 - 22,-10: - 2: 52792 - 23,-11: - 2: 4096 - 16,-21: - 3: 48058 - 16,-14: - 2: 2 - 17,-16: + 1: 35016 2: 1 - 3: 65534 - 17,-15: - 3: 34021 - 2: 25360 - 17,-17: - 3: 65505 - 17,-14: - 2: 17612 - 18,-16: - 3: 62463 - 2: 3072 - 18,-15: - 3: 45055 - 2: 20480 - 18,-14: - 2: 35226 - 18,-17: - 3: 63482 - 19,-16: + 8,-21: + 1: 4352 + 17,-12: + 2: 53248 + 1: 11980 + 17,-11: + 2: 40129 + 1: 24588 + 17,-10: + 1: 199 + 17,-13: + 1: 17476 + 18,-12: + 2: 61426 + 1: 4096 + 18,-11: + 2: 30591 + 18,-10: + 1: 112 + 18,-13: + 1: 51336 + 19,-12: + 2: 65520 + 19,-11: + 2: 32766 + 1: 32768 + 19,-13: + 1: 4096 + 19,-10: + 2: 2 + 20,-12: 2: 4352 - 19,-15: - 3: 273 - 0: 4096 - 2: 25088 - 19,-14: - 2: 2671 - 3: 128 - 20,-14: - 2: 12816 - 3: 256 - 17,-20: - 3: 34989 - 2: 22032 - 17,-19: - 2: 34055 - 3: 2240 - 17,-18: - 2: 28417 - 3: 16 - 17,-21: - 3: 56817 + 1: 8940 + 20,-11: + 2: 32784 + 1: 14790 + 11,-23: + 2: 49152 + 11,-22: + 2: 43148 + 1: 1088 + 12,-23: + 2: 4096 + 12,-22: + 2: 273 + -4,-24: + 2: 238 + 1: 19456 + -4,-25: + 2: 57344 + -4,-23: + 1: 52292 + 2: 128 + -4,-22: + 1: 52428 + -3,-24: + 1: 487 + 2: 63000 + -3,-23: + 2: 51071 + 1: 4096 + -3,-25: + 1: 11840 + 2: 49152 + -3,-22: 2: 4 - 18,-20: - 3: 65527 - 18,-19: - 3: 56784 - 18,-18: - 2: 1999 - 3: 61440 - 18,-21: - 3: 12544 - 19,-19: - 3: 4384 - 19,-18: - 2: 4097 - 3: 34 - 19,-17: + 1: 34816 + -2,-24: + 2: 49147 + -2,-23: + 2: 49416 + 1: 13024 + -2,-22: + 1: 13106 + 2: 68 + -2,-25: + 2: 34816 + 1: 640 + -1,-24: + 2: 65535 + -1,-23: + 1: 248 + 2: 39426 + -1,-22: + 1: 48 + 2: 32974 + -1,-25: + 2: 7492 + 1: 178 + 0,-24: + 2: 30481 + 1: 35054 + 0,-23: + 1: 58 + 2: 57284 + 0,-22: + 2: 29439 + -16,8: + 1: 204 + -16,7: + 1: 51336 + -15,8: + 1: 31 + -15,7: + 1: 61713 + -14,8: + 1: 127 + -14,7: + 1: 61986 + 2: 85 + -3,9: + 1: 18 + -16,2: + 1: 52360 + -16,3: + 1: 52364 + -16,4: + 1: 52364 + -16,1: + 1: 34952 + -15,1: + 1: 65315 + -15,2: + 1: 61713 + 2: 2048 + -15,3: + 1: 61713 + 2: 2056 + -15,4: + 1: 61713 + 2: 2056 + -14,1: + 1: 65280 + -14,2: + 2: 36608 + 1: 28672 + -14,3: + 2: 36623 + 1: 28672 + -14,4: + 2: 36623 + 1: 28672 + 0,-21: + 2: 2 + 0,-25: + 1: 43679 2: 256 - 16,-22: - 2: 3168 - 3: 32768 - 17,-22: - 3: 12288 - 20,-3: - 2: 60544 - 3: 8 - 21,-3: - 3: 127 - 2: 256 - 22,-3: - 3: 37 - -1,-26: + 1,-24: + 1: 547 + 2: 60620 + 1,-23: + 2: 52730 + 1,-22: + 1: 96 + 1,-25: + 1: 8449 + 2: 50910 + 2,-24: + 2: 61438 + 2,-23: + 2: 32552 + 2,-22: + 2: 231 + 1: 60928 + 2,-25: 2: 24576 + 1: 3329 + 24,-10: + 2: 4096 + 23,-10: + 1: 52851 + 2: 12288 + -16,5: + 1: 52364 + -16,6: + 1: 34956 + -15,5: + 1: 46353 + 2: 16392 + -15,6: + 1: 4373 + -14,5: + 2: 8207 + 1: 53760 + -14,6: + 2: 21872 + 1: 8706 + -13,6: + 2: 21872 + 1: 8706 + 20,-13: + 1: 12850 + 2: 257 + 20,-10: + 1: 35879 + 2: 8 + 21,-12: + 1: 52851 + 21,-11: + 1: 264 + 2: 4096 + 21,-10: + 2: 33 + 1: 29124 + 22,-12: + 1: 4096 + 22,-11: + 1: 52851 + 22,-10: + 1: 52792 + 23,-11: + 1: 4096 + 16,-21: + 2: 48058 + 16,-14: + 1: 2 + 17,-16: + 1: 1 + 2: 65534 + 17,-15: + 2: 34021 + 1: 25360 + 17,-17: + 2: 65505 + 17,-14: + 1: 17612 + 18,-16: + 2: 62463 + 1: 3072 + 18,-15: + 2: 45055 + 1: 20480 + 18,-14: + 1: 35226 + 18,-17: + 2: 63482 + 19,-16: + 1: 4352 + 19,-15: + 2: 273 + 0: 4096 + 1: 25088 + 19,-14: + 1: 2671 + 2: 128 + 20,-14: + 1: 12816 + 2: 256 + 17,-20: + 2: 34989 + 1: 22032 + 17,-19: + 1: 34055 + 2: 2240 + 17,-18: + 1: 28417 + 2: 16 + 17,-21: + 2: 56817 + 1: 4 + 18,-20: + 2: 65527 + 18,-19: + 2: 56784 + 18,-18: + 1: 1999 + 2: 61440 + 18,-21: + 2: 12544 + 19,-19: + 2: 4384 + 19,-18: + 1: 4097 + 2: 34 + 19,-17: + 1: 256 + 16,-22: + 1: 3168 + 2: 32768 + 17,-22: + 2: 12288 + 20,-3: + 1: 60544 + 2: 8 + 21,-3: + 2: 127 + 1: 256 + 22,-3: + 2: 37 + -1,-26: + 1: 24576 0,-26: - 2: 52352 + 1: 52352 1,-26: - 2: 4672 - 3: 60416 + 1: 4672 + 2: 60416 2,-26: - 3: 29440 - 2: 35856 + 2: 29440 + 1: 35856 3,-25: - 2: 768 + 1: 768 -20,-12: - 2: 36848 + 1: 36848 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -14834,21 +14823,6 @@ entities: - 0 - 0 - 0 - - volume: 2500 - temperature: 235 - moles: - - 27.225372 - - 102.419266 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - volume: 2500 immutable: True moles: @@ -14879,6 +14853,36 @@ entities: - 0 - 0 - 0 + - volume: 2500 + temperature: 235 + moles: + - 27.225372 + - 102.419266 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.14975 + moles: + - 20.078888 + - 75.53487 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.15 moles: @@ -14928,68 +14932,6 @@ entities: - type: GasTileOverlay - type: RadiationGridResistance - type: NavMap - - type: Joint - joints: - docking284: !type:WeldJoint - bodyB: 23224 - bodyA: 2 - id: docking284 - localAnchorB: 20,28.5 - localAnchorA: 19,28.5 - damping: 33.955 - stiffness: 304.7794 - - uid: 23224 - components: - - type: MetaData - name: grid - - type: Transform - pos: -1.5,9.5 - parent: 1 - - type: MapGrid - chunks: - 1,1: - ind: 1,1 - tiles: LgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAADgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALAAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAALgAAAAAA - version: 6 - - type: Broadphase - - type: Physics - bodyStatus: InAir - angularDamping: 0.05 - linearDamping: 0.05 - fixedRotation: False - bodyType: Dynamic - - type: Fixtures - fixtures: {} - - type: OccluderTree - - type: SpreaderGrid - - type: Shuttle - - type: GridPathfinding - - type: Gravity - gravityShakeSound: !type:SoundPathSpecifier - path: /Audio/Effects/alert.ogg - - type: DecalGrid - chunkCollection: - version: 2 - nodes: [] - - type: RadiationGridResistance - - type: GridAtmosphere - version: 2 - data: - chunkSize: 4 - - type: GasTileOverlay - - type: IFF - flags: HideLabel - - type: NavMap - - type: Joint - joints: - docking284: !type:WeldJoint - bodyB: 23224 - bodyA: 2 - id: docking284 - localAnchorB: 20,28.5 - localAnchorA: 19,28.5 - damping: 33.95499 - stiffness: 304.7793 - proto: AcousticGuitarInstrument entities: - uid: 10313 @@ -15125,6 +15067,13 @@ entities: - type: InstantAction originalIconColor: '#FFFFFFFF' container: 19898 + - uid: 20759 + components: + - type: Transform + parent: 15576 + - type: InstantAction + originalIconColor: '#FFFFFFFF' + container: 15576 - proto: AirAlarm entities: - uid: 29 @@ -15605,6 +15554,9 @@ entities: - 15222 - 15221 - 15220 + - 3122 + - 21899 + - 3299 - uid: 13600 components: - type: Transform @@ -15891,16 +15843,13 @@ entities: parent: 2 - type: DeviceList devices: + - 23519 - 23516 + - 9572 - 23102 - 23101 - - 2693 - - 15625 - - 15626 - - 23514 - 23513 - - 23477 - - 23519 + - 23514 - uid: 14047 components: - type: MetaData @@ -17193,7 +17142,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9151: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 187 components: - type: Transform @@ -17203,7 +17153,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6660: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 197 components: - type: Transform @@ -17213,7 +17164,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9149: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 216 components: - type: Transform @@ -17223,7 +17175,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9150: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2544 components: - type: Transform @@ -17269,9 +17222,11 @@ entities: - type: DeviceLinkSource linkedPorts: 23150: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 22563: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1479 components: - type: Transform @@ -17283,7 +17238,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1480: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1480 components: - type: Transform @@ -17294,7 +17250,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1479: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6101 components: - type: Transform @@ -17306,7 +17263,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23144: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22563 components: - type: Transform @@ -17317,7 +17275,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23150: - - DoorStatus: Open + - - DoorStatus + - Open - uid: 23144 components: - type: Transform @@ -17328,7 +17287,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6101: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23150 components: - type: Transform @@ -17340,7 +17300,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22563: - - DoorStatus: Open + - - DoorStatus + - Open - proto: AirlockExternalGlassCargoLocked entities: - uid: 1067 @@ -17354,7 +17315,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12340: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1722 components: - type: Transform @@ -17366,7 +17328,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22491: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 1756 components: - type: Transform @@ -17378,7 +17341,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22393: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 2672 components: - type: Transform @@ -17390,7 +17354,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3910: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20665 components: - type: Transform @@ -17402,7 +17367,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22393: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 21849 components: - type: Transform @@ -17414,7 +17380,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22491: - - DoorStatus: InputB + - - DoorStatus + - InputB - proto: AirlockExternalGlassCommandLocked entities: - uid: 97 @@ -17427,7 +17394,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5124: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 498 components: - type: Transform @@ -17438,7 +17406,8 @@ entities: - type: DeviceLinkSource linkedPorts: 617: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 617 components: - type: Transform @@ -17449,7 +17418,8 @@ entities: - type: DeviceLinkSource linkedPorts: 498: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5124 components: - type: Transform @@ -17460,7 +17430,8 @@ entities: - type: DeviceLinkSource linkedPorts: 97: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 73 @@ -17474,7 +17445,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3167: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3167 components: - type: Transform @@ -17486,7 +17458,8 @@ entities: - type: DeviceLinkSource linkedPorts: 73: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8794 components: - type: Transform @@ -17497,7 +17470,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8795: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8795 components: - type: Transform @@ -17508,7 +17482,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8794: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8924 components: - type: Transform @@ -17520,7 +17495,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17960: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 16736 components: - type: Transform @@ -17532,7 +17508,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16892: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 16892 components: - type: Transform @@ -17544,7 +17521,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16736: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17960 components: - type: Transform @@ -17555,7 +17533,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8924: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 294 @@ -17569,9 +17548,11 @@ entities: - type: DeviceLinkSource linkedPorts: 938: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 21958: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 862 components: - type: Transform @@ -17583,7 +17564,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19896: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 938 components: - type: Transform @@ -17595,9 +17577,11 @@ entities: - type: DeviceLinkSource linkedPorts: 21958: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 13412: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 3999 components: - type: Transform @@ -17608,7 +17592,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4672: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4043 components: - type: Transform @@ -17619,7 +17604,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4295: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4295 components: - type: Transform @@ -17630,7 +17616,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4043: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4729 components: - type: Transform @@ -17641,7 +17628,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3682: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4772 components: - type: Transform @@ -17652,7 +17640,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3636: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4773 components: - type: Transform @@ -17663,7 +17652,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4673: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5184 components: - type: Transform @@ -17674,7 +17664,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6115: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5764 components: - type: Transform @@ -17685,7 +17676,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6166: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8579 components: - type: Transform @@ -17697,7 +17689,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8851: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8740 components: - type: Transform @@ -17709,7 +17702,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21929: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11974 components: - type: Transform @@ -17721,7 +17715,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22090: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13406 components: - type: Transform @@ -17732,7 +17727,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14421: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13550 components: - type: Transform @@ -17743,7 +17739,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14497: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14421 components: - type: Transform @@ -17754,7 +17751,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13406: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14497 components: - type: Transform @@ -17765,7 +17763,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13550: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19896 components: - type: Transform @@ -17776,7 +17775,8 @@ entities: - type: DeviceLinkSource linkedPorts: 862: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21863 components: - type: Transform @@ -17788,7 +17788,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3850: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21912 components: - type: Transform @@ -17800,7 +17801,8 @@ entities: - type: DeviceLinkSource linkedPorts: 936: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21958 components: - type: Transform @@ -17812,9 +17814,11 @@ entities: - type: DeviceLinkSource linkedPorts: 13412: - - DoorStatus: InputA + - - DoorStatus + - InputA 938: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22090 components: - type: Transform @@ -17825,7 +17829,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11974: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 12786 @@ -17863,7 +17868,8 @@ entities: - type: DeviceLinkSource linkedPorts: 187: - - DockStatus: Open + - - DockStatus + - Open - type: DeviceLinkSink invokeCounter: 3 - uid: 9149 @@ -17875,7 +17881,8 @@ entities: - type: DeviceLinkSource linkedPorts: 197: - - DockStatus: Open + - - DockStatus + - Open - type: DeviceLinkSink invokeCounter: 3 - uid: 9150 @@ -17887,7 +17894,8 @@ entities: - type: DeviceLinkSource linkedPorts: 216: - - DockStatus: Open + - - DockStatus + - Open - type: DeviceLinkSink invokeCounter: 5 - uid: 9151 @@ -17899,7 +17907,8 @@ entities: - type: DeviceLinkSource linkedPorts: 183: - - DockStatus: Open + - - DockStatus + - Open - type: DeviceLinkSink invokeCounter: 3 - proto: AirlockExternalGlassShuttleEscape @@ -17926,6 +17935,12 @@ entities: parent: 2 - proto: AirlockExternalGlassShuttleLocked entities: + - uid: 102 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,28.5 + parent: 2 - uid: 936 components: - type: Transform @@ -17935,9 +17950,12 @@ entities: - type: DeviceLinkSource linkedPorts: 22300: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 3636 @@ -17949,9 +17967,12 @@ entities: - type: DeviceLinkSource linkedPorts: 5120: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 3682 @@ -17963,9 +17984,12 @@ entities: - type: DeviceLinkSource linkedPorts: 3802: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 3850 @@ -17977,9 +18001,12 @@ entities: - type: DeviceLinkSource linkedPorts: 509: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 4672 @@ -17991,9 +18018,12 @@ entities: - type: DeviceLinkSource linkedPorts: 5252: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 4673 @@ -18005,28 +18035,14 @@ entities: - type: DeviceLinkSource linkedPorts: 5121: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - - uid: 5486 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 18.5,28.5 - parent: 2 - - type: Door - changeAirtight: False - - type: Docking - dockJointId: docking284 - dockedWith: 23225 - - type: DeviceLinkSource - lastSignals: - DoorStatus: False - DockStatus: True - - type: DeviceLinkSink - invokeCounter: 2 - uid: 6115 components: - type: Transform @@ -18035,9 +18051,12 @@ entities: - type: DeviceLinkSource linkedPorts: 5127: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 6166 @@ -18048,54 +18067,54 @@ entities: - type: DeviceLinkSource linkedPorts: 5123: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 8851 components: - type: Transform rot: 3.141592653589793 rad - pos: 45.5,25.5 + pos: 45.5,26.5 parent: 2 - type: DeviceLinkSource linkedPorts: 22302: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - - uid: 21929 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 47.5,25.5 - parent: 2 - - type: DeviceLinkSource - linkedPorts: - 22301: - - DoorStatus: InputA - - DockStatus: InputB - - DockStatus: InputA - - type: DeviceLinkSink - invokeCounter: 1 - - uid: 23225 + - uid: 12492 components: - type: Transform rot: -1.5707963267948966 rad pos: 20.5,28.5 - parent: 23224 - - type: Door - changeAirtight: False - - type: Docking - dockJointId: docking284 - dockedWith: 5486 + parent: 2 + - uid: 21929 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,26.5 + parent: 2 - type: DeviceLinkSource - lastSignals: - DoorStatus: False - DockStatus: True + linkedPorts: + 22301: + - - DoorStatus + - InputA + - - DockStatus + - InputB + - - DockStatus + - InputA + - type: DeviceLinkSink + invokeCounter: 1 - proto: AirlockFreezerLocked entities: - uid: 2608 @@ -18170,6 +18189,11 @@ entities: - type: Transform pos: 14.5,-23.5 parent: 2 + - uid: 2325 + components: + - type: Transform + pos: 49.5,-14.5 + parent: 2 - uid: 2620 components: - type: Transform @@ -18538,9 +18562,12 @@ entities: - type: DeviceLinkSource linkedPorts: 20223: - - DoorStatus: InputA - - DockStatus: InputB - - DockStatus: InputA + - - DoorStatus + - InputA + - - DockStatus + - InputB + - - DockStatus + - InputA - type: DeviceLinkSink invokeCounter: 1 - uid: 12340 @@ -18552,9 +18579,12 @@ entities: - type: DeviceLinkSource linkedPorts: 20224: - - DoorStatus: InputA - - DockStatus: InputB - - DockStatus: InputA + - - DoorStatus + - InputA + - - DockStatus + - InputB + - - DockStatus + - InputA - type: DeviceLinkSink invokeCounter: 1 - proto: AirlockHeadOfPersonnelLocked @@ -18707,11 +18737,6 @@ entities: - type: Transform pos: -11.5,-29.5 parent: 2 - - uid: 3490 - components: - - type: Transform - pos: -0.5,-40.5 - parent: 2 - uid: 3497 components: - type: Transform @@ -18862,12 +18887,6 @@ entities: rot: 1.5707963267948966 rad pos: 41.5,7.5 parent: 2 - - uid: 15572 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 46.5,-12.5 - parent: 2 - proto: AirlockMaintHydroLocked entities: - uid: 3284 @@ -18891,6 +18910,11 @@ entities: parent: 2 - proto: AirlockMaintLocked entities: + - uid: 9 + components: + - type: Transform + pos: 46.5,-12.5 + parent: 2 - uid: 432 components: - type: Transform @@ -19054,7 +19078,7 @@ entities: - type: Transform pos: 23.5,-40.5 parent: 2 - - uid: 9436 + - uid: 1920 components: - type: Transform pos: 16.5,-53.5 @@ -19064,6 +19088,13 @@ entities: - type: Transform pos: 0.5,-30.5 parent: 2 +- proto: AirlockMaintServiceTheatreLocked + entities: + - uid: 302 + components: + - type: Transform + pos: 2.5,-40.5 + parent: 2 - proto: AirlockMedicalGlassLocked entities: - uid: 506 @@ -19387,7 +19418,6 @@ entities: - uid: 3745 components: - type: Transform - rot: -1.5707963267948966 rad pos: 12.5,-51.5 parent: 2 - uid: 5945 @@ -19395,6 +19425,13 @@ entities: - type: Transform pos: 20.5,-40.5 parent: 2 +- proto: AirlockServiceTheatreGlassLocked + entities: + - uid: 465 + components: + - type: Transform + pos: -0.5,-40.5 + parent: 2 - proto: AirlockTheatreLocked entities: - uid: 643 @@ -19439,7 +19476,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4603: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4603 components: - type: Transform @@ -19450,7 +19488,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4185: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4653 components: - type: Transform @@ -19566,6 +19605,14 @@ entities: - type: DeviceNetwork deviceLists: - 13793 + - uid: 3299 + components: + - type: Transform + pos: 51.5,-12.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 13549 - uid: 4456 components: - type: Transform @@ -19673,6 +19720,9 @@ entities: - type: Transform pos: -17.5,-55.5 parent: 2 + - type: DeviceNetwork + deviceLists: + - 14019 - uid: 10682 components: - type: Transform @@ -20315,7 +20365,6 @@ entities: - type: DeviceNetwork deviceLists: - 23444 - - 14019 - proto: AltarConvertMaint entities: - uid: 9055 @@ -20755,6 +20804,12 @@ entities: - type: Transform pos: 36.5,-39.5 parent: 2 + - uid: 12478 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 46.5,-13.5 + parent: 2 - uid: 12479 components: - type: Transform @@ -21428,6 +21483,11 @@ entities: - type: Transform pos: 63.5,7.5 parent: 2 + - uid: 941 + components: + - type: Transform + pos: 21.5,28.5 + parent: 2 - uid: 1171 components: - type: Transform @@ -22963,6 +23023,26 @@ entities: - type: Transform pos: 1.5,2.5 parent: 2 + - uid: 12486 + components: + - type: Transform + pos: 20.5,28.5 + parent: 2 + - uid: 12502 + components: + - type: Transform + pos: 21.5,29.5 + parent: 2 + - uid: 12503 + components: + - type: Transform + pos: 21.5,27.5 + parent: 2 + - uid: 12539 + components: + - type: Transform + pos: 22.5,28.5 + parent: 2 - uid: 13121 components: - type: Transform @@ -27783,11 +27863,6 @@ entities: - type: Transform pos: 32.5,-60.5 parent: 2 - - uid: 23226 - components: - - type: Transform - pos: 20.5,28.5 - parent: 23224 - uid: 23423 components: - type: Transform @@ -27848,36 +27923,16 @@ entities: - type: Transform pos: 6.5,-10.5 parent: 2 - - uid: 23435 - components: - - type: Transform - pos: 6.5,-11.5 - parent: 2 - uid: 23436 components: - type: Transform pos: 7.5,-11.5 parent: 2 - - uid: 23437 - components: - - type: Transform - pos: 8.5,-11.5 - parent: 2 - - uid: 23438 - components: - - type: Transform - pos: 8.5,-7.5 - parent: 2 - uid: 23439 components: - type: Transform pos: 7.5,-7.5 parent: 2 - - uid: 23440 - components: - - type: Transform - pos: 6.5,-7.5 - parent: 2 - proto: AtmosFixFreezerMarker entities: - uid: 7764 @@ -28521,18 +28576,6 @@ entities: rot: 1.5707963267948966 rad pos: 11.5,14.5 parent: 2 - - uid: 1008 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-11.5 - parent: 2 - - uid: 1123 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-11.5 - parent: 2 - uid: 1124 components: - type: Transform @@ -28565,18 +28608,6 @@ entities: - type: Transform pos: 58.5,-45.5 parent: 2 - - uid: 6850 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 6.5,-7.5 - parent: 2 - - uid: 7003 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 8.5,-7.5 - parent: 2 - uid: 7261 components: - type: Transform @@ -28632,6 +28663,19 @@ entities: - type: Transform pos: 41.5,-45.5 parent: 2 +- proto: BlockGameArcade + entities: + - uid: 1011 + components: + - type: Transform + pos: 47.5,-11.5 + parent: 2 + - uid: 12342 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-13.5 + parent: 2 - proto: BlockGameArcadeComputerCircuitboard entities: - uid: 9422 @@ -29067,17 +29111,16 @@ entities: parent: 2 - proto: BoxingBell entities: + - uid: 411 + components: + - type: Transform + pos: 53.5,-37.5 + parent: 2 - uid: 1003 components: - type: Transform pos: -46.5,-55.5 parent: 2 - - uid: 1813 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 53.5,-39.5 - parent: 2 - proto: BoxLatexGloves entities: - uid: 12948 @@ -29133,6 +29176,13 @@ entities: - type: Transform pos: 25.037739,-0.26073742 parent: 2 +- proto: BoxMagazinePistol + entities: + - uid: 15575 + components: + - type: Transform + pos: -27.217897,6.6993713 + parent: 2 - proto: BoxMouthSwab entities: - uid: 3435 @@ -29210,7 +29260,7 @@ entities: - uid: 4177 components: - type: Transform - pos: 18.417604,-25.98257 + pos: 21.306646,-23.438248 parent: 2 - proto: BriefcaseBrown entities: @@ -29242,9 +29292,12 @@ entities: - type: DeviceLinkSource linkedPorts: 499: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 8002 components: - type: Transform @@ -29254,9 +29307,12 @@ entities: - type: DeviceLinkSource linkedPorts: 503: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - proto: BrokenBottle entities: - uid: 7399 @@ -29303,6 +29359,8 @@ entities: - type: Transform pos: -13.459316,-32.28296 parent: 2 + - type: CollisionWake + enabled: False - type: Conveyed - uid: 5753 components: @@ -29661,6 +29719,16 @@ entities: - type: Transform pos: -16.5,29.5 parent: 2 + - uid: 116 + components: + - type: Transform + pos: 45.5,-19.5 + parent: 2 + - uid: 117 + components: + - type: Transform + pos: 45.5,-18.5 + parent: 2 - uid: 118 components: - type: Transform @@ -31531,6 +31599,11 @@ entities: - type: Transform pos: -19.5,27.5 parent: 2 + - uid: 2890 + components: + - type: Transform + pos: -44.5,4.5 + parent: 2 - uid: 2892 components: - type: Transform @@ -31576,6 +31649,11 @@ entities: - type: Transform pos: -2.5,-6.5 parent: 2 + - uid: 2964 + components: + - type: Transform + pos: -42.5,7.5 + parent: 2 - uid: 2974 components: - type: Transform @@ -34701,20 +34779,10 @@ entities: - type: Transform pos: 18.5,-47.5 parent: 2 - - uid: 10939 - components: - - type: Transform - pos: 19.5,-47.5 - parent: 2 - - uid: 10940 - components: - - type: Transform - pos: 19.5,-48.5 - parent: 2 - uid: 10941 components: - type: Transform - pos: 19.5,-49.5 + pos: 19.5,-47.5 parent: 2 - uid: 10948 components: @@ -35081,16 +35149,6 @@ entities: - type: Transform pos: 45.5,-17.5 parent: 2 - - uid: 11594 - components: - - type: Transform - pos: 45.5,-16.5 - parent: 2 - - uid: 11595 - components: - - type: Transform - pos: 45.5,-15.5 - parent: 2 - uid: 11596 components: - type: Transform @@ -35851,11 +35909,21 @@ entities: - type: Transform pos: -11.5,24.5 parent: 2 + - uid: 12230 + components: + - type: Transform + pos: 48.5,-13.5 + parent: 2 - uid: 12257 components: - type: Transform pos: -0.5,-14.5 parent: 2 + - uid: 12290 + components: + - type: Transform + pos: 45.5,-20.5 + parent: 2 - uid: 12297 components: - type: Transform @@ -35876,6 +35944,16 @@ entities: - type: Transform pos: 2.5,-14.5 parent: 2 + - uid: 12316 + components: + - type: Transform + pos: 49.5,-13.5 + parent: 2 + - uid: 12321 + components: + - type: Transform + pos: 47.5,-13.5 + parent: 2 - uid: 12370 components: - type: Transform @@ -35901,6 +35979,16 @@ entities: - type: Transform pos: 9.5,-15.5 parent: 2 + - uid: 12524 + components: + - type: Transform + pos: 46.5,-13.5 + parent: 2 + - uid: 12541 + components: + - type: Transform + pos: 51.5,-13.5 + parent: 2 - uid: 12543 components: - type: Transform @@ -36396,6 +36484,11 @@ entities: - type: Transform pos: -41.5,-54.5 parent: 2 + - uid: 14333 + components: + - type: Transform + pos: 46.5,26.5 + parent: 2 - uid: 14338 components: - type: Transform @@ -37016,16 +37109,6 @@ entities: - type: Transform pos: 18.5,-47.5 parent: 2 - - uid: 15575 - components: - - type: Transform - pos: 19.5,-48.5 - parent: 2 - - uid: 15576 - components: - - type: Transform - pos: 20.5,-48.5 - parent: 2 - uid: 15584 components: - type: Transform @@ -37261,6 +37344,11 @@ entities: - type: Transform pos: -14.5,-50.5 parent: 2 + - uid: 15984 + components: + - type: Transform + pos: 50.5,-13.5 + parent: 2 - uid: 15992 components: - type: Transform @@ -39416,21 +39504,6 @@ entities: - type: Transform pos: 44.5,11.5 parent: 2 - - uid: 18082 - components: - - type: Transform - pos: 45.5,11.5 - parent: 2 - - uid: 18083 - components: - - type: Transform - pos: 46.5,11.5 - parent: 2 - - uid: 18084 - components: - - type: Transform - pos: 47.5,11.5 - parent: 2 - uid: 18085 components: - type: Transform @@ -39441,21 +39514,6 @@ entities: - type: Transform pos: 46.5,8.5 parent: 2 - - uid: 18087 - components: - - type: Transform - pos: 47.5,8.5 - parent: 2 - - uid: 18088 - components: - - type: Transform - pos: 48.5,11.5 - parent: 2 - - uid: 18089 - components: - - type: Transform - pos: 48.5,8.5 - parent: 2 - uid: 18090 components: - type: Transform @@ -39911,16 +39969,6 @@ entities: - type: Transform pos: 55.5,-39.5 parent: 2 - - uid: 18720 - components: - - type: Transform - pos: 55.5,-40.5 - parent: 2 - - uid: 18721 - components: - - type: Transform - pos: 51.5,-40.5 - parent: 2 - uid: 18722 components: - type: Transform @@ -40886,11 +40934,6 @@ entities: - type: Transform pos: -40.5,-8.5 parent: 2 - - uid: 20549 - components: - - type: Transform - pos: -41.5,-8.5 - parent: 2 - uid: 20550 components: - type: Transform @@ -40906,11 +40949,6 @@ entities: - type: Transform pos: -44.5,-8.5 parent: 2 - - uid: 20554 - components: - - type: Transform - pos: -36.5,-8.5 - parent: 2 - uid: 20555 components: - type: Transform @@ -40946,16 +40984,6 @@ entities: - type: Transform pos: -44.5,-1.5 parent: 2 - - uid: 20564 - components: - - type: Transform - pos: -44.5,-0.5 - parent: 2 - - uid: 20565 - components: - - type: Transform - pos: -44.5,0.5 - parent: 2 - uid: 20566 components: - type: Transform @@ -40966,11 +40994,6 @@ entities: - type: Transform pos: -44.5,2.5 parent: 2 - - uid: 20568 - components: - - type: Transform - pos: -44.5,4.5 - parent: 2 - uid: 20569 components: - type: Transform @@ -40996,11 +41019,6 @@ entities: - type: Transform pos: -43.5,7.5 parent: 2 - - uid: 20574 - components: - - type: Transform - pos: -42.5,7.5 - parent: 2 - uid: 20575 components: - type: Transform @@ -43436,6 +43454,41 @@ entities: - type: Transform pos: 14.5,14.5 parent: 2 + - uid: 23677 + components: + - type: Transform + pos: 16.5,-47.5 + parent: 2 + - uid: 23678 + components: + - type: Transform + pos: 18.5,-48.5 + parent: 2 + - uid: 23679 + components: + - type: Transform + pos: 18.5,-49.5 + parent: 2 + - uid: 23680 + components: + - type: Transform + pos: 18.5,-50.5 + parent: 2 + - uid: 23681 + components: + - type: Transform + pos: 20.5,-47.5 + parent: 2 + - uid: 23682 + components: + - type: Transform + pos: 21.5,-47.5 + parent: 2 + - uid: 23694 + components: + - type: Transform + pos: -26.5,-24.5 + parent: 2 - proto: CableApcStack entities: - uid: 1898 @@ -43468,13 +43521,6 @@ entities: - type: Transform pos: -34.52512,5.592678 parent: 2 -- proto: CableApcStack10 - entities: - - uid: 8880 - components: - - type: Transform - pos: 48.56237,-11.409377 - parent: 2 - proto: CablecuffsBroken entities: - uid: 2226 @@ -43654,11 +43700,6 @@ entities: - type: Transform pos: -45.5,28.5 parent: 2 - - uid: 904 - components: - - type: Transform - pos: -48.5,11.5 - parent: 2 - uid: 905 components: - type: Transform @@ -43684,11 +43725,6 @@ entities: - type: Transform pos: -55.5,14.5 parent: 2 - - uid: 940 - components: - - type: Transform - pos: -52.5,14.5 - parent: 2 - uid: 949 components: - type: Transform @@ -43734,11 +43770,6 @@ entities: - type: Transform pos: -55.5,28.5 parent: 2 - - uid: 1193 - components: - - type: Transform - pos: -48.5,15.5 - parent: 2 - uid: 1194 components: - type: Transform @@ -44169,11 +44200,6 @@ entities: - type: Transform pos: -54.5,16.5 parent: 2 - - uid: 2459 - components: - - type: Transform - pos: -53.5,16.5 - parent: 2 - uid: 2491 components: - type: Transform @@ -44339,21 +44365,6 @@ entities: - type: Transform pos: -7.5,-53.5 parent: 2 - - uid: 2731 - components: - - type: Transform - pos: -52.5,16.5 - parent: 2 - - uid: 2732 - components: - - type: Transform - pos: -53.5,14.5 - parent: 2 - - uid: 2733 - components: - - type: Transform - pos: -54.5,14.5 - parent: 2 - uid: 2734 components: - type: Transform @@ -44434,21 +44445,6 @@ entities: - type: Transform pos: -45.5,29.5 parent: 2 - - uid: 2890 - components: - - type: Transform - pos: -54.5,25.5 - parent: 2 - - uid: 2964 - components: - - type: Transform - pos: -50.5,25.5 - parent: 2 - - uid: 2965 - components: - - type: Transform - pos: -46.5,25.5 - parent: 2 - uid: 2982 components: - type: Transform @@ -45342,7 +45338,7 @@ entities: - uid: 7061 components: - type: Transform - pos: -38.5,23.5 + pos: -42.5,23.5 parent: 2 - uid: 7096 components: @@ -45539,11 +45535,6 @@ entities: - type: Transform pos: -53.5,25.5 parent: 2 - - uid: 8334 - components: - - type: Transform - pos: -52.5,11.5 - parent: 2 - uid: 8352 components: - type: Transform @@ -47669,21 +47660,11 @@ entities: - type: Transform pos: -45.5,26.5 parent: 2 - - uid: 17767 - components: - - type: Transform - pos: -52.5,19.5 - parent: 2 - uid: 17768 components: - type: Transform pos: -55.5,10.5 parent: 2 - - uid: 17769 - components: - - type: Transform - pos: -48.5,19.5 - parent: 2 - uid: 17770 components: - type: Transform @@ -47694,11 +47675,6 @@ entities: - type: Transform pos: 65.5,0.5 parent: 2 - - uid: 17813 - components: - - type: Transform - pos: -75.5,-56.5 - parent: 2 - uid: 17818 components: - type: Transform @@ -47864,11 +47840,6 @@ entities: - type: Transform pos: 69.5,5.5 parent: 2 - - uid: 18150 - components: - - type: Transform - pos: -71.5,-56.5 - parent: 2 - uid: 18154 components: - type: Transform @@ -47924,11 +47895,6 @@ entities: - type: Transform pos: -52.5,20.5 parent: 2 - - uid: 18225 - components: - - type: Transform - pos: -52.5,15.5 - parent: 2 - uid: 18226 components: - type: Transform @@ -48039,6 +48005,11 @@ entities: - type: Transform pos: -68.5,-59.5 parent: 2 + - uid: 18720 + components: + - type: Transform + pos: -50.5,15.5 + parent: 2 - uid: 18726 components: - type: Transform @@ -48079,11 +48050,6 @@ entities: - type: Transform pos: -68.5,-56.5 parent: 2 - - uid: 18982 - components: - - type: Transform - pos: -67.5,-56.5 - parent: 2 - uid: 19025 components: - type: Transform @@ -48114,11 +48080,6 @@ entities: - type: Transform pos: -77.5,-54.5 parent: 2 - - uid: 20157 - components: - - type: Transform - pos: -76.5,-54.5 - parent: 2 - uid: 20158 components: - type: Transform @@ -48134,6 +48095,11 @@ entities: - type: Transform pos: -76.5,-50.5 parent: 2 + - uid: 20564 + components: + - type: Transform + pos: -63.5,-56.5 + parent: 2 - uid: 20696 components: - type: Transform @@ -48144,11 +48110,6 @@ entities: - type: Transform pos: -76.5,-52.5 parent: 2 - - uid: 20698 - components: - - type: Transform - pos: -75.5,-52.5 - parent: 2 - uid: 20699 components: - type: Transform @@ -48209,11 +48170,6 @@ entities: - type: Transform pos: -72.5,-52.5 parent: 2 - - uid: 20749 - components: - - type: Transform - pos: -71.5,-52.5 - parent: 2 - uid: 20750 components: - type: Transform @@ -48389,11 +48345,6 @@ entities: - type: Transform pos: -66.5,-52.5 parent: 2 - - uid: 21182 - components: - - type: Transform - pos: -67.5,-52.5 - parent: 2 - uid: 21183 components: - type: Transform @@ -48439,11 +48390,6 @@ entities: - type: Transform pos: -64.5,-52.5 parent: 2 - - uid: 21320 - components: - - type: Transform - pos: -63.5,-52.5 - parent: 2 - uid: 21321 components: - type: Transform @@ -48479,11 +48425,6 @@ entities: - type: Transform pos: -63.5,-57.5 parent: 2 - - uid: 21377 - components: - - type: Transform - pos: -63.5,-56.5 - parent: 2 - uid: 21378 components: - type: Transform @@ -48494,11 +48435,6 @@ entities: - type: Transform pos: -64.5,-54.5 parent: 2 - - uid: 21399 - components: - - type: Transform - pos: -63.5,-55.5 - parent: 2 - uid: 21401 components: - type: Transform @@ -49034,16 +48970,6 @@ entities: - type: Transform pos: -3.5,-9.5 parent: 2 - - uid: 23419 - components: - - type: Transform - pos: -4.5,-9.5 - parent: 2 - - uid: 23420 - components: - - type: Transform - pos: -4.5,-10.5 - parent: 2 - uid: 23421 components: - type: Transform @@ -49054,6 +48980,31 @@ entities: - type: Transform pos: -4.5,-12.5 parent: 2 + - uid: 23701 + components: + - type: Transform + pos: -67.5,-54.5 + parent: 2 + - uid: 23703 + components: + - type: Transform + pos: -50.5,23.5 + parent: 2 + - uid: 23708 + components: + - type: Transform + pos: 58.5,2.5 + parent: 2 + - uid: 23712 + components: + - type: Transform + pos: 62.5,2.5 + parent: 2 + - uid: 23715 + components: + - type: Transform + pos: 66.5,2.5 + parent: 2 - proto: CableHVStack entities: - uid: 3391 @@ -49086,6 +49037,13 @@ entities: - type: Transform pos: -29.499138,22.607857 parent: 2 +- proto: CableHVStack10 + entities: + - uid: 648 + components: + - type: Transform + pos: -51.483383,15.526428 + parent: 2 - proto: CableMV entities: - uid: 8 @@ -50953,11 +50911,6 @@ entities: - type: Transform pos: 16.5,-8.5 parent: 2 - - uid: 7929 - components: - - type: Transform - pos: 40.5,18.5 - parent: 2 - uid: 7949 components: - type: Transform @@ -52393,6 +52346,11 @@ entities: - type: Transform pos: -6.5,-22.5 parent: 2 + - uid: 12206 + components: + - type: Transform + pos: 46.5,-13.5 + parent: 2 - uid: 12244 components: - type: Transform @@ -58311,21 +58269,6 @@ entities: rot: -1.5707963267948966 rad pos: 24.5,-54.5 parent: 2 - - uid: 4138 - components: - - type: Transform - pos: 2.5,-40.5 - parent: 2 - - uid: 4139 - components: - - type: Transform - pos: 1.5,-40.5 - parent: 2 - - uid: 4140 - components: - - type: Transform - pos: 0.5,-40.5 - parent: 2 - uid: 4189 components: - type: Transform @@ -62949,6 +62892,12 @@ entities: rot: -1.5707963267948966 rad pos: -57.518234,-60.342995 parent: 2 + - uid: 17137 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.4274683,-41.346966 + parent: 2 - uid: 17148 components: - type: Transform @@ -63073,6 +63022,27 @@ entities: - type: Transform pos: -35.5,-37.5 parent: 2 +- proto: ChemistryBottleEZNutrient + entities: + - uid: 17456 + components: + - type: Transform + parent: 17443 + - type: Physics + canCollide: False + - uid: 17701 + components: + - type: Transform + pos: 48.704712,-60.28858 + parent: 2 +- proto: ChemistryBottleRobustHarvest + entities: + - uid: 17487 + components: + - type: Transform + parent: 17443 + - type: Physics + canCollide: False - proto: ChemistryEmptyBottle01 entities: - uid: 1331 @@ -63476,11 +63446,6 @@ entities: - type: Transform pos: 15.5,-10.5 parent: 2 - - uid: 18847 - components: - - type: Transform - pos: 52.5,-63.5 - parent: 2 - uid: 19762 components: - type: Transform @@ -63568,11 +63533,6 @@ entities: - type: Transform pos: 15.5,-9.5 parent: 2 - - uid: 18848 - components: - - type: Transform - pos: 52.5,-64.5 - parent: 2 - uid: 19891 components: - type: Transform @@ -64194,7 +64154,7 @@ entities: - uid: 2235 components: - type: Transform - pos: -11.6501,-13.9699955 + pos: -10.521198,-13.276729 parent: 2 - proto: ClothingEyesGlassesChemical entities: @@ -64215,7 +64175,7 @@ entities: - uid: 2171 components: - type: Transform - pos: -11.389554,-13.938724 + pos: -10.416981,-13.3392725 parent: 2 - proto: ClothingHandsGlovesBoxingBlue entities: @@ -64727,6 +64687,13 @@ entities: - type: Transform pos: -11.640305,-26.281458 parent: 2 +- proto: ClothingOuterCoatParamedicWB + entities: + - uid: 10940 + components: + - type: Transform + pos: -29.317902,-26.501877 + parent: 2 - proto: ClothingOuterCoatPirate entities: - uid: 13843 @@ -65380,7 +65347,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4541: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 2340 @@ -65493,6 +65461,45 @@ entities: rot: 1.5707963267948966 rad pos: 3.5,16.5 parent: 2 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 23123 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -11.5,-14.5 + parent: 2 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 13750 + components: + - type: Transform + pos: -29.5,-24.5 + parent: 2 +- proto: ComputerCargoOrdersScience + entities: + - uid: 21442 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 18.5,-26.5 + parent: 2 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 10609 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -27.5,12.5 + parent: 2 +- proto: ComputerCargoOrdersService + entities: + - uid: 4140 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 0.5,-41.5 + parent: 2 - proto: ComputerComms entities: - uid: 9723 @@ -65578,17 +65585,20 @@ entities: rot: 3.141592653589793 rad pos: 48.5,-88.5 parent: 2 - - uid: 11859 - components: - - type: Transform - pos: 47.5,-11.5 - parent: 2 - uid: 18761 components: - type: Transform rot: 3.141592653589793 rad pos: 74.5,-46.5 parent: 2 +- proto: ComputerFundingAllocation + entities: + - uid: 4934 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -12.5,-48.5 + parent: 2 - proto: ComputerId entities: - uid: 7571 @@ -66095,11 +66105,6 @@ entities: - type: Transform pos: -13.5,-95.5 parent: 2 - - uid: 10609 - components: - - type: Transform - pos: 0.5,-39.5 - parent: 2 - uid: 10747 components: - type: Transform @@ -66140,11 +66145,6 @@ entities: - type: Transform pos: -2.5,23.5 parent: 2 - - uid: 17458 - components: - - type: Transform - pos: 9.5,20.5 - parent: 2 - uid: 18066 components: - type: Transform @@ -66195,16 +66195,6 @@ entities: - type: Transform pos: 32.5,15.5 parent: 2 - - uid: 23121 - components: - - type: Transform - pos: 1.5,-39.5 - parent: 2 - - uid: 23122 - components: - - type: Transform - pos: -0.5,-25.5 - parent: 2 - proto: CrateEngineering entities: - uid: 15897 @@ -66336,11 +66326,6 @@ entities: - type: Transform pos: 5.5,20.5 parent: 2 - - uid: 8878 - components: - - type: Transform - pos: 48.5,-13.5 - parent: 2 - uid: 12142 components: - type: Transform @@ -66496,6 +66481,20 @@ entities: - type: Transform pos: -42.5,-39.5 parent: 2 +- proto: CrateLockBoxSecurity + entities: + - uid: 23690 + components: + - type: Transform + pos: -24.5,4.5 + parent: 2 +- proto: CrateLockBoxService + entities: + - uid: 4139 + components: + - type: Transform + pos: 0.5,-39.5 + parent: 2 - proto: CrateMaterialPlasma entities: - uid: 6438 @@ -66508,9 +66507,34 @@ entities: - type: Transform pos: 39.5,-36.5 parent: 2 +- proto: CrateMaterialSilo + entities: + - uid: 939 + components: + - type: Transform + pos: 9.5,20.5 + parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - proto: CrateMedicalScrubs entities: - - uid: 7892 + - uid: 4274 components: - type: Transform pos: -40.5,-24.5 @@ -66639,6 +66663,24 @@ entities: - type: Transform pos: -0.5,-29.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - uid: 13309 components: - type: Transform @@ -66850,6 +66892,18 @@ entities: - type: Transform pos: 7.5,-45.5 parent: 2 + - uid: 23692 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-41.5 + parent: 2 + - uid: 23693 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -0.5,-39.5 + parent: 2 - proto: CurtainsOrangeOpen entities: - uid: 6421 @@ -68387,6 +68441,26 @@ entities: - type: Transform pos: -7.5,-59.5 parent: 2 + - uid: 222 + components: + - type: Transform + pos: 45.5,-10.5 + parent: 2 + - uid: 231 + components: + - type: Transform + pos: 45.5,-9.5 + parent: 2 + - uid: 248 + components: + - type: Transform + pos: 45.5,-8.5 + parent: 2 + - uid: 249 + components: + - type: Transform + pos: 45.5,-7.5 + parent: 2 - uid: 344 components: - type: Transform @@ -71815,26 +71889,6 @@ entities: - type: Transform pos: 45.5,-11.5 parent: 2 - - uid: 20318 - components: - - type: Transform - pos: 45.5,-10.5 - parent: 2 - - uid: 20319 - components: - - type: Transform - pos: 45.5,-9.5 - parent: 2 - - uid: 20320 - components: - - type: Transform - pos: 45.5,-8.5 - parent: 2 - - uid: 20321 - components: - - type: Transform - pos: 45.5,-7.5 - parent: 2 - uid: 20322 components: - type: Transform @@ -73290,6 +73344,13 @@ entities: - type: Transform pos: 65.54841,-77.60572 parent: 2 +- proto: DoubleEmergencyNitrogenTankFilled + entities: + - uid: 5242 + components: + - type: Transform + pos: 52.51372,-60.463 + parent: 2 - proto: DresserCaptainFilled entities: - uid: 23337 @@ -73469,16 +73530,6 @@ entities: - type: Transform pos: -4.195836,-44.207207 parent: 2 - - uid: 17135 - components: - - type: Transform - pos: -1.3591337,-41.268375 - parent: 2 - - uid: 17137 - components: - - type: Transform - pos: -1.5335453,-41.36549 - parent: 2 - proto: DrinkGoldenCup entities: - uid: 4738 @@ -73601,6 +73652,20 @@ entities: - type: Transform pos: 44.624287,-2.3087473 parent: 2 +- proto: DrinkMugBlack + entities: + - uid: 6189 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.3040819,-41.323612 + parent: 2 + - uid: 7892 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -1.4499876,-41.45912 + parent: 2 - proto: DrinkMugBlue entities: - uid: 3930 @@ -74771,19 +74836,6 @@ entities: rot: -1.5707963267948966 rad pos: 29.5,25.5 parent: 2 -- proto: EZNutrientChemistryBottle - entities: - - uid: 17456 - components: - - type: Transform - parent: 17443 - - type: Physics - canCollide: False - - uid: 17701 - components: - - type: Transform - pos: 48.704712,-60.28858 - parent: 2 - proto: FaxMachineBase entities: - uid: 36 @@ -74852,7 +74904,7 @@ entities: - uid: 6354 components: - type: Transform - pos: -12.5,-48.5 + pos: -11.5,-48.5 parent: 2 - type: FaxMachine name: HoP @@ -74898,6 +74950,11 @@ entities: - type: Transform pos: 22.5,-41.5 parent: 2 + - uid: 12317 + components: + - type: Transform + pos: 47.5,-13.5 + parent: 2 - uid: 21491 components: - type: Transform @@ -74973,6 +75030,13 @@ entities: parent: 2 - type: Pullable prevFixedRotation: True + - uid: 23697 + components: + - type: Transform + pos: 19.504175,-27.286606 + parent: 2 + - type: Pullable + prevFixedRotation: True - proto: FireAlarm entities: - uid: 1667 @@ -75862,7 +75926,6 @@ entities: - type: DeviceNetwork deviceLists: - 14047 - - 14019 - uid: 2704 components: - type: Transform @@ -77077,7 +77140,6 @@ entities: deviceLists: - 14004 - 15640 - - 14019 - 6790 - uid: 15626 components: @@ -77088,7 +77150,6 @@ entities: deviceLists: - 14004 - 15640 - - 14019 - 6790 - uid: 15638 components: @@ -77522,6 +77583,25 @@ entities: ents: - 494 - type: ActionsContainer + - uid: 15576 + components: + - type: Transform + pos: 64.553955,-73.50326 + parent: 2 + - type: HandheldLight + toggleActionEntity: 20759 + - type: ContainerContainer + containers: + cell_slot: !type:ContainerSlot + showEnts: False + occludes: True + ent: null + actions: !type:Container + showEnts: False + occludes: True + ents: + - 20759 + - type: ActionsContainer - proto: FlippoLighter entities: - uid: 20241 @@ -77872,7 +77952,7 @@ entities: - uid: 3205 components: - type: Transform - pos: 1.4228268,-29.25675 + pos: 1.512306,-29.339378 parent: 2 - proto: FoodBoxDonut entities: @@ -78098,6 +78178,13 @@ entities: - type: Transform pos: -8.459184,-35.530354 parent: 2 +- proto: FoodSnackSus + entities: + - uid: 23666 + components: + - type: Transform + pos: 14.370726,-53.580055 + parent: 2 - proto: FoodTinBeansTrash entities: - uid: 20051 @@ -78127,7 +78214,7 @@ entities: - uid: 13164 components: - type: Transform - pos: -0.2445485,-29.114664 + pos: -0.63953733,-29.354218 parent: 2 - uid: 20052 components: @@ -78183,7 +78270,7 @@ entities: - uid: 13161 components: - type: Transform - pos: -0.69730604,-29.139143 + pos: -0.35320318,-29.193445 parent: 2 - uid: 20055 components: @@ -78237,7 +78324,7 @@ entities: - type: GasFilter filteredGas: CarbonDioxide - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - proto: GasFilterFlipped entities: - uid: 1575 @@ -78544,7 +78631,7 @@ entities: pos: -39.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 677 components: - type: Transform @@ -78553,14 +78640,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 1506 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-18.5 - parent: 2 - - type: AtmosPipeColor - color: '#FF1212FF' - uid: 1543 components: - type: Transform @@ -78568,7 +78647,7 @@ entities: pos: 12.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1612 components: - type: Transform @@ -78650,7 +78729,7 @@ entities: pos: 45.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2436 components: - type: Transform @@ -78665,7 +78744,7 @@ entities: pos: -5.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2442 components: - type: Transform @@ -78673,14 +78752,14 @@ entities: pos: -0.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2589 components: - type: Transform pos: -5.5,-14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2596 components: - type: Transform @@ -78719,7 +78798,7 @@ entities: pos: 4.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3938 components: - type: Transform @@ -78727,7 +78806,7 @@ entities: pos: -24.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4128 components: - type: Transform @@ -78751,7 +78830,7 @@ entities: pos: 33.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4197 components: - type: Transform @@ -78764,7 +78843,7 @@ entities: pos: 16.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4439 components: - type: Transform @@ -78772,6 +78851,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 4551 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-12.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 4572 components: - type: Transform @@ -78785,7 +78872,7 @@ entities: pos: -8.5,-13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4833 components: - type: Transform @@ -78807,7 +78894,7 @@ entities: pos: -34.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5007 components: - type: Transform @@ -78815,7 +78902,7 @@ entities: pos: -8.5,-72.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5388 components: - type: Transform @@ -78831,7 +78918,7 @@ entities: pos: -14.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5473 components: - type: Transform @@ -78839,7 +78926,7 @@ entities: pos: -9.5,-13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5596 components: - type: Transform @@ -78868,7 +78955,7 @@ entities: pos: -38.5,-54.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6248 components: - type: Transform @@ -78876,7 +78963,7 @@ entities: pos: -38.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6551 components: - type: Transform @@ -78892,7 +78979,7 @@ entities: pos: 27.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6675 components: - type: Transform @@ -78906,7 +78993,7 @@ entities: pos: 34.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6724 components: - type: Transform @@ -78929,14 +79016,14 @@ entities: pos: -8.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7608 components: - type: Transform pos: 14.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7696 components: - type: Transform @@ -78944,7 +79031,7 @@ entities: pos: 31.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7802 components: - type: Transform @@ -78952,7 +79039,7 @@ entities: pos: 22.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8210 components: - type: Transform @@ -78968,7 +79055,7 @@ entities: pos: 24.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8637 components: - type: Transform @@ -78976,7 +79063,7 @@ entities: pos: 19.5,1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8688 components: - type: Transform @@ -78992,7 +79079,7 @@ entities: pos: 24.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8723 components: - type: Transform @@ -79000,7 +79087,7 @@ entities: pos: 14.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8789 components: - type: Transform @@ -79046,7 +79133,7 @@ entities: pos: -27.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9673 components: - type: Transform @@ -79054,7 +79141,7 @@ entities: pos: 37.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9792 components: - type: Transform @@ -79131,14 +79218,14 @@ entities: pos: 34.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10976 components: - type: Transform pos: -8.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11063 components: - type: Transform @@ -79154,7 +79241,7 @@ entities: pos: 9.5,-72.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11262 components: - type: Transform @@ -79162,7 +79249,7 @@ entities: pos: 33.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11275 components: - type: Transform @@ -79210,7 +79297,7 @@ entities: pos: -43.5,-34.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12007 components: - type: Transform @@ -79226,7 +79313,23 @@ entities: pos: -54.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' + - uid: 12356 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 47.5,-17.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 12363 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 45.5,-17.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 12411 components: - type: Transform @@ -79242,7 +79345,7 @@ entities: pos: -34.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12424 components: - type: Transform @@ -79250,7 +79353,7 @@ entities: pos: -34.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12426 components: - type: Transform @@ -79267,6 +79370,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 12441 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 47.5,-12.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 12442 components: - type: Transform @@ -79286,7 +79397,7 @@ entities: pos: 31.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13501 components: - type: Transform @@ -79301,7 +79412,7 @@ entities: pos: 20.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13508 components: - type: Transform @@ -79309,7 +79420,7 @@ entities: pos: 20.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13579 components: - type: Transform @@ -79340,7 +79451,7 @@ entities: pos: 28.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13643 components: - type: Transform @@ -79348,14 +79459,14 @@ entities: pos: 29.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13830 components: - type: Transform pos: -15.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13956 components: - type: Transform @@ -79379,7 +79490,7 @@ entities: pos: -24.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13976 components: - type: Transform @@ -79402,7 +79513,7 @@ entities: pos: -20.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14080 components: - type: Transform @@ -79410,7 +79521,7 @@ entities: pos: -30.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14143 components: - type: Transform @@ -79440,7 +79551,7 @@ entities: pos: -47.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14599 components: - type: Transform @@ -79448,7 +79559,7 @@ entities: pos: -14.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14600 components: - type: Transform @@ -79464,7 +79575,7 @@ entities: pos: -15.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14602 components: - type: Transform @@ -79496,7 +79607,7 @@ entities: pos: -13.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14800 components: - type: Transform @@ -79534,7 +79645,7 @@ entities: pos: -38.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14902 components: - type: Transform @@ -79550,7 +79661,7 @@ entities: pos: -9.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15086 components: - type: Transform @@ -79588,7 +79699,7 @@ entities: pos: -4.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15136 components: - type: Transform @@ -79596,14 +79707,14 @@ entities: pos: -8.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15141 components: - type: Transform pos: -30.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15261 components: - type: Transform @@ -79611,7 +79722,7 @@ entities: pos: -29.5,-61.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15378 components: - type: Transform @@ -79619,21 +79730,21 @@ entities: pos: -13.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15846 components: - type: Transform pos: 14.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15912 components: - type: Transform pos: 28.5,24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16244 components: - type: Transform @@ -79641,7 +79752,7 @@ entities: pos: -24.5,-10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16248 components: - type: Transform @@ -79649,7 +79760,7 @@ entities: pos: 30.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16262 components: - type: Transform @@ -79657,7 +79768,7 @@ entities: pos: 27.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16311 components: - type: Transform @@ -79673,7 +79784,7 @@ entities: pos: -32.5,-77.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16427 components: - type: Transform @@ -79711,7 +79822,7 @@ entities: pos: 27.5,1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17407 components: - type: Transform @@ -79743,14 +79854,14 @@ entities: pos: -1.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17432 components: - type: Transform pos: -1.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17444 components: - type: Transform @@ -79774,7 +79885,7 @@ entities: pos: -12.5,-11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19985 components: - type: Transform @@ -79790,7 +79901,7 @@ entities: pos: -3.5,-57.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21075 components: - type: Transform @@ -79805,7 +79916,7 @@ entities: pos: 15.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22238 components: - type: Transform @@ -79819,7 +79930,7 @@ entities: pos: 16.5,23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22318 components: - type: Transform @@ -79827,7 +79938,7 @@ entities: pos: 16.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22326 components: - type: Transform @@ -79843,7 +79954,7 @@ entities: pos: 13.5,23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22406 components: - type: Transform @@ -79866,7 +79977,7 @@ entities: pos: 37.5,24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22449 components: - type: Transform @@ -79906,7 +80017,7 @@ entities: pos: 5.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23065 components: - type: Transform @@ -79922,7 +80033,7 @@ entities: pos: 5.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23079 components: - type: Transform @@ -79930,7 +80041,7 @@ entities: pos: 27.5,-8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23080 components: - type: Transform @@ -79938,7 +80049,7 @@ entities: pos: 27.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23081 components: - type: Transform @@ -79946,7 +80057,7 @@ entities: pos: 26.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23088 components: - type: Transform @@ -79954,7 +80065,7 @@ entities: pos: -29.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23089 components: - type: Transform @@ -80001,7 +80112,7 @@ entities: pos: 6.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23127 components: - type: Transform @@ -80064,7 +80175,7 @@ entities: pos: -26.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23377 components: - type: Transform @@ -80072,7 +80183,7 @@ entities: pos: -26.5,-55.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23406 components: - type: Transform @@ -80133,7 +80244,7 @@ entities: pos: -11.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23580 components: - type: Transform @@ -80148,7 +80259,7 @@ entities: pos: 15.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - proto: GasPipeFourway entities: - uid: 676 @@ -80171,7 +80282,7 @@ entities: pos: -24.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4771 components: - type: Transform @@ -80213,7 +80324,7 @@ entities: pos: 30.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9177 components: - type: Transform @@ -80227,21 +80338,21 @@ entities: pos: -26.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9437 components: - type: Transform pos: 9.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10981 components: - type: Transform pos: 37.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11386 components: - type: Transform @@ -80255,14 +80366,14 @@ entities: pos: -27.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13648 components: - type: Transform pos: 33.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13836 components: - type: Transform @@ -80276,7 +80387,7 @@ entities: pos: -24.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13940 components: - type: Transform @@ -80290,7 +80401,7 @@ entities: pos: -24.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14451 components: - type: Transform @@ -80304,14 +80415,14 @@ entities: pos: -32.5,-61.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14557 components: - type: Transform pos: -24.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14558 components: - type: Transform @@ -80325,7 +80436,7 @@ entities: pos: -24.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15091 components: - type: Transform @@ -80346,7 +80457,7 @@ entities: pos: 15.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16433 components: - type: Transform @@ -80360,7 +80471,7 @@ entities: pos: 5.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - proto: GasPipeSensor entities: - uid: 10164 @@ -80437,7 +80548,7 @@ entities: pos: -9.5,-6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - proto: GasPipeStraight entities: - uid: 27 @@ -80469,7 +80580,7 @@ entities: pos: 35.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 107 components: - type: Transform @@ -80493,7 +80604,7 @@ entities: pos: -12.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 184 components: - type: Transform @@ -80538,7 +80649,7 @@ entities: pos: -22.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 377 components: - type: Transform @@ -80559,11 +80670,32 @@ entities: - type: Transform pos: 10.5,3.5 parent: 2 + - uid: 521 + components: + - type: Transform + pos: 49.5,-18.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 538 + components: + - type: Transform + pos: 49.5,-20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 539 components: - type: Transform pos: 10.5,2.5 parent: 2 + - uid: 557 + components: + - type: Transform + pos: 49.5,-14.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 633 components: - type: Transform @@ -80579,7 +80711,7 @@ entities: pos: 14.5,7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 637 components: - type: Transform @@ -80603,7 +80735,14 @@ entities: pos: -31.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' + - uid: 700 + components: + - type: Transform + pos: 49.5,-19.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 708 components: - type: Transform @@ -80619,27 +80758,95 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 733 + components: + - type: Transform + pos: 49.5,-17.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 738 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-15.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 740 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-17.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 762 + components: + - type: Transform + pos: 49.5,-21.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 777 components: - type: Transform pos: 16.5,22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' + - uid: 825 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-14.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 846 components: - type: Transform pos: -27.5,-34.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' + - uid: 885 + components: + - type: Transform + pos: 49.5,-16.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 889 components: - type: Transform pos: 29.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' + - uid: 893 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-16.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 908 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-13.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 935 + components: + - type: Transform + pos: 49.5,-15.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 952 components: - type: Transform @@ -80655,7 +80862,7 @@ entities: pos: -27.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1086 components: - type: Transform @@ -80663,7 +80870,7 @@ entities: pos: -18.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1130 components: - type: Transform @@ -80671,7 +80878,7 @@ entities: pos: -20.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1254 components: - type: Transform @@ -80685,7 +80892,7 @@ entities: pos: 12.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1566 components: - type: Transform @@ -80795,14 +81002,14 @@ entities: pos: -4.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1640 components: - type: Transform pos: 19.5,4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1648 components: - type: Transform @@ -80810,14 +81017,14 @@ entities: pos: -2.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1702 components: - type: Transform pos: -8.5,-50.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1716 components: - type: Transform @@ -80833,7 +81040,7 @@ entities: pos: -9.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1737 components: - type: Transform @@ -80848,7 +81055,7 @@ entities: pos: -8.5,-54.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1769 components: - type: Transform @@ -80871,7 +81078,7 @@ entities: pos: -27.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1786 components: - type: Transform @@ -80939,7 +81146,7 @@ entities: pos: 11.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1821 components: - type: Transform @@ -80955,7 +81162,7 @@ entities: pos: 11.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1888 components: - type: Transform @@ -81195,7 +81402,7 @@ entities: pos: -9.5,-8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2036 components: - type: Transform @@ -81203,7 +81410,7 @@ entities: pos: -9.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2037 components: - type: Transform @@ -81211,7 +81418,7 @@ entities: pos: -9.5,-10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2038 components: - type: Transform @@ -81267,7 +81474,7 @@ entities: pos: -9.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2097 components: - type: Transform @@ -81304,7 +81511,7 @@ entities: pos: 10.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2119 components: - type: Transform @@ -81312,7 +81519,7 @@ entities: pos: 7.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2125 components: - type: Transform @@ -81320,7 +81527,7 @@ entities: pos: 8.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2130 components: - type: Transform @@ -81335,7 +81542,7 @@ entities: pos: -9.5,-12.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2138 components: - type: Transform @@ -81359,7 +81566,7 @@ entities: pos: 6.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2182 components: - type: Transform @@ -81375,7 +81582,7 @@ entities: pos: -8.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2189 components: - type: Transform @@ -81383,7 +81590,7 @@ entities: pos: -32.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2212 components: - type: Transform @@ -81398,7 +81605,7 @@ entities: pos: -8.5,-16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2357 components: - type: Transform @@ -81438,7 +81645,7 @@ entities: pos: -17.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2385 components: - type: Transform @@ -81453,7 +81660,7 @@ entities: pos: -8.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2390 components: - type: Transform @@ -81492,7 +81699,7 @@ entities: pos: -1.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2440 components: - type: Transform @@ -81500,7 +81707,7 @@ entities: pos: -12.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2441 components: - type: Transform @@ -81516,7 +81723,7 @@ entities: pos: -3.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2490 components: - type: Transform @@ -81532,7 +81739,7 @@ entities: pos: -13.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2517 components: - type: Transform @@ -81540,7 +81747,7 @@ entities: pos: 5.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2524 components: - type: Transform @@ -81548,7 +81755,7 @@ entities: pos: -10.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2530 components: - type: Transform @@ -81556,7 +81763,7 @@ entities: pos: -14.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2590 components: - type: Transform @@ -81612,7 +81819,7 @@ entities: pos: -23.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2821 components: - type: Transform @@ -81627,7 +81834,7 @@ entities: pos: -8.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2958 components: - type: Transform @@ -81667,14 +81874,14 @@ entities: pos: 8.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2985 components: - type: Transform pos: 28.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3023 components: - type: Transform @@ -81689,21 +81896,21 @@ entities: pos: 28.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3049 components: - type: Transform pos: 28.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3060 components: - type: Transform pos: 28.5,-30.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3080 components: - type: Transform @@ -81711,7 +81918,7 @@ entities: pos: -6.5,-14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3096 components: - type: Transform @@ -81734,7 +81941,7 @@ entities: pos: 9.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3173 components: - type: Transform @@ -81742,7 +81949,7 @@ entities: pos: 8.5,-30.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3176 components: - type: Transform @@ -81780,7 +81987,7 @@ entities: pos: -7.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3377 components: - type: Transform @@ -81819,7 +82026,7 @@ entities: pos: -4.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3528 components: - type: Transform @@ -81843,7 +82050,7 @@ entities: pos: -39.5,-0.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3723 components: - type: Transform @@ -81851,7 +82058,7 @@ entities: pos: -6.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3737 components: - type: Transform @@ -81859,7 +82066,7 @@ entities: pos: 10.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3739 components: - type: Transform @@ -81875,7 +82082,7 @@ entities: pos: 12.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3764 components: - type: Transform @@ -81891,7 +82098,7 @@ entities: pos: 13.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3775 components: - type: Transform @@ -81899,7 +82106,7 @@ entities: pos: 10.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3780 components: - type: Transform @@ -81915,7 +82122,7 @@ entities: pos: 11.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3953 components: - type: Transform @@ -81923,7 +82130,7 @@ entities: pos: 11.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4008 components: - type: Transform @@ -81931,7 +82138,7 @@ entities: pos: 12.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4009 components: - type: Transform @@ -81939,21 +82146,21 @@ entities: pos: 23.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4056 components: - type: Transform pos: 33.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4059 components: - type: Transform pos: 33.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4127 components: - type: Transform @@ -81961,14 +82168,14 @@ entities: pos: 14.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4158 components: - type: Transform pos: -24.5,-8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4160 components: - type: Transform @@ -81976,7 +82183,7 @@ entities: pos: -23.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4239 components: - type: Transform @@ -81984,14 +82191,14 @@ entities: pos: 9.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4240 components: - type: Transform pos: 34.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4255 components: - type: Transform @@ -81999,7 +82206,7 @@ entities: pos: 9.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4289 components: - type: Transform @@ -82007,7 +82214,7 @@ entities: pos: 33.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4294 components: - type: Transform @@ -82023,7 +82230,7 @@ entities: pos: 37.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4350 components: - type: Transform @@ -82047,7 +82254,7 @@ entities: pos: 9.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4360 components: - type: Transform @@ -82055,7 +82262,7 @@ entities: pos: 9.5,-19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4363 components: - type: Transform @@ -82118,7 +82325,7 @@ entities: pos: 28.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4440 components: - type: Transform @@ -82158,7 +82365,7 @@ entities: pos: 28.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4464 components: - type: Transform @@ -82174,7 +82381,7 @@ entities: pos: 29.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4488 components: - type: Transform @@ -82217,7 +82424,7 @@ entities: pos: 32.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4610 components: - type: Transform @@ -82247,7 +82454,7 @@ entities: pos: 32.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4664 components: - type: Transform @@ -82262,7 +82469,7 @@ entities: pos: 30.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4676 components: - type: Transform @@ -82318,14 +82525,14 @@ entities: pos: -27.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4781 components: - type: Transform pos: -27.5,-30.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4801 components: - type: Transform @@ -82368,7 +82575,7 @@ entities: pos: -21.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4911 components: - type: Transform @@ -82383,7 +82590,7 @@ entities: pos: -8.5,-55.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4941 components: - type: Transform @@ -82391,7 +82598,7 @@ entities: pos: -10.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4986 components: - type: Transform @@ -82422,28 +82629,28 @@ entities: pos: -8.5,-53.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5040 components: - type: Transform pos: -8.5,-63.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5046 components: - type: Transform pos: -8.5,-65.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5047 components: - type: Transform pos: -8.5,-66.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5069 components: - type: Transform @@ -82451,7 +82658,7 @@ entities: pos: -26.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5077 components: - type: Transform @@ -82459,7 +82666,7 @@ entities: pos: -25.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5081 components: - type: Transform @@ -82467,7 +82674,7 @@ entities: pos: -12.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5082 components: - type: Transform @@ -82475,14 +82682,14 @@ entities: pos: -27.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5133 components: - type: Transform pos: 9.5,-69.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5163 components: - type: Transform @@ -82498,7 +82705,7 @@ entities: pos: -6.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5212 components: - type: Transform @@ -82522,7 +82729,7 @@ entities: pos: -39.5,-3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5391 components: - type: Transform @@ -82537,7 +82744,7 @@ entities: pos: -4.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5401 components: - type: Transform @@ -82576,7 +82783,7 @@ entities: pos: 31.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5563 components: - type: Transform @@ -82599,7 +82806,7 @@ entities: pos: -35.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5690 components: - type: Transform @@ -82615,7 +82822,7 @@ entities: pos: -33.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5724 components: - type: Transform @@ -82636,7 +82843,7 @@ entities: pos: -24.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5746 components: - type: Transform @@ -82659,7 +82866,7 @@ entities: pos: -34.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6118 components: - type: Transform @@ -82688,7 +82895,7 @@ entities: pos: 33.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6196 components: - type: Transform @@ -82696,14 +82903,14 @@ entities: pos: -37.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6198 components: - type: Transform pos: 33.5,-39.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6234 components: - type: Transform @@ -82719,7 +82926,7 @@ entities: pos: -35.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6308 components: - type: Transform @@ -82741,14 +82948,14 @@ entities: pos: 9.5,-60.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6319 components: - type: Transform pos: 9.5,-54.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6336 components: - type: Transform @@ -82784,7 +82991,7 @@ entities: pos: -14.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6358 components: - type: Transform @@ -82800,7 +83007,7 @@ entities: pos: 13.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6445 components: - type: Transform @@ -82814,21 +83021,21 @@ entities: pos: -8.5,-68.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6460 components: - type: Transform pos: 9.5,-63.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6461 components: - type: Transform pos: 28.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6465 components: - type: Transform @@ -82836,7 +83043,7 @@ entities: pos: -15.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6467 components: - type: Transform @@ -82851,21 +83058,21 @@ entities: pos: -15.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6508 components: - type: Transform pos: 9.5,-66.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6509 components: - type: Transform pos: 9.5,-62.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6528 components: - type: Transform @@ -82894,14 +83101,14 @@ entities: pos: 27.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6565 components: - type: Transform pos: 31.5,7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6583 components: - type: Transform @@ -82917,7 +83124,7 @@ entities: pos: 25.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6592 components: - type: Transform @@ -82938,14 +83145,14 @@ entities: pos: 33.5,-40.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6598 components: - type: Transform pos: 33.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6599 components: - type: Transform @@ -82953,7 +83160,7 @@ entities: pos: 28.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6600 components: - type: Transform @@ -82968,7 +83175,7 @@ entities: pos: 30.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6606 components: - type: Transform @@ -82976,7 +83183,7 @@ entities: pos: 29.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6607 components: - type: Transform @@ -82984,7 +83191,7 @@ entities: pos: 28.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6608 components: - type: Transform @@ -83038,7 +83245,7 @@ entities: pos: 30.5,0.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6667 components: - type: Transform @@ -83069,7 +83276,7 @@ entities: pos: -7.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6704 components: - type: Transform @@ -83101,7 +83308,7 @@ entities: pos: 30.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6711 components: - type: Transform @@ -83109,7 +83316,7 @@ entities: pos: -24.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6718 components: - type: Transform @@ -83133,14 +83340,14 @@ entities: pos: 26.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6749 components: - type: Transform pos: 34.5,-34.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6758 components: - type: Transform @@ -83155,7 +83362,7 @@ entities: pos: 19.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6763 components: - type: Transform @@ -83169,7 +83376,7 @@ entities: pos: 19.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6767 components: - type: Transform @@ -83185,7 +83392,7 @@ entities: pos: 19.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6769 components: - type: Transform @@ -83200,7 +83407,7 @@ entities: pos: 36.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6771 components: - type: Transform @@ -83240,7 +83447,7 @@ entities: pos: 31.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6806 components: - type: Transform @@ -83263,7 +83470,7 @@ entities: pos: 11.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6877 components: - type: Transform @@ -83279,14 +83486,14 @@ entities: pos: 29.5,1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6891 components: - type: Transform pos: -24.5,-19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6912 components: - type: Transform @@ -83294,7 +83501,7 @@ entities: pos: -16.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6924 components: - type: Transform @@ -83302,7 +83509,7 @@ entities: pos: 8.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6938 components: - type: Transform @@ -83326,7 +83533,7 @@ entities: pos: -28.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6984 components: - type: Transform @@ -83349,7 +83556,7 @@ entities: pos: 30.5,-2.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7035 components: - type: Transform @@ -83364,7 +83571,7 @@ entities: pos: -8.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7049 components: - type: Transform @@ -83379,7 +83586,7 @@ entities: pos: -24.5,-6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7074 components: - type: Transform @@ -83387,7 +83594,7 @@ entities: pos: -23.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7103 components: - type: Transform @@ -83403,7 +83610,7 @@ entities: pos: 27.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7110 components: - type: Transform @@ -83411,14 +83618,14 @@ entities: pos: 10.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7220 components: - type: Transform pos: 30.5,-0.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7246 components: - type: Transform @@ -83456,7 +83663,7 @@ entities: pos: -8.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7510 components: - type: Transform @@ -83464,7 +83671,7 @@ entities: pos: 17.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7517 components: - type: Transform @@ -83472,7 +83679,7 @@ entities: pos: 17.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7522 components: - type: Transform @@ -83480,7 +83687,7 @@ entities: pos: 15.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7575 components: - type: Transform @@ -83533,7 +83740,7 @@ entities: pos: -22.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7857 components: - type: Transform @@ -83556,7 +83763,7 @@ entities: pos: 31.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7919 components: - type: Transform @@ -83596,7 +83803,7 @@ entities: pos: -23.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8003 components: - type: Transform @@ -83611,14 +83818,14 @@ entities: pos: -0.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8009 components: - type: Transform pos: 9.5,-55.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8010 components: - type: Transform @@ -83626,7 +83833,7 @@ entities: pos: 1.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8011 components: - type: Transform @@ -83634,7 +83841,7 @@ entities: pos: 6.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8012 components: - type: Transform @@ -83656,7 +83863,7 @@ entities: pos: 30.5,4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8187 components: - type: Transform @@ -83677,7 +83884,7 @@ entities: pos: 9.5,-57.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8206 components: - type: Transform @@ -83698,14 +83905,14 @@ entities: pos: -8.5,-71.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8220 components: - type: Transform pos: 9.5,-70.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8248 components: - type: Transform @@ -83720,7 +83927,7 @@ entities: pos: 9.5,-68.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8269 components: - type: Transform @@ -83734,7 +83941,7 @@ entities: pos: -8.5,-64.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8469 components: - type: Transform @@ -83748,7 +83955,7 @@ entities: pos: 30.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8489 components: - type: Transform @@ -83756,14 +83963,14 @@ entities: pos: -33.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8494 components: - type: Transform pos: 34.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8498 components: - type: Transform @@ -83786,7 +83993,7 @@ entities: pos: 11.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8527 components: - type: Transform @@ -83802,7 +84009,7 @@ entities: pos: 12.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8590 components: - type: Transform @@ -83810,7 +84017,7 @@ entities: pos: 16.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8598 components: - type: Transform @@ -83818,14 +84025,14 @@ entities: pos: -3.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8602 components: - type: Transform pos: -27.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8615 components: - type: Transform @@ -83833,7 +84040,7 @@ entities: pos: -42.5,-30.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8670 components: - type: Transform @@ -83857,7 +84064,7 @@ entities: pos: 30.5,-3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8679 components: - type: Transform @@ -83873,7 +84080,7 @@ entities: pos: 21.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8685 components: - type: Transform @@ -83889,7 +84096,7 @@ entities: pos: 19.5,2.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8690 components: - type: Transform @@ -83897,14 +84104,14 @@ entities: pos: 20.5,1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8693 components: - type: Transform pos: 19.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8708 components: - type: Transform @@ -83919,7 +84126,7 @@ entities: pos: 28.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8714 components: - type: Transform @@ -83927,7 +84134,7 @@ entities: pos: 25.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8717 components: - type: Transform @@ -83943,7 +84150,7 @@ entities: pos: 26.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8720 components: - type: Transform @@ -83951,7 +84158,7 @@ entities: pos: 22.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8721 components: - type: Transform @@ -83967,7 +84174,7 @@ entities: pos: 18.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8727 components: - type: Transform @@ -83975,7 +84182,7 @@ entities: pos: 20.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8728 components: - type: Transform @@ -84046,7 +84253,7 @@ entities: pos: 30.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9128 components: - type: Transform @@ -84061,7 +84268,7 @@ entities: pos: -21.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9176 components: - type: Transform @@ -84100,14 +84307,14 @@ entities: pos: -36.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9286 components: - type: Transform pos: -34.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9294 components: - type: Transform @@ -84153,7 +84360,7 @@ entities: pos: 30.5,2.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9372 components: - type: Transform @@ -84217,7 +84424,7 @@ entities: pos: 28.5,1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9409 components: - type: Transform @@ -84233,7 +84440,7 @@ entities: pos: 15.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9427 components: - type: Transform @@ -84265,7 +84472,7 @@ entities: pos: 29.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9491 components: - type: Transform @@ -84273,7 +84480,7 @@ entities: pos: 10.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9492 components: - type: Transform @@ -84281,7 +84488,7 @@ entities: pos: 12.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9493 components: - type: Transform @@ -84289,7 +84496,7 @@ entities: pos: 13.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9494 components: - type: Transform @@ -84297,7 +84504,7 @@ entities: pos: 14.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9498 components: - type: Transform @@ -84305,7 +84512,7 @@ entities: pos: 31.5,15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9530 components: - type: Transform @@ -84313,7 +84520,7 @@ entities: pos: 31.5,8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9545 components: - type: Transform @@ -84328,7 +84535,7 @@ entities: pos: 33.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9580 components: - type: Transform @@ -84344,7 +84551,7 @@ entities: pos: 33.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9582 components: - type: Transform @@ -84352,7 +84559,7 @@ entities: pos: 33.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9616 components: - type: Transform @@ -84406,7 +84613,7 @@ entities: pos: 29.5,-8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9955 components: - type: Transform @@ -84446,7 +84653,7 @@ entities: pos: -14.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10122 components: - type: Transform @@ -84454,7 +84661,7 @@ entities: pos: -17.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10152 components: - type: Transform @@ -84476,7 +84683,7 @@ entities: pos: -27.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10170 components: - type: Transform @@ -84492,7 +84699,7 @@ entities: pos: 28.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10239 components: - type: Transform @@ -84500,7 +84707,7 @@ entities: pos: -25.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10262 components: - type: Transform @@ -84508,7 +84715,7 @@ entities: pos: -14.5,0.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10444 components: - type: Transform @@ -84540,7 +84747,7 @@ entities: pos: 13.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10521 components: - type: Transform @@ -84548,7 +84755,7 @@ entities: pos: -48.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10522 components: - type: Transform @@ -84556,7 +84763,7 @@ entities: pos: -51.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10537 components: - type: Transform @@ -84564,7 +84771,7 @@ entities: pos: -26.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10538 components: - type: Transform @@ -84572,7 +84779,7 @@ entities: pos: -14.5,2.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10539 components: - type: Transform @@ -84580,7 +84787,7 @@ entities: pos: -30.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10540 components: - type: Transform @@ -84588,7 +84795,7 @@ entities: pos: -27.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10544 components: - type: Transform @@ -84596,7 +84803,7 @@ entities: pos: -29.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10545 components: - type: Transform @@ -84604,7 +84811,7 @@ entities: pos: 10.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10546 components: - type: Transform @@ -84642,21 +84849,21 @@ entities: pos: -1.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10583 components: - type: Transform pos: 9.5,-58.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10585 components: - type: Transform pos: 9.5,-53.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10586 components: - type: Transform @@ -84664,7 +84871,7 @@ entities: pos: 3.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10587 components: - type: Transform @@ -84679,7 +84886,7 @@ entities: pos: 2.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10589 components: - type: Transform @@ -84687,7 +84894,7 @@ entities: pos: 7.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10594 components: - type: Transform @@ -84695,7 +84902,7 @@ entities: pos: -2.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10597 components: - type: Transform @@ -84703,7 +84910,7 @@ entities: pos: 4.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10598 components: - type: Transform @@ -84711,7 +84918,7 @@ entities: pos: 5.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10600 components: - type: Transform @@ -84755,7 +84962,7 @@ entities: pos: -14.5,1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10668 components: - type: Transform @@ -84763,7 +84970,7 @@ entities: pos: -28.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10670 components: - type: Transform @@ -84831,7 +85038,7 @@ entities: pos: -32.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10895 components: - type: Transform @@ -84846,14 +85053,14 @@ entities: pos: -34.5,-16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10901 components: - type: Transform pos: -34.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10943 components: - type: Transform @@ -84869,7 +85076,7 @@ entities: pos: 9.5,-50.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10945 components: - type: Transform @@ -84877,7 +85084,7 @@ entities: pos: 9.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10964 components: - type: Transform @@ -84924,7 +85131,7 @@ entities: pos: -28.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11126 components: - type: Transform @@ -84960,7 +85167,7 @@ entities: pos: 9.5,-71.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11188 components: - type: Transform @@ -84968,7 +85175,7 @@ entities: pos: -24.5,15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11206 components: - type: Transform @@ -84976,14 +85183,14 @@ entities: pos: 1.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11215 components: - type: Transform pos: -6.5,-34.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11276 components: - type: Transform @@ -84998,21 +85205,21 @@ entities: pos: -10.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11300 components: - type: Transform pos: -8.5,-69.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11309 components: - type: Transform pos: -8.5,-62.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11339 components: - type: Transform @@ -85020,14 +85227,14 @@ entities: pos: -16.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11344 components: - type: Transform pos: 28.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11346 components: - type: Transform @@ -85035,7 +85242,7 @@ entities: pos: 29.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11367 components: - type: Transform @@ -85090,7 +85297,7 @@ entities: pos: -6.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11431 components: - type: Transform @@ -85106,7 +85313,7 @@ entities: pos: -29.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11446 components: - type: Transform @@ -85114,7 +85321,7 @@ entities: pos: -33.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11451 components: - type: Transform @@ -85122,7 +85329,7 @@ entities: pos: -25.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11456 components: - type: Transform @@ -85130,7 +85337,7 @@ entities: pos: 31.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11464 components: - type: Transform @@ -85138,14 +85345,14 @@ entities: pos: -30.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11468 components: - type: Transform pos: -9.5,-40.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11469 components: - type: Transform @@ -85153,7 +85360,7 @@ entities: pos: -31.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11492 components: - type: Transform @@ -85161,7 +85368,7 @@ entities: pos: -32.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11517 components: - type: Transform @@ -85183,7 +85390,7 @@ entities: pos: 9.5,-65.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11615 components: - type: Transform @@ -85198,7 +85405,7 @@ entities: pos: -27.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11638 components: - type: Transform @@ -85213,14 +85420,14 @@ entities: pos: -27.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11641 components: - type: Transform pos: -9.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11642 components: - type: Transform @@ -85244,7 +85451,7 @@ entities: pos: -12.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11779 components: - type: Transform @@ -85252,7 +85459,7 @@ entities: pos: -12.5,12.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11783 components: - type: Transform @@ -85260,7 +85467,7 @@ entities: pos: -12.5,13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11826 components: - type: Transform @@ -85268,7 +85475,7 @@ entities: pos: -3.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11893 components: - type: Transform @@ -85276,14 +85483,14 @@ entities: pos: -24.5,14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11902 components: - type: Transform pos: -27.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11916 components: - type: Transform @@ -85306,7 +85513,7 @@ entities: pos: 6.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11962 components: - type: Transform @@ -85322,7 +85529,7 @@ entities: pos: 9.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11983 components: - type: Transform @@ -85330,7 +85537,7 @@ entities: pos: 8.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11984 components: - type: Transform @@ -85338,7 +85545,7 @@ entities: pos: 2.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11989 components: - type: Transform @@ -85378,14 +85585,14 @@ entities: pos: 7.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12061 components: - type: Transform pos: 9.5,-59.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12115 components: - type: Transform @@ -85400,7 +85607,7 @@ entities: pos: -37.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12168 components: - type: Transform @@ -85415,7 +85622,7 @@ entities: pos: -8.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12185 components: - type: Transform @@ -85430,35 +85637,42 @@ entities: pos: -8.5,-67.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12190 components: - type: Transform pos: 9.5,-67.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12195 components: - type: Transform pos: 0.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12201 components: - type: Transform pos: 9.5,-64.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' + - uid: 12203 + components: + - type: Transform + pos: 49.5,-13.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 12204 components: - type: Transform pos: -8.5,-56.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12261 components: - type: Transform @@ -85466,14 +85680,14 @@ entities: pos: 14.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12280 components: - type: Transform pos: -15.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12295 components: - type: Transform @@ -85481,7 +85695,7 @@ entities: pos: -12.5,14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12305 components: - type: Transform @@ -85489,7 +85703,7 @@ entities: pos: -6.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12388 components: - type: Transform @@ -85497,7 +85711,7 @@ entities: pos: -35.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12392 components: - type: Transform @@ -85513,7 +85727,7 @@ entities: pos: -36.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12394 components: - type: Transform @@ -85521,7 +85735,7 @@ entities: pos: -32.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12400 components: - type: Transform @@ -85585,7 +85799,7 @@ entities: pos: -34.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12409 components: - type: Transform @@ -85593,7 +85807,7 @@ entities: pos: -34.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12410 components: - type: Transform @@ -85601,7 +85815,7 @@ entities: pos: -49.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12412 components: - type: Transform @@ -85609,7 +85823,7 @@ entities: pos: -35.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12413 components: - type: Transform @@ -85617,7 +85831,7 @@ entities: pos: -36.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12414 components: - type: Transform @@ -85625,7 +85839,7 @@ entities: pos: -37.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12416 components: - type: Transform @@ -85633,7 +85847,7 @@ entities: pos: -38.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12417 components: - type: Transform @@ -85681,7 +85895,7 @@ entities: pos: -33.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12435 components: - type: Transform @@ -85689,7 +85903,7 @@ entities: pos: -41.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12437 components: - type: Transform @@ -85705,7 +85919,7 @@ entities: pos: -40.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12443 components: - type: Transform @@ -85728,21 +85942,21 @@ entities: pos: -42.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12457 components: - type: Transform pos: -42.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12460 components: - type: Transform pos: -42.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12465 components: - type: Transform @@ -85766,7 +85980,7 @@ entities: pos: -46.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12468 components: - type: Transform @@ -85774,7 +85988,7 @@ entities: pos: -45.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12469 components: - type: Transform @@ -85782,7 +85996,7 @@ entities: pos: -44.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12470 components: - type: Transform @@ -85790,7 +86004,7 @@ entities: pos: -43.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12471 components: - type: Transform @@ -85821,14 +86035,14 @@ entities: pos: 0.5,-50.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12553 components: - type: Transform pos: -8.5,-19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12580 components: - type: Transform @@ -85836,14 +86050,14 @@ entities: pos: -5.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12598 components: - type: Transform pos: 37.5,20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12623 components: - type: Transform @@ -85891,7 +86105,7 @@ entities: pos: -11.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12685 components: - type: Transform @@ -85915,21 +86129,21 @@ entities: pos: -15.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12713 components: - type: Transform pos: -8.5,-58.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12714 components: - type: Transform pos: -8.5,-70.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12906 components: - type: Transform @@ -85937,7 +86151,7 @@ entities: pos: -48.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12907 components: - type: Transform @@ -85945,7 +86159,7 @@ entities: pos: -49.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12908 components: - type: Transform @@ -85953,7 +86167,7 @@ entities: pos: -50.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12909 components: - type: Transform @@ -85961,7 +86175,7 @@ entities: pos: -51.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12910 components: - type: Transform @@ -85969,7 +86183,7 @@ entities: pos: -53.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12911 components: - type: Transform @@ -85977,7 +86191,7 @@ entities: pos: -52.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12912 components: - type: Transform @@ -86049,7 +86263,7 @@ entities: pos: -55.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12970 components: - type: Transform @@ -86057,7 +86271,7 @@ entities: pos: -56.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12971 components: - type: Transform @@ -86065,7 +86279,7 @@ entities: pos: -57.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13044 components: - type: Transform @@ -86110,21 +86324,21 @@ entities: pos: -47.5,-30.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13055 components: - type: Transform pos: -47.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13056 components: - type: Transform pos: -47.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13058 components: - type: Transform @@ -86152,7 +86366,7 @@ entities: pos: -47.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13137 components: - type: Transform @@ -86160,7 +86374,7 @@ entities: pos: -36.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13242 components: - type: Transform @@ -86168,7 +86382,7 @@ entities: pos: -38.5,-53.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13243 components: - type: Transform @@ -86176,7 +86390,7 @@ entities: pos: -36.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13254 components: - type: Transform @@ -86207,35 +86421,35 @@ entities: pos: -8.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13284 components: - type: Transform pos: -8.5,-61.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13302 components: - type: Transform pos: -8.5,-60.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13347 components: - type: Transform pos: 9.5,-47.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13348 components: - type: Transform pos: 9.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13353 components: - type: Transform @@ -86243,21 +86457,21 @@ entities: pos: -34.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13354 components: - type: Transform pos: 9.5,-39.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13356 components: - type: Transform pos: 9.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13357 components: - type: Transform @@ -86272,14 +86486,14 @@ entities: pos: 9.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13359 components: - type: Transform pos: 9.5,-34.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13376 components: - type: Transform @@ -86295,49 +86509,49 @@ entities: pos: -6.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13413 components: - type: Transform pos: 9.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13415 components: - type: Transform pos: 9.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13416 components: - type: Transform pos: 9.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13417 components: - type: Transform pos: 9.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13420 components: - type: Transform pos: 9.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13421 components: - type: Transform pos: 9.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13423 components: - type: Transform @@ -86345,7 +86559,7 @@ entities: pos: 10.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13424 components: - type: Transform @@ -86353,7 +86567,7 @@ entities: pos: 11.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13425 components: - type: Transform @@ -86361,7 +86575,7 @@ entities: pos: 12.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13426 components: - type: Transform @@ -86369,7 +86583,7 @@ entities: pos: 13.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13427 components: - type: Transform @@ -86377,7 +86591,7 @@ entities: pos: 14.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13428 components: - type: Transform @@ -86385,7 +86599,7 @@ entities: pos: 15.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13429 components: - type: Transform @@ -86425,7 +86639,7 @@ entities: pos: 10.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13435 components: - type: Transform @@ -86449,7 +86663,7 @@ entities: pos: 14.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13438 components: - type: Transform @@ -86457,7 +86671,7 @@ entities: pos: 13.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13439 components: - type: Transform @@ -86465,7 +86679,7 @@ entities: pos: 12.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13440 components: - type: Transform @@ -86473,7 +86687,7 @@ entities: pos: 11.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13442 components: - type: Transform @@ -86686,7 +86900,7 @@ entities: pos: 44.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13484 components: - type: Transform @@ -86694,7 +86908,7 @@ entities: pos: 43.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13485 components: - type: Transform @@ -86702,7 +86916,7 @@ entities: pos: 42.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13486 components: - type: Transform @@ -86710,7 +86924,7 @@ entities: pos: 41.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13487 components: - type: Transform @@ -86718,7 +86932,7 @@ entities: pos: 40.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13488 components: - type: Transform @@ -86726,7 +86940,7 @@ entities: pos: 39.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13489 components: - type: Transform @@ -86734,7 +86948,7 @@ entities: pos: 38.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13491 components: - type: Transform @@ -86742,7 +86956,7 @@ entities: pos: 36.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13492 components: - type: Transform @@ -86750,7 +86964,7 @@ entities: pos: 34.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13494 components: - type: Transform @@ -86758,7 +86972,7 @@ entities: pos: 32.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13495 components: - type: Transform @@ -86766,7 +86980,7 @@ entities: pos: 31.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13497 components: - type: Transform @@ -86774,7 +86988,7 @@ entities: pos: 35.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13499 components: - type: Transform @@ -86782,7 +86996,7 @@ entities: pos: 27.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13500 components: - type: Transform @@ -86790,7 +87004,7 @@ entities: pos: 26.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13502 components: - type: Transform @@ -86798,7 +87012,7 @@ entities: pos: 24.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13503 components: - type: Transform @@ -86806,7 +87020,7 @@ entities: pos: 23.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13504 components: - type: Transform @@ -86814,7 +87028,7 @@ entities: pos: 22.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13506 components: - type: Transform @@ -86822,7 +87036,7 @@ entities: pos: 29.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13510 components: - type: Transform @@ -86830,7 +87044,7 @@ entities: pos: 18.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13511 components: - type: Transform @@ -86838,7 +87052,7 @@ entities: pos: 17.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13512 components: - type: Transform @@ -86846,14 +87060,14 @@ entities: pos: 16.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13513 components: - type: Transform pos: 19.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13515 components: - type: Transform @@ -86869,7 +87083,7 @@ entities: pos: 25.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13519 components: - type: Transform @@ -86893,7 +87107,7 @@ entities: pos: 30.5,-19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13522 components: - type: Transform @@ -86917,7 +87131,7 @@ entities: pos: 45.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13528 components: - type: Transform @@ -86942,14 +87156,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 13531 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-22.5 - parent: 2 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 13532 components: - type: Transform @@ -86973,7 +87179,7 @@ entities: pos: 45.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13536 components: - type: Transform @@ -86981,7 +87187,7 @@ entities: pos: 45.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13537 components: - type: Transform @@ -86989,7 +87195,7 @@ entities: pos: 45.5,-19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13541 components: - type: Transform @@ -86997,7 +87203,7 @@ entities: pos: -6.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13542 components: - type: Transform @@ -87005,7 +87211,7 @@ entities: pos: -8.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13544 components: - type: Transform @@ -87069,7 +87275,7 @@ entities: pos: 37.5,-19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13556 components: - type: Transform @@ -87077,7 +87283,7 @@ entities: pos: 37.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13558 components: - type: Transform @@ -87141,7 +87347,7 @@ entities: pos: 37.5,-16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13567 components: - type: Transform @@ -87149,7 +87355,7 @@ entities: pos: 37.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13568 components: - type: Transform @@ -87157,7 +87363,7 @@ entities: pos: 37.5,-14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13569 components: - type: Transform @@ -87165,7 +87371,7 @@ entities: pos: 37.5,-13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13570 components: - type: Transform @@ -87173,7 +87379,7 @@ entities: pos: 37.5,-12.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13571 components: - type: Transform @@ -87181,7 +87387,7 @@ entities: pos: 37.5,-11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13573 components: - type: Transform @@ -87189,7 +87395,7 @@ entities: pos: 37.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13574 components: - type: Transform @@ -87197,7 +87403,7 @@ entities: pos: 37.5,-8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13581 components: - type: Transform @@ -87213,7 +87419,7 @@ entities: pos: 40.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13584 components: - type: Transform @@ -87221,7 +87427,7 @@ entities: pos: 40.5,-8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13585 components: - type: Transform @@ -87229,7 +87435,7 @@ entities: pos: 39.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13586 components: - type: Transform @@ -87237,7 +87443,7 @@ entities: pos: 38.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13587 components: - type: Transform @@ -87307,7 +87513,7 @@ entities: pos: -26.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13604 components: - type: Transform @@ -87315,7 +87521,7 @@ entities: pos: 37.5,-6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13605 components: - type: Transform @@ -87323,7 +87529,7 @@ entities: pos: 37.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13606 components: - type: Transform @@ -87339,7 +87545,7 @@ entities: pos: -27.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13610 components: - type: Transform @@ -87347,28 +87553,28 @@ entities: pos: -19.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13622 components: - type: Transform pos: 30.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13623 components: - type: Transform pos: 30.5,-16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13624 components: - type: Transform pos: 30.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13625 components: - type: Transform @@ -87392,7 +87598,7 @@ entities: pos: 29.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13628 components: - type: Transform @@ -87424,7 +87630,7 @@ entities: pos: -6.5,-39.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13714 components: - type: Transform @@ -87432,7 +87638,7 @@ entities: pos: 30.5,-14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13715 components: - type: Transform @@ -87440,7 +87646,7 @@ entities: pos: 30.5,-13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13716 components: - type: Transform @@ -87448,7 +87654,7 @@ entities: pos: 30.5,-12.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13718 components: - type: Transform @@ -87456,7 +87662,7 @@ entities: pos: 30.5,-10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13719 components: - type: Transform @@ -87464,14 +87670,14 @@ entities: pos: 30.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13731 components: - type: Transform pos: 30.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13746 components: - type: Transform @@ -87502,7 +87708,7 @@ entities: pos: -20.5,-50.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13829 components: - type: Transform @@ -87548,7 +87754,7 @@ entities: pos: -20.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13838 components: - type: Transform @@ -87556,7 +87762,7 @@ entities: pos: -21.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13839 components: - type: Transform @@ -87564,7 +87770,7 @@ entities: pos: -22.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13840 components: - type: Transform @@ -87572,7 +87778,7 @@ entities: pos: -18.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13841 components: - type: Transform @@ -87580,7 +87786,7 @@ entities: pos: -17.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13842 components: - type: Transform @@ -87588,7 +87794,7 @@ entities: pos: -16.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13869 components: - type: Transform @@ -87609,28 +87815,28 @@ entities: pos: -47.5,-34.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13873 components: - type: Transform pos: -47.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13874 components: - type: Transform pos: -47.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13875 components: - type: Transform pos: -47.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13877 components: - type: Transform @@ -87668,7 +87874,7 @@ entities: pos: -47.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13929 components: - type: Transform @@ -87676,7 +87882,7 @@ entities: pos: -48.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13930 components: - type: Transform @@ -87684,7 +87890,7 @@ entities: pos: -49.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13931 components: - type: Transform @@ -87724,7 +87930,7 @@ entities: pos: -24.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13936 components: - type: Transform @@ -87732,7 +87938,7 @@ entities: pos: -47.5,-39.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13937 components: - type: Transform @@ -87748,7 +87954,7 @@ entities: pos: -24.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13941 components: - type: Transform @@ -87787,7 +87993,7 @@ entities: pos: -25.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13946 components: - type: Transform @@ -87795,7 +88001,7 @@ entities: pos: -24.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13947 components: - type: Transform @@ -87803,7 +88009,7 @@ entities: pos: -24.5,-40.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13948 components: - type: Transform @@ -87811,7 +88017,7 @@ entities: pos: -24.5,-39.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13949 components: - type: Transform @@ -87843,7 +88049,7 @@ entities: pos: -23.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13953 components: - type: Transform @@ -87851,7 +88057,7 @@ entities: pos: -22.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13954 components: - type: Transform @@ -87859,35 +88065,35 @@ entities: pos: -21.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13959 components: - type: Transform pos: -24.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13960 components: - type: Transform pos: -24.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13962 components: - type: Transform pos: -24.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13963 components: - type: Transform pos: -24.5,-34.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13965 components: - type: Transform @@ -87923,7 +88129,7 @@ entities: pos: -23.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13970 components: - type: Transform @@ -87947,7 +88153,7 @@ entities: pos: -47.5,-40.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13973 components: - type: Transform @@ -87962,14 +88168,14 @@ entities: pos: -24.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13979 components: - type: Transform pos: -24.5,-47.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13980 components: - type: Transform @@ -87977,7 +88183,7 @@ entities: pos: -23.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13983 components: - type: Transform @@ -88033,7 +88239,7 @@ entities: pos: -20.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13994 components: - type: Transform @@ -88049,7 +88255,7 @@ entities: pos: -22.5,-50.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13997 components: - type: Transform @@ -88057,7 +88263,7 @@ entities: pos: -22.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13998 components: - type: Transform @@ -88096,7 +88302,7 @@ entities: pos: -6.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14009 components: - type: Transform @@ -88104,7 +88310,7 @@ entities: pos: -15.5,-16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14013 components: - type: Transform @@ -88112,7 +88318,7 @@ entities: pos: -47.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14014 components: - type: Transform @@ -88120,7 +88326,7 @@ entities: pos: -47.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14016 components: - type: Transform @@ -88135,7 +88341,7 @@ entities: pos: -24.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14022 components: - type: Transform @@ -88143,7 +88349,7 @@ entities: pos: -15.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14023 components: - type: Transform @@ -88151,7 +88357,7 @@ entities: pos: -15.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14024 components: - type: Transform @@ -88159,7 +88365,7 @@ entities: pos: -15.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14025 components: - type: Transform @@ -88167,7 +88373,7 @@ entities: pos: -15.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14026 components: - type: Transform @@ -88215,7 +88421,7 @@ entities: pos: -19.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14033 components: - type: Transform @@ -88223,7 +88429,7 @@ entities: pos: -18.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14034 components: - type: Transform @@ -88231,7 +88437,7 @@ entities: pos: -17.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14035 components: - type: Transform @@ -88239,7 +88445,7 @@ entities: pos: -16.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14036 components: - type: Transform @@ -88301,7 +88507,7 @@ entities: pos: -14.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14050 components: - type: Transform @@ -88309,7 +88515,7 @@ entities: pos: -13.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14052 components: - type: Transform @@ -88325,14 +88531,14 @@ entities: pos: -48.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14064 components: - type: Transform pos: 16.5,20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14065 components: - type: Transform @@ -88348,7 +88554,7 @@ entities: pos: -48.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14067 components: - type: Transform @@ -88356,7 +88562,7 @@ entities: pos: -47.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14068 components: - type: Transform @@ -88387,7 +88593,7 @@ entities: pos: 32.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14072 components: - type: Transform @@ -88395,7 +88601,7 @@ entities: pos: 33.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14073 components: - type: Transform @@ -88403,7 +88609,7 @@ entities: pos: 34.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14074 components: - type: Transform @@ -88427,7 +88633,7 @@ entities: pos: 35.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14077 components: - type: Transform @@ -88443,7 +88649,7 @@ entities: pos: 36.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14083 components: - type: Transform @@ -88451,7 +88657,7 @@ entities: pos: -47.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14084 components: - type: Transform @@ -88459,7 +88665,7 @@ entities: pos: -53.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14086 components: - type: Transform @@ -88467,7 +88673,7 @@ entities: pos: -47.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14087 components: - type: Transform @@ -88515,7 +88721,7 @@ entities: pos: 31.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14135 components: - type: Transform @@ -88523,7 +88729,7 @@ entities: pos: 31.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14138 components: - type: Transform @@ -88531,7 +88737,7 @@ entities: pos: 31.5,13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14139 components: - type: Transform @@ -88539,7 +88745,7 @@ entities: pos: 31.5,12.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14141 components: - type: Transform @@ -88547,7 +88753,7 @@ entities: pos: 31.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14142 components: - type: Transform @@ -88555,7 +88761,7 @@ entities: pos: 31.5,9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14152 components: - type: Transform @@ -88587,7 +88793,7 @@ entities: pos: 30.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14156 components: - type: Transform @@ -88595,7 +88801,7 @@ entities: pos: 29.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14159 components: - type: Transform @@ -88611,7 +88817,7 @@ entities: pos: -26.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14195 components: - type: Transform @@ -88619,7 +88825,7 @@ entities: pos: -27.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14196 components: - type: Transform @@ -88627,7 +88833,7 @@ entities: pos: -28.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14197 components: - type: Transform @@ -88635,7 +88841,7 @@ entities: pos: -29.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14198 components: - type: Transform @@ -88643,21 +88849,21 @@ entities: pos: -30.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14199 components: - type: Transform pos: 14.5,8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14200 components: - type: Transform pos: 14.5,9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14201 components: - type: Transform @@ -88665,7 +88871,7 @@ entities: pos: -31.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14202 components: - type: Transform @@ -88727,7 +88933,7 @@ entities: pos: 33.5,-30.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14238 components: - type: Transform @@ -88743,7 +88949,7 @@ entities: pos: 13.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14242 components: - type: Transform @@ -88767,7 +88973,7 @@ entities: pos: -3.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14258 components: - type: Transform @@ -88783,7 +88989,7 @@ entities: pos: 3.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14296 components: - type: Transform @@ -88791,7 +88997,7 @@ entities: pos: 4.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14313 components: - type: Transform @@ -88837,7 +89043,7 @@ entities: pos: -9.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14344 components: - type: Transform @@ -88852,7 +89058,7 @@ entities: pos: -10.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14349 components: - type: Transform @@ -88860,7 +89066,7 @@ entities: pos: -5.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14350 components: - type: Transform @@ -88884,7 +89090,7 @@ entities: pos: 0.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14353 components: - type: Transform @@ -88922,7 +89128,7 @@ entities: pos: -14.5,9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14361 components: - type: Transform @@ -88957,7 +89163,7 @@ entities: pos: -14.5,7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14370 components: - type: Transform @@ -88965,7 +89171,7 @@ entities: pos: -7.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14380 components: - type: Transform @@ -88979,14 +89185,14 @@ entities: pos: -14.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14384 components: - type: Transform pos: -14.5,4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14387 components: - type: Transform @@ -89098,7 +89304,7 @@ entities: pos: -8.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14417 components: - type: Transform @@ -89106,7 +89312,7 @@ entities: pos: -14.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14419 components: - type: Transform @@ -89149,7 +89355,7 @@ entities: pos: -28.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14441 components: - type: Transform @@ -89164,7 +89370,7 @@ entities: pos: -14.5,-2.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14445 components: - type: Transform @@ -89172,7 +89378,7 @@ entities: pos: -23.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14446 components: - type: Transform @@ -89211,7 +89417,7 @@ entities: pos: -24.5,-2.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14458 components: - type: Transform @@ -89243,7 +89449,7 @@ entities: pos: -24.5,-3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14463 components: - type: Transform @@ -89251,7 +89457,7 @@ entities: pos: -24.5,-0.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14464 components: - type: Transform @@ -89259,7 +89465,7 @@ entities: pos: -24.5,0.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14465 components: - type: Transform @@ -89267,7 +89473,7 @@ entities: pos: -24.5,1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14467 components: - type: Transform @@ -89312,7 +89518,7 @@ entities: pos: -39.5,1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14489 components: - type: Transform @@ -89320,7 +89526,7 @@ entities: pos: 9.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14491 components: - type: Transform @@ -89336,7 +89542,7 @@ entities: pos: -22.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14504 components: - type: Transform @@ -89359,7 +89565,7 @@ entities: pos: -25.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14512 components: - type: Transform @@ -89402,14 +89608,14 @@ entities: pos: -24.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14528 components: - type: Transform pos: -24.5,2.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14530 components: - type: Transform @@ -89424,7 +89630,7 @@ entities: pos: -25.5,4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14532 components: - type: Transform @@ -89432,7 +89638,7 @@ entities: pos: -26.5,4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14533 components: - type: Transform @@ -89447,7 +89653,7 @@ entities: pos: -27.5,4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14544 components: - type: Transform @@ -89496,28 +89702,28 @@ entities: pos: -24.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14555 components: - type: Transform pos: -24.5,8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14556 components: - type: Transform pos: -24.5,9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14559 components: - type: Transform pos: -24.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14560 components: - type: Transform @@ -89525,7 +89731,7 @@ entities: pos: -25.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14561 components: - type: Transform @@ -89533,7 +89739,7 @@ entities: pos: -26.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14562 components: - type: Transform @@ -89541,7 +89747,7 @@ entities: pos: -27.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14563 components: - type: Transform @@ -89549,7 +89755,7 @@ entities: pos: -28.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14564 components: - type: Transform @@ -89627,7 +89833,7 @@ entities: pos: -24.5,13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14591 components: - type: Transform @@ -89671,7 +89877,7 @@ entities: pos: -15.5,-6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14608 components: - type: Transform @@ -89701,7 +89907,7 @@ entities: pos: -14.5,-3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14616 components: - type: Transform @@ -89709,7 +89915,7 @@ entities: pos: -28.5,4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14617 components: - type: Transform @@ -89746,14 +89952,14 @@ entities: pos: -32.5,-76.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14630 components: - type: Transform pos: -32.5,-75.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14631 components: - type: Transform @@ -89767,56 +89973,56 @@ entities: pos: -15.5,-8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14633 components: - type: Transform pos: -15.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14634 components: - type: Transform pos: -15.5,-10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14636 components: - type: Transform pos: -15.5,-12.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14637 components: - type: Transform pos: -15.5,-13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14638 components: - type: Transform pos: -15.5,-14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14640 components: - type: Transform pos: -32.5,-74.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14641 components: - type: Transform pos: -32.5,-73.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14642 components: - type: Transform @@ -89846,7 +90052,7 @@ entities: pos: -15.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14647 components: - type: Transform @@ -89854,7 +90060,7 @@ entities: pos: -16.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14648 components: - type: Transform @@ -89862,14 +90068,14 @@ entities: pos: -17.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14654 components: - type: Transform pos: -32.5,-72.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14656 components: - type: Transform @@ -89877,14 +90083,14 @@ entities: pos: -18.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14657 components: - type: Transform pos: -32.5,-71.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14658 components: - type: Transform @@ -89892,7 +90098,7 @@ entities: pos: -22.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14659 components: - type: Transform @@ -89900,7 +90106,7 @@ entities: pos: -21.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14660 components: - type: Transform @@ -89908,7 +90114,7 @@ entities: pos: -23.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14661 components: - type: Transform @@ -89924,7 +90130,7 @@ entities: pos: -19.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14663 components: - type: Transform @@ -89932,7 +90138,7 @@ entities: pos: -20.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14664 components: - type: Transform @@ -89956,7 +90162,7 @@ entities: pos: -20.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14668 components: - type: Transform @@ -89964,7 +90170,7 @@ entities: pos: -21.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14669 components: - type: Transform @@ -89972,7 +90178,7 @@ entities: pos: -22.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14670 components: - type: Transform @@ -89980,21 +90186,21 @@ entities: pos: -18.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14676 components: - type: Transform pos: -24.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14677 components: - type: Transform pos: -24.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14678 components: - type: Transform @@ -90015,63 +90221,63 @@ entities: pos: -24.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14681 components: - type: Transform pos: -32.5,-69.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14683 components: - type: Transform pos: -24.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14684 components: - type: Transform pos: -24.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14686 components: - type: Transform pos: -32.5,-68.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14687 components: - type: Transform pos: -32.5,-66.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14688 components: - type: Transform pos: -24.5,-30.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14689 components: - type: Transform pos: -24.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14690 components: - type: Transform pos: -24.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14691 components: - type: Transform @@ -90085,7 +90291,7 @@ entities: pos: -32.5,-65.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14693 components: - type: Transform @@ -90135,7 +90341,7 @@ entities: pos: -17.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14702 components: - type: Transform @@ -90143,7 +90349,7 @@ entities: pos: -16.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14703 components: - type: Transform @@ -90151,7 +90357,7 @@ entities: pos: -15.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14704 components: - type: Transform @@ -90159,7 +90365,7 @@ entities: pos: -14.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14705 components: - type: Transform @@ -90173,70 +90379,70 @@ entities: pos: -32.5,-64.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14720 components: - type: Transform pos: -32.5,-67.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14722 components: - type: Transform pos: -32.5,-62.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14734 components: - type: Transform pos: -32.5,-60.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14735 components: - type: Transform pos: -32.5,-59.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14736 components: - type: Transform pos: -32.5,-63.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14738 components: - type: Transform pos: -32.5,-56.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14739 components: - type: Transform pos: -32.5,-55.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14740 components: - type: Transform pos: -32.5,-54.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14741 components: - type: Transform pos: -32.5,-53.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14742 components: - type: Transform @@ -90251,56 +90457,56 @@ entities: pos: -32.5,-58.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14745 components: - type: Transform pos: -32.5,-50.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14747 components: - type: Transform pos: -32.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14748 components: - type: Transform pos: -32.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14749 components: - type: Transform pos: -32.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14750 components: - type: Transform pos: -32.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14751 components: - type: Transform pos: -32.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14752 components: - type: Transform pos: -32.5,-47.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14828 components: - type: Transform @@ -90308,7 +90514,7 @@ entities: pos: -21.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14838 components: - type: Transform @@ -90330,14 +90536,14 @@ entities: pos: -42.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14865 components: - type: Transform pos: -42.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14871 components: - type: Transform @@ -90345,7 +90551,7 @@ entities: pos: -42.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14872 components: - type: Transform @@ -90353,7 +90559,7 @@ entities: pos: -42.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14873 components: - type: Transform @@ -90377,7 +90583,7 @@ entities: pos: -26.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14896 components: - type: Transform @@ -90385,7 +90591,7 @@ entities: pos: -35.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14897 components: - type: Transform @@ -90393,7 +90599,7 @@ entities: pos: -36.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14898 components: - type: Transform @@ -90401,7 +90607,7 @@ entities: pos: -37.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14901 components: - type: Transform @@ -90417,7 +90623,7 @@ entities: pos: -35.5,-15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14944 components: - type: Transform @@ -90521,7 +90727,7 @@ entities: pos: -9.5,-47.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14983 components: - type: Transform @@ -90529,7 +90735,7 @@ entities: pos: 7.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14991 components: - type: Transform @@ -90568,14 +90774,14 @@ entities: pos: -9.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15002 components: - type: Transform pos: -9.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15003 components: - type: Transform @@ -90604,14 +90810,14 @@ entities: pos: -9.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15078 components: - type: Transform pos: -9.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15079 components: - type: Transform @@ -90619,14 +90825,14 @@ entities: pos: -11.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15081 components: - type: Transform pos: -29.5,-46.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15082 components: - type: Transform @@ -90746,7 +90952,7 @@ entities: pos: -8.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15104 components: - type: Transform @@ -90754,7 +90960,7 @@ entities: pos: -7.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15105 components: - type: Transform @@ -90762,21 +90968,21 @@ entities: pos: -5.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15107 components: - type: Transform pos: -4.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15108 components: - type: Transform pos: -4.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15111 components: - type: Transform @@ -90784,7 +90990,7 @@ entities: pos: -6.5,-40.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15117 components: - type: Transform @@ -90799,7 +91005,7 @@ entities: pos: -29.5,-47.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15124 components: - type: Transform @@ -90807,7 +91013,7 @@ entities: pos: -6.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15125 components: - type: Transform @@ -90815,7 +91021,7 @@ entities: pos: -6.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15127 components: - type: Transform @@ -90823,7 +91029,7 @@ entities: pos: -25.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15129 components: - type: Transform @@ -90855,7 +91061,7 @@ entities: pos: -28.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15159 components: - type: Transform @@ -90871,7 +91077,7 @@ entities: pos: -0.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15175 components: - type: Transform @@ -90879,7 +91085,7 @@ entities: pos: -22.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15176 components: - type: Transform @@ -90887,7 +91093,7 @@ entities: pos: 7.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15187 components: - type: Transform @@ -90895,7 +91101,7 @@ entities: pos: 20.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15255 components: - type: Transform @@ -90935,7 +91141,7 @@ entities: pos: -31.5,-61.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15260 components: - type: Transform @@ -90943,7 +91149,7 @@ entities: pos: -30.5,-61.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15276 components: - type: Transform @@ -90993,7 +91199,7 @@ entities: pos: 21.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15443 components: - type: Transform @@ -91001,7 +91207,7 @@ entities: pos: 18.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15459 components: - type: Transform @@ -91009,7 +91215,7 @@ entities: pos: 17.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15484 components: - type: Transform @@ -91039,7 +91245,7 @@ entities: pos: -14.5,6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15577 components: - type: Transform @@ -91047,7 +91253,7 @@ entities: pos: 14.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15579 components: - type: Transform @@ -91079,7 +91285,7 @@ entities: pos: 15.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15588 components: - type: Transform @@ -91087,7 +91293,7 @@ entities: pos: 15.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15590 components: - type: Transform @@ -91103,7 +91309,7 @@ entities: pos: 13.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15770 components: - type: Transform @@ -91127,7 +91333,7 @@ entities: pos: -2.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15847 components: - type: Transform @@ -91143,7 +91349,7 @@ entities: pos: 8.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15864 components: - type: Transform @@ -91151,7 +91357,7 @@ entities: pos: -26.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15881 components: - type: Transform @@ -91174,7 +91380,7 @@ entities: pos: -13.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16235 components: - type: Transform @@ -91182,7 +91388,7 @@ entities: pos: -22.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16237 components: - type: Transform @@ -91190,7 +91396,7 @@ entities: pos: -23.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16238 components: - type: Transform @@ -91198,7 +91404,7 @@ entities: pos: -22.5,-10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16239 components: - type: Transform @@ -91206,7 +91412,7 @@ entities: pos: -23.5,-10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16240 components: - type: Transform @@ -91229,7 +91435,7 @@ entities: pos: 0.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16247 components: - type: Transform @@ -91237,7 +91443,7 @@ entities: pos: -28.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16249 components: - type: Transform @@ -91507,14 +91713,14 @@ entities: pos: -11.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16681 components: - type: Transform pos: -8.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16790 components: - type: Transform @@ -91568,7 +91774,7 @@ entities: pos: -6.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16929 components: - type: Transform @@ -91576,7 +91782,7 @@ entities: pos: -12.5,15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17195 components: - type: Transform @@ -91584,42 +91790,42 @@ entities: pos: 17.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17332 components: - type: Transform pos: 5.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17333 components: - type: Transform pos: 5.5,12.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17334 components: - type: Transform pos: 5.5,13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17335 components: - type: Transform pos: 5.5,15.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17337 components: - type: Transform pos: 5.5,14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17338 components: - type: Transform @@ -91655,7 +91861,7 @@ entities: pos: 5.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17361 components: - type: Transform @@ -91663,7 +91869,7 @@ entities: pos: 5.5,18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17363 components: - type: Transform @@ -91671,7 +91877,7 @@ entities: pos: 5.5,20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17364 components: - type: Transform @@ -91679,7 +91885,7 @@ entities: pos: 5.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17365 components: - type: Transform @@ -91687,7 +91893,7 @@ entities: pos: 5.5,22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17369 components: - type: Transform @@ -91864,7 +92070,7 @@ entities: pos: 6.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17395 components: - type: Transform @@ -91872,7 +92078,7 @@ entities: pos: 7.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17396 components: - type: Transform @@ -91880,7 +92086,7 @@ entities: pos: 8.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17397 components: - type: Transform @@ -91888,7 +92094,7 @@ entities: pos: 9.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17398 components: - type: Transform @@ -91896,7 +92102,7 @@ entities: pos: 10.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17399 components: - type: Transform @@ -91904,21 +92110,21 @@ entities: pos: 11.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17400 components: - type: Transform pos: 12.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17401 components: - type: Transform pos: 12.5,18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17402 components: - type: Transform @@ -91926,7 +92132,7 @@ entities: pos: 13.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17403 components: - type: Transform @@ -91934,7 +92140,7 @@ entities: pos: 14.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17411 components: - type: Transform @@ -91998,7 +92204,7 @@ entities: pos: 4.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17426 components: - type: Transform @@ -92006,7 +92212,7 @@ entities: pos: 3.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17427 components: - type: Transform @@ -92014,7 +92220,7 @@ entities: pos: 2.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17428 components: - type: Transform @@ -92022,7 +92228,7 @@ entities: pos: 1.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17429 components: - type: Transform @@ -92030,7 +92236,7 @@ entities: pos: 0.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17430 components: - type: Transform @@ -92038,7 +92244,7 @@ entities: pos: -0.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17433 components: - type: Transform @@ -92046,7 +92252,7 @@ entities: pos: -2.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17434 components: - type: Transform @@ -92054,7 +92260,7 @@ entities: pos: -3.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17435 components: - type: Transform @@ -92062,7 +92268,7 @@ entities: pos: -4.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17436 components: - type: Transform @@ -92070,7 +92276,7 @@ entities: pos: -5.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17438 components: - type: Transform @@ -92118,7 +92324,7 @@ entities: pos: 35.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17559 components: - type: Transform @@ -92126,7 +92332,7 @@ entities: pos: 34.5,-26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17575 components: - type: Transform @@ -92134,14 +92340,14 @@ entities: pos: -26.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17748 components: - type: Transform pos: 34.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17878 components: - type: Transform @@ -92156,7 +92362,7 @@ entities: pos: -9.5,-39.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17888 components: - type: Transform @@ -92179,7 +92385,7 @@ entities: pos: 9.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 18581 components: - type: Transform @@ -92203,7 +92409,7 @@ entities: pos: -39.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 18851 components: - type: Transform @@ -92211,7 +92417,7 @@ entities: pos: 32.5,-37.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 18892 components: - type: Transform @@ -92249,7 +92455,7 @@ entities: pos: -27.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19024 components: - type: Transform @@ -92257,7 +92463,7 @@ entities: pos: -7.5,17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19148 components: - type: Transform @@ -92273,7 +92479,7 @@ entities: pos: -39.5,-2.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19291 components: - type: Transform @@ -92281,14 +92487,14 @@ entities: pos: -39.5,0.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19982 components: - type: Transform pos: -12.5,-12.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19986 components: - type: Transform @@ -92335,7 +92541,7 @@ entities: pos: 28.5,23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 20518 components: - type: Transform @@ -92343,7 +92549,7 @@ entities: pos: -26.5,-30.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 20828 components: - type: Transform @@ -92358,7 +92564,7 @@ entities: pos: -7.5,-57.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21055 components: - type: Transform @@ -92366,7 +92572,7 @@ entities: pos: -6.5,-57.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21056 components: - type: Transform @@ -92374,7 +92580,7 @@ entities: pos: -5.5,-57.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21057 components: - type: Transform @@ -92382,7 +92588,7 @@ entities: pos: -4.5,-57.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21058 components: - type: Transform @@ -92462,7 +92668,7 @@ entities: pos: 8.5,-56.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21074 components: - type: Transform @@ -92494,7 +92700,7 @@ entities: pos: -52.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21412 components: - type: Transform @@ -92518,7 +92724,7 @@ entities: pos: 8.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21415 components: - type: Transform @@ -92550,7 +92756,7 @@ entities: pos: 8.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21422 components: - type: Transform @@ -92558,7 +92764,7 @@ entities: pos: -7.5,-14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21633 components: - type: Transform @@ -92588,7 +92794,7 @@ entities: pos: 15.5,-40.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21948 components: - type: Transform @@ -92596,7 +92802,7 @@ entities: pos: 14.5,23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21949 components: - type: Transform @@ -92604,14 +92810,14 @@ entities: pos: 15.5,23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22020 components: - type: Transform pos: 15.5,-39.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22056 components: - type: Transform @@ -92627,7 +92833,7 @@ entities: pos: 15.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22228 components: - type: Transform @@ -92635,7 +92841,7 @@ entities: pos: 17.5,-47.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22230 components: - type: Transform @@ -92675,14 +92881,14 @@ entities: pos: 16.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22235 components: - type: Transform pos: 15.5,-43.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22240 components: - type: Transform @@ -92690,7 +92896,7 @@ entities: pos: 16.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22241 components: - type: Transform @@ -92705,7 +92911,7 @@ entities: pos: 13.5,24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22323 components: - type: Transform @@ -92737,7 +92943,7 @@ entities: pos: 13.5,25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22330 components: - type: Transform @@ -92751,7 +92957,7 @@ entities: pos: 13.5,26.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22342 components: - type: Transform @@ -92823,7 +93029,7 @@ entities: pos: 18.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22354 components: - type: Transform @@ -92831,7 +93037,7 @@ entities: pos: 19.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22355 components: - type: Transform @@ -92839,7 +93045,7 @@ entities: pos: 20.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22356 components: - type: Transform @@ -92847,7 +93053,7 @@ entities: pos: 21.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22357 components: - type: Transform @@ -92855,7 +93061,7 @@ entities: pos: 22.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22359 components: - type: Transform @@ -92863,7 +93069,7 @@ entities: pos: 24.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22360 components: - type: Transform @@ -92871,7 +93077,7 @@ entities: pos: 25.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22361 components: - type: Transform @@ -92879,7 +93085,7 @@ entities: pos: 26.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22362 components: - type: Transform @@ -92887,7 +93093,7 @@ entities: pos: 31.5,18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22364 components: - type: Transform @@ -92895,7 +93101,7 @@ entities: pos: 31.5,20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22365 components: - type: Transform @@ -92903,7 +93109,7 @@ entities: pos: 27.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22366 components: - type: Transform @@ -92911,7 +93117,7 @@ entities: pos: 29.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22367 components: - type: Transform @@ -92919,7 +93125,7 @@ entities: pos: 30.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22370 components: - type: Transform @@ -92980,7 +93186,7 @@ entities: pos: 28.5,22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22390 components: - type: Transform @@ -92988,7 +93194,7 @@ entities: pos: 38.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22396 components: - type: Transform @@ -92996,7 +93202,7 @@ entities: pos: 32.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22398 components: - type: Transform @@ -93004,7 +93210,7 @@ entities: pos: 34.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22399 components: - type: Transform @@ -93012,7 +93218,7 @@ entities: pos: 35.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22400 components: - type: Transform @@ -93020,7 +93226,7 @@ entities: pos: 36.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22401 components: - type: Transform @@ -93028,7 +93234,7 @@ entities: pos: 40.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22402 components: - type: Transform @@ -93068,7 +93274,7 @@ entities: pos: 45.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22419 components: - type: Transform @@ -93076,7 +93282,7 @@ entities: pos: 44.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22420 components: - type: Transform @@ -93084,7 +93290,7 @@ entities: pos: 43.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22421 components: - type: Transform @@ -93092,7 +93298,7 @@ entities: pos: 41.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22422 components: - type: Transform @@ -93100,7 +93306,7 @@ entities: pos: 42.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22425 components: - type: Transform @@ -93139,7 +93345,7 @@ entities: pos: 39.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22433 components: - type: Transform @@ -93147,7 +93353,7 @@ entities: pos: 37.5,22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22434 components: - type: Transform @@ -93155,7 +93361,7 @@ entities: pos: 37.5,23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22443 components: - type: Transform @@ -93235,7 +93441,7 @@ entities: pos: -39.5,-54.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22584 components: - type: Transform @@ -93267,7 +93473,7 @@ entities: pos: 6.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23062 components: - type: Transform @@ -93275,7 +93481,7 @@ entities: pos: 7.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23063 components: - type: Transform @@ -93283,7 +93489,7 @@ entities: pos: 6.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23071 components: - type: Transform @@ -93291,7 +93497,7 @@ entities: pos: 28.5,-8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23072 components: - type: Transform @@ -93360,7 +93566,7 @@ entities: pos: -18.5,-53.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23094 components: - type: Transform @@ -93368,7 +93574,7 @@ entities: pos: -18.5,-54.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23095 components: - type: Transform @@ -93376,7 +93582,7 @@ entities: pos: -18.5,-55.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23096 components: - type: Transform @@ -93400,7 +93606,7 @@ entities: pos: -7.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23109 components: - type: Transform @@ -93415,7 +93621,7 @@ entities: pos: -5.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23113 components: - type: Transform @@ -93455,7 +93661,7 @@ entities: pos: 28.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23177 components: - type: Transform @@ -93590,35 +93796,35 @@ entities: pos: -34.5,-19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23219 components: - type: Transform pos: -34.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23220 components: - type: Transform pos: -34.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23221 components: - type: Transform pos: -34.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23222 components: - type: Transform pos: -34.5,-23.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23364 components: - type: Transform @@ -93626,7 +93832,7 @@ entities: pos: -23.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23365 components: - type: Transform @@ -93634,7 +93840,7 @@ entities: pos: -24.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23366 components: - type: Transform @@ -93642,7 +93848,7 @@ entities: pos: -25.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23367 components: - type: Transform @@ -93658,7 +93864,7 @@ entities: pos: -26.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23369 components: - type: Transform @@ -93666,7 +93872,7 @@ entities: pos: -26.5,-53.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23370 components: - type: Transform @@ -93682,7 +93888,7 @@ entities: pos: -26.5,-54.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23388 components: - type: Transform @@ -93956,7 +94162,7 @@ entities: pos: -18.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23515 components: - type: Transform @@ -93964,7 +94170,7 @@ entities: pos: -13.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23517 components: - type: Transform @@ -93972,7 +94178,7 @@ entities: pos: -12.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23578 components: - type: Transform @@ -93996,7 +94202,7 @@ entities: pos: 13.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23583 components: - type: Transform @@ -94004,7 +94210,7 @@ entities: pos: 14.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - proto: GasPipeTJunction entities: - uid: 129 @@ -94015,6 +94221,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 259 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 45.5,-18.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 263 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 49.5,-22.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 555 components: - type: Transform @@ -94022,7 +94244,7 @@ entities: pos: -14.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1308 components: - type: Transform @@ -94030,7 +94252,7 @@ entities: pos: 8.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1445 components: - type: Transform @@ -94082,7 +94304,7 @@ entities: pos: -10.5,-11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2099 components: - type: Transform @@ -94105,7 +94327,7 @@ entities: pos: 9.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2137 components: - type: Transform @@ -94113,7 +94335,7 @@ entities: pos: -8.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2319 components: - type: Transform @@ -94128,7 +94350,7 @@ entities: pos: -8.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2425 components: - type: Transform @@ -94144,7 +94366,7 @@ entities: pos: -15.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2571 components: - type: Transform @@ -94168,7 +94390,7 @@ entities: pos: -5.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3857 components: - type: Transform @@ -94184,7 +94406,7 @@ entities: pos: 9.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3897 components: - type: Transform @@ -94208,7 +94430,7 @@ entities: pos: 9.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4142 components: - type: Transform @@ -94216,7 +94438,7 @@ entities: pos: 9.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4174 components: - type: Transform @@ -94224,7 +94446,7 @@ entities: pos: 33.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4249 components: - type: Transform @@ -94240,7 +94462,7 @@ entities: pos: 9.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4286 components: - type: Transform @@ -94248,7 +94470,7 @@ entities: pos: 9.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4288 components: - type: Transform @@ -94272,7 +94494,7 @@ entities: pos: 9.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4306 components: - type: Transform @@ -94280,7 +94502,7 @@ entities: pos: 9.5,-30.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4313 components: - type: Transform @@ -94294,7 +94516,7 @@ entities: pos: 33.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4432 components: - type: Transform @@ -94302,7 +94524,7 @@ entities: pos: 33.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4444 components: - type: Transform @@ -94310,7 +94532,7 @@ entities: pos: 30.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4457 components: - type: Transform @@ -94318,14 +94540,14 @@ entities: pos: 34.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4566 components: - type: Transform pos: -22.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4567 components: - type: Transform @@ -94341,14 +94563,14 @@ entities: pos: -24.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4988 components: - type: Transform pos: -4.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5068 components: - type: Transform @@ -94363,7 +94585,7 @@ entities: pos: -9.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5528 components: - type: Transform @@ -94371,7 +94593,7 @@ entities: pos: 12.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5553 components: - type: Transform @@ -94379,14 +94601,14 @@ entities: pos: -9.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5760 components: - type: Transform pos: 28.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5854 components: - type: Transform @@ -94394,7 +94616,7 @@ entities: pos: 30.5,3.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6195 components: - type: Transform @@ -94448,7 +94670,7 @@ entities: pos: -24.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6651 components: - type: Transform @@ -94456,7 +94678,7 @@ entities: pos: -29.5,-5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6686 components: - type: Transform @@ -94464,14 +94686,14 @@ entities: pos: 9.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6797 components: - type: Transform pos: 29.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6821 components: - type: Transform @@ -94479,7 +94701,7 @@ entities: pos: 28.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6826 components: - type: Transform @@ -94487,7 +94709,7 @@ entities: pos: 28.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6874 components: - type: Transform @@ -94510,7 +94732,7 @@ entities: pos: -13.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7038 components: - type: Transform @@ -94518,7 +94740,7 @@ entities: pos: -24.5,-9.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7347 components: - type: Transform @@ -94526,7 +94748,7 @@ entities: pos: 30.5,-1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7355 components: - type: Transform @@ -94557,7 +94779,7 @@ entities: pos: -24.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7930 components: - type: Transform @@ -94565,7 +94787,7 @@ entities: pos: -32.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7978 components: - type: Transform @@ -94573,7 +94795,7 @@ entities: pos: 30.5,1.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7987 components: - type: Transform @@ -94581,7 +94803,7 @@ entities: pos: -8.5,-59.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8128 components: - type: Transform @@ -94613,7 +94835,7 @@ entities: pos: -42.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8603 components: - type: Transform @@ -94621,7 +94843,7 @@ entities: pos: 31.5,14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8604 components: - type: Transform @@ -94644,7 +94866,7 @@ entities: pos: 17.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8694 components: - type: Transform @@ -94667,7 +94889,7 @@ entities: pos: -42.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8734 components: - type: Transform @@ -94683,14 +94905,14 @@ entities: pos: -47.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9267 components: - type: Transform pos: -19.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9406 components: - type: Transform @@ -94714,7 +94936,7 @@ entities: pos: 30.5,-11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9455 components: - type: Transform @@ -94737,7 +94959,7 @@ entities: pos: -18.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9634 components: - type: Transform @@ -94782,7 +95004,7 @@ entities: pos: -22.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10163 components: - type: Transform @@ -94821,14 +95043,14 @@ entities: pos: 9.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10596 components: - type: Transform pos: 0.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10718 components: - type: Transform @@ -94836,7 +95058,7 @@ entities: pos: -1.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10769 components: - type: Transform @@ -94866,7 +95088,7 @@ entities: pos: 19.5,5.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11041 components: - type: Transform @@ -94889,7 +95111,7 @@ entities: pos: -8.5,-57.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11120 components: - type: Transform @@ -94936,7 +95158,7 @@ entities: pos: 9.5,-61.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11619 components: - type: Transform @@ -94944,7 +95166,7 @@ entities: pos: -24.5,4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11621 components: - type: Transform @@ -94952,7 +95174,7 @@ entities: pos: 12.5,16.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11993 components: - type: Transform @@ -94976,7 +95198,7 @@ entities: pos: -8.5,-14.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12373 components: - type: Transform @@ -94992,7 +95214,7 @@ entities: pos: -34.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12396 components: - type: Transform @@ -95000,14 +95222,14 @@ entities: pos: -34.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12399 components: - type: Transform pos: -31.5,-35.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12454 components: - type: Transform @@ -95023,7 +95245,7 @@ entities: pos: -42.5,-34.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12458 components: - type: Transform @@ -95039,14 +95261,14 @@ entities: pos: -42.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12472 components: - type: Transform pos: -39.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12473 components: - type: Transform @@ -95077,7 +95299,7 @@ entities: pos: 37.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12681 components: - type: Transform @@ -95092,7 +95314,7 @@ entities: pos: -47.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12684 components: - type: Transform @@ -95108,7 +95330,7 @@ entities: pos: -14.5,-0.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12904 components: - type: Transform @@ -95124,7 +95346,7 @@ entities: pos: -47.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12952 components: - type: Transform @@ -95140,7 +95362,7 @@ entities: pos: -54.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13237 components: - type: Transform @@ -95148,7 +95370,7 @@ entities: pos: 30.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13365 components: - type: Transform @@ -95156,7 +95378,7 @@ entities: pos: 9.5,-32.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13419 components: - type: Transform @@ -95172,7 +95394,7 @@ entities: pos: 9.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13450 components: - type: Transform @@ -95180,7 +95402,7 @@ entities: pos: 9.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13451 components: - type: Transform @@ -95195,14 +95417,14 @@ entities: pos: 19.5,-21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13459 components: - type: Transform pos: 21.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13466 components: - type: Transform @@ -95226,7 +95448,7 @@ entities: pos: 45.5,-20.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13490 components: - type: Transform @@ -95249,7 +95471,7 @@ entities: pos: 33.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13505 components: - type: Transform @@ -95280,7 +95502,7 @@ entities: pos: 37.5,-10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13595 components: - type: Transform @@ -95288,7 +95510,7 @@ entities: pos: 37.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13596 components: - type: Transform @@ -95312,7 +95534,7 @@ entities: pos: 37.5,-17.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13611 components: - type: Transform @@ -95335,7 +95557,7 @@ entities: pos: 30.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13722 components: - type: Transform @@ -95357,7 +95579,7 @@ entities: pos: -19.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13868 components: - type: Transform @@ -95365,7 +95587,7 @@ entities: pos: -47.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13870 components: - type: Transform @@ -95381,7 +95603,7 @@ entities: pos: -47.5,-38.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13958 components: - type: Transform @@ -95389,7 +95611,7 @@ entities: pos: -24.5,-33.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13961 components: - type: Transform @@ -95397,7 +95619,7 @@ entities: pos: -24.5,-36.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13977 components: - type: Transform @@ -95405,7 +95627,7 @@ entities: pos: -20.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13982 components: - type: Transform @@ -95420,7 +95642,7 @@ entities: pos: -20.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14041 components: - type: Transform @@ -95441,7 +95663,7 @@ entities: pos: -15.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14088 components: - type: Transform @@ -95457,7 +95679,7 @@ entities: pos: 31.5,11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14140 components: - type: Transform @@ -95473,7 +95695,7 @@ entities: pos: 30.5,-6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14216 components: - type: Transform @@ -95497,7 +95719,7 @@ entities: pos: -12.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14325 components: - type: Transform @@ -95535,7 +95757,7 @@ entities: pos: -32.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14418 components: - type: Transform @@ -95543,7 +95765,7 @@ entities: pos: -15.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14440 components: - type: Transform @@ -95559,7 +95781,7 @@ entities: pos: -32.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14490 components: - type: Transform @@ -95567,7 +95789,7 @@ entities: pos: 40.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14522 components: - type: Transform @@ -95583,7 +95805,7 @@ entities: pos: -24.5,7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14551 components: - type: Transform @@ -95607,7 +95829,7 @@ entities: pos: -24.5,12.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14593 components: - type: Transform @@ -95639,7 +95861,7 @@ entities: pos: -15.5,-11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14652 components: - type: Transform @@ -95662,7 +95884,7 @@ entities: pos: -19.5,-18.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14674 components: - type: Transform @@ -95670,7 +95892,7 @@ entities: pos: -32.5,-70.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14682 components: - type: Transform @@ -95678,7 +95900,7 @@ entities: pos: -24.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14685 components: - type: Transform @@ -95694,7 +95916,7 @@ entities: pos: -24.5,-27.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14732 components: - type: Transform @@ -95718,7 +95940,7 @@ entities: pos: -32.5,-57.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14843 components: - type: Transform @@ -95726,7 +95948,7 @@ entities: pos: 16.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14869 components: - type: Transform @@ -95742,14 +95964,14 @@ entities: pos: -42.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14885 components: - type: Transform pos: -37.5,-52.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14887 components: - type: Transform @@ -95757,7 +95979,7 @@ entities: pos: 30.5,-8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14958 components: - type: Transform @@ -95772,7 +95994,7 @@ entities: pos: -9.5,-42.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15106 components: - type: Transform @@ -95780,7 +96002,7 @@ entities: pos: -6.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15161 components: - type: Transform @@ -95796,7 +96018,7 @@ entities: pos: -14.5,8.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15197 components: - type: Transform @@ -95811,7 +96033,7 @@ entities: pos: 5.5,10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15299 components: - type: Transform @@ -95819,7 +96041,7 @@ entities: pos: 19.5,-41.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15320 components: - type: Transform @@ -95843,7 +96065,7 @@ entities: pos: -38.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15935 components: - type: Transform @@ -95851,7 +96073,7 @@ entities: pos: -8.5,-49.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16127 components: - type: Transform @@ -95866,7 +96088,7 @@ entities: pos: -11.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16243 components: - type: Transform @@ -95874,7 +96096,7 @@ entities: pos: -27.5,-25.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16431 components: - type: Transform @@ -95889,7 +96111,7 @@ entities: pos: 15.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16953 components: - type: Transform @@ -95897,7 +96119,7 @@ entities: pos: -50.5,-22.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17136 components: - type: Transform @@ -95905,7 +96127,7 @@ entities: pos: 9.5,-40.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17362 components: - type: Transform @@ -95913,7 +96135,7 @@ entities: pos: 5.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17366 components: - type: Transform @@ -95967,7 +96189,7 @@ entities: pos: -11.5,-11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17798 components: - type: Transform @@ -95975,7 +96197,7 @@ entities: pos: -9.5,-11.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17881 components: - type: Transform @@ -96006,7 +96228,7 @@ entities: pos: 9.5,-56.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21077 components: - type: Transform @@ -96046,7 +96268,7 @@ entities: pos: 17.5,-44.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22320 components: - type: Transform @@ -96061,7 +96283,7 @@ entities: pos: 31.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22368 components: - type: Transform @@ -96077,7 +96299,7 @@ entities: pos: 28.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22378 components: - type: Transform @@ -96085,7 +96307,7 @@ entities: pos: 23.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22391 components: - type: Transform @@ -96107,7 +96329,7 @@ entities: pos: 33.5,19.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22409 components: - type: Transform @@ -96123,7 +96345,7 @@ entities: pos: 37.5,21.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22442 components: - type: Transform @@ -96145,7 +96367,7 @@ entities: pos: -6.5,-31.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23116 components: - type: Transform @@ -96161,7 +96383,7 @@ entities: pos: -34.5,-24.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23405 components: - type: Transform @@ -96187,7 +96409,7 @@ entities: pos: 29.5,-6.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1849 components: - type: Transform @@ -96216,14 +96438,14 @@ entities: pos: -11.5,-10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2024 components: - type: Transform pos: -10.5,-10.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4069 components: - type: Transform @@ -96307,7 +96529,7 @@ entities: pos: 29.5,-7.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16447 components: - type: Transform @@ -96387,7 +96609,7 @@ entities: pos: -9.5,-4.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2918 components: - type: Transform @@ -96415,7 +96637,7 @@ entities: pos: 32.5,-45.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9118 components: - type: Transform @@ -97900,6 +98122,17 @@ entities: - 21678 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 21899 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 50.5,-12.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 13549 + - type: AtmosPipeColor + color: '#0055CCFF' - uid: 22073 components: - type: Transform @@ -98244,7 +98477,7 @@ entities: deviceLists: - 13800 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 580 components: - type: Transform @@ -98255,7 +98488,7 @@ entities: deviceLists: - 14085 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 588 components: - type: Transform @@ -98266,7 +98499,7 @@ entities: deviceLists: - 9278 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 678 components: - type: Transform @@ -98276,7 +98509,7 @@ entities: deviceLists: - 2697 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 680 components: - type: Transform @@ -98286,7 +98519,7 @@ entities: deviceLists: - 2697 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 765 components: - type: Transform @@ -98297,7 +98530,7 @@ entities: deviceLists: - 14085 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 783 components: - type: Transform @@ -98305,7 +98538,7 @@ entities: pos: 27.5,0.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1016 components: - type: Transform @@ -98316,7 +98549,7 @@ entities: deviceLists: - 13665 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1163 components: - type: Transform @@ -98327,7 +98560,7 @@ entities: deviceLists: - 13549 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 1569 components: - type: Transform @@ -98350,7 +98583,7 @@ entities: deviceLists: - 11632 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2752 components: - type: Transform @@ -98361,7 +98594,7 @@ entities: deviceLists: - 5565 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 2849 components: - type: Transform @@ -98371,7 +98604,18 @@ entities: deviceLists: - 13089 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' + - uid: 3122 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,-12.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 13549 + - type: AtmosPipeColor + color: '#990000FF' - uid: 3375 components: - type: Transform @@ -98381,7 +98625,7 @@ entities: deviceLists: - 15894 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3486 components: - type: Transform @@ -98391,7 +98635,7 @@ entities: deviceLists: - 2583 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 3742 components: - type: Transform @@ -98399,7 +98643,7 @@ entities: pos: 14.5,-51.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - type: DeviceNetwork deviceLists: - 6547 @@ -98410,7 +98654,7 @@ entities: pos: 15.5,-48.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - type: DeviceNetwork deviceLists: - 103 @@ -98424,7 +98668,7 @@ entities: deviceLists: - 13658 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 4262 components: - type: Transform @@ -98435,7 +98679,7 @@ entities: deviceLists: - 13645 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5054 components: - type: Transform @@ -98446,7 +98690,7 @@ entities: deviceLists: - 13665 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 5823 components: - type: Transform @@ -98457,7 +98701,7 @@ entities: deviceLists: - 5030 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6501 components: - type: Transform @@ -98468,7 +98712,7 @@ entities: deviceLists: - 15894 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6545 components: - type: Transform @@ -98479,7 +98723,7 @@ entities: deviceLists: - 11632 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6614 components: - type: Transform @@ -98490,7 +98734,7 @@ entities: deviceLists: - 13645 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6725 components: - type: Transform @@ -98500,7 +98744,7 @@ entities: deviceLists: - 13665 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6759 components: - type: Transform @@ -98511,7 +98755,7 @@ entities: deviceLists: - 13653 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 6765 components: - type: Transform @@ -98522,7 +98766,7 @@ entities: deviceLists: - 13654 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7245 components: - type: Transform @@ -98532,7 +98776,7 @@ entities: deviceLists: - 2697 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7420 components: - type: Transform @@ -98543,7 +98787,7 @@ entities: deviceLists: - 11724 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 7478 components: - type: Transform @@ -98553,7 +98797,7 @@ entities: deviceLists: - 7632 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8014 components: - type: Transform @@ -98563,7 +98807,7 @@ entities: deviceLists: - 2583 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 8445 components: - type: Transform @@ -98573,7 +98817,7 @@ entities: deviceLists: - 8606 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9131 components: - type: Transform @@ -98584,7 +98828,7 @@ entities: deviceLists: - 15421 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9141 components: - type: Transform @@ -98595,7 +98839,7 @@ entities: deviceLists: - 11724 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9456 components: - type: Transform @@ -98606,7 +98850,7 @@ entities: deviceLists: - 7178 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 9627 components: - type: Transform @@ -98616,7 +98860,7 @@ entities: deviceLists: - 13793 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 10416 components: - type: Transform @@ -98627,7 +98871,7 @@ entities: deviceLists: - 11724 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11024 components: - type: Transform @@ -98637,7 +98881,7 @@ entities: deviceLists: - 15869 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11155 components: - type: Transform @@ -98648,7 +98892,7 @@ entities: deviceLists: - 3722 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11243 components: - type: Transform @@ -98659,7 +98903,7 @@ entities: deviceLists: - 9393 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11259 components: - type: Transform @@ -98669,7 +98913,7 @@ entities: deviceLists: - 15139 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11274 components: - type: Transform @@ -98680,7 +98924,7 @@ entities: deviceLists: - 5030 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11333 components: - type: Transform @@ -98691,7 +98935,7 @@ entities: deviceLists: - 19009 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11369 components: - type: Transform @@ -98702,7 +98946,7 @@ entities: deviceLists: - 29 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 11604 components: - type: Transform @@ -98713,7 +98957,7 @@ entities: deviceLists: - 9393 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12054 components: - type: Transform @@ -98724,7 +98968,7 @@ entities: deviceLists: - 11724 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12169 components: - type: Transform @@ -98735,7 +98979,7 @@ entities: deviceLists: - 14210 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12178 components: - type: Transform @@ -98746,7 +98990,7 @@ entities: deviceLists: - 11724 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12377 components: - type: Transform @@ -98757,7 +99001,7 @@ entities: deviceLists: - 15205 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12378 components: - type: Transform @@ -98768,7 +99012,7 @@ entities: deviceLists: - 13640 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12398 components: - type: Transform @@ -98779,7 +99023,7 @@ entities: deviceLists: - 16062 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12415 components: - type: Transform @@ -98790,7 +99034,7 @@ entities: deviceLists: - 15862 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12430 components: - type: Transform @@ -98801,7 +99045,7 @@ entities: deviceLists: - 14210 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12488 components: - type: Transform @@ -98812,7 +99056,7 @@ entities: deviceLists: - 16096 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 12602 components: - type: Transform @@ -98823,14 +99067,14 @@ entities: deviceLists: - 22439 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13045 components: - type: Transform pos: -54.5,-28.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13049 components: - type: Transform @@ -98838,7 +99082,7 @@ entities: pos: -58.5,-29.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13086 components: - type: Transform @@ -98849,7 +99093,7 @@ entities: deviceLists: - 14943 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13411 components: - type: Transform @@ -98860,7 +99104,7 @@ entities: deviceLists: - 22600 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13448 components: - type: Transform @@ -98871,7 +99115,7 @@ entities: deviceLists: - 2395 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13514 components: - type: Transform @@ -98882,7 +99126,7 @@ entities: deviceLists: - 13639 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13557 components: - type: Transform @@ -98893,7 +99137,7 @@ entities: deviceLists: - 13612 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13582 components: - type: Transform @@ -98904,7 +99148,7 @@ entities: deviceLists: - 22600 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13599 components: - type: Transform @@ -98915,7 +99159,7 @@ entities: deviceLists: - 13600 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13609 components: - type: Transform @@ -98925,7 +99169,7 @@ entities: deviceLists: - 81 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13614 components: - type: Transform @@ -98936,7 +99180,7 @@ entities: deviceLists: - 13612 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13634 components: - type: Transform @@ -98946,7 +99190,7 @@ entities: deviceLists: - 13638 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13641 components: - type: Transform @@ -98956,7 +99200,7 @@ entities: deviceLists: - 13657 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13790 components: - type: Transform @@ -98966,7 +99210,7 @@ entities: deviceLists: - 29 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13819 components: - type: Transform @@ -98977,7 +99221,7 @@ entities: deviceLists: - 13846 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13833 components: - type: Transform @@ -98988,7 +99232,7 @@ entities: deviceLists: - 13846 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 13850 components: - type: Transform @@ -98998,7 +99242,7 @@ entities: deviceLists: - 22071 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14002 components: - type: Transform @@ -99008,7 +99252,7 @@ entities: deviceLists: - 14004 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14020 components: - type: Transform @@ -99019,7 +99263,7 @@ entities: deviceLists: - 14047 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14030 components: - type: Transform @@ -99029,7 +99273,7 @@ entities: deviceLists: - 58 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14054 components: - type: Transform @@ -99040,7 +99284,7 @@ entities: deviceLists: - 14915 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14058 components: - type: Transform @@ -99051,7 +99295,7 @@ entities: deviceLists: - 14915 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14059 components: - type: Transform @@ -99062,7 +99306,7 @@ entities: deviceLists: - 14915 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14078 components: - type: Transform @@ -99073,7 +99317,7 @@ entities: deviceLists: - 409 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14089 components: - type: Transform @@ -99083,7 +99327,7 @@ entities: deviceLists: - 7632 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14130 components: - type: Transform @@ -99094,7 +99338,7 @@ entities: deviceLists: - 16098 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14378 components: - type: Transform @@ -99105,7 +99349,7 @@ entities: deviceLists: - 15331 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14468 components: - type: Transform @@ -99116,7 +99360,7 @@ entities: deviceLists: - 18900 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14588 components: - type: Transform @@ -99127,7 +99371,7 @@ entities: deviceLists: - 14595 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14589 components: - type: Transform @@ -99138,7 +99382,7 @@ entities: deviceLists: - 14595 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14619 components: - type: Transform @@ -99149,7 +99393,7 @@ entities: deviceLists: - 6203 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14620 components: - type: Transform @@ -99160,7 +99404,7 @@ entities: deviceLists: - 18900 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14706 components: - type: Transform @@ -99171,7 +99415,7 @@ entities: deviceLists: - 10102 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14709 components: - type: Transform @@ -99181,7 +99425,7 @@ entities: deviceLists: - 14733 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14710 components: - type: Transform @@ -99192,7 +99436,7 @@ entities: deviceLists: - 10102 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14730 components: - type: Transform @@ -99203,7 +99447,7 @@ entities: deviceLists: - 15331 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14867 components: - type: Transform @@ -99214,7 +99458,7 @@ entities: deviceLists: - 15862 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14878 components: - type: Transform @@ -99225,7 +99469,7 @@ entities: deviceLists: - 14595 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14886 components: - type: Transform @@ -99236,7 +99480,7 @@ entities: deviceLists: - 15869 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 14900 components: - type: Transform @@ -99246,7 +99490,7 @@ entities: deviceLists: - 15875 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15080 components: - type: Transform @@ -99257,7 +99501,7 @@ entities: deviceLists: - 15139 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15099 components: - type: Transform @@ -99268,7 +99512,7 @@ entities: deviceLists: - 3489 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15113 components: - type: Transform @@ -99278,7 +99522,7 @@ entities: deviceLists: - 15937 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15115 components: - type: Transform @@ -99289,7 +99533,7 @@ entities: deviceLists: - 17576 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15120 components: - type: Transform @@ -99300,7 +99544,7 @@ entities: deviceLists: - 13600 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15126 components: - type: Transform @@ -99311,7 +99555,7 @@ entities: deviceLists: - 22510 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15180 components: - type: Transform @@ -99322,7 +99566,7 @@ entities: deviceLists: - 8606 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15269 components: - type: Transform @@ -99332,7 +99576,7 @@ entities: deviceLists: - 15287 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15535 components: - type: Transform @@ -99342,7 +99586,7 @@ entities: deviceLists: - 22255 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15559 components: - type: Transform @@ -99352,7 +99596,7 @@ entities: deviceLists: - 22255 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15560 components: - type: Transform @@ -99362,7 +99606,7 @@ entities: deviceLists: - 22255 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15581 components: - type: Transform @@ -99372,7 +99616,7 @@ entities: deviceLists: - 22255 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 15879 components: - type: Transform @@ -99383,7 +99627,7 @@ entities: deviceLists: - 7178 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16129 components: - type: Transform @@ -99393,7 +99637,7 @@ entities: deviceLists: - 7931 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16139 components: - type: Transform @@ -99404,7 +99648,7 @@ entities: deviceLists: - 15937 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16164 components: - type: Transform @@ -99415,7 +99659,7 @@ entities: deviceLists: - 9309 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16166 components: - type: Transform @@ -99426,7 +99670,7 @@ entities: deviceLists: - 9309 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16260 components: - type: Transform @@ -99437,7 +99681,7 @@ entities: deviceLists: - 9309 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16302 components: - type: Transform @@ -99448,7 +99692,7 @@ entities: deviceLists: - 12518 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16309 components: - type: Transform @@ -99459,7 +99703,7 @@ entities: deviceLists: - 12518 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 16456 components: - type: Transform @@ -99478,7 +99722,7 @@ entities: deviceLists: - 13549 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17342 components: - type: Transform @@ -99488,7 +99732,7 @@ entities: deviceLists: - 17348 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17343 components: - type: Transform @@ -99498,7 +99742,7 @@ entities: deviceLists: - 17348 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17355 components: - type: Transform @@ -99509,7 +99753,7 @@ entities: deviceLists: - 17351 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17359 components: - type: Transform @@ -99519,7 +99763,7 @@ entities: deviceLists: - 17352 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17437 components: - type: Transform @@ -99529,7 +99773,7 @@ entities: deviceLists: - 13600 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 17561 components: - type: Transform @@ -99540,7 +99784,7 @@ entities: deviceLists: - 13655 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 18580 components: - type: Transform @@ -99551,7 +99795,7 @@ entities: deviceLists: - 2670 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19969 components: - type: Transform @@ -99561,7 +99805,7 @@ entities: deviceLists: - 14943 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 19983 components: - type: Transform @@ -99569,7 +99813,7 @@ entities: pos: -12.5,-13.5 parent: 2 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21067 components: - type: Transform @@ -99579,7 +99823,7 @@ entities: deviceLists: - 3722 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21421 components: - type: Transform @@ -99590,7 +99834,7 @@ entities: deviceLists: - 7178 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 21800 components: - type: Transform @@ -99601,7 +99845,7 @@ entities: deviceLists: - 9147 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22041 components: - type: Transform @@ -99611,7 +99855,7 @@ entities: deviceLists: - 21678 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22072 components: - type: Transform @@ -99621,7 +99865,7 @@ entities: deviceLists: - 14085 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22332 components: - type: Transform @@ -99631,7 +99875,7 @@ entities: deviceLists: - 21678 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22392 components: - type: Transform @@ -99642,7 +99886,7 @@ entities: deviceLists: - 22438 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22436 components: - type: Transform @@ -99653,7 +99897,7 @@ entities: deviceLists: - 22432 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 22451 components: - type: Transform @@ -99664,7 +99908,7 @@ entities: deviceLists: - 22439 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23058 components: - type: Transform @@ -99675,7 +99919,7 @@ entities: deviceLists: - 13665 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23059 components: - type: Transform @@ -99686,7 +99930,7 @@ entities: deviceLists: - 13665 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23082 components: - type: Transform @@ -99697,7 +99941,7 @@ entities: deviceLists: - 23067 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23090 components: - type: Transform @@ -99708,7 +99952,7 @@ entities: deviceLists: - 14004 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23102 components: - type: Transform @@ -99719,7 +99963,7 @@ entities: deviceLists: - 14019 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23103 components: - type: Transform @@ -99730,7 +99974,7 @@ entities: deviceLists: - 2583 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23106 components: - type: Transform @@ -99741,7 +99985,7 @@ entities: deviceLists: - 14795 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23131 components: - type: Transform @@ -99752,7 +99996,7 @@ entities: deviceLists: - 7178 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23171 components: - type: Transform @@ -99762,7 +100006,7 @@ entities: deviceLists: - 8983 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23174 components: - type: Transform @@ -99772,7 +100016,7 @@ entities: deviceLists: - 8983 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23195 components: - type: Transform @@ -99792,7 +100036,7 @@ entities: deviceLists: - 17445 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23372 components: - type: Transform @@ -99803,7 +100047,7 @@ entities: deviceLists: - 20239 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23375 components: - type: Transform @@ -99814,7 +100058,7 @@ entities: deviceLists: - 20239 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23513 components: - type: Transform @@ -99825,7 +100069,7 @@ entities: deviceLists: - 14019 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23519 components: - type: Transform @@ -99835,7 +100079,7 @@ entities: deviceLists: - 14019 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - uid: 23585 components: - type: Transform @@ -99846,7 +100090,7 @@ entities: deviceLists: - 23586 - type: AtmosPipeColor - color: '#FF1212FF' + color: '#990000FF' - proto: GasVentScrubberFreezer entities: - uid: 9463 @@ -100289,6 +100533,11 @@ entities: - type: Transform pos: 13.5,15.5 parent: 2 + - uid: 49 + components: + - type: Transform + pos: 6.5,-7.5 + parent: 2 - uid: 50 components: - type: Transform @@ -100304,11 +100553,31 @@ entities: - type: Transform pos: -19.5,-62.5 parent: 2 + - uid: 90 + components: + - type: Transform + pos: 8.5,-7.5 + parent: 2 + - uid: 94 + components: + - type: Transform + pos: 6.5,-11.5 + parent: 2 - uid: 99 components: - type: Transform pos: -9.5,14.5 parent: 2 + - uid: 101 + components: + - type: Transform + pos: 8.5,-11.5 + parent: 2 + - uid: 120 + components: + - type: Transform + pos: 52.5,-11.5 + parent: 2 - uid: 160 components: - type: Transform @@ -100389,11 +100658,6 @@ entities: - type: Transform pos: -33.5,-82.5 parent: 2 - - uid: 302 - components: - - type: Transform - pos: -18.5,3.5 - parent: 2 - uid: 309 components: - type: Transform @@ -100454,6 +100718,11 @@ entities: - type: Transform pos: -31.5,-0.5 parent: 2 + - uid: 410 + components: + - type: Transform + pos: 52.5,-13.5 + parent: 2 - uid: 422 components: - type: Transform @@ -100469,6 +100738,11 @@ entities: - type: Transform pos: -14.5,-19.5 parent: 2 + - uid: 513 + components: + - type: Transform + pos: 51.5,-10.5 + parent: 2 - uid: 601 components: - type: Transform @@ -100599,6 +100873,16 @@ entities: - type: Transform pos: -3.5,22.5 parent: 2 + - uid: 1008 + components: + - type: Transform + pos: 50.5,-10.5 + parent: 2 + - uid: 1012 + components: + - type: Transform + pos: 51.5,-14.5 + parent: 2 - uid: 1034 components: - type: Transform @@ -100854,11 +101138,6 @@ entities: - type: Transform pos: -36.5,-73.5 parent: 2 - - uid: 1920 - components: - - type: Transform - pos: 46.5,24.5 - parent: 2 - uid: 2009 components: - type: Transform @@ -100989,6 +101268,11 @@ entities: - type: Transform pos: -13.5,-61.5 parent: 2 + - uid: 2733 + components: + - type: Transform + pos: -44.5,0.5 + parent: 2 - uid: 2746 components: - type: Transform @@ -101179,6 +101463,11 @@ entities: - type: Transform pos: 12.5,-53.5 parent: 2 + - uid: 3719 + components: + - type: Transform + pos: 47.5,-14.5 + parent: 2 - uid: 3766 components: - type: Transform @@ -101229,6 +101518,11 @@ entities: - type: Transform pos: -28.5,-18.5 parent: 2 + - uid: 4005 + components: + - type: Transform + pos: 52.5,-12.5 + parent: 2 - uid: 4037 components: - type: Transform @@ -101454,6 +101748,11 @@ entities: - type: Transform pos: 12.5,-44.5 parent: 2 + - uid: 4138 + components: + - type: Transform + pos: -0.5,-41.5 + parent: 2 - uid: 4148 components: - type: Transform @@ -103974,11 +104273,6 @@ entities: - type: Transform pos: 49.5,-53.5 parent: 2 - - uid: 12989 - components: - - type: Transform - pos: -18.5,4.5 - parent: 2 - uid: 13032 components: - type: Transform @@ -104144,6 +104438,11 @@ entities: - type: Transform pos: 8.5,-41.5 parent: 2 + - uid: 13749 + components: + - type: Transform + pos: -18.5,3.5 + parent: 2 - uid: 13753 components: - type: Transform @@ -104369,11 +104668,6 @@ entities: - type: Transform pos: -4.5,23.5 parent: 2 - - uid: 14333 - components: - - type: Transform - pos: 46.5,25.5 - parent: 2 - uid: 14358 components: - type: Transform @@ -105059,6 +105353,11 @@ entities: - type: Transform pos: 66.5,11.5 parent: 2 + - uid: 17135 + components: + - type: Transform + pos: -18.5,4.5 + parent: 2 - uid: 17196 components: - type: Transform @@ -106959,11 +107258,6 @@ entities: - type: Transform pos: -44.5,1.5 parent: 2 - - uid: 20508 - components: - - type: Transform - pos: -44.5,0.5 - parent: 2 - uid: 20509 components: - type: Transform @@ -107719,6 +108013,21 @@ entities: - type: Transform pos: -35.5,6.5 parent: 2 + - uid: 23669 + components: + - type: Transform + pos: 46.5,24.5 + parent: 2 + - uid: 23670 + components: + - type: Transform + pos: 46.5,25.5 + parent: 2 + - uid: 23671 + components: + - type: Transform + pos: 46.5,26.5 + parent: 2 - proto: GrilleBroken entities: - uid: 1127 @@ -109674,6 +109983,13 @@ entities: - type: Transform pos: 9.5,-17.5 parent: 2 +- proto: HolopadGeneralArcade + entities: + - uid: 18611 + components: + - type: Transform + pos: 49.5,-12.5 + parent: 2 - proto: HolopadGeneralArrivals entities: - uid: 7942 @@ -110794,6 +111110,12 @@ entities: - type: Transform pos: -23.507505,21.644144 parent: 2 + - uid: 12390 + components: + - type: Transform + parent: 12365 + - type: Physics + canCollide: False - proto: LightBulbCrystalGreen entities: - uid: 9466 @@ -110815,6 +111137,12 @@ entities: - type: Transform pos: -23.736786,21.831776 parent: 2 + - uid: 12221 + components: + - type: Transform + parent: 12207 + - type: Physics + canCollide: False - proto: LightBulbCrystalRed entities: - uid: 9465 @@ -110854,25 +111182,35 @@ entities: - type: DeviceLinkSource linkedPorts: 11182: - - Pressed: Toggle + - - Pressed + - Toggle 2359: - - Pressed: Toggle + - - Pressed + - Toggle 3570: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 15932: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 14572: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 16028: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 13642: - - Pressed: Toggle + - - Pressed + - Toggle 11943: - - Pressed: Toggle + - - Pressed + - Toggle 12990: - - Pressed: Toggle + - - Pressed + - Toggle 2744: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonAtmospherics entities: - uid: 9424 @@ -110883,9 +111221,11 @@ entities: - type: DeviceLinkSource linkedPorts: 15216: - - Pressed: Toggle + - - Pressed + - Toggle 2010: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23155 components: - type: Transform @@ -110895,9 +111235,11 @@ entities: - type: DeviceLinkSource linkedPorts: 2010: - - Pressed: Toggle + - - Pressed + - Toggle 15216: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonBar entities: - uid: 18917 @@ -110908,13 +111250,17 @@ entities: - type: DeviceLinkSource linkedPorts: 6345: - - Pressed: Toggle + - - Pressed + - Toggle 2759: - - Pressed: Toggle + - - Pressed + - Toggle 12193: - - Pressed: Toggle + - - Pressed + - Toggle 16090: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonCaptain entities: - uid: 195 @@ -110926,23 +111272,32 @@ entities: - type: DeviceLinkSource linkedPorts: 4701: - - Pressed: Toggle + - - Pressed + - Toggle 4782: - - Pressed: Toggle + - - Pressed + - Toggle 4796: - - Pressed: Toggle + - - Pressed + - Toggle 4698: - - Pressed: Toggle + - - Pressed + - Toggle 4699: - - Pressed: Toggle + - - Pressed + - Toggle 4700: - - Pressed: Toggle + - - Pressed + - Toggle 4721: - - Pressed: Toggle + - - Pressed + - Toggle 186: - - Pressed: Toggle + - - Pressed + - Toggle 21880: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15649 components: - type: MetaData @@ -110954,9 +111309,11 @@ entities: - type: DeviceLinkSource linkedPorts: 15646: - - Pressed: Toggle + - - Pressed + - Toggle 15647: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23359 components: - type: MetaData @@ -110968,13 +111325,17 @@ entities: - type: DeviceLinkSource linkedPorts: 23360: - - Pressed: Toggle + - - Pressed + - Toggle 23378: - - Pressed: Toggle + - - Pressed + - Toggle 23362: - - Pressed: Toggle + - - Pressed + - Toggle 23361: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonCargo entities: - uid: 17447 @@ -110986,11 +111347,14 @@ entities: - type: DeviceLinkSource linkedPorts: 3501: - - Pressed: Toggle + - - Pressed + - Toggle 306: - - Pressed: Toggle + - - Pressed + - Toggle 368: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 17478 components: - type: Transform @@ -110999,7 +111363,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9057: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 17479 components: - type: Transform @@ -111008,7 +111373,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8141: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonChemistry entities: - uid: 21250 @@ -111022,29 +111388,41 @@ entities: - type: DeviceLinkSource linkedPorts: 11937: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 144: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 12508: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 21258: - - Pressed: Toggle + - - Pressed + - Toggle 21257: - - Pressed: Toggle + - - Pressed + - Toggle 21256: - - Pressed: Toggle + - - Pressed + - Toggle 21254: - - Pressed: Toggle + - - Pressed + - Toggle 21255: - - Pressed: Toggle + - - Pressed + - Toggle 21251: - - Pressed: Toggle + - - Pressed + - Toggle 21253: - - Pressed: Toggle + - - Pressed + - Toggle 21252: - - Pressed: Toggle + - - Pressed + - Toggle 10414: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - proto: LockableButtonChiefEngineer entities: - uid: 17055 @@ -111058,9 +111436,11 @@ entities: - type: DeviceLinkSource linkedPorts: 17052: - - Pressed: Toggle + - - Pressed + - Toggle 17053: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonChiefMedicalOfficer entities: - uid: 21233 @@ -111072,11 +111452,14 @@ entities: - type: DeviceLinkSource linkedPorts: 21229: - - Pressed: Toggle + - - Pressed + - Toggle 21230: - - Pressed: Toggle + - - Pressed + - Toggle 21231: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonCommand entities: - uid: 15629 @@ -111090,19 +111473,26 @@ entities: - type: DeviceLinkSource linkedPorts: 15630: - - Pressed: Toggle + - - Pressed + - Toggle 15631: - - Pressed: Toggle + - - Pressed + - Toggle 15632: - - Pressed: Toggle + - - Pressed + - Toggle 19577: - - Pressed: Toggle + - - Pressed + - Toggle 19574: - - Pressed: Toggle + - - Pressed + - Toggle 19576: - - Pressed: Toggle + - - Pressed + - Toggle 19575: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonEngineering entities: - uid: 11423 @@ -111116,11 +111506,14 @@ entities: - type: DeviceLinkSource linkedPorts: 11421: - - Pressed: Toggle + - - Pressed + - Toggle 11419: - - Pressed: Toggle + - - Pressed + - Toggle 4048: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23448 components: - type: Transform @@ -111129,18 +111522,12 @@ entities: parent: 2 - type: DeviceLinkSource linkedPorts: - 6850: - - Pressed: Toggle 9084: - - Pressed: Toggle - 7003: - - Pressed: Toggle - 1008: - - Pressed: Toggle + - - Pressed + - Toggle 1124: - - Pressed: Toggle - 1123: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23449 components: - type: Transform @@ -111148,18 +111535,9 @@ entities: parent: 2 - type: DeviceLinkSource linkedPorts: - 1008: - - Pressed: Toggle 1124: - - Pressed: Toggle - 1123: - - Pressed: Toggle - 6850: - - Pressed: Toggle - 9084: - - Pressed: Toggle - 7003: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23450 components: - type: Transform @@ -111168,18 +111546,9 @@ entities: parent: 2 - type: DeviceLinkSource linkedPorts: - 7003: - - Pressed: Toggle 9084: - - Pressed: Toggle - 6850: - - Pressed: Toggle - 1123: - - Pressed: Toggle - 1124: - - Pressed: Toggle - 1008: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonHeadOfPersonnel entities: - uid: 3577 @@ -111191,17 +111560,23 @@ entities: - type: DeviceLinkSource linkedPorts: 7609: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 7610: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 15654: - - Pressed: Toggle + - - Pressed + - Toggle 15749: - - Pressed: Toggle + - - Pressed + - Toggle 15656: - - Pressed: Toggle + - - Pressed + - Toggle 15657: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6338 components: - type: MetaData @@ -111212,7 +111587,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6351: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonHeadOfSecurity entities: - uid: 14821 @@ -111224,7 +111600,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7960: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonHydroponics entities: - uid: 16045 @@ -111236,15 +111613,20 @@ entities: - type: DeviceLinkSource linkedPorts: 3457: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 3456: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 16035: - - Pressed: Toggle + - - Pressed + - Toggle 16036: - - Pressed: Toggle + - - Pressed + - Toggle 16037: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonKitchen entities: - uid: 16023 @@ -111256,11 +111638,14 @@ entities: - type: DeviceLinkSource linkedPorts: 16025: - - Pressed: Toggle + - - Pressed + - Toggle 16026: - - Pressed: Toggle + - - Pressed + - Toggle 16027: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonMedical entities: - uid: 1550 @@ -111271,9 +111656,11 @@ entities: - type: DeviceLinkSource linkedPorts: 2273: - - Pressed: Open + - - Pressed + - Open 2287: - - Pressed: Open + - - Pressed + - Open - uid: 2322 components: - type: MetaData @@ -111285,9 +111672,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1781: - - Pressed: Open + - - Pressed + - Open 2509: - - Pressed: Open + - - Pressed + - Open - uid: 3097 components: - type: MetaData @@ -111299,9 +111688,11 @@ entities: - type: DeviceLinkSource linkedPorts: 506: - - Pressed: Open + - - Pressed + - Open 2244: - - Pressed: Open + - - Pressed + - Open - uid: 5377 components: - type: Transform @@ -111310,9 +111701,11 @@ entities: - type: DeviceLinkSource linkedPorts: 506: - - Pressed: Open + - - Pressed + - Open 2244: - - Pressed: Open + - - Pressed + - Open - uid: 5465 components: - type: Transform @@ -111322,9 +111715,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1095: - - Pressed: Open + - - Pressed + - Open 967: - - Pressed: Open + - - Pressed + - Open - uid: 6574 components: - type: Transform @@ -111334,9 +111729,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1781: - - Pressed: Open + - - Pressed + - Open 2509: - - Pressed: Open + - - Pressed + - Open - uid: 21239 components: - type: Transform @@ -111346,19 +111743,26 @@ entities: - type: DeviceLinkSource linkedPorts: 21234: - - Pressed: Toggle + - - Pressed + - Toggle 21235: - - Pressed: Toggle + - - Pressed + - Toggle 21236: - - Pressed: Toggle + - - Pressed + - Toggle 21237: - - Pressed: Toggle + - - Pressed + - Toggle 21238: - - Pressed: Toggle + - - Pressed + - Toggle 10771: - - Pressed: Toggle + - - Pressed + - Toggle 10807: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 21240 components: - type: Transform @@ -111368,19 +111772,26 @@ entities: - type: DeviceLinkSource linkedPorts: 21242: - - Pressed: Toggle + - - Pressed + - Toggle 21243: - - Pressed: Toggle + - - Pressed + - Toggle 21244: - - Pressed: Toggle + - - Pressed + - Toggle 21245: - - Pressed: Toggle + - - Pressed + - Toggle 21246: - - Pressed: Toggle + - - Pressed + - Toggle 21247: - - Pressed: Toggle + - - Pressed + - Toggle 21248: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 22775 components: - type: MetaData @@ -111391,15 +111802,20 @@ entities: - type: DeviceLinkSource linkedPorts: 22773: - - Pressed: Toggle + - - Pressed + - Toggle 22772: - - Pressed: Toggle + - - Pressed + - Toggle 22771: - - Pressed: Toggle + - - Pressed + - Toggle 22769: - - Pressed: Toggle + - - Pressed + - Toggle 22770: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonQuartermaster entities: - uid: 12052 @@ -111411,11 +111827,14 @@ entities: - type: DeviceLinkSource linkedPorts: 5439: - - Pressed: Toggle + - - Pressed + - Toggle 12072: - - Pressed: Toggle + - - Pressed + - Toggle 12076: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonResearch entities: - uid: 6273 @@ -111426,9 +111845,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4279: - - Pressed: Toggle + - - Pressed + - Toggle 6787: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15433 components: - type: Transform @@ -111438,7 +111859,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4531: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonResearchDirector entities: - uid: 17743 @@ -111452,19 +111874,26 @@ entities: - type: DeviceLinkSource linkedPorts: 19579: - - Pressed: Toggle + - - Pressed + - Toggle 15624: - - Pressed: Toggle + - - Pressed + - Toggle 17741: - - Pressed: Toggle + - - Pressed + - Toggle 19578: - - Pressed: Toggle + - - Pressed + - Toggle 17943: - - Pressed: Toggle + - - Pressed + - Toggle 17930: - - Pressed: Toggle + - - Pressed + - Toggle 17616: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonSecurity entities: - uid: 345 @@ -111478,11 +111907,14 @@ entities: - type: DeviceLinkSource linkedPorts: 21876: - - Pressed: Toggle + - - Pressed + - Toggle 22133: - - Pressed: Toggle + - - Pressed + - Toggle 710: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6146 components: - type: MetaData @@ -111494,17 +111926,23 @@ entities: - type: DeviceLinkSource linkedPorts: 22618: - - Pressed: Toggle + - - Pressed + - Toggle 22619: - - Pressed: Toggle + - - Pressed + - Toggle 22620: - - Pressed: Toggle + - - Pressed + - Toggle 22617: - - Pressed: Toggle + - - Pressed + - Toggle 22616: - - Pressed: Toggle + - - Pressed + - Toggle 22614: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 22713 components: - type: MetaData @@ -111516,9 +111954,11 @@ entities: - type: DeviceLinkSource linkedPorts: 10652: - - Pressed: Toggle + - - Pressed + - Toggle 2582: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 22723 components: - type: MetaData @@ -111530,15 +111970,20 @@ entities: - type: DeviceLinkSource linkedPorts: 813: - - Pressed: Toggle + - - Pressed + - Toggle 304: - - Pressed: Toggle + - - Pressed + - Toggle 22721: - - Pressed: Toggle + - - Pressed + - Toggle 22720: - - Pressed: Toggle + - - Pressed + - Toggle 22719: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 22728 components: - type: MetaData @@ -111550,11 +111995,14 @@ entities: - type: DeviceLinkSource linkedPorts: 2500: - - Pressed: Toggle + - - Pressed + - Toggle 22725: - - Pressed: Toggle + - - Pressed + - Toggle 22724: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonTheatre entities: - uid: 5329 @@ -111567,19 +112015,26 @@ entities: - type: DeviceLinkSource linkedPorts: 14006: - - Pressed: Toggle + - - Pressed + - Toggle 14012: - - Pressed: Toggle + - - Pressed + - Toggle 14774: - - Pressed: Toggle + - - Pressed + - Toggle 20173: - - Pressed: Toggle + - - Pressed + - Toggle 17722: - - Pressed: Toggle + - - Pressed + - Toggle 11980: - - Pressed: Toggle + - - Pressed + - Toggle 4890: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockerAtmosphericsFilledHardsuit entities: - uid: 1929 @@ -111709,11 +112164,6 @@ entities: parent: 2 - proto: LockerEvidence entities: - - uid: 465 - components: - - type: Transform - pos: -27.5,12.5 - parent: 2 - uid: 466 components: - type: Transform @@ -111935,16 +112385,6 @@ entities: parent: 2 - proto: LockerScienceFilled entities: - - uid: 1572 - components: - - type: Transform - pos: 35.5,-29.5 - parent: 2 - - uid: 1573 - components: - - type: Transform - pos: 33.5,-29.5 - parent: 2 - uid: 4175 components: - type: Transform @@ -111955,6 +112395,16 @@ entities: - type: Transform pos: 41.5,-38.5 parent: 2 + - uid: 12361 + components: + - type: Transform + pos: 27.5,-26.5 + parent: 2 + - uid: 12989 + components: + - type: Transform + pos: 33.5,-29.5 + parent: 2 - proto: LockerSecurityFilled entities: - uid: 2251 @@ -112061,7 +112511,8 @@ entities: - type: DeviceLinkSource linkedPorts: 294: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112077,11 +112528,11 @@ entities: - type: DeviceLinkSource linkedPorts: 21849: - - Output: DoorBolt + - - Output + - DoorBolt 1722: - - Output: DoorBolt - 5486: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112097,11 +112548,11 @@ entities: - type: DeviceLinkSource linkedPorts: 20665: - - Output: DoorBolt + - - Output + - DoorBolt 1756: - - Output: DoorBolt - 5486: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112119,7 +112570,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21863: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112134,7 +112586,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4729: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112149,7 +112602,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4772: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112164,7 +112618,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4773: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112180,7 +112635,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5764: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112196,7 +112652,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5184: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112211,7 +112668,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3999: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112227,7 +112685,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2672: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112243,7 +112702,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1067: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112259,7 +112719,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21912: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112275,7 +112736,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8740: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112291,7 +112753,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8579: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -112329,11 +112792,6 @@ entities: - type: Transform pos: 57.5,-60.5 parent: 2 - - uid: 23124 - components: - - type: Transform - pos: 1.5,-41.5 - parent: 2 - proto: LootSpawnerIndustrialFluff entities: - uid: 394 @@ -112428,16 +112886,6 @@ entities: - type: Transform pos: 57.5,-59.5 parent: 2 - - uid: 20759 - components: - - type: Transform - pos: 12.5,-14.5 - parent: 2 - - uid: 20766 - components: - - type: Transform - pos: 12.5,-13.5 - parent: 2 - proto: LootSpawnerMaterialsHighValue entities: - uid: 7599 @@ -112450,6 +112898,48 @@ entities: - type: Transform pos: -9.5,-87.5 parent: 2 +- proto: LootSpawnerMaterialsSurplus + entities: + - uid: 10939 + components: + - type: Transform + pos: 69.5,-65.5 + parent: 2 + - uid: 20766 + components: + - type: Transform + pos: 12.5,-14.5 + parent: 2 + - uid: 23676 + components: + - type: Transform + pos: 12.5,-13.5 + parent: 2 + - uid: 23683 + components: + - type: Transform + pos: 74.5,-76.5 + parent: 2 + - uid: 23684 + components: + - type: Transform + pos: 75.5,-56.5 + parent: 2 + - uid: 23685 + components: + - type: Transform + pos: 67.5,-43.5 + parent: 2 + - uid: 23686 + components: + - type: Transform + pos: 87.5,-16.5 + parent: 2 + - uid: 23687 + components: + - type: Transform + pos: 90.5,-16.5 + parent: 2 - proto: LootSpawnerMedicalClassy entities: - uid: 9326 @@ -112536,6 +113026,33 @@ entities: - type: Transform pos: 8.5,-19.5 parent: 2 +- proto: LootSpawnerRandomLockbox + entities: + - uid: 946 + components: + - type: Transform + pos: -0.5,-25.5 + parent: 2 + - uid: 23122 + components: + - type: Transform + pos: -22.5,19.5 + parent: 2 + - uid: 23688 + components: + - type: Transform + pos: -32.5,-16.5 + parent: 2 + - uid: 23721 + components: + - type: Transform + pos: -41.5,-50.5 + parent: 2 + - uid: 23722 + components: + - type: Transform + pos: 46.5,-56.5 + parent: 2 - proto: LootSpawnerRoboticsBorgModule entities: - uid: 6743 @@ -112844,6 +113361,13 @@ entities: - type: Transform pos: 59.5,-73.5 parent: 2 +- proto: MachineMaterialSilo + entities: + - uid: 12480 + components: + - type: Transform + pos: 32.5,-29.5 + parent: 2 - proto: MagazinePistolSubMachineGunTopMounted entities: - uid: 6884 @@ -113559,12 +114083,12 @@ entities: - uid: 4458 components: - type: Transform - pos: 18.459291,-26.389103 + pos: 21.302229,-23.509789 parent: 2 - uid: 6361 components: - type: Transform - pos: -11.694337,-48.372257 + pos: -11.495297,-47.294464 parent: 2 - proto: MaterialCloth1 entities: @@ -113602,7 +114126,7 @@ entities: - uid: 7551 components: - type: Transform - pos: -11.475477,-47.861485 + pos: -11.495297,-47.763542 parent: 2 - proto: MaterialWoodPlank entities: @@ -113986,20 +114510,6 @@ entities: parent: 2 - type: TimedSpawner chance: 0.2 - - uid: 2566 - components: - - type: Transform - pos: 46.5,10.5 - parent: 2 - - type: TimedSpawner - intervalSeconds: 840 - - uid: 7092 - components: - - type: Transform - pos: 4.5,-37.5 - parent: 2 - - type: TimedSpawner - chance: 0.2 - uid: 9136 components: - type: Transform @@ -114007,18 +114517,6 @@ entities: parent: 2 - type: TimedSpawner intervalSeconds: 720 - - uid: 13296 - components: - - type: Transform - pos: -44.5,-51.5 - parent: 2 - - uid: 16089 - components: - - type: Transform - pos: 7.5,-52.5 - parent: 2 - - type: TimedSpawner - chance: 0.2 - uid: 17636 components: - type: Transform @@ -114026,20 +114524,6 @@ entities: parent: 2 - type: TimedSpawner chance: 0.2 - - uid: 20634 - components: - - type: Transform - pos: -22.5,19.5 - parent: 2 - - type: TimedSpawner - intervalSeconds: 720 - - uid: 22636 - components: - - type: Transform - pos: 32.5,25.5 - parent: 2 - - type: TimedSpawner - chance: 0.2 - uid: 22786 components: - type: Transform @@ -114075,6 +114559,18 @@ entities: - type: Transform pos: 38.63871,-42.337013 parent: 2 +- proto: MysteryFigureBox + entities: + - uid: 12315 + components: + - type: Transform + pos: 48.029747,-13.54063 + parent: 2 + - uid: 23358 + components: + - type: Transform + pos: 47.862995,-13.227914 + parent: 2 - proto: NitrogenCanister entities: - uid: 399 @@ -114127,6 +114623,11 @@ entities: - type: Transform pos: 28.5,-4.5 parent: 2 + - uid: 12566 + components: + - type: Transform + pos: 52.5,-58.5 + parent: 2 - uid: 12682 components: - type: Transform @@ -114617,12 +115118,6 @@ entities: - type: Transform pos: -23.5,-18.5 parent: 2 - - uid: 13750 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -29.5,-24.5 - parent: 2 - proto: PaperBin20 entities: - uid: 1228 @@ -114661,12 +115156,10 @@ entities: - type: Transform pos: -19.5,-39.5 parent: 2 -- proto: PaperBin5 - entities: - - uid: 6189 + - uid: 23696 components: - type: Transform - pos: -11.5,-14.5 + pos: 21.5,-27.5 parent: 2 - proto: PaperCNCSheet entities: @@ -114995,6 +115488,13 @@ entities: - type: Transform pos: 25.5,-57.5 parent: 2 +- proto: Pitcher + entities: + - uid: 23121 + components: + - type: Transform + pos: -1.5223236,-41.239372 + parent: 2 - proto: PlantBag entities: - uid: 3459 @@ -115162,6 +115662,11 @@ entities: - type: Transform pos: 62.5,-79.5 parent: 2 + - uid: 23665 + components: + - type: Transform + pos: 14.443679,-53.340305 + parent: 2 - proto: PlushieLizardMirrored entities: - uid: 1797 @@ -115274,11 +115779,6 @@ entities: - type: Transform pos: 53.5,-56.5 parent: 2 - - uid: 21442 - components: - - type: Transform - pos: 0.5,-41.5 - parent: 2 - uid: 21843 components: - type: Transform @@ -115869,6 +116369,12 @@ entities: - type: Transform pos: -20.5,-2.5 parent: 2 + - uid: 23691 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 1.5,-39.5 + parent: 2 - proto: PowerDrill entities: - uid: 4425 @@ -116103,6 +116609,17 @@ entities: rot: -1.5707963267948966 rad pos: -32.5,-8.5 parent: 2 + - uid: 23672 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 45.5,24.5 + parent: 2 + - uid: 23673 + components: + - type: Transform + pos: 50.5,21.5 + parent: 2 - proto: Poweredlight entities: - uid: 173 @@ -116596,11 +117113,6 @@ entities: rot: 1.5707963267948966 rad pos: 52.5,-19.5 parent: 2 - - uid: 11844 - components: - - type: Transform - pos: 49.5,-15.5 - parent: 2 - uid: 11846 components: - type: Transform @@ -118331,6 +118843,50 @@ entities: rot: -1.5707963267948966 rad pos: 14.5,-5.5 parent: 2 + - uid: 12207 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,-13.5 + parent: 2 + - type: ContainerContainer + containers: + light_bulb: !type:ContainerSlot + showEnts: False + occludes: True + ent: 12221 + - type: ApcPowerReceiver + powerLoad: 60 + - type: DamageOnInteract + isDamageActive: False + - uid: 12365 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 48.5,-13.5 + parent: 2 + - type: ContainerContainer + containers: + light_bulb: !type:ContainerSlot + showEnts: False + occludes: True + ent: 12390 + - type: ApcPowerReceiver + powerLoad: 60 + - type: DamageOnInteract + isDamageActive: False + - uid: 23674 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.5,19.5 + parent: 2 + - uid: 23675 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 47.5,24.5 + parent: 2 - proto: PoweredStrobeLightEmpty entities: - uid: 14006 @@ -119158,11 +119714,6 @@ entities: rot: 1.5707963267948966 rad pos: 42.5,0.5 parent: 2 - - uid: 8873 - components: - - type: Transform - pos: 48.5,-11.5 - parent: 2 - uid: 8906 components: - type: Transform @@ -119662,11 +120213,6 @@ entities: rot: 1.5707963267948966 rad pos: 25.5,-49.5 parent: 2 - - uid: 23123 - components: - - type: Transform - pos: 1.5,-41.5 - parent: 2 - uid: 23328 components: - type: Transform @@ -120443,6 +120989,16 @@ entities: - type: Transform pos: 12.5,-62.5 parent: 2 + - uid: 12504 + components: + - type: Transform + pos: 48.5,-11.5 + parent: 2 + - uid: 12537 + components: + - type: Transform + pos: 51.5,-11.5 + parent: 2 - proto: RandomArtifactSpawner entities: - uid: 4547 @@ -120544,6 +121100,292 @@ entities: - type: Transform pos: 4.5,-16.5 parent: 2 +- proto: RandomCableApcExtensionSpawner + entities: + - uid: 608 + components: + - type: Transform + pos: 46.5,11.5 + parent: 2 + - uid: 609 + components: + - type: Transform + pos: 48.5,11.5 + parent: 2 + - uid: 718 + components: + - type: Transform + pos: 45.5,11.5 + parent: 2 + - uid: 904 + components: + - type: Transform + pos: 47.5,11.5 + parent: 2 + - uid: 940 + components: + - type: Transform + pos: 47.5,8.5 + parent: 2 + - uid: 1193 + components: + - type: Transform + pos: 51.5,-40.5 + parent: 2 + - uid: 2459 + components: + - type: Transform + pos: 55.5,-40.5 + parent: 2 + - uid: 2731 + components: + - type: Transform + pos: -36.5,-8.5 + parent: 2 + - uid: 2732 + components: + - type: Transform + pos: -44.5,-0.5 + parent: 2 + - uid: 20554 + components: + - type: Transform + pos: -41.5,-8.5 + parent: 2 + - uid: 20698 + components: + - type: Transform + pos: -44.5,0.5 + parent: 2 +- proto: RandomCableHVSpawner + entities: + - uid: 2965 + components: + - type: Transform + pos: -41.5,23.5 + parent: 2 + - uid: 7929 + components: + - type: Transform + pos: -43.5,23.5 + parent: 2 + - uid: 8334 + components: + - type: Transform + pos: -52.5,11.5 + parent: 2 + - uid: 17767 + components: + - type: Transform + pos: -53.5,16.5 + parent: 2 + - uid: 17769 + components: + - type: Transform + pos: -49.5,15.5 + parent: 2 + - uid: 17813 + components: + - type: Transform + pos: -54.5,14.5 + parent: 2 + - uid: 18082 + components: + - type: Transform + pos: -53.5,14.5 + parent: 2 + - uid: 18083 + components: + - type: Transform + pos: -52.5,16.5 + parent: 2 + - uid: 18084 + components: + - type: Transform + pos: -52.5,14.5 + parent: 2 + - uid: 18087 + components: + - type: Transform + pos: -50.5,16.5 + parent: 2 + - uid: 18088 + components: + - type: Transform + pos: -50.5,14.5 + parent: 2 + - uid: 18089 + components: + - type: Transform + pos: -51.5,15.5 + parent: 2 + - uid: 18150 + components: + - type: Transform + pos: -38.5,23.5 + parent: 2 + - uid: 18225 + components: + - type: Transform + pos: -48.5,11.5 + parent: 2 + - uid: 18721 + components: + - type: Transform + pos: -52.5,15.5 + parent: 2 + - uid: 18982 + components: + - type: Transform + pos: -67.5,-52.5 + parent: 2 + - uid: 20157 + components: + - type: Transform + pos: -71.5,-56.5 + parent: 2 + - uid: 20508 + components: + - type: Transform + pos: -48.5,15.5 + parent: 2 + - uid: 20549 + components: + - type: Transform + pos: -76.5,-54.5 + parent: 2 + - uid: 20565 + components: + - type: Transform + pos: -4.5,-9.5 + parent: 2 + - uid: 20568 + components: + - type: Transform + pos: -4.5,-10.5 + parent: 2 + - uid: 20749 + components: + - type: Transform + pos: 53.5,2.5 + parent: 2 + - uid: 21182 + components: + - type: Transform + pos: -66.5,-54.5 + parent: 2 + - uid: 21320 + components: + - type: Transform + pos: -49.5,23.5 + parent: 2 + - uid: 21377 + components: + - type: Transform + pos: -68.5,-54.5 + parent: 2 + - uid: 21399 + components: + - type: Transform + pos: -65.5,-54.5 + parent: 2 + - uid: 23419 + components: + - type: Transform + pos: -46.5,25.5 + parent: 2 + - uid: 23420 + components: + - type: Transform + pos: -50.5,24.5 + parent: 2 + - uid: 23700 + components: + - type: Transform + pos: -50.5,22.5 + parent: 2 + - uid: 23702 + components: + - type: Transform + pos: -75.5,-52.5 + parent: 2 + - uid: 23704 + components: + - type: Transform + pos: 57.5,2.5 + parent: 2 + - uid: 23705 + components: + - type: Transform + pos: -51.5,23.5 + parent: 2 + - uid: 23706 + components: + - type: Transform + pos: 59.5,2.5 + parent: 2 + - uid: 23707 + components: + - type: Transform + pos: 61.5,2.5 + parent: 2 + - uid: 23709 + components: + - type: Transform + pos: 63.5,2.5 + parent: 2 + - uid: 23710 + components: + - type: Transform + pos: -63.5,-53.5 + parent: 2 + - uid: 23711 + components: + - type: Transform + pos: 65.5,2.5 + parent: 2 + - uid: 23713 + components: + - type: Transform + pos: 67.5,2.5 + parent: 2 + - uid: 23714 + components: + - type: Transform + pos: -67.5,-53.5 + parent: 2 + - uid: 23716 + components: + - type: Transform + pos: 70.5,2.5 + parent: 2 + - uid: 23717 + components: + - type: Transform + pos: 62.5,3.5 + parent: 2 + - uid: 23718 + components: + - type: Transform + pos: 58.5,1.5 + parent: 2 + - uid: 23719 + components: + - type: Transform + pos: 66.5,3.5 + parent: 2 + - uid: 23720 + components: + - type: Transform + pos: 66.5,1.5 + parent: 2 +- proto: RandomCableMVSpawner + entities: + - uid: 20574 + components: + - type: Transform + pos: 40.5,18.5 + parent: 2 - proto: RandomDrinkBottle entities: - uid: 1844 @@ -120924,11 +121766,6 @@ entities: - type: Transform pos: 49.5,-41.5 parent: 2 - - uid: 16153 - components: - - type: Transform - pos: 53.5,-37.5 - parent: 2 - uid: 16155 components: - type: Transform @@ -121126,6 +121963,11 @@ entities: parent: 2 - proto: RandomPosterContraband entities: + - uid: 104 + components: + - type: Transform + pos: 52.5,-43.5 + parent: 2 - uid: 5583 components: - type: Transform @@ -121146,6 +121988,16 @@ entities: - type: Transform pos: -37.5,-18.5 parent: 2 + - uid: 12227 + components: + - type: Transform + pos: 54.5,-43.5 + parent: 2 + - uid: 12565 + components: + - type: Transform + pos: 57.5,-41.5 + parent: 2 - uid: 15739 components: - type: Transform @@ -121368,11 +122220,6 @@ entities: - type: Transform pos: 45.5,-26.5 parent: 2 - - uid: 16131 - components: - - type: Transform - pos: 50.5,-14.5 - parent: 2 - uid: 16133 components: - type: Transform @@ -122392,11 +123239,6 @@ entities: - type: Transform pos: 34.5,14.5 parent: 2 - - uid: 9333 - components: - - type: Transform - pos: 49.5,-15.5 - parent: 2 - proto: RandomVendingSnacks entities: - uid: 2604 @@ -122578,6 +123420,26 @@ entities: parent: 2 - proto: ReinforcedPlasmaWindow entities: + - uid: 11 + components: + - type: Transform + pos: 6.5,-11.5 + parent: 2 + - uid: 34 + components: + - type: Transform + pos: 8.5,-11.5 + parent: 2 + - uid: 37 + components: + - type: Transform + pos: 8.5,-7.5 + parent: 2 + - uid: 39 + components: + - type: Transform + pos: 6.5,-7.5 + parent: 2 - uid: 67 components: - type: Transform @@ -122845,6 +123707,16 @@ entities: - type: Transform pos: -22.5,-10.5 parent: 2 + - uid: 168 + components: + - type: Transform + pos: 47.5,-14.5 + parent: 2 + - uid: 169 + components: + - type: Transform + pos: 51.5,-10.5 + parent: 2 - uid: 181 components: - type: Transform @@ -122930,6 +123802,16 @@ entities: - type: Transform pos: -37.5,1.5 parent: 2 + - uid: 435 + components: + - type: Transform + pos: 52.5,-11.5 + parent: 2 + - uid: 482 + components: + - type: Transform + pos: 51.5,-14.5 + parent: 2 - uid: 515 components: - type: Transform @@ -123040,6 +123922,11 @@ entities: - type: Transform pos: -3.5,20.5 parent: 2 + - uid: 1013 + components: + - type: Transform + pos: 50.5,-10.5 + parent: 2 - uid: 1036 components: - type: Transform @@ -123845,11 +124732,6 @@ entities: - type: Transform pos: -31.5,25.5 parent: 2 - - uid: 5490 - components: - - type: Transform - pos: 46.5,24.5 - parent: 2 - uid: 5508 components: - type: Transform @@ -124430,11 +125312,6 @@ entities: - type: Transform pos: 49.5,-5.5 parent: 2 - - uid: 8571 - components: - - type: Transform - pos: 46.5,25.5 - parent: 2 - uid: 8583 components: - type: Transform @@ -124610,6 +125487,11 @@ entities: - type: Transform pos: -9.5,15.5 parent: 2 + - uid: 9436 + components: + - type: Transform + pos: 46.5,24.5 + parent: 2 - uid: 9541 components: - type: Transform @@ -124675,6 +125557,11 @@ entities: - type: Transform pos: -15.5,-45.5 parent: 2 + - uid: 10004 + components: + - type: Transform + pos: 52.5,-13.5 + parent: 2 - uid: 10136 components: - type: Transform @@ -124890,6 +125777,11 @@ entities: - type: Transform pos: 2.5,-83.5 parent: 2 + - uid: 11622 + components: + - type: Transform + pos: 52.5,-12.5 + parent: 2 - uid: 11654 components: - type: Transform @@ -125880,6 +126772,16 @@ entities: - type: Transform pos: -25.5,-57.5 parent: 2 + - uid: 23667 + components: + - type: Transform + pos: 46.5,25.5 + parent: 2 + - uid: 23668 + components: + - type: Transform + pos: 46.5,26.5 + parent: 2 - proto: RemoteSignaller entities: - uid: 4210 @@ -125897,11 +126799,14 @@ entities: - type: DeviceLinkSource linkedPorts: 306: - - Pressed: Toggle + - - Pressed + - Toggle 368: - - Pressed: Toggle + - - Pressed + - Toggle 3501: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8340 components: - type: MetaData @@ -125912,9 +126817,11 @@ entities: - type: DeviceLinkSource linkedPorts: 7263: - - Pressed: Toggle + - - Pressed + - Toggle 6578: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9536 components: - type: MetaData @@ -125925,9 +126832,11 @@ entities: - type: DeviceLinkSource linkedPorts: 7263: - - Pressed: Toggle + - - Pressed + - Toggle 6578: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 17983 components: - type: MetaData @@ -125938,11 +126847,14 @@ entities: - type: DeviceLinkSource linkedPorts: 306: - - Pressed: Toggle + - - Pressed + - Toggle 3501: - - Pressed: Toggle + - - Pressed + - Toggle 368: - - Pressed: Toggle + - - Pressed + - Toggle - proto: ResearchAndDevelopmentServer entities: - uid: 4170 @@ -126039,14 +126951,6 @@ entities: - type: Transform pos: -60.705425,-16.225351 parent: 2 -- proto: RobustHarvestChemistryBottle - entities: - - uid: 17487 - components: - - type: Transform - parent: 17443 - - type: Physics - canCollide: False - proto: RollingPin entities: - uid: 3297 @@ -126179,6 +127083,11 @@ entities: rot: 1.5707963267948966 rad pos: -27.5,-6.5 parent: 2 + - uid: 4007 + components: + - type: Transform + pos: 48.5,-14.5 + parent: 2 - uid: 5001 components: - type: Transform @@ -126576,6 +127485,11 @@ entities: parent: 2 - proto: SheetGlass entities: + - uid: 686 + components: + - type: Transform + pos: -49.460587,25.496906 + parent: 2 - uid: 2250 components: - type: Transform @@ -126618,6 +127532,13 @@ entities: - type: Transform pos: 63.470222,-39.49492 parent: 2 +- proto: SheetGlass10 + entities: + - uid: 12500 + components: + - type: Transform + pos: -62.530464,-55.57533 + parent: 2 - proto: SheetPaper1 entities: - uid: 5913 @@ -126694,7 +127615,7 @@ entities: - uid: 15461 components: - type: Transform - pos: -27.496117,6.6093388 + pos: -27.718145,6.9078503 parent: 2 - proto: SheetPlastic10 entities: @@ -126763,7 +127684,7 @@ entities: - uid: 14425 components: - type: Transform - pos: -27.496094,6.6315174 + pos: -27.716429,6.6061916 parent: 2 - uid: 16603 components: @@ -126777,11 +127698,6 @@ entities: parent: 2 - proto: SheetSteel10 entities: - - uid: 8876 - components: - - type: Transform - pos: 48.523438,-11.410342 - parent: 2 - uid: 18802 components: - type: Transform @@ -127508,7 +128424,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16099: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3255 components: - type: Transform @@ -127518,7 +128435,8 @@ entities: - type: DeviceLinkSource linkedPorts: 536: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 4282 components: - type: Transform @@ -127528,7 +128446,8 @@ entities: - type: DeviceLinkSource linkedPorts: 113: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4325 components: - type: Transform @@ -127537,7 +128456,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3508: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13730 components: - type: Transform @@ -127547,9 +128467,11 @@ entities: - type: DeviceLinkSource linkedPorts: 11992: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 11221: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 15842 components: - type: Transform @@ -127559,7 +128481,8 @@ entities: - type: DeviceLinkSource linkedPorts: 432: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 16054 components: - type: Transform @@ -127568,9 +128491,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5908: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 21405: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 16057 components: - type: Transform @@ -127580,9 +128505,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4677: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 6216: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 16058 components: - type: Transform @@ -127591,9 +128518,11 @@ entities: - type: DeviceLinkSource linkedPorts: 643: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 5910: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 16059 components: - type: Transform @@ -127603,9 +128532,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4671: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 4873: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 16117 components: - type: MetaData @@ -127617,7 +128548,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16118: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 17553 components: - type: MetaData @@ -127629,7 +128561,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17552: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 17657 components: - type: MetaData @@ -127641,7 +128574,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16102: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 19282 components: - type: MetaData @@ -127653,7 +128587,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12881: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 21408 components: - type: Transform @@ -127662,9 +128597,11 @@ entities: - type: DeviceLinkSource linkedPorts: 11833: - - Pressed: DoorBolt + - - Pressed + - DoorBolt 21406: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 21754 components: - type: MetaData @@ -127676,7 +128613,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21752: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 21755 components: - type: MetaData @@ -127688,7 +128626,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21751: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 22621 components: - type: Transform @@ -127698,7 +128637,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12433: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 3082 @@ -127711,9 +128651,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3778: - - Pressed: Toggle + - - Pressed + - Toggle 3779: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignAnomaly entities: - uid: 4573 @@ -127728,6 +128670,13 @@ entities: - type: Transform pos: 36.5,-33.5 parent: 2 +- proto: SignArcade + entities: + - uid: 5774 + components: + - type: Transform + pos: 50.5,-14.5 + parent: 2 - proto: SignArmory entities: - uid: 19999 @@ -128768,17 +129717,55 @@ entities: parent: 2 - proto: SolarPanel entities: - - uid: 34 + - uid: 532 components: - type: Transform - rot: 1.5707963267948966 rad - pos: -48.5,10.5 + pos: 59.5,0.5 parent: 2 - - uid: 49 + - uid: 553 components: - type: Transform rot: 1.5707963267948966 rad - pos: -47.5,10.5 + pos: -47.5,25.5 + parent: 2 + - uid: 572 + components: + - type: Transform + pos: -72.5,-49.5 + parent: 2 + - uid: 577 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -55.5,14.5 + parent: 2 + - uid: 596 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 61.5,6.5 + parent: 2 + - uid: 607 + components: + - type: Transform + pos: -72.5,-48.5 + parent: 2 + - uid: 694 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -49.5,27.5 + parent: 2 + - uid: 758 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -45.5,16.5 + parent: 2 + - uid: 764 + components: + - type: Transform + pos: -70.5,-60.5 parent: 2 - uid: 780 components: @@ -128786,6 +129773,88 @@ entities: rot: -1.5707963267948966 rad pos: 63.5,5.5 parent: 2 + - uid: 789 + components: + - type: Transform + pos: -76.5,-51.5 + parent: 2 + - uid: 818 + components: + - type: Transform + pos: -70.5,-48.5 + parent: 2 + - uid: 832 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -54.5,16.5 + parent: 2 + - uid: 840 + components: + - type: Transform + pos: -64.5,-50.5 + parent: 2 + - uid: 847 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -49.5,29.5 + parent: 2 + - uid: 957 + components: + - type: Transform + pos: 61.5,-0.5 + parent: 2 + - uid: 960 + components: + - type: Transform + pos: -53.5,29.5 + parent: 2 + - uid: 961 + components: + - type: Transform + pos: 65.5,-0.5 + parent: 2 + - uid: 978 + components: + - type: Transform + pos: -62.5,-51.5 + parent: 2 + - uid: 995 + components: + - type: Transform + pos: -55.5,25.5 + parent: 2 + - uid: 997 + components: + - type: Transform + pos: 63.5,-2.5 + parent: 2 + - uid: 998 + components: + - type: Transform + pos: -53.5,18.5 + parent: 2 + - uid: 1002 + components: + - type: Transform + pos: 67.5,-0.5 + parent: 2 + - uid: 1572 + components: + - type: Transform + pos: 57.5,-3.5 + parent: 2 + - uid: 1573 + components: + - type: Transform + pos: -56.5,16.5 + parent: 2 + - uid: 4925 + components: + - type: Transform + pos: -47.5,28.5 + parent: 2 - uid: 5067 components: - type: Transform @@ -128828,12 +129897,6 @@ entities: rot: -1.5707963267948966 rad pos: 65.5,5.5 parent: 2 - - uid: 5108 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 65.5,4.5 - parent: 2 - uid: 5109 components: - type: Transform @@ -128918,6 +129981,11 @@ entities: rot: 1.5707963267948966 rad pos: -45.5,12.5 parent: 2 + - uid: 5486 + components: + - type: Transform + pos: 65.5,4.5 + parent: 2 - uid: 5815 components: - type: Transform @@ -128941,12 +130009,6 @@ entities: rot: -1.5707963267948966 rad pos: 69.5,5.5 parent: 2 - - uid: 8973 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 61.5,6.5 - parent: 2 - uid: 8992 components: - type: Transform @@ -128970,11 +130032,6 @@ entities: - type: Transform pos: -68.5,-49.5 parent: 2 - - uid: 9399 - components: - - type: Transform - pos: -68.5,-48.5 - parent: 2 - uid: 9558 components: - type: Transform @@ -129008,11 +130065,6 @@ entities: - type: Transform pos: -64.5,-51.5 parent: 2 - - uid: 10096 - components: - - type: Transform - pos: -72.5,-51.5 - parent: 2 - uid: 10097 components: - type: Transform @@ -129048,16 +130100,6 @@ entities: - type: Transform pos: -72.5,-52.5 parent: 2 - - uid: 10420 - components: - - type: Transform - pos: -74.5,-51.5 - parent: 2 - - uid: 10425 - components: - - type: Transform - pos: -70.5,-48.5 - parent: 2 - uid: 10426 components: - type: Transform @@ -129068,16 +130110,6 @@ entities: - type: Transform pos: -64.5,-49.5 parent: 2 - - uid: 10430 - components: - - type: Transform - pos: -64.5,-50.5 - parent: 2 - - uid: 10432 - components: - - type: Transform - pos: -62.5,-51.5 - parent: 2 - uid: 10469 components: - type: Transform @@ -129095,12 +130127,6 @@ entities: - type: Transform pos: -70.5,-49.5 parent: 2 - - uid: 10494 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 63.5,-2.5 - parent: 2 - uid: 10640 components: - type: Transform @@ -129131,6 +130157,11 @@ entities: - type: Transform pos: -62.5,-48.5 parent: 2 + - uid: 10673 + components: + - type: Transform + pos: -68.5,-48.5 + parent: 2 - uid: 10678 components: - type: Transform @@ -129141,29 +130172,12 @@ entities: - type: Transform pos: -68.5,-57.5 parent: 2 - - uid: 10709 - components: - - type: Transform - pos: -66.5,-58.5 - parent: 2 - uid: 10787 components: - type: Transform rot: 1.5707963267948966 rad pos: -55.5,27.5 parent: 2 - - uid: 10788 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -53.5,29.5 - parent: 2 - - uid: 10789 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -53.5,28.5 - parent: 2 - uid: 10794 components: - type: Transform @@ -129188,12 +130202,6 @@ entities: rot: 1.5707963267948966 rad pos: -51.5,29.5 parent: 2 - - uid: 10808 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -51.5,25.5 - parent: 2 - uid: 10906 components: - type: Transform @@ -129272,18 +130280,17 @@ entities: rot: 1.5707963267948966 rad pos: -48.5,12.5 parent: 2 + - uid: 11343 + components: + - type: Transform + pos: -47.5,27.5 + parent: 2 - uid: 11401 components: - type: Transform rot: 1.5707963267948966 rad pos: -52.5,10.5 parent: 2 - - uid: 11402 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -55.5,12.5 - parent: 2 - uid: 11501 components: - type: Transform @@ -129296,24 +130303,12 @@ entities: rot: 1.5707963267948966 rad pos: -52.5,20.5 parent: 2 - - uid: 11905 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 65.5,-0.5 - parent: 2 - uid: 11906 components: - type: Transform rot: -1.5707963267948966 rad pos: 63.5,-3.5 parent: 2 - - uid: 12049 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 67.5,-0.5 - parent: 2 - uid: 12065 components: - type: Transform @@ -129326,11 +130321,30 @@ entities: rot: -1.5707963267948966 rad pos: 71.5,-1.5 parent: 2 + - uid: 12130 + components: + - type: Transform + pos: 57.5,-2.5 + parent: 2 + - uid: 12132 + components: + - type: Transform + pos: -48.5,10.5 + parent: 2 - uid: 12159 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 61.5,-0.5 + pos: 71.5,6.5 + parent: 2 + - uid: 12202 + components: + - type: Transform + pos: 65.5,-3.5 + parent: 2 + - uid: 12224 + components: + - type: Transform + pos: -55.5,12.5 parent: 2 - uid: 12298 components: @@ -129341,8 +130355,7 @@ entities: - uid: 12299 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 65.5,-3.5 + pos: -46.5,12.5 parent: 2 - uid: 12301 components: @@ -129350,12 +130363,50 @@ entities: rot: -1.5707963267948966 rad pos: 65.5,-2.5 parent: 2 + - uid: 12307 + components: + - type: Transform + pos: -72.5,-50.5 + parent: 2 - uid: 12312 components: - type: Transform rot: -1.5707963267948966 rad pos: 67.5,-2.5 parent: 2 + - uid: 12318 + components: + - type: Transform + pos: -66.5,-58.5 + parent: 2 + - uid: 12362 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -51.5,25.5 + parent: 2 + - uid: 12551 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 59.5,4.5 + parent: 2 + - uid: 12556 + components: + - type: Transform + pos: -76.5,-52.5 + parent: 2 + - uid: 12558 + components: + - type: Transform + pos: -74.5,-51.5 + parent: 2 + - uid: 12561 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 69.5,7.5 + parent: 2 - uid: 14217 components: - type: Transform @@ -129374,6 +130425,17 @@ entities: rot: -1.5707963267948966 rad pos: 63.5,-0.5 parent: 2 + - uid: 14281 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 63.5,-1.5 + parent: 2 + - uid: 14282 + components: + - type: Transform + pos: -72.5,-51.5 + parent: 2 - uid: 14283 components: - type: Transform @@ -129389,32 +130451,21 @@ entities: - type: Transform pos: -76.5,-57.5 parent: 2 - - uid: 15033 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 63.5,-1.5 - parent: 2 - - uid: 15034 - components: - - type: Transform - pos: -72.5,-50.5 - parent: 2 - uid: 15237 components: - type: Transform pos: -66.5,-57.5 parent: 2 - - uid: 15238 - components: - - type: Transform - pos: -66.5,-56.5 - parent: 2 - uid: 15295 components: - type: Transform pos: -70.5,-56.5 parent: 2 + - uid: 15705 + components: + - type: Transform + pos: -66.5,-56.5 + parent: 2 - uid: 16106 components: - type: Transform @@ -129427,11 +130478,29 @@ entities: rot: -1.5707963267948966 rad pos: 71.5,-3.5 parent: 2 + - uid: 16901 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 69.5,-2.5 + parent: 2 + - uid: 16905 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -53.5,28.5 + parent: 2 - uid: 16957 components: - type: Transform pos: -70.5,-59.5 parent: 2 + - uid: 16958 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 71.5,-0.5 + parent: 2 - uid: 16959 components: - type: Transform @@ -129467,12 +130536,6 @@ entities: - type: Transform pos: -64.5,-52.5 parent: 2 - - uid: 17298 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 71.5,-2.5 - parent: 2 - uid: 17300 components: - type: Transform @@ -129485,12 +130548,6 @@ entities: rot: -1.5707963267948966 rad pos: 65.5,0.5 parent: 2 - - uid: 17315 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 69.5,-2.5 - parent: 2 - uid: 17316 components: - type: Transform @@ -129509,6 +130566,12 @@ entities: rot: -1.5707963267948966 rad pos: 67.5,0.5 parent: 2 + - uid: 17458 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -47.5,10.5 + parent: 2 - uid: 17624 components: - type: Transform @@ -129520,12 +130583,6 @@ entities: rot: -1.5707963267948966 rad pos: 71.5,5.5 parent: 2 - - uid: 17761 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 71.5,6.5 - parent: 2 - uid: 17773 components: - type: Transform @@ -129542,12 +130599,6 @@ entities: - type: Transform pos: -74.5,-58.5 parent: 2 - - uid: 17800 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 69.5,7.5 - parent: 2 - uid: 17801 components: - type: Transform @@ -129577,6 +130628,12 @@ entities: - type: Transform pos: -74.5,-52.5 parent: 2 + - uid: 17810 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 71.5,-2.5 + parent: 2 - uid: 17811 components: - type: Transform @@ -129654,12 +130711,6 @@ entities: rot: 1.5707963267948966 rad pos: -44.5,20.5 parent: 2 - - uid: 18351 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 71.5,-0.5 - parent: 2 - uid: 18353 components: - type: Transform @@ -129738,12 +130789,6 @@ entities: rot: 1.5707963267948966 rad pos: -45.5,28.5 parent: 2 - - uid: 18382 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -45.5,16.5 - parent: 2 - uid: 18383 components: - type: Transform @@ -129756,18 +130801,6 @@ entities: rot: 1.5707963267948966 rad pos: -45.5,18.5 parent: 2 - - uid: 18388 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -46.5,12.5 - parent: 2 - - uid: 18389 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -53.5,18.5 - parent: 2 - uid: 18390 components: - type: Transform @@ -129822,12 +130855,6 @@ entities: rot: 1.5707963267948966 rad pos: -47.5,12.5 parent: 2 - - uid: 18399 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -55.5,25.5 - parent: 2 - uid: 18417 components: - type: Transform @@ -129852,171 +130879,87 @@ entities: rot: -1.5707963267948966 rad pos: 61.5,7.5 parent: 2 - - uid: 18611 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 59.5,4.5 - parent: 2 -- proto: SolarPanelBroken - entities: - - uid: 5762 - components: - - type: Transform - pos: -76.5,-51.5 - parent: 2 - - uid: 10409 - components: - - type: Transform - pos: -72.5,-48.5 - parent: 2 - - uid: 10410 - components: - - type: Transform - pos: -72.5,-49.5 - parent: 2 - - uid: 10673 - components: - - type: Transform - pos: -76.5,-52.5 - parent: 2 - - uid: 14281 + - uid: 20159 components: - type: Transform pos: -74.5,-59.5 parent: 2 - - uid: 14282 + - uid: 20161 components: - type: Transform pos: -76.5,-58.5 parent: 2 - - uid: 15705 + - uid: 20162 components: - type: Transform pos: -76.5,-50.5 parent: 2 - - uid: 15714 - components: - - type: Transform - pos: -70.5,-60.5 - parent: 2 - - uid: 16901 + - uid: 20164 components: - type: Transform pos: -72.5,-58.5 parent: 2 - - uid: 16905 + - uid: 20169 components: - type: Transform pos: -74.5,-49.5 parent: 2 - - uid: 16958 + - uid: 20171 components: - type: Transform pos: -70.5,-58.5 parent: 2 - - uid: 17810 + - uid: 20174 components: - type: Transform pos: -74.5,-48.5 parent: 2 - - uid: 20159 + - uid: 20177 components: - type: Transform pos: 57.5,-0.5 parent: 2 - - uid: 20161 + - uid: 20179 components: - type: Transform pos: 59.5,-3.5 parent: 2 - - uid: 20162 + - uid: 21450 components: - type: Transform pos: 59.5,-2.5 parent: 2 - - uid: 20163 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -55.5,14.5 - parent: 2 - - uid: 20164 + - uid: 23224 components: - type: Transform rot: 1.5707963267948966 rad pos: -56.5,14.5 parent: 2 - - uid: 20165 - components: - - type: Transform - pos: 57.5,-3.5 - parent: 2 - - uid: 20166 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -54.5,16.5 - parent: 2 - - uid: 20167 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -56.5,16.5 - parent: 2 - - uid: 20169 + - uid: 23225 components: - type: Transform rot: 1.5707963267948966 rad pos: -55.5,16.5 parent: 2 - - uid: 20170 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -49.5,27.5 - parent: 2 - - uid: 20171 + - uid: 23226 components: - type: Transform rot: 1.5707963267948966 rad pos: -49.5,28.5 parent: 2 - - uid: 20172 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -49.5,29.5 - parent: 2 - - uid: 20174 + - uid: 23689 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,29.5 parent: 2 - - uid: 20175 - components: - - type: Transform - pos: 59.5,0.5 - parent: 2 - - uid: 20176 - components: - - type: Transform - pos: 57.5,-2.5 - parent: 2 - - uid: 20177 + - uid: 23698 components: - type: Transform rot: 1.5707963267948966 rad pos: -47.5,26.5 parent: 2 - - uid: 20178 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -47.5,25.5 - parent: 2 - - uid: 20179 + - uid: 23699 components: - type: Transform pos: 57.5,0.5 @@ -130160,11 +131103,6 @@ entities: parent: 2 - proto: SpaceVillainArcadeComputerCircuitboard entities: - - uid: 8879 - components: - - type: Transform - pos: 47.48892,-12.3788 - parent: 2 - uid: 9538 components: - type: Transform @@ -130177,6 +131115,22 @@ entities: - type: Transform pos: 51.5,-15.5 parent: 2 + - uid: 3135 + components: + - type: Transform + pos: 50.5,-11.5 + parent: 2 + - uid: 12548 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 51.5,-13.5 + parent: 2 + - uid: 20636 + components: + - type: Transform + pos: 49.5,-11.5 + parent: 2 - proto: SpawnMechRipley entities: - uid: 1058 @@ -130972,6 +131926,11 @@ entities: parent: 2 - proto: SpawnPointSecurityCadet entities: + - uid: 1359 + components: + - type: Transform + pos: -25.5,10.5 + parent: 2 - uid: 4655 components: - type: Transform @@ -131508,11 +132467,22 @@ entities: rot: 3.141592653589793 rad pos: -30.055944,-19.08416 parent: 2 - - uid: 8882 + - uid: 12240 components: - type: Transform rot: 3.141592653589793 rad - pos: 47.478497,-12.295409 + pos: 47.60245,-12.292441 + parent: 2 + - uid: 12360 + components: + - type: Transform + pos: 51.437687,-12.292441 + parent: 2 + - uid: 18974 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 50.510143,-12.2298975 parent: 2 - proto: StoolBar entities: @@ -132056,6 +133026,16 @@ entities: - 0 - proto: SuitStorageEVAEmergency entities: + - uid: 127 + components: + - type: Transform + pos: 52.5,-63.5 + parent: 2 + - uid: 130 + components: + - type: Transform + pos: 52.5,-64.5 + parent: 2 - uid: 6392 components: - type: Transform @@ -132395,14 +133375,6 @@ entities: parent: 2 - type: SurveillanceCamera id: Disposals - - uid: 8554 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 50.5,-15.5 - parent: 2 - - type: SurveillanceCamera - id: Evac - North - uid: 10076 components: - type: Transform @@ -133305,6 +134277,11 @@ entities: - type: Transform pos: -19.5,-39.5 parent: 2 + - uid: 3490 + components: + - type: Transform + pos: 1.5,-39.5 + parent: 2 - uid: 3564 components: - type: Transform @@ -133345,11 +134322,6 @@ entities: - type: Transform pos: 26.5,-37.5 parent: 2 - - uid: 4274 - components: - - type: Transform - pos: 18.5,-26.5 - parent: 2 - uid: 4291 components: - type: Transform @@ -133745,11 +134717,6 @@ entities: - type: Transform pos: 48.5,-24.5 parent: 2 - - uid: 13749 - components: - - type: Transform - pos: -29.5,-24.5 - parent: 2 - uid: 13894 components: - type: Transform @@ -133975,11 +134942,6 @@ entities: - type: Transform pos: -33.5,18.5 parent: 2 - - uid: 20706 - components: - - type: Transform - pos: -11.5,-14.5 - parent: 2 - uid: 21398 components: - type: Transform @@ -134015,6 +134977,11 @@ entities: - type: Transform pos: 17.5,15.5 parent: 2 + - uid: 23695 + components: + - type: Transform + pos: 21.5,-27.5 + parent: 2 - proto: TableCarpet entities: - uid: 26 @@ -134373,6 +135340,16 @@ entities: - type: Transform pos: -24.5,-51.5 parent: 2 + - uid: 21894 + components: + - type: Transform + pos: 48.5,-13.5 + parent: 2 + - uid: 22025 + components: + - type: Transform + pos: 47.5,-13.5 + parent: 2 - uid: 23353 components: - type: Transform @@ -134928,11 +135905,6 @@ entities: rot: 3.141592653589793 rad pos: -31.5,-54.5 parent: 2 - - uid: 4934 - components: - - type: Transform - pos: -12.5,-48.5 - parent: 2 - uid: 5012 components: - type: Transform @@ -135899,7 +136871,7 @@ entities: - uid: 20222 components: - type: Transform - pos: -16.557547,-48.286213 + pos: -16.692001,-48.31601 parent: 2 - proto: ToyFigurineHeadOfSecurity entities: @@ -136014,11 +136986,6 @@ entities: - type: Transform pos: -36.5,-55.5 parent: 2 - - uid: 8887 - components: - - type: Transform - pos: 48.5,-12.5 - parent: 2 - uid: 9959 components: - type: Transform @@ -136034,6 +137001,11 @@ entities: - type: Transform pos: 15.5,-29.5 parent: 2 + - uid: 12353 + components: + - type: Transform + pos: 48.5,-13.5 + parent: 2 - uid: 17296 components: - type: Transform @@ -136098,21 +137070,33 @@ entities: - type: DeviceLinkSource linkedPorts: 1903: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 1933: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3487: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6837: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 6236 components: - type: Transform @@ -136121,33 +137105,54 @@ entities: - type: DeviceLinkSource linkedPorts: 9352: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 18127: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 18132: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9115: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 18131: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5314: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9114: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 6943 components: - type: Transform @@ -136156,11 +137161,15 @@ entities: - type: DeviceLinkSource linkedPorts: 2504: - - Right: Open - - Middle: Close + - - Right + - Open + - - Middle + - Close 18130: - - Left: Open - - Middle: Close + - - Left + - Open + - - Middle + - Close - uid: 11941 components: - type: Transform @@ -136169,21 +137178,33 @@ entities: - type: DeviceLinkSource linkedPorts: 11226: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4763: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11225: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11937: - - Middle: Close - - Right: AutoClose - - Left: AutoClose + - - Middle + - Close + - - Right + - AutoClose + - - Left + - AutoClose - uid: 14673 components: - type: Transform @@ -136192,17 +137213,26 @@ entities: - type: DeviceLinkSource linkedPorts: 14292: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14332: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14293: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 17984 components: - type: Transform @@ -136211,21 +137241,33 @@ entities: - type: DeviceLinkSource linkedPorts: 2671: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 1066: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3871: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2960: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 17985 components: - type: Transform @@ -136234,21 +137276,33 @@ entities: - type: DeviceLinkSource linkedPorts: 5321: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5354: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5362: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 1065: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 22008 components: - type: Transform @@ -136257,13 +137311,19 @@ entities: - type: DeviceLinkSource linkedPorts: 21999: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 21974: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - proto: UnfinishedMachineFrame entities: - uid: 14624 @@ -136631,10 +137691,10 @@ entities: parent: 2 - proto: VendingMachineSciDrobe entities: - - uid: 102 + - uid: 942 components: - type: Transform - pos: 27.5,-26.5 + pos: 35.5,-29.5 parent: 2 - proto: VendingMachineSec entities: @@ -136785,11 +137845,6 @@ entities: parent: 2 - proto: WallReinforced entities: - - uid: 9 - components: - - type: Transform - pos: -65.5,-15.5 - parent: 2 - uid: 12 components: - type: Transform @@ -136800,51 +137855,21 @@ entities: - type: Transform pos: -14.5,24.5 parent: 2 - - uid: 37 - components: - - type: Transform - pos: -5.5,17.5 - parent: 2 - uid: 60 components: - type: Transform pos: -18.5,24.5 parent: 2 - - uid: 90 - components: - - type: Transform - pos: -12.5,25.5 - parent: 2 - uid: 93 components: - type: Transform pos: -11.5,26.5 parent: 2 - - uid: 94 - components: - - type: Transform - pos: 1.5,27.5 - parent: 2 - - uid: 101 - components: - - type: Transform - pos: -15.5,24.5 - parent: 2 - - uid: 104 - components: - - type: Transform - pos: -13.5,24.5 - parent: 2 - uid: 106 components: - type: Transform pos: -12.5,24.5 parent: 2 - - uid: 117 - components: - - type: Transform - pos: 50.5,-45.5 - parent: 2 - uid: 125 components: - type: Transform @@ -136855,11 +137880,6 @@ entities: - type: Transform pos: 0.5,15.5 parent: 2 - - uid: 127 - components: - - type: Transform - pos: -6.5,20.5 - parent: 2 - uid: 138 components: - type: Transform @@ -136885,16 +137905,6 @@ entities: - type: Transform pos: 9.5,15.5 parent: 2 - - uid: 168 - components: - - type: Transform - pos: -21.5,0.5 - parent: 2 - - uid: 169 - components: - - type: Transform - pos: -17.5,0.5 - parent: 2 - uid: 185 components: - type: Transform @@ -136920,11 +137930,6 @@ entities: - type: Transform pos: -35.5,10.5 parent: 2 - - uid: 222 - components: - - type: Transform - pos: 50.5,-46.5 - parent: 2 - uid: 235 components: - type: Transform @@ -136940,21 +137945,6 @@ entities: - type: Transform pos: 55.5,-56.5 parent: 2 - - uid: 248 - components: - - type: Transform - pos: -69.5,-8.5 - parent: 2 - - uid: 259 - components: - - type: Transform - pos: -30.5,5.5 - parent: 2 - - uid: 263 - components: - - type: Transform - pos: 4.5,-86.5 - parent: 2 - uid: 275 components: - type: Transform @@ -136970,11 +137960,6 @@ entities: - type: Transform pos: -24.5,18.5 parent: 2 - - uid: 311 - components: - - type: Transform - pos: -28.5,-57.5 - parent: 2 - uid: 314 components: - type: Transform @@ -136983,18 +137968,13 @@ entities: - uid: 327 components: - type: Transform - pos: 56.5,-46.5 + pos: -70.5,-14.5 parent: 2 - uid: 333 components: - type: Transform pos: -36.5,8.5 parent: 2 - - uid: 337 - components: - - type: Transform - pos: -3.5,-87.5 - parent: 2 - uid: 338 components: - type: Transform @@ -137003,7 +137983,7 @@ entities: - uid: 352 components: - type: Transform - pos: -31.5,5.5 + pos: -41.5,4.5 parent: 2 - uid: 366 components: @@ -137013,12 +137993,12 @@ entities: - uid: 370 components: - type: Transform - pos: 42.5,-63.5 + pos: -69.5,-9.5 parent: 2 - uid: 392 components: - type: Transform - pos: -37.5,0.5 + pos: 50.5,-14.5 parent: 2 - uid: 396 components: @@ -137040,16 +138020,6 @@ entities: - type: Transform pos: -37.5,-0.5 parent: 2 - - uid: 410 - components: - - type: Transform - pos: 45.5,-49.5 - parent: 2 - - uid: 411 - components: - - type: Transform - pos: -28.5,17.5 - parent: 2 - uid: 414 components: - type: Transform @@ -137070,11 +138040,6 @@ entities: - type: Transform pos: 13.5,1.5 parent: 2 - - uid: 435 - components: - - type: Transform - pos: 59.5,-45.5 - parent: 2 - uid: 436 components: - type: Transform @@ -137095,21 +138060,11 @@ entities: - type: Transform pos: -11.5,7.5 parent: 2 - - uid: 513 - components: - - type: Transform - pos: -36.5,-11.5 - parent: 2 - uid: 520 components: - type: Transform pos: -29.5,13.5 parent: 2 - - uid: 521 - components: - - type: Transform - pos: -9.5,-54.5 - parent: 2 - uid: 527 components: - type: Transform @@ -137120,51 +138075,21 @@ entities: - type: Transform pos: 60.5,-46.5 parent: 2 - - uid: 532 - components: - - type: Transform - pos: 44.5,-49.5 - parent: 2 - uid: 534 components: - type: Transform pos: 25.5,-38.5 parent: 2 - - uid: 538 - components: - - type: Transform - pos: 7.5,1.5 - parent: 2 - uid: 545 components: - type: Transform pos: 42.5,-50.5 parent: 2 - - uid: 553 - components: - - type: Transform - pos: 38.5,-62.5 - parent: 2 - uid: 554 components: - type: Transform pos: 41.5,-62.5 parent: 2 - - uid: 557 - components: - - type: Transform - pos: 50.5,-74.5 - parent: 2 - - uid: 572 - components: - - type: Transform - pos: 44.5,-47.5 - parent: 2 - - uid: 577 - components: - - type: Transform - pos: 5.5,7.5 - parent: 2 - uid: 581 components: - type: Transform @@ -137175,11 +138100,6 @@ entities: - type: Transform pos: 3.5,-85.5 parent: 2 - - uid: 596 - components: - - type: Transform - pos: 41.5,-50.5 - parent: 2 - uid: 605 components: - type: Transform @@ -137190,31 +138110,11 @@ entities: - type: Transform pos: -13.5,4.5 parent: 2 - - uid: 607 - components: - - type: Transform - pos: 5.5,-7.5 - parent: 2 - - uid: 608 - components: - - type: Transform - pos: -13.5,2.5 - parent: 2 - - uid: 609 - components: - - type: Transform - pos: -13.5,3.5 - parent: 2 - uid: 623 components: - type: Transform pos: 37.5,-64.5 parent: 2 - - uid: 648 - components: - - type: Transform - pos: -21.5,-12.5 - parent: 2 - uid: 650 components: - type: Transform @@ -137225,91 +138125,26 @@ entities: - type: Transform pos: 47.5,-49.5 parent: 2 - - uid: 686 - components: - - type: Transform - pos: -28.5,7.5 - parent: 2 - uid: 687 components: - type: Transform pos: -37.5,10.5 parent: 2 - - uid: 700 - components: - - type: Transform - pos: -31.5,1.5 - parent: 2 - - uid: 718 - components: - - type: Transform - pos: 9.5,-11.5 - parent: 2 - - uid: 733 - components: - - type: Transform - pos: -0.5,9.5 - parent: 2 - - uid: 738 - components: - - type: Transform - pos: 7.5,27.5 - parent: 2 - uid: 739 components: - type: Transform pos: 8.5,27.5 parent: 2 - - uid: 740 - components: - - type: Transform - pos: 0.5,27.5 - parent: 2 - - uid: 758 - components: - - type: Transform - pos: 49.5,-14.5 - parent: 2 - - uid: 764 - components: - - type: Transform - pos: -28.5,27.5 - parent: 2 - - uid: 789 - components: - - type: Transform - pos: 44.5,-43.5 - parent: 2 - - uid: 818 - components: - - type: Transform - pos: 2.5,-85.5 - parent: 2 - uid: 820 components: - type: Transform pos: -12.5,26.5 parent: 2 - - uid: 825 - components: - - type: Transform - pos: 56.5,-43.5 - parent: 2 - - uid: 832 - components: - - type: Transform - pos: -21.5,28.5 - parent: 2 - uid: 839 components: - type: Transform pos: -20.5,27.5 parent: 2 - - uid: 840 - components: - - type: Transform - pos: -23.5,-14.5 - parent: 2 - uid: 842 components: - type: Transform @@ -137320,11 +138155,6 @@ entities: - type: Transform pos: -3.5,26.5 parent: 2 - - uid: 847 - components: - - type: Transform - pos: -5.5,20.5 - parent: 2 - uid: 869 components: - type: Transform @@ -137360,46 +138190,16 @@ entities: - type: Transform pos: -18.5,23.5 parent: 2 - - uid: 939 - components: - - type: Transform - pos: -3.5,21.5 - parent: 2 - - uid: 941 - components: - - type: Transform - pos: 25.5,23.5 - parent: 2 - - uid: 942 - components: - - type: Transform - pos: 26.5,24.5 - parent: 2 - uid: 945 components: - type: Transform pos: -37.5,8.5 parent: 2 - - uid: 946 - components: - - type: Transform - pos: 14.5,-16.5 - parent: 2 - uid: 947 components: - type: Transform pos: 24.5,23.5 parent: 2 - - uid: 960 - components: - - type: Transform - pos: 5.5,-11.5 - parent: 2 - - uid: 961 - components: - - type: Transform - pos: -40.5,6.5 - parent: 2 - uid: 962 components: - type: Transform @@ -137420,16 +138220,6 @@ entities: - type: Transform pos: -1.5,13.5 parent: 2 - - uid: 995 - components: - - type: Transform - pos: -0.5,13.5 - parent: 2 - - uid: 998 - components: - - type: Transform - pos: -71.5,-13.5 - parent: 2 - uid: 999 components: - type: Transform @@ -137455,55 +138245,30 @@ entities: - type: Transform pos: 7.5,15.5 parent: 2 - - uid: 1011 - components: - - type: Transform - pos: 0.5,-85.5 - parent: 2 - - uid: 1012 - components: - - type: Transform - pos: -3.5,17.5 - parent: 2 - - uid: 1013 - components: - - type: Transform - pos: 7.5,13.5 - parent: 2 - uid: 1020 components: - type: Transform pos: -71.5,-16.5 parent: 2 - - uid: 1025 - components: - - type: Transform - pos: -58.5,-10.5 - parent: 2 - uid: 1037 components: - type: Transform pos: 24.5,19.5 parent: 2 - - uid: 1042 - components: - - type: Transform - pos: -2.5,27.5 - parent: 2 - uid: 1044 components: - type: Transform pos: -1.5,27.5 parent: 2 - - uid: 1045 + - uid: 1082 components: - type: Transform - pos: -0.5,27.5 + pos: -28.5,-57.5 parent: 2 - - uid: 1070 + - uid: 1083 components: - type: Transform - pos: 24.5,18.5 + pos: 56.5,-46.5 parent: 2 - uid: 1084 components: @@ -137515,6 +138280,11 @@ entities: - type: Transform pos: -70.5,-13.5 parent: 2 + - uid: 1101 + components: + - type: Transform + pos: -31.5,5.5 + parent: 2 - uid: 1102 components: - type: Transform @@ -137533,17 +138303,7 @@ entities: - uid: 1109 components: - type: Transform - pos: -71.5,-9.5 - parent: 2 - - uid: 1110 - components: - - type: Transform - pos: 27.5,18.5 - parent: 2 - - uid: 1112 - components: - - type: Transform - pos: 27.5,17.5 + pos: 59.5,-45.5 parent: 2 - uid: 1114 components: @@ -137553,12 +138313,12 @@ entities: - uid: 1115 components: - type: Transform - pos: -5.5,13.5 + pos: 7.5,1.5 parent: 2 - uid: 1122 components: - type: Transform - pos: -31.5,10.5 + pos: 41.5,-50.5 parent: 2 - uid: 1128 components: @@ -137578,7 +138338,7 @@ entities: - uid: 1137 components: - type: Transform - pos: -31.5,11.5 + pos: -13.5,3.5 parent: 2 - uid: 1146 components: @@ -137595,11 +138355,6 @@ entities: - type: Transform pos: 46.5,-49.5 parent: 2 - - uid: 1150 - components: - - type: Transform - pos: 52.5,-43.5 - parent: 2 - uid: 1151 components: - type: Transform @@ -137615,11 +138370,6 @@ entities: - type: Transform pos: 53.5,-43.5 parent: 2 - - uid: 1168 - components: - - type: Transform - pos: -19.5,40.5 - parent: 2 - uid: 1178 components: - type: Transform @@ -137633,27 +138383,22 @@ entities: - uid: 1231 components: - type: Transform - pos: -37.5,6.5 + pos: 56.5,-43.5 parent: 2 - uid: 1241 components: - type: Transform pos: 4.5,-5.5 parent: 2 - - uid: 1245 - components: - - type: Transform - pos: 4.5,27.5 - parent: 2 - uid: 1252 components: - type: Transform - pos: -18.5,-5.5 + pos: -5.5,20.5 parent: 2 - uid: 1255 components: - type: Transform - pos: 11.5,-14.5 + pos: -3.5,21.5 parent: 2 - uid: 1294 components: @@ -137663,23 +138408,18 @@ entities: - uid: 1303 components: - type: Transform - pos: -22.5,15.5 + pos: 25.5,23.5 + parent: 2 + - uid: 1324 + components: + - type: Transform + pos: 26.5,24.5 parent: 2 - uid: 1356 components: - type: Transform pos: -3.5,25.5 parent: 2 - - uid: 1359 - components: - - type: Transform - pos: 10.5,29.5 - parent: 2 - - uid: 1376 - components: - - type: Transform - pos: 9.5,27.5 - parent: 2 - uid: 1377 components: - type: Transform @@ -137695,6 +138435,11 @@ entities: - type: Transform pos: 50.5,18.5 parent: 2 + - uid: 1392 + components: + - type: Transform + pos: -0.5,13.5 + parent: 2 - uid: 1399 components: - type: Transform @@ -137703,7 +138448,7 @@ entities: - uid: 1419 components: - type: Transform - pos: -8.5,5.5 + pos: -71.5,-13.5 parent: 2 - uid: 1420 components: @@ -137733,7 +138478,7 @@ entities: - uid: 1425 components: - type: Transform - pos: -4.5,5.5 + pos: 0.5,-85.5 parent: 2 - uid: 1426 components: @@ -137755,11 +138500,6 @@ entities: - type: Transform pos: -0.5,5.5 parent: 2 - - uid: 1432 - components: - - type: Transform - pos: -0.5,4.5 - parent: 2 - uid: 1433 components: - type: Transform @@ -137780,20 +138520,10 @@ entities: - type: Transform pos: -0.5,3.5 parent: 2 - - uid: 1439 - components: - - type: Transform - pos: -2.5,3.5 - parent: 2 - - uid: 1440 - components: - - type: Transform - pos: -2.5,4.5 - parent: 2 - uid: 1441 components: - type: Transform - pos: -4.5,4.5 + pos: -71.5,-9.5 parent: 2 - uid: 1443 components: @@ -137805,31 +138535,26 @@ entities: - type: Transform pos: -8.5,3.5 parent: 2 + - uid: 1448 + components: + - type: Transform + pos: 27.5,18.5 + parent: 2 - uid: 1449 components: - type: Transform - pos: 5.5,6.5 - parent: 2 - - uid: 1451 - components: - - type: Transform - pos: 5.5,4.5 + pos: 27.5,17.5 parent: 2 - uid: 1462 components: - type: Transform - pos: 5.5,3.5 + pos: -31.5,10.5 parent: 2 - uid: 1483 components: - type: Transform pos: -28.5,-49.5 parent: 2 - - uid: 1484 - components: - - type: Transform - pos: -13.5,0.5 - parent: 2 - uid: 1488 components: - type: Transform @@ -137838,7 +138563,7 @@ entities: - uid: 1491 components: - type: Transform - pos: -11.5,9.5 + pos: 11.5,-14.5 parent: 2 - uid: 1494 components: @@ -137850,11 +138575,6 @@ entities: - type: Transform pos: 45.5,-91.5 parent: 2 - - uid: 1530 - components: - - type: Transform - pos: 42.5,-26.5 - parent: 2 - uid: 1534 components: - type: Transform @@ -137873,7 +138593,7 @@ entities: - uid: 1589 components: - type: Transform - pos: -18.5,-3.5 + pos: -4.5,5.5 parent: 2 - uid: 1614 components: @@ -137885,20 +138605,30 @@ entities: - type: Transform pos: 47.5,-43.5 parent: 2 - - uid: 1663 + - uid: 1659 components: - type: Transform - pos: -24.5,-13.5 + pos: -0.5,4.5 + parent: 2 + - uid: 1668 + components: + - type: Transform + pos: 5.5,6.5 + parent: 2 + - uid: 1680 + components: + - type: Transform + pos: 5.5,4.5 parent: 2 - uid: 1682 components: - type: Transform - pos: -27.5,-57.5 + pos: 5.5,3.5 parent: 2 - uid: 1691 components: - type: Transform - pos: 13.5,29.5 + pos: -11.5,9.5 parent: 2 - uid: 1707 components: @@ -137915,11 +138645,21 @@ entities: - type: Transform pos: 44.5,-15.5 parent: 2 - - uid: 1843 + - uid: 1813 components: - type: Transform pos: -30.5,-60.5 parent: 2 + - uid: 1823 + components: + - type: Transform + pos: -27.5,-64.5 + parent: 2 + - uid: 1843 + components: + - type: Transform + pos: -29.5,-65.5 + parent: 2 - uid: 1858 components: - type: Transform @@ -137950,11 +138690,6 @@ entities: - type: Transform pos: 10.5,-20.5 parent: 2 - - uid: 1882 - components: - - type: Transform - pos: -27.5,-64.5 - parent: 2 - uid: 1892 components: - type: Transform @@ -137965,11 +138700,21 @@ entities: - type: Transform pos: 40.5,-68.5 parent: 2 + - uid: 1901 + components: + - type: Transform + pos: 44.5,16.5 + parent: 2 - uid: 1918 components: - type: Transform pos: 53.5,-27.5 parent: 2 + - uid: 1923 + components: + - type: Transform + pos: 15.5,-16.5 + parent: 2 - uid: 1926 components: - type: Transform @@ -138000,11 +138745,6 @@ entities: - type: Transform pos: 49.5,18.5 parent: 2 - - uid: 2068 - components: - - type: Transform - pos: -29.5,-65.5 - parent: 2 - uid: 2069 components: - type: Transform @@ -138020,6 +138760,11 @@ entities: - type: Transform pos: 11.5,-88.5 parent: 2 + - uid: 2096 + components: + - type: Transform + pos: -20.5,26.5 + parent: 2 - uid: 2153 components: - type: Transform @@ -138045,11 +138790,6 @@ entities: - type: Transform pos: -21.5,9.5 parent: 2 - - uid: 2213 - components: - - type: Transform - pos: 54.5,-57.5 - parent: 2 - uid: 2221 components: - type: Transform @@ -138060,6 +138800,11 @@ entities: - type: Transform pos: -20.5,24.5 parent: 2 + - uid: 2234 + components: + - type: Transform + pos: -28.5,-53.5 + parent: 2 - uid: 2238 components: - type: Transform @@ -138073,7 +138818,7 @@ entities: - uid: 2257 components: - type: Transform - pos: 44.5,16.5 + pos: -1.5,-32.5 parent: 2 - uid: 2258 components: @@ -138085,11 +138830,6 @@ entities: - type: Transform pos: 41.5,-51.5 parent: 2 - - uid: 2277 - components: - - type: Transform - pos: 50.5,-63.5 - parent: 2 - uid: 2280 components: - type: Transform @@ -138118,28 +138858,23 @@ entities: - uid: 2315 components: - type: Transform - pos: -10.5,-25.5 + pos: 11.5,-20.5 parent: 2 - uid: 2316 components: - type: Transform - pos: 37.5,-63.5 + pos: 54.5,-50.5 parent: 2 - - uid: 2343 + - uid: 2317 components: - type: Transform - pos: 15.5,-16.5 + pos: 9.5,-5.5 parent: 2 - uid: 2351 components: - type: Transform pos: 33.5,27.5 parent: 2 - - uid: 2353 - components: - - type: Transform - pos: -30.5,-6.5 - parent: 2 - uid: 2356 components: - type: Transform @@ -138150,11 +138885,6 @@ entities: - type: Transform pos: 36.5,27.5 parent: 2 - - uid: 2413 - components: - - type: Transform - pos: 5.5,-13.5 - parent: 2 - uid: 2450 components: - type: Transform @@ -138163,18 +138893,23 @@ entities: - uid: 2452 components: - type: Transform - pos: -20.5,26.5 - parent: 2 - - uid: 2454 - components: - - type: Transform - pos: -20.5,25.5 + pos: -31.5,-82.5 parent: 2 - uid: 2456 components: - type: Transform pos: -25.5,-21.5 parent: 2 + - uid: 2488 + components: + - type: Transform + pos: -25.5,-24.5 + parent: 2 + - uid: 2492 + components: + - type: Transform + pos: -25.5,-23.5 + parent: 2 - uid: 2515 components: - type: Transform @@ -138183,12 +138918,12 @@ entities: - uid: 2541 components: - type: Transform - pos: -19.5,-12.5 + pos: -25.5,-22.5 parent: 2 - uid: 2545 components: - type: Transform - pos: -31.5,-65.5 + pos: -31.5,-43.5 parent: 2 - uid: 2557 components: @@ -138198,12 +138933,17 @@ entities: - uid: 2558 components: - type: Transform - pos: -8.5,-27.5 + pos: -35.5,-83.5 + parent: 2 + - uid: 2566 + components: + - type: Transform + pos: -34.5,-1.5 parent: 2 - uid: 2572 components: - type: Transform - pos: -3.5,-26.5 + pos: -37.5,14.5 parent: 2 - uid: 2574 components: @@ -138215,11 +138955,6 @@ entities: - type: Transform pos: -4.5,-29.5 parent: 2 - - uid: 2610 - components: - - type: Transform - pos: -1.5,-30.5 - parent: 2 - uid: 2614 components: - type: Transform @@ -138228,7 +138963,7 @@ entities: - uid: 2615 components: - type: Transform - pos: -30.5,12.5 + pos: -23.5,7.5 parent: 2 - uid: 2616 components: @@ -138268,7 +139003,7 @@ entities: - uid: 2737 components: - type: Transform - pos: -37.5,-6.5 + pos: 53.5,-64.5 parent: 2 - uid: 2739 components: @@ -138280,35 +139015,30 @@ entities: - type: Transform pos: -6.5,-23.5 parent: 2 - - uid: 2756 - components: - - type: Transform - pos: 65.5,-43.5 - parent: 2 - uid: 2781 components: - type: Transform - pos: -43.5,-6.5 + pos: 6.5,-66.5 parent: 2 - uid: 2794 components: - type: Transform - pos: 42.5,-32.5 + pos: 3.5,-20.5 parent: 2 - uid: 2806 components: - type: Transform - pos: -28.5,-53.5 + pos: 26.5,-26.5 parent: 2 - uid: 2812 components: - type: Transform - pos: 36.5,-51.5 + pos: 42.5,-35.5 parent: 2 - uid: 2817 components: - type: Transform - pos: 39.5,-33.5 + pos: 42.5,-36.5 parent: 2 - uid: 2820 components: @@ -138330,11 +139060,6 @@ entities: - type: Transform pos: -19.5,10.5 parent: 2 - - uid: 2847 - components: - - type: Transform - pos: -31.5,-62.5 - parent: 2 - uid: 2879 components: - type: Transform @@ -138345,16 +139070,16 @@ entities: - type: Transform pos: 42.5,-65.5 parent: 2 + - uid: 2906 + components: + - type: Transform + pos: 38.5,-43.5 + parent: 2 - uid: 2907 components: - type: Transform pos: -9.5,-70.5 parent: 2 - - uid: 2912 - components: - - type: Transform - pos: 10.5,-5.5 - parent: 2 - uid: 2915 components: - type: Transform @@ -138375,16 +139100,16 @@ entities: - type: Transform pos: 14.5,-20.5 parent: 2 + - uid: 2930 + components: + - type: Transform + pos: 37.5,-47.5 + parent: 2 - uid: 2936 components: - type: Transform pos: -5.5,-29.5 parent: 2 - - uid: 2943 - components: - - type: Transform - pos: 11.5,-20.5 - parent: 2 - uid: 2953 components: - type: Transform @@ -138393,23 +139118,18 @@ entities: - uid: 3005 components: - type: Transform - pos: 54.5,-50.5 + pos: -38.5,-18.5 parent: 2 - uid: 3008 components: - type: Transform - pos: 9.5,-5.5 + pos: -31.5,0.5 parent: 2 - uid: 3013 components: - type: Transform pos: -36.5,22.5 parent: 2 - - uid: 3016 - components: - - type: Transform - pos: 49.5,-13.5 - parent: 2 - uid: 3017 components: - type: Transform @@ -138420,20 +139140,25 @@ entities: - type: Transform pos: -31.5,-60.5 parent: 2 - - uid: 3072 - components: - - type: Transform - pos: 22.5,-29.5 - parent: 2 - uid: 3073 components: - type: Transform - pos: 23.5,-29.5 + pos: -31.5,-78.5 + parent: 2 + - uid: 3089 + components: + - type: Transform + pos: -37.5,-21.5 + parent: 2 + - uid: 3090 + components: + - type: Transform + pos: 13.5,-87.5 parent: 2 - uid: 3091 components: - type: Transform - pos: -11.5,-45.5 + pos: 74.5,-67.5 parent: 2 - uid: 3093 components: @@ -138443,12 +139168,7 @@ entities: - uid: 3100 components: - type: Transform - pos: -27.5,-52.5 - parent: 2 - - uid: 3101 - components: - - type: Transform - pos: -27.5,-51.5 + pos: 4.5,-20.5 parent: 2 - uid: 3114 components: @@ -138465,16 +139185,6 @@ entities: - type: Transform pos: -18.5,-2.5 parent: 2 - - uid: 3122 - components: - - type: Transform - pos: -19.5,-9.5 - parent: 2 - - uid: 3126 - components: - - type: Transform - pos: -22.5,13.5 - parent: 2 - uid: 3128 components: - type: Transform @@ -138490,21 +139200,11 @@ entities: - type: Transform pos: -21.5,-45.5 parent: 2 - - uid: 3135 - components: - - type: Transform - pos: -20.5,-45.5 - parent: 2 - uid: 3136 components: - type: Transform pos: -22.5,-45.5 parent: 2 - - uid: 3137 - components: - - type: Transform - pos: -22.5,-44.5 - parent: 2 - uid: 3138 components: - type: Transform @@ -138518,17 +139218,32 @@ entities: - uid: 3140 components: - type: Transform - pos: -18.5,-45.5 + pos: 18.5,27.5 parent: 2 - uid: 3141 components: - type: Transform pos: -10.5,-48.5 parent: 2 - - uid: 3215 + - uid: 3177 components: - type: Transform - pos: -21.5,32.5 + pos: -64.5,-7.5 + parent: 2 + - uid: 3208 + components: + - type: Transform + pos: -31.5,21.5 + parent: 2 + - uid: 3212 + components: + - type: Transform + pos: -9.5,20.5 + parent: 2 + - uid: 3219 + components: + - type: Transform + pos: -49.5,-11.5 parent: 2 - uid: 3223 components: @@ -138545,50 +139260,75 @@ entities: - type: Transform pos: -3.5,-33.5 parent: 2 - - uid: 3231 - components: - - type: Transform - pos: -1.5,-32.5 - parent: 2 - uid: 3233 components: - type: Transform pos: -4.5,-72.5 parent: 2 - - uid: 3251 - components: - - type: Transform - pos: -64.5,-16.5 - parent: 2 - - uid: 3270 - components: - - type: Transform - pos: -19.5,13.5 - parent: 2 - uid: 3294 components: - type: Transform pos: -9.5,-51.5 parent: 2 - - uid: 3379 + - uid: 3300 components: - type: Transform - pos: -25.5,-24.5 + pos: 31.5,-47.5 + parent: 2 + - uid: 3304 + components: + - type: Transform + pos: 41.5,-16.5 + parent: 2 + - uid: 3314 + components: + - type: Transform + pos: -31.5,-63.5 + parent: 2 + - uid: 3323 + components: + - type: Transform + pos: 47.5,13.5 + parent: 2 + - uid: 3339 + components: + - type: Transform + pos: -31.5,-69.5 + parent: 2 + - uid: 3353 + components: + - type: Transform + pos: -64.5,-18.5 parent: 2 - uid: 3386 components: - type: Transform - pos: -25.5,-23.5 + pos: -13.5,-57.5 parent: 2 - uid: 3389 components: - type: Transform - pos: -25.5,-22.5 + pos: -9.5,13.5 parent: 2 - - uid: 3462 + - uid: 3409 components: - type: Transform - pos: -31.5,-43.5 + pos: 16.5,-64.5 + parent: 2 + - uid: 3415 + components: + - type: Transform + pos: -9.5,-52.5 + parent: 2 + - uid: 3423 + components: + - type: Transform + pos: 12.5,-70.5 + parent: 2 + - uid: 3444 + components: + - type: Transform + pos: 41.5,-26.5 parent: 2 - uid: 3488 components: @@ -138603,7 +139343,7 @@ entities: - uid: 3520 components: - type: Transform - pos: -35.5,-83.5 + pos: 48.5,22.5 parent: 2 - uid: 3524 components: @@ -138618,7 +139358,7 @@ entities: - uid: 3536 components: - type: Transform - pos: -0.5,-37.5 + pos: 23.5,-11.5 parent: 2 - uid: 3548 components: @@ -138628,17 +139368,17 @@ entities: - uid: 3552 components: - type: Transform - pos: 40.5,-62.5 + pos: -18.5,0.5 parent: 2 - uid: 3568 components: - type: Transform - pos: -34.5,-1.5 + pos: 25.5,-37.5 parent: 2 - - uid: 3579 + - uid: 3573 components: - type: Transform - pos: 38.5,-67.5 + pos: -36.5,24.5 parent: 2 - uid: 3582 components: @@ -138650,10 +139390,25 @@ entities: - type: Transform pos: -13.5,-22.5 parent: 2 + - uid: 3663 + components: + - type: Transform + pos: 40.5,-18.5 + parent: 2 + - uid: 3666 + components: + - type: Transform + pos: 46.5,-1.5 + parent: 2 - uid: 3689 components: - type: Transform - pos: -36.5,-74.5 + pos: 47.5,-2.5 + parent: 2 + - uid: 3716 + components: + - type: Transform + pos: -68.5,-16.5 parent: 2 - uid: 3754 components: @@ -138663,7 +139418,17 @@ entities: - uid: 3757 components: - type: Transform - pos: -37.5,14.5 + pos: 50.5,-47.5 + parent: 2 + - uid: 3760 + components: + - type: Transform + pos: 44.5,7.5 + parent: 2 + - uid: 3782 + components: + - type: Transform + pos: 51.5,9.5 parent: 2 - uid: 3792 components: @@ -138673,7 +139438,7 @@ entities: - uid: 3797 components: - type: Transform - pos: -71.5,-12.5 + pos: 49.5,7.5 parent: 2 - uid: 3800 components: @@ -138688,18 +139453,33 @@ entities: - uid: 3825 components: - type: Transform - pos: 25.5,17.5 + pos: -37.5,-70.5 parent: 2 - uid: 3826 components: - type: Transform - pos: 49.5,22.5 + pos: -31.5,-7.5 + parent: 2 + - uid: 3838 + components: + - type: Transform + pos: -31.5,-11.5 + parent: 2 + - uid: 3845 + components: + - type: Transform + pos: 16.5,-79.5 parent: 2 - uid: 3846 components: - type: Transform pos: 4.5,-58.5 parent: 2 + - uid: 3862 + components: + - type: Transform + pos: -13.5,-71.5 + parent: 2 - uid: 3863 components: - type: Transform @@ -138723,7 +139503,7 @@ entities: - uid: 3958 components: - type: Transform - pos: -23.5,7.5 + pos: -13.5,-81.5 parent: 2 - uid: 3962 components: @@ -138735,11 +139515,6 @@ entities: - type: Transform pos: 0.5,-35.5 parent: 2 - - uid: 3965 - components: - - type: Transform - pos: 53.5,-64.5 - parent: 2 - uid: 4017 components: - type: Transform @@ -138750,6 +139525,11 @@ entities: - type: Transform pos: 2.5,-37.5 parent: 2 + - uid: 4046 + components: + - type: Transform + pos: -54.5,-61.5 + parent: 2 - uid: 4049 components: - type: Transform @@ -138758,37 +139538,47 @@ entities: - uid: 4051 components: - type: Transform - pos: 52.5,-62.5 + pos: -38.5,-31.5 parent: 2 - - uid: 4073 + - uid: 4061 components: - type: Transform - pos: -35.5,-78.5 + pos: -60.5,-35.5 parent: 2 - uid: 4112 components: - type: Transform pos: 8.5,-59.5 parent: 2 - - uid: 4157 + - uid: 4164 components: - type: Transform - pos: 6.5,-66.5 + pos: -30.5,-16.5 + parent: 2 + - uid: 4178 + components: + - type: Transform + pos: 48.5,24.5 + parent: 2 + - uid: 4180 + components: + - type: Transform + pos: 8.5,-79.5 parent: 2 - uid: 4195 components: - type: Transform - pos: 3.5,-20.5 + pos: -27.5,24.5 parent: 2 - uid: 4207 components: - type: Transform - pos: 25.5,-32.5 + pos: 43.5,-73.5 parent: 2 - uid: 4212 components: - type: Transform - pos: 32.5,-32.5 + pos: 18.5,-18.5 parent: 2 - uid: 4223 components: @@ -138798,23 +139588,13 @@ entities: - uid: 4256 components: - type: Transform - pos: 26.5,-26.5 + pos: -25.5,-39.5 parent: 2 - uid: 4267 components: - type: Transform pos: 40.5,-33.5 parent: 2 - - uid: 4269 - components: - - type: Transform - pos: 42.5,-35.5 - parent: 2 - - uid: 4281 - components: - - type: Transform - pos: 42.5,-36.5 - parent: 2 - uid: 4300 components: - type: Transform @@ -138823,27 +139603,27 @@ entities: - uid: 4301 components: - type: Transform - pos: 25.5,-34.5 + pos: -21.5,-57.5 parent: 2 - uid: 4316 components: - type: Transform pos: 51.5,-69.5 parent: 2 - - uid: 4346 - components: - - type: Transform - pos: 50.5,-65.5 - parent: 2 - uid: 4348 components: - type: Transform pos: 13.5,-64.5 parent: 2 + - uid: 4352 + components: + - type: Transform + pos: -13.5,-4.5 + parent: 2 - uid: 4353 components: - type: Transform - pos: -10.5,-64.5 + pos: 30.5,-62.5 parent: 2 - uid: 4364 components: @@ -138870,6 +139650,11 @@ entities: - type: Transform pos: -31.5,-49.5 parent: 2 + - uid: 4447 + components: + - type: Transform + pos: -58.5,-57.5 + parent: 2 - uid: 4463 components: - type: Transform @@ -138883,37 +139668,27 @@ entities: - uid: 4507 components: - type: Transform - pos: -31.5,-14.5 + pos: -17.5,3.5 parent: 2 - uid: 4510 components: - type: Transform pos: -40.5,-16.5 parent: 2 - - uid: 4520 - components: - - type: Transform - pos: 38.5,-43.5 - parent: 2 - uid: 4523 components: - type: Transform pos: 37.5,-43.5 parent: 2 - - uid: 4524 - components: - - type: Transform - pos: 40.5,-43.5 - parent: 2 - uid: 4526 components: - type: Transform - pos: 37.5,-47.5 + pos: -25.5,-26.5 parent: 2 - uid: 4532 components: - type: Transform - pos: 30.5,-60.5 + pos: 63.5,-51.5 parent: 2 - uid: 4537 components: @@ -138930,11 +139705,6 @@ entities: - type: Transform pos: 41.5,-47.5 parent: 2 - - uid: 4544 - components: - - type: Transform - pos: 39.5,-47.5 - parent: 2 - uid: 4545 components: - type: Transform @@ -138950,21 +139720,11 @@ entities: - type: Transform pos: -37.5,-18.5 parent: 2 - - uid: 4551 - components: - - type: Transform - pos: 36.5,-47.5 - parent: 2 - uid: 4553 components: - type: Transform pos: 40.5,-47.5 parent: 2 - - uid: 4558 - components: - - type: Transform - pos: -38.5,-18.5 - parent: 2 - uid: 4564 components: - type: Transform @@ -138983,7 +139743,7 @@ entities: - uid: 4594 components: - type: Transform - pos: -31.5,0.5 + pos: -32.5,-26.5 parent: 2 - uid: 4599 components: @@ -139008,7 +139768,7 @@ entities: - uid: 4630 components: - type: Transform - pos: 29.5,-59.5 + pos: -28.5,30.5 parent: 2 - uid: 4647 components: @@ -139030,16 +139790,16 @@ entities: - type: Transform pos: -36.5,-78.5 parent: 2 - - uid: 4694 - components: - - type: Transform - pos: -31.5,-57.5 - parent: 2 - uid: 4695 components: - type: Transform pos: 47.5,-48.5 parent: 2 + - uid: 4696 + components: + - type: Transform + pos: -30.5,-14.5 + parent: 2 - uid: 4697 components: - type: Transform @@ -139050,30 +139810,30 @@ entities: - type: Transform pos: 50.5,-64.5 parent: 2 - - uid: 4719 - components: - - type: Transform - pos: -31.5,-58.5 - parent: 2 - uid: 4723 components: - type: Transform - pos: 53.5,-61.5 + pos: 42.5,13.5 parent: 2 - uid: 4733 components: - type: Transform - pos: -31.5,-78.5 + pos: -54.5,-47.5 parent: 2 - uid: 4734 components: - type: Transform pos: 49.5,-91.5 parent: 2 - - uid: 4749 + - uid: 4735 components: - type: Transform - pos: -30.5,-81.5 + pos: 51.5,18.5 + parent: 2 + - uid: 4737 + components: + - type: Transform + pos: 31.5,-32.5 parent: 2 - uid: 4754 components: @@ -139083,28 +139843,13 @@ entities: - uid: 4788 components: - type: Transform - pos: -37.5,-21.5 - parent: 2 - - uid: 4789 - components: - - type: Transform - pos: -20.5,9.5 + pos: 31.5,-36.5 parent: 2 - uid: 4795 components: - type: Transform pos: 22.5,-7.5 parent: 2 - - uid: 4811 - components: - - type: Transform - pos: -37.5,-70.5 - parent: 2 - - uid: 4828 - components: - - type: Transform - pos: 74.5,-67.5 - parent: 2 - uid: 4846 components: - type: Transform @@ -139113,7 +139858,12 @@ entities: - uid: 4849 components: - type: Transform - pos: 4.5,-20.5 + pos: 58.5,-37.5 + parent: 2 + - uid: 4852 + components: + - type: Transform + pos: 82.5,-38.5 parent: 2 - uid: 4853 components: @@ -139130,10 +139880,10 @@ entities: - type: Transform pos: -37.5,-66.5 parent: 2 - - uid: 4883 + - uid: 4884 components: - type: Transform - pos: -19.5,-68.5 + pos: -28.5,35.5 parent: 2 - uid: 4888 components: @@ -139148,28 +139898,28 @@ entities: - uid: 4899 components: - type: Transform - pos: 6.5,-23.5 + pos: -36.5,-28.5 parent: 2 - uid: 4905 components: - type: Transform - pos: -21.5,-68.5 + pos: 54.5,-46.5 parent: 2 - uid: 4907 components: - type: Transform - pos: -27.5,-68.5 + pos: 10.5,9.5 + parent: 2 + - uid: 4908 + components: + - type: Transform + pos: 39.5,-33.5 parent: 2 - uid: 4912 components: - type: Transform pos: 14.5,-3.5 parent: 2 - - uid: 4931 - components: - - type: Transform - pos: -18.5,28.5 - parent: 2 - uid: 4937 components: - type: Transform @@ -139200,6 +139950,11 @@ entities: - type: Transform pos: -48.5,-59.5 parent: 2 + - uid: 4998 + components: + - type: Transform + pos: -46.5,-22.5 + parent: 2 - uid: 5002 components: - type: Transform @@ -139215,6 +139970,11 @@ entities: - type: Transform pos: -8.5,26.5 parent: 2 + - uid: 5029 + components: + - type: Transform + pos: -53.5,-38.5 + parent: 2 - uid: 5032 components: - type: Transform @@ -139253,7 +140013,7 @@ entities: - uid: 5097 components: - type: Transform - pos: -9.5,17.5 + pos: -53.5,-39.5 parent: 2 - uid: 5099 components: @@ -139265,6 +140025,11 @@ entities: - type: Transform pos: -9.5,16.5 parent: 2 + - uid: 5108 + components: + - type: Transform + pos: -49.5,-59.5 + parent: 2 - uid: 5129 components: - type: Transform @@ -139273,37 +140038,37 @@ entities: - uid: 5136 components: - type: Transform - pos: -37.5,-59.5 + pos: 7.5,-87.5 parent: 2 - uid: 5140 components: - type: Transform - pos: 56.5,-45.5 + pos: -34.5,-5.5 parent: 2 - uid: 5143 components: - type: Transform pos: 49.5,-89.5 parent: 2 + - uid: 5146 + components: + - type: Transform + pos: 8.5,-69.5 + parent: 2 - uid: 5154 components: - type: Transform pos: -36.5,-16.5 parent: 2 - - uid: 5155 - components: - - type: Transform - pos: -38.5,-13.5 - parent: 2 - uid: 5174 components: - type: Transform - pos: -64.5,-10.5 + pos: 44.5,18.5 parent: 2 - - uid: 5176 + - uid: 5183 components: - type: Transform - pos: 18.5,27.5 + pos: 3.5,-13.5 parent: 2 - uid: 5185 components: @@ -139330,50 +140095,45 @@ entities: - type: Transform pos: -57.5,-13.5 parent: 2 - - uid: 5195 + - uid: 5199 components: - type: Transform - pos: -64.5,-7.5 + pos: 8.5,-72.5 parent: 2 - uid: 5224 components: - type: Transform pos: 13.5,-0.5 parent: 2 - - uid: 5242 - components: - - type: Transform - pos: -35.5,-82.5 - parent: 2 - uid: 5246 components: - type: Transform pos: -67.5,-7.5 parent: 2 - - uid: 5279 + - uid: 5247 components: - type: Transform - pos: -21.5,1.5 + pos: -10.5,-22.5 + parent: 2 + - uid: 5274 + components: + - type: Transform + pos: 20.5,-60.5 parent: 2 - uid: 5289 components: - type: Transform - pos: -35.5,-70.5 - parent: 2 - - uid: 5290 - components: - - type: Transform - pos: -23.5,6.5 + pos: -49.5,-42.5 parent: 2 - uid: 5295 components: - type: Transform - pos: -37.5,-58.5 + pos: -49.5,-46.5 parent: 2 - uid: 5305 components: - type: Transform - pos: 48.5,-62.5 + pos: -51.5,-46.5 parent: 2 - uid: 5307 components: @@ -139383,7 +140143,7 @@ entities: - uid: 5317 components: - type: Transform - pos: -31.5,21.5 + pos: -16.5,24.5 parent: 2 - uid: 5324 components: @@ -139418,12 +140178,22 @@ entities: - uid: 5342 components: - type: Transform - pos: -27.5,21.5 + pos: -3.5,16.5 parent: 2 - uid: 5343 components: - type: Transform - pos: -35.5,21.5 + pos: -21.5,-56.5 + parent: 2 + - uid: 5344 + components: + - type: Transform + pos: 43.5,-40.5 + parent: 2 + - uid: 5346 + components: + - type: Transform + pos: 80.5,-24.5 parent: 2 - uid: 5349 components: @@ -139433,7 +140203,7 @@ entities: - uid: 5353 components: - type: Transform - pos: -33.5,24.5 + pos: -28.5,16.5 parent: 2 - uid: 5357 components: @@ -139443,7 +140213,7 @@ entities: - uid: 5367 components: - type: Transform - pos: 47.5,-70.5 + pos: -31.5,12.5 parent: 2 - uid: 5381 components: @@ -139460,15 +140230,25 @@ entities: - type: Transform pos: -7.5,20.5 parent: 2 + - uid: 5387 + components: + - type: Transform + pos: -63.5,-39.5 + parent: 2 - uid: 5411 components: - type: Transform - pos: 20.5,11.5 + pos: -24.5,23.5 parent: 2 - uid: 5412 components: - type: Transform - pos: -9.5,20.5 + pos: -19.5,0.5 + parent: 2 + - uid: 5414 + components: + - type: Transform + pos: -72.5,-8.5 parent: 2 - uid: 5426 components: @@ -139480,20 +140260,15 @@ entities: - type: Transform pos: -10.5,31.5 parent: 2 - - uid: 5479 - components: - - type: Transform - pos: -33.5,21.5 - parent: 2 - uid: 5487 components: - type: Transform - pos: -6.5,13.5 + pos: -57.5,-11.5 parent: 2 - - uid: 5488 + - uid: 5490 components: - type: Transform - pos: -34.5,21.5 + pos: 48.5,26.5 parent: 2 - uid: 5491 components: @@ -139505,11 +140280,6 @@ entities: - type: Transform pos: -51.5,-10.5 parent: 2 - - uid: 5493 - components: - - type: Transform - pos: 43.5,-75.5 - parent: 2 - uid: 5495 components: - type: Transform @@ -139523,12 +140293,12 @@ entities: - uid: 5510 components: - type: Transform - pos: -56.5,-13.5 + pos: 25.5,-41.5 parent: 2 - uid: 5515 components: - type: Transform - pos: -54.5,-10.5 + pos: 41.5,-29.5 parent: 2 - uid: 5516 components: @@ -139543,7 +140313,7 @@ entities: - uid: 5529 components: - type: Transform - pos: -59.5,-11.5 + pos: 25.5,-46.5 parent: 2 - uid: 5532 components: @@ -139553,18 +140323,13 @@ entities: - uid: 5534 components: - type: Transform - pos: -17.5,8.5 + pos: -1.5,-54.5 parent: 2 - uid: 5540 components: - type: Transform pos: -56.5,-10.5 parent: 2 - - uid: 5541 - components: - - type: Transform - pos: -35.5,-10.5 - parent: 2 - uid: 5544 components: - type: Transform @@ -139575,16 +140340,6 @@ entities: - type: Transform pos: 6.5,-20.5 parent: 2 - - uid: 5547 - components: - - type: Transform - pos: -49.5,-11.5 - parent: 2 - - uid: 5548 - components: - - type: Transform - pos: 42.5,-64.5 - parent: 2 - uid: 5552 components: - type: Transform @@ -139605,10 +140360,10 @@ entities: - type: Transform pos: 30.5,-32.5 parent: 2 - - uid: 5569 + - uid: 5562 components: - type: Transform - pos: 42.5,-62.5 + pos: -47.5,-14.5 parent: 2 - uid: 5573 components: @@ -139628,37 +140383,32 @@ entities: - uid: 5581 components: - type: Transform - pos: -52.5,-46.5 + pos: 59.5,-57.5 parent: 2 - uid: 5614 components: - type: Transform - pos: 53.5,-37.5 + pos: 61.5,-51.5 parent: 2 - uid: 5623 components: - type: Transform - pos: 57.5,-37.5 + pos: 32.5,-69.5 parent: 2 - uid: 5624 components: - type: Transform - pos: 48.5,-64.5 - parent: 2 - - uid: 5636 - components: - - type: Transform - pos: 60.5,-50.5 + pos: 22.5,20.5 parent: 2 - uid: 5652 components: - type: Transform pos: 32.5,-56.5 parent: 2 - - uid: 5667 + - uid: 5668 components: - type: Transform - pos: -35.5,-59.5 + pos: -13.5,38.5 parent: 2 - uid: 5669 components: @@ -139675,11 +140425,6 @@ entities: - type: Transform pos: 44.5,-78.5 parent: 2 - - uid: 5703 - components: - - type: Transform - pos: 66.5,-45.5 - parent: 2 - uid: 5711 components: - type: Transform @@ -139695,21 +140440,51 @@ entities: - type: Transform pos: 43.5,-19.5 parent: 2 + - uid: 5741 + components: + - type: Transform + pos: -7.5,-96.5 + parent: 2 + - uid: 5762 + components: + - type: Transform + pos: 12.5,-79.5 + parent: 2 - uid: 5770 components: - type: Transform - pos: 43.5,-17.5 + pos: 13.5,-63.5 parent: 2 - uid: 5771 components: - type: Transform - pos: 44.5,-14.5 + pos: 13.5,-61.5 + parent: 2 + - uid: 5775 + components: + - type: Transform + pos: 36.5,-49.5 + parent: 2 + - uid: 5792 + components: + - type: Transform + pos: 12.5,-66.5 parent: 2 - uid: 5808 components: - type: Transform pos: -31.5,-5.5 parent: 2 + - uid: 5811 + components: + - type: Transform + pos: 24.5,20.5 + parent: 2 + - uid: 5814 + components: + - type: Transform + pos: 26.5,23.5 + parent: 2 - uid: 5816 components: - type: Transform @@ -139718,17 +140493,12 @@ entities: - uid: 5825 components: - type: Transform - pos: 50.5,-34.5 - parent: 2 - - uid: 5836 - components: - - type: Transform - pos: 31.5,-47.5 + pos: 51.5,12.5 parent: 2 - uid: 5838 components: - type: Transform - pos: 33.5,-47.5 + pos: 42.5,17.5 parent: 2 - uid: 5839 components: @@ -139740,41 +140510,21 @@ entities: - type: Transform pos: 58.5,-70.5 parent: 2 + - uid: 5848 + components: + - type: Transform + pos: 13.5,14.5 + parent: 2 - uid: 5861 components: - type: Transform pos: -28.5,18.5 parent: 2 - - uid: 5886 - components: - - type: Transform - pos: 48.5,25.5 - parent: 2 - uid: 5900 components: - type: Transform pos: 53.5,-34.5 parent: 2 - - uid: 5901 - components: - - type: Transform - pos: 41.5,-16.5 - parent: 2 - - uid: 5907 - components: - - type: Transform - pos: -68.5,-8.5 - parent: 2 - - uid: 5909 - components: - - type: Transform - pos: -1.5,-24.5 - parent: 2 - - uid: 5922 - components: - - type: Transform - pos: -28.5,-51.5 - parent: 2 - uid: 5927 components: - type: Transform @@ -139785,11 +140535,6 @@ entities: - type: Transform pos: -62.5,-7.5 parent: 2 - - uid: 5931 - components: - - type: Transform - pos: 56.5,-50.5 - parent: 2 - uid: 5939 components: - type: Transform @@ -139798,7 +140543,7 @@ entities: - uid: 5942 components: - type: Transform - pos: 56.5,-51.5 + pos: 52.5,-10.5 parent: 2 - uid: 6035 components: @@ -139810,51 +140555,21 @@ entities: - type: Transform pos: 41.5,-15.5 parent: 2 - - uid: 6109 - components: - - type: Transform - pos: 14.5,-0.5 - parent: 2 - - uid: 6116 - components: - - type: Transform - pos: -31.5,-63.5 - parent: 2 - - uid: 6122 - components: - - type: Transform - pos: -58.5,-11.5 - parent: 2 - uid: 6125 components: - type: Transform pos: -61.5,-17.5 parent: 2 - - uid: 6128 - components: - - type: Transform - pos: 49.5,-7.5 - parent: 2 - uid: 6136 components: - type: Transform pos: 46.5,13.5 parent: 2 - - uid: 6149 - components: - - type: Transform - pos: 47.5,13.5 - parent: 2 - uid: 6165 components: - type: Transform pos: -31.5,-67.5 parent: 2 - - uid: 6172 - components: - - type: Transform - pos: -31.5,-69.5 - parent: 2 - uid: 6188 components: - type: Transform @@ -139865,11 +140580,6 @@ entities: - type: Transform pos: 29.5,-47.5 parent: 2 - - uid: 6207 - components: - - type: Transform - pos: -35.5,22.5 - parent: 2 - uid: 6217 components: - type: Transform @@ -139885,11 +140595,6 @@ entities: - type: Transform pos: 32.5,-63.5 parent: 2 - - uid: 6240 - components: - - type: Transform - pos: -64.5,-18.5 - parent: 2 - uid: 6246 components: - type: Transform @@ -139900,16 +140605,6 @@ entities: - type: Transform pos: 60.5,-74.5 parent: 2 - - uid: 6288 - components: - - type: Transform - pos: 30.5,-66.5 - parent: 2 - - uid: 6306 - components: - - type: Transform - pos: -67.5,-13.5 - parent: 2 - uid: 6310 components: - type: Transform @@ -139920,26 +140615,6 @@ entities: - type: Transform pos: 15.5,-61.5 parent: 2 - - uid: 6360 - components: - - type: Transform - pos: -13.5,-57.5 - parent: 2 - - uid: 6373 - components: - - type: Transform - pos: 14.5,-15.5 - parent: 2 - - uid: 6376 - components: - - type: Transform - pos: -9.5,13.5 - parent: 2 - - uid: 6379 - components: - - type: Transform - pos: 44.5,0.5 - parent: 2 - uid: 6380 components: - type: Transform @@ -139950,16 +140625,6 @@ entities: - type: Transform pos: -1.5,-85.5 parent: 2 - - uid: 6389 - components: - - type: Transform - pos: 12.5,-3.5 - parent: 2 - - uid: 6400 - components: - - type: Transform - pos: 16.5,-64.5 - parent: 2 - uid: 6406 components: - type: Transform @@ -139970,36 +140635,6 @@ entities: - type: Transform pos: 13.5,-62.5 parent: 2 - - uid: 6422 - components: - - type: Transform - pos: 14.5,-65.5 - parent: 2 - - uid: 6427 - components: - - type: Transform - pos: -9.5,-52.5 - parent: 2 - - uid: 6430 - components: - - type: Transform - pos: -9.5,-66.5 - parent: 2 - - uid: 6433 - components: - - type: Transform - pos: 12.5,-68.5 - parent: 2 - - uid: 6437 - components: - - type: Transform - pos: 12.5,-70.5 - parent: 2 - - uid: 6439 - components: - - type: Transform - pos: -10.5,-66.5 - parent: 2 - uid: 6442 components: - type: Transform @@ -140010,11 +140645,6 @@ entities: - type: Transform pos: -10.5,-87.5 parent: 2 - - uid: 6464 - components: - - type: Transform - pos: 36.5,-56.5 - parent: 2 - uid: 6472 components: - type: Transform @@ -140030,26 +140660,11 @@ entities: - type: Transform pos: -14.5,-57.5 parent: 2 - - uid: 6493 - components: - - type: Transform - pos: 7.5,-20.5 - parent: 2 - - uid: 6496 - components: - - type: Transform - pos: -9.5,-49.5 - parent: 2 - uid: 6524 components: - type: Transform pos: -70.5,-11.5 parent: 2 - - uid: 6526 - components: - - type: Transform - pos: 13.5,-65.5 - parent: 2 - uid: 6544 components: - type: Transform @@ -140060,11 +140675,6 @@ entities: - type: Transform pos: 75.5,-47.5 parent: 2 - - uid: 6556 - components: - - type: Transform - pos: 41.5,-26.5 - parent: 2 - uid: 6588 components: - type: Transform @@ -140075,56 +140685,16 @@ entities: - type: Transform pos: -31.5,-9.5 parent: 2 - - uid: 6616 - components: - - type: Transform - pos: 29.5,-48.5 - parent: 2 - uid: 6617 components: - type: Transform pos: 29.5,-49.5 parent: 2 - - uid: 6618 - components: - - type: Transform - pos: 29.5,-50.5 - parent: 2 - - uid: 6623 - components: - - type: Transform - pos: 32.5,-51.5 - parent: 2 - uid: 6624 components: - type: Transform pos: 33.5,-52.5 parent: 2 - - uid: 6627 - components: - - type: Transform - pos: 36.5,-57.5 - parent: 2 - - uid: 6628 - components: - - type: Transform - pos: -37.5,-28.5 - parent: 2 - - uid: 6629 - components: - - type: Transform - pos: -37.5,-31.5 - parent: 2 - - uid: 6640 - components: - - type: Transform - pos: 32.5,-64.5 - parent: 2 - - uid: 6641 - components: - - type: Transform - pos: -40.5,-13.5 - parent: 2 - uid: 6654 components: - type: Transform @@ -140145,41 +140715,16 @@ entities: - type: Transform pos: 40.5,-17.5 parent: 2 - - uid: 6670 - components: - - type: Transform - pos: 42.5,-1.5 - parent: 2 - uid: 6712 components: - type: Transform pos: -38.5,-28.5 parent: 2 - - uid: 6713 - components: - - type: Transform - pos: 23.5,-11.5 - parent: 2 - - uid: 6716 - components: - - type: Transform - pos: 13.5,-6.5 - parent: 2 - uid: 6733 components: - type: Transform pos: 32.5,-36.5 parent: 2 - - uid: 6741 - components: - - type: Transform - pos: 42.5,-34.5 - parent: 2 - - uid: 6781 - components: - - type: Transform - pos: 25.5,-37.5 - parent: 2 - uid: 6788 components: - type: Transform @@ -140220,21 +140765,11 @@ entities: - type: Transform pos: -36.5,-61.5 parent: 2 - - uid: 6882 - components: - - type: Transform - pos: -36.5,24.5 - parent: 2 - uid: 6909 components: - type: Transform pos: 43.5,-23.5 parent: 2 - - uid: 6925 - components: - - type: Transform - pos: 60.5,-78.5 - parent: 2 - uid: 6930 components: - type: Transform @@ -140245,11 +140780,6 @@ entities: - type: Transform pos: 15.5,-65.5 parent: 2 - - uid: 6944 - components: - - type: Transform - pos: 40.5,-18.5 - parent: 2 - uid: 6946 components: - type: Transform @@ -140275,26 +140805,11 @@ entities: - type: Transform pos: 22.5,-11.5 parent: 2 - - uid: 6968 - components: - - type: Transform - pos: 46.5,-1.5 - parent: 2 - uid: 6969 components: - type: Transform pos: 46.5,-2.5 parent: 2 - - uid: 6970 - components: - - type: Transform - pos: 47.5,-2.5 - parent: 2 - - uid: 6993 - components: - - type: Transform - pos: -68.5,-16.5 - parent: 2 - uid: 6994 components: - type: Transform @@ -140315,11 +140830,6 @@ entities: - type: Transform pos: 11.5,-12.5 parent: 2 - - uid: 7075 - components: - - type: Transform - pos: 49.5,-11.5 - parent: 2 - uid: 7076 components: - type: Transform @@ -140335,11 +140845,6 @@ entities: - type: Transform pos: 8.5,-5.5 parent: 2 - - uid: 7164 - components: - - type: Transform - pos: -27.5,-54.5 - parent: 2 - uid: 7165 components: - type: Transform @@ -140350,11 +140855,6 @@ entities: - type: Transform pos: 49.5,-69.5 parent: 2 - - uid: 7184 - components: - - type: Transform - pos: -27.5,-56.5 - parent: 2 - uid: 7185 components: - type: Transform @@ -140365,21 +140865,6 @@ entities: - type: Transform pos: 44.5,-16.5 parent: 2 - - uid: 7229 - components: - - type: Transform - pos: 51.5,-47.5 - parent: 2 - - uid: 7230 - components: - - type: Transform - pos: 50.5,-47.5 - parent: 2 - - uid: 7233 - components: - - type: Transform - pos: 53.5,-47.5 - parent: 2 - uid: 7237 components: - type: Transform @@ -140395,11 +140880,6 @@ entities: - type: Transform pos: -25.5,-33.5 parent: 2 - - uid: 7308 - components: - - type: Transform - pos: 44.5,7.5 - parent: 2 - uid: 7312 components: - type: Transform @@ -140425,21 +140905,6 @@ entities: - type: Transform pos: 53.5,-65.5 parent: 2 - - uid: 7359 - components: - - type: Transform - pos: 51.5,9.5 - parent: 2 - - uid: 7390 - components: - - type: Transform - pos: 49.5,7.5 - parent: 2 - - uid: 7404 - components: - - type: Transform - pos: 48.5,6.5 - parent: 2 - uid: 7416 components: - type: Transform @@ -140480,61 +140945,11 @@ entities: - type: Transform pos: -9.5,-56.5 parent: 2 - - uid: 7518 - components: - - type: Transform - pos: -9.5,-57.5 - parent: 2 - uid: 7520 components: - type: Transform pos: -10.5,-57.5 parent: 2 - - uid: 7529 - components: - - type: Transform - pos: -20.5,-57.5 - parent: 2 - - uid: 7546 - components: - - type: Transform - pos: 49.5,-62.5 - parent: 2 - - uid: 7588 - components: - - type: Transform - pos: -5.5,-61.5 - parent: 2 - - uid: 7602 - components: - - type: Transform - pos: 5.5,-87.5 - parent: 2 - - uid: 7618 - components: - - type: Transform - pos: -34.5,-5.5 - parent: 2 - - uid: 7628 - components: - - type: Transform - pos: -31.5,-7.5 - parent: 2 - - uid: 7631 - components: - - type: Transform - pos: -28.5,14.5 - parent: 2 - - uid: 7649 - components: - - type: Transform - pos: 27.5,19.5 - parent: 2 - - uid: 7659 - components: - - type: Transform - pos: 16.5,-60.5 - parent: 2 - uid: 7671 components: - type: Transform @@ -140545,36 +140960,16 @@ entities: - type: Transform pos: -24.5,-14.5 parent: 2 - - uid: 7700 - components: - - type: Transform - pos: -31.5,-11.5 - parent: 2 - - uid: 7707 - components: - - type: Transform - pos: -33.5,-9.5 - parent: 2 - uid: 7710 components: - type: Transform pos: 7.5,3.5 parent: 2 - - uid: 7731 - components: - - type: Transform - pos: 43.5,-69.5 - parent: 2 - uid: 7761 components: - type: Transform pos: 11.5,-10.5 parent: 2 - - uid: 7831 - components: - - type: Transform - pos: -30.5,-33.5 - parent: 2 - uid: 7841 components: - type: Transform @@ -140590,11 +140985,6 @@ entities: - type: Transform pos: 13.5,-69.5 parent: 2 - - uid: 8039 - components: - - type: Transform - pos: 16.5,-71.5 - parent: 2 - uid: 8040 components: - type: Transform @@ -140605,41 +140995,11 @@ entities: - type: Transform pos: 16.5,-77.5 parent: 2 - - uid: 8049 - components: - - type: Transform - pos: 16.5,-79.5 - parent: 2 - - uid: 8054 - components: - - type: Transform - pos: 16.5,-83.5 - parent: 2 - - uid: 8196 - components: - - type: Transform - pos: -13.5,-69.5 - parent: 2 - - uid: 8198 - components: - - type: Transform - pos: -13.5,-71.5 - parent: 2 - - uid: 8200 - components: - - type: Transform - pos: -13.5,-75.5 - parent: 2 - uid: 8202 components: - type: Transform pos: -13.5,-77.5 parent: 2 - - uid: 8204 - components: - - type: Transform - pos: -13.5,-81.5 - parent: 2 - uid: 8254 components: - type: Transform @@ -140650,61 +141010,26 @@ entities: - type: Transform pos: 37.5,-62.5 parent: 2 - - uid: 8290 - components: - - type: Transform - pos: 41.5,-33.5 - parent: 2 - - uid: 8302 - components: - - type: Transform - pos: 49.5,-12.5 - parent: 2 - uid: 8333 components: - type: Transform pos: 37.5,-57.5 parent: 2 - - uid: 8342 - components: - - type: Transform - pos: 51.5,-14.5 - parent: 2 - uid: 8357 components: - type: Transform pos: 45.5,-89.5 parent: 2 - - uid: 8376 - components: - - type: Transform - pos: 40.5,-26.5 - parent: 2 - - uid: 8380 - components: - - type: Transform - pos: -52.5,-61.5 - parent: 2 - uid: 8385 components: - type: Transform pos: 39.5,-19.5 parent: 2 - - uid: 8388 - components: - - type: Transform - pos: 39.5,-16.5 - parent: 2 - uid: 8391 components: - type: Transform pos: -53.5,-61.5 parent: 2 - - uid: 8412 - components: - - type: Transform - pos: -54.5,-61.5 - parent: 2 - uid: 8418 components: - type: Transform @@ -140720,11 +141045,6 @@ entities: - type: Transform pos: 33.5,20.5 parent: 2 - - uid: 8463 - components: - - type: Transform - pos: -38.5,-31.5 - parent: 2 - uid: 8467 components: - type: Transform @@ -140740,11 +141060,6 @@ entities: - type: Transform pos: -18.5,-12.5 parent: 2 - - uid: 8492 - components: - - type: Transform - pos: -50.5,-10.5 - parent: 2 - uid: 8507 components: - type: Transform @@ -140755,41 +141070,21 @@ entities: - type: Transform pos: 3.5,-11.5 parent: 2 - - uid: 8541 - components: - - type: Transform - pos: -64.5,-14.5 - parent: 2 - uid: 8543 components: - type: Transform pos: -0.5,14.5 parent: 2 - - uid: 8544 + - uid: 8571 components: - type: Transform - pos: -68.5,-17.5 - parent: 2 - - uid: 8577 - components: - - type: Transform - pos: -60.5,-35.5 + pos: 44.5,26.5 parent: 2 - uid: 8594 components: - type: Transform pos: -25.5,24.5 parent: 2 - - uid: 8623 - components: - - type: Transform - pos: 54.5,-23.5 - parent: 2 - - uid: 8624 - components: - - type: Transform - pos: 55.5,-23.5 - parent: 2 - uid: 8629 components: - type: Transform @@ -140810,11 +141105,6 @@ entities: - type: Transform pos: 56.5,-19.5 parent: 2 - - uid: 8750 - components: - - type: Transform - pos: 57.5,-19.5 - parent: 2 - uid: 8755 components: - type: Transform @@ -140825,41 +141115,21 @@ entities: - type: Transform pos: 53.5,-15.5 parent: 2 - - uid: 8760 - components: - - type: Transform - pos: 53.5,-14.5 - parent: 2 - uid: 8768 components: - type: Transform pos: 47.5,0.5 parent: 2 - - uid: 8770 - components: - - type: Transform - pos: 48.5,1.5 - parent: 2 - uid: 8771 components: - type: Transform pos: 47.5,1.5 parent: 2 - - uid: 8772 - components: - - type: Transform - pos: -30.5,-16.5 - parent: 2 - uid: 8774 components: - type: Transform pos: 47.5,4.5 parent: 2 - - uid: 8777 - components: - - type: Transform - pos: 44.5,4.5 - parent: 2 - uid: 8779 components: - type: Transform @@ -140870,16 +141140,6 @@ entities: - type: Transform pos: 43.5,1.5 parent: 2 - - uid: 8785 - components: - - type: Transform - pos: -24.5,24.5 - parent: 2 - - uid: 8787 - components: - - type: Transform - pos: -28.5,-16.5 - parent: 2 - uid: 8796 components: - type: Transform @@ -140895,16 +141155,6 @@ entities: - type: Transform pos: 43.5,3.5 parent: 2 - - uid: 8853 - components: - - type: Transform - pos: 48.5,24.5 - parent: 2 - - uid: 8861 - components: - - type: Transform - pos: 8.5,-79.5 - parent: 2 - uid: 8864 components: - type: Transform @@ -140915,11 +141165,6 @@ entities: - type: Transform pos: -44.5,-58.5 parent: 2 - - uid: 8896 - components: - - type: Transform - pos: 49.5,-28.5 - parent: 2 - uid: 8907 components: - type: Transform @@ -140945,11 +141190,6 @@ entities: - type: Transform pos: -28.5,24.5 parent: 2 - - uid: 9017 - components: - - type: Transform - pos: -27.5,24.5 - parent: 2 - uid: 9018 components: - type: Transform @@ -141015,21 +141255,6 @@ entities: - type: Transform pos: 15.5,4.5 parent: 2 - - uid: 9507 - components: - - type: Transform - pos: -38.5,-17.5 - parent: 2 - - uid: 9542 - components: - - type: Transform - pos: 43.5,-73.5 - parent: 2 - - uid: 9549 - components: - - type: Transform - pos: 18.5,-18.5 - parent: 2 - uid: 9566 components: - type: Transform @@ -141040,16 +141265,6 @@ entities: - type: Transform pos: 57.5,-38.5 parent: 2 - - uid: 9597 - components: - - type: Transform - pos: -25.5,-39.5 - parent: 2 - - uid: 9600 - components: - - type: Transform - pos: 43.5,-78.5 - parent: 2 - uid: 9602 components: - type: Transform @@ -141065,26 +141280,11 @@ entities: - type: Transform pos: 7.5,-13.5 parent: 2 - - uid: 9613 - components: - - type: Transform - pos: 3.5,-7.5 - parent: 2 - - uid: 9656 - components: - - type: Transform - pos: -14.5,-10.5 - parent: 2 - uid: 9660 components: - type: Transform pos: -27.5,-14.5 parent: 2 - - uid: 9661 - components: - - type: Transform - pos: -26.5,-14.5 - parent: 2 - uid: 9664 components: - type: Transform @@ -141095,16 +141295,6 @@ entities: - type: Transform pos: -13.5,-0.5 parent: 2 - - uid: 9691 - components: - - type: Transform - pos: -21.5,-57.5 - parent: 2 - - uid: 9701 - components: - - type: Transform - pos: -9.5,-53.5 - parent: 2 - uid: 9839 components: - type: Transform @@ -141115,46 +141305,21 @@ entities: - type: Transform pos: -13.5,-1.5 parent: 2 - - uid: 9852 - components: - - type: Transform - pos: -8.5,23.5 - parent: 2 - uid: 9866 components: - type: Transform pos: -12.5,-57.5 parent: 2 - - uid: 9894 - components: - - type: Transform - pos: -13.5,-4.5 - parent: 2 - uid: 9895 components: - type: Transform pos: -13.5,-3.5 parent: 2 - - uid: 9933 - components: - - type: Transform - pos: 30.5,-62.5 - parent: 2 - - uid: 9944 - components: - - type: Transform - pos: -27.5,-49.5 - parent: 2 - uid: 9946 components: - type: Transform pos: -27.5,-50.5 parent: 2 - - uid: 9971 - components: - - type: Transform - pos: 83.5,-12.5 - parent: 2 - uid: 10003 components: - type: Transform @@ -141165,11 +141330,6 @@ entities: - type: Transform pos: -14.5,-13.5 parent: 2 - - uid: 10011 - components: - - type: Transform - pos: -58.5,-57.5 - parent: 2 - uid: 10013 components: - type: Transform @@ -141190,11 +141350,6 @@ entities: - type: Transform pos: 11.5,-3.5 parent: 2 - - uid: 10121 - components: - - type: Transform - pos: -54.5,-60.5 - parent: 2 - uid: 10130 components: - type: Transform @@ -141205,16 +141360,6 @@ entities: - type: Transform pos: -32.5,-33.5 parent: 2 - - uid: 10173 - components: - - type: Transform - pos: -17.5,3.5 - parent: 2 - - uid: 10193 - components: - - type: Transform - pos: 12.5,-15.5 - parent: 2 - uid: 10198 components: - type: Transform @@ -141225,51 +141370,16 @@ entities: - type: Transform pos: 3.5,-5.5 parent: 2 - - uid: 10218 - components: - - type: Transform - pos: 28.5,-9.5 - parent: 2 - - uid: 10228 - components: - - type: Transform - pos: -31.5,-38.5 - parent: 2 - - uid: 10230 - components: - - type: Transform - pos: -25.5,-26.5 - parent: 2 - uid: 10231 components: - type: Transform pos: -26.5,-33.5 parent: 2 - - uid: 10252 - components: - - type: Transform - pos: -25.5,-37.5 - parent: 2 - uid: 10384 components: - type: Transform pos: -58.5,-61.5 parent: 2 - - uid: 10412 - components: - - type: Transform - pos: 11.5,-8.5 - parent: 2 - - uid: 10417 - components: - - type: Transform - pos: -31.5,-10.5 - parent: 2 - - uid: 10422 - components: - - type: Transform - pos: 63.5,-51.5 - parent: 2 - uid: 10423 components: - type: Transform @@ -141280,21 +141390,11 @@ entities: - type: Transform pos: 27.5,-5.5 parent: 2 - - uid: 10429 - components: - - type: Transform - pos: 22.5,-8.5 - parent: 2 - uid: 10456 components: - type: Transform pos: 27.5,-11.5 parent: 2 - - uid: 10498 - components: - - type: Transform - pos: -1.5,15.5 - parent: 2 - uid: 10528 components: - type: Transform @@ -141305,41 +141405,16 @@ entities: - type: Transform pos: -18.5,-14.5 parent: 2 - - uid: 10531 - components: - - type: Transform - pos: -39.5,-21.5 - parent: 2 - uid: 10534 components: - type: Transform pos: -14.5,-16.5 parent: 2 - - uid: 10541 - components: - - type: Transform - pos: 13.5,9.5 - parent: 2 - - uid: 10550 - components: - - type: Transform - pos: -30.5,-20.5 - parent: 2 - uid: 10555 components: - type: Transform pos: 11.5,1.5 parent: 2 - - uid: 10557 - components: - - type: Transform - pos: 4.5,-13.5 - parent: 2 - - uid: 10629 - components: - - type: Transform - pos: -18.5,-13.5 - parent: 2 - uid: 10635 components: - type: Transform @@ -141350,26 +141425,6 @@ entities: - type: Transform pos: -34.5,-10.5 parent: 2 - - uid: 10679 - components: - - type: Transform - pos: -24.5,-12.5 - parent: 2 - - uid: 10691 - components: - - type: Transform - pos: -32.5,-26.5 - parent: 2 - - uid: 10693 - components: - - type: Transform - pos: -49.5,-35.5 - parent: 2 - - uid: 10694 - components: - - type: Transform - pos: 80.5,-14.5 - parent: 2 - uid: 10713 components: - type: Transform @@ -141385,61 +141440,26 @@ entities: - type: Transform pos: -56.5,-24.5 parent: 2 - - uid: 10748 - components: - - type: Transform - pos: -54.5,-56.5 - parent: 2 - uid: 10759 components: - type: Transform pos: -56.5,-23.5 parent: 2 - - uid: 10766 - components: - - type: Transform - pos: -56.5,-20.5 - parent: 2 - - uid: 10767 - components: - - type: Transform - pos: -35.5,-1.5 - parent: 2 - uid: 10778 components: - type: Transform pos: -28.5,26.5 parent: 2 - - uid: 10780 - components: - - type: Transform - pos: -28.5,30.5 - parent: 2 - - uid: 10826 - components: - - type: Transform - pos: 65.5,-70.5 - parent: 2 - uid: 10870 components: - type: Transform pos: 64.5,-83.5 parent: 2 - - uid: 10971 - components: - - type: Transform - pos: -26.5,-39.5 - parent: 2 - uid: 10985 components: - type: Transform pos: 85.5,-39.5 parent: 2 - - uid: 10999 - components: - - type: Transform - pos: -31.5,-20.5 - parent: 2 - uid: 11035 components: - type: Transform @@ -141450,76 +141470,31 @@ entities: - type: Transform pos: -28.5,-55.5 parent: 2 - - uid: 11059 - components: - - type: Transform - pos: -30.5,-14.5 - parent: 2 - uid: 11071 components: - type: Transform pos: -46.5,-25.5 parent: 2 - - uid: 11122 - components: - - type: Transform - pos: 18.5,-19.5 - parent: 2 - uid: 11169 components: - type: Transform pos: -9.5,-86.5 parent: 2 - - uid: 11202 - components: - - type: Transform - pos: -36.5,-1.5 - parent: 2 - - uid: 11209 - components: - - type: Transform - pos: -21.5,18.5 - parent: 2 - uid: 11216 components: - type: Transform pos: 26.5,30.5 parent: 2 - - uid: 11239 - components: - - type: Transform - pos: -36.5,-38.5 - parent: 2 - - uid: 11253 - components: - - type: Transform - pos: 42.5,13.5 - parent: 2 - - uid: 11261 - components: - - type: Transform - pos: -54.5,-47.5 - parent: 2 - uid: 11264 components: - type: Transform pos: -54.5,-48.5 parent: 2 - - uid: 11271 - components: - - type: Transform - pos: -26.5,-26.5 - parent: 2 - uid: 11284 components: - type: Transform pos: -53.5,-46.5 parent: 2 - - uid: 11286 - components: - - type: Transform - pos: 51.5,18.5 - parent: 2 - uid: 11290 components: - type: Transform @@ -141540,31 +141515,11 @@ entities: - type: Transform pos: -18.5,25.5 parent: 2 - - uid: 11347 - components: - - type: Transform - pos: 27.5,-32.5 - parent: 2 - uid: 11348 components: - type: Transform pos: 26.5,-32.5 parent: 2 - - uid: 11389 - components: - - type: Transform - pos: 31.5,-32.5 - parent: 2 - - uid: 11396 - components: - - type: Transform - pos: 23.5,-27.5 - parent: 2 - - uid: 11399 - components: - - type: Transform - pos: 31.5,-36.5 - parent: 2 - uid: 11483 components: - type: Transform @@ -141575,21 +141530,6 @@ entities: - type: Transform pos: 63.5,-67.5 parent: 2 - - uid: 11553 - components: - - type: Transform - pos: 17.5,-19.5 - parent: 2 - - uid: 11575 - components: - - type: Transform - pos: 16.5,-20.5 - parent: 2 - - uid: 11577 - components: - - type: Transform - pos: 13.5,-20.5 - parent: 2 - uid: 11578 components: - type: Transform @@ -141600,51 +141540,11 @@ entities: - type: Transform pos: 15.5,-20.5 parent: 2 - - uid: 11625 - components: - - type: Transform - pos: 58.5,-37.5 - parent: 2 - - uid: 11637 - components: - - type: Transform - pos: -49.5,-10.5 - parent: 2 - - uid: 11787 - components: - - type: Transform - pos: 26.5,-5.5 - parent: 2 - - uid: 11803 - components: - - type: Transform - pos: 82.5,-38.5 - parent: 2 - - uid: 11824 - components: - - type: Transform - pos: -42.5,4.5 - parent: 2 - - uid: 11892 - components: - - type: Transform - pos: -31.5,-33.5 - parent: 2 - - uid: 11894 - components: - - type: Transform - pos: -28.5,35.5 - parent: 2 - uid: 11908 components: - type: Transform pos: -32.5,-29.5 parent: 2 - - uid: 12005 - components: - - type: Transform - pos: -32.5,-38.5 - parent: 2 - uid: 12016 components: - type: Transform @@ -141655,21 +141555,6 @@ entities: - type: Transform pos: 45.5,14.5 parent: 2 - - uid: 12026 - components: - - type: Transform - pos: -20.5,-14.5 - parent: 2 - - uid: 12029 - components: - - type: Transform - pos: -28.5,-17.5 - parent: 2 - - uid: 12075 - components: - - type: Transform - pos: 64.5,-55.5 - parent: 2 - uid: 12133 components: - type: Transform @@ -141680,11 +141565,6 @@ entities: - type: Transform pos: -36.5,-31.5 parent: 2 - - uid: 12221 - components: - - type: Transform - pos: -36.5,-28.5 - parent: 2 - uid: 12226 components: - type: Transform @@ -141705,11 +141585,6 @@ entities: - type: Transform pos: -8.5,20.5 parent: 2 - - uid: 12356 - components: - - type: Transform - pos: 54.5,-46.5 - parent: 2 - uid: 12359 components: - type: Transform @@ -141740,11 +141615,6 @@ entities: - type: Transform pos: 11.5,9.5 parent: 2 - - uid: 12492 - components: - - type: Transform - pos: 10.5,9.5 - parent: 2 - uid: 12495 components: - type: Transform @@ -141770,21 +141640,6 @@ entities: - type: Transform pos: -40.5,-40.5 parent: 2 - - uid: 12524 - components: - - type: Transform - pos: -46.5,-40.5 - parent: 2 - - uid: 12537 - components: - - type: Transform - pos: -52.5,-28.5 - parent: 2 - - uid: 12539 - components: - - type: Transform - pos: -52.5,-39.5 - parent: 2 - uid: 12540 components: - type: Transform @@ -141795,96 +141650,36 @@ entities: - type: Transform pos: -53.5,-35.5 parent: 2 - - uid: 12548 - components: - - type: Transform - pos: -51.5,-35.5 - parent: 2 - uid: 12549 components: - type: Transform pos: -52.5,-35.5 parent: 2 - - uid: 12556 - components: - - type: Transform - pos: -49.5,-39.5 - parent: 2 - - uid: 12558 - components: - - type: Transform - pos: -50.5,-35.5 - parent: 2 - uid: 12559 components: - type: Transform pos: -51.5,-20.5 parent: 2 - - uid: 12566 - components: - - type: Transform - pos: -46.5,-19.5 - parent: 2 - uid: 12567 components: - type: Transform pos: -47.5,-20.5 parent: 2 - - uid: 12568 - components: - - type: Transform - pos: -40.5,-19.5 - parent: 2 - - uid: 12569 - components: - - type: Transform - pos: 18.5,26.5 - parent: 2 - uid: 12572 components: - type: Transform pos: -53.5,-24.5 parent: 2 - - uid: 12573 - components: - - type: Transform - pos: -46.5,-22.5 - parent: 2 - - uid: 12582 - components: - - type: Transform - pos: -40.5,-18.5 - parent: 2 - uid: 12611 components: - type: Transform pos: -54.5,-24.5 parent: 2 - - uid: 12617 - components: - - type: Transform - pos: -53.5,-38.5 - parent: 2 - - uid: 12618 - components: - - type: Transform - pos: -53.5,-39.5 - parent: 2 - uid: 12620 components: - type: Transform pos: -51.5,-24.5 parent: 2 - - uid: 12621 - components: - - type: Transform - pos: -50.5,-24.5 - parent: 2 - - uid: 12624 - components: - - type: Transform - pos: -49.5,-59.5 - parent: 2 - uid: 12626 components: - type: Transform @@ -141905,16 +141700,6 @@ entities: - type: Transform pos: -17.5,4.5 parent: 2 - - uid: 12692 - components: - - type: Transform - pos: -51.5,-32.5 - parent: 2 - - uid: 12693 - components: - - type: Transform - pos: -18.5,10.5 - parent: 2 - uid: 12696 components: - type: Transform @@ -141925,16 +141710,6 @@ entities: - type: Transform pos: -23.5,2.5 parent: 2 - - uid: 12705 - components: - - type: Transform - pos: -51.5,-28.5 - parent: 2 - - uid: 12726 - components: - - type: Transform - pos: 7.5,-87.5 - parent: 2 - uid: 12730 components: - type: Transform @@ -141945,51 +141720,26 @@ entities: - type: Transform pos: 8.5,-86.5 parent: 2 - - uid: 12734 - components: - - type: Transform - pos: 11.5,-87.5 - parent: 2 - uid: 12736 components: - type: Transform pos: 7.5,-97.5 parent: 2 - - uid: 12772 - components: - - type: Transform - pos: 13.5,-87.5 - parent: 2 - uid: 12774 components: - type: Transform pos: -5.5,-95.5 parent: 2 - - uid: 12775 - components: - - type: Transform - pos: -4.5,-69.5 - parent: 2 - uid: 12777 components: - type: Transform pos: -5.5,-64.5 parent: 2 - - uid: 12784 - components: - - type: Transform - pos: 3.5,-54.5 - parent: 2 - uid: 12787 components: - type: Transform pos: 8.5,-64.5 parent: 2 - - uid: 12790 - components: - - type: Transform - pos: 8.5,-69.5 - parent: 2 - uid: 12791 components: - type: Transform @@ -142010,16 +141760,6 @@ entities: - type: Transform pos: 14.5,-90.5 parent: 2 - - uid: 12846 - components: - - type: Transform - pos: -56.5,-26.5 - parent: 2 - - uid: 12848 - components: - - type: Transform - pos: 13.5,-89.5 - parent: 2 - uid: 12852 components: - type: Transform @@ -142030,11 +141770,6 @@ entities: - type: Transform pos: -57.5,-27.5 parent: 2 - - uid: 12921 - components: - - type: Transform - pos: -57.5,-32.5 - parent: 2 - uid: 12981 components: - type: Transform @@ -142050,61 +141785,16 @@ entities: - type: Transform pos: -46.5,-23.5 parent: 2 - - uid: 13027 - components: - - type: Transform - pos: 71.5,-39.5 - parent: 2 - - uid: 13057 - components: - - type: Transform - pos: 44.5,18.5 - parent: 2 - uid: 13102 components: - type: Transform pos: -22.5,18.5 parent: 2 - - uid: 13124 - components: - - type: Transform - pos: -49.5,-25.5 - parent: 2 - - uid: 13132 - components: - - type: Transform - pos: 3.5,-13.5 - parent: 2 - - uid: 13167 - components: - - type: Transform - pos: 6.5,-75.5 - parent: 2 - - uid: 13195 - components: - - type: Transform - pos: 28.5,-6.5 - parent: 2 - uid: 13204 components: - type: Transform pos: 17.5,-16.5 parent: 2 - - uid: 13257 - components: - - type: Transform - pos: -3.5,-75.5 - parent: 2 - - uid: 13269 - components: - - type: Transform - pos: -5.5,-75.5 - parent: 2 - - uid: 13279 - components: - - type: Transform - pos: 8.5,-72.5 - parent: 2 - uid: 13283 components: - type: Transform @@ -142115,16 +141805,6 @@ entities: - type: Transform pos: -5.5,-66.5 parent: 2 - - uid: 13292 - components: - - type: Transform - pos: -5.5,-60.5 - parent: 2 - - uid: 13306 - components: - - type: Transform - pos: 57.5,-42.5 - parent: 2 - uid: 13339 components: - type: Transform @@ -142135,66 +141815,16 @@ entities: - type: Transform pos: -6.5,-80.5 parent: 2 - - uid: 13391 - components: - - type: Transform - pos: -9.5,-76.5 - parent: 2 - - uid: 13469 - components: - - type: Transform - pos: -37.5,19.5 - parent: 2 - - uid: 13540 - components: - - type: Transform - pos: -10.5,-22.5 - parent: 2 - uid: 13670 components: - type: Transform pos: 26.5,-60.5 parent: 2 - - uid: 13691 - components: - - type: Transform - pos: -9.5,-79.5 - parent: 2 - - uid: 13738 - components: - - type: Transform - pos: 20.5,-60.5 - parent: 2 - - uid: 13764 - components: - - type: Transform - pos: 23.5,-60.5 - parent: 2 - - uid: 13765 - components: - - type: Transform - pos: 17.5,-60.5 - parent: 2 - uid: 13859 components: - type: Transform pos: 18.5,-17.5 parent: 2 - - uid: 13880 - components: - - type: Transform - pos: -46.5,-41.5 - parent: 2 - - uid: 13882 - components: - - type: Transform - pos: -46.5,-42.5 - parent: 2 - - uid: 13883 - components: - - type: Transform - pos: -49.5,-42.5 - parent: 2 - uid: 13886 components: - type: Transform @@ -142210,41 +141840,16 @@ entities: - type: Transform pos: -51.5,-44.5 parent: 2 - - uid: 13897 - components: - - type: Transform - pos: -42.5,-6.5 - parent: 2 - - uid: 13904 - components: - - type: Transform - pos: -43.5,-45.5 - parent: 2 - - uid: 13906 - components: - - type: Transform - pos: -49.5,-46.5 - parent: 2 - uid: 13911 components: - type: Transform pos: -46.5,-47.5 parent: 2 - - uid: 13912 - components: - - type: Transform - pos: -43.5,-42.5 - parent: 2 - uid: 13913 components: - type: Transform pos: -44.5,-47.5 parent: 2 - - uid: 13917 - components: - - type: Transform - pos: -51.5,-46.5 - parent: 2 - uid: 13920 components: - type: Transform @@ -142260,41 +141865,16 @@ entities: - type: Transform pos: -22.5,23.5 parent: 2 - - uid: 14263 - components: - - type: Transform - pos: -16.5,24.5 - parent: 2 - - uid: 14276 - components: - - type: Transform - pos: -5.5,16.5 - parent: 2 - uid: 14302 components: - type: Transform pos: -28.5,-52.5 parent: 2 - - uid: 14314 - components: - - type: Transform - pos: 42.5,22.5 - parent: 2 - - uid: 14334 - components: - - type: Transform - pos: -3.5,16.5 - parent: 2 - uid: 14335 components: - type: Transform pos: -2.5,15.5 parent: 2 - - uid: 14456 - components: - - type: Transform - pos: -21.5,-56.5 - parent: 2 - uid: 14492 components: - type: Transform @@ -142310,21 +141890,6 @@ entities: - type: Transform pos: -5.5,-79.5 parent: 2 - - uid: 14501 - components: - - type: Transform - pos: -8.5,-80.5 - parent: 2 - - uid: 14503 - components: - - type: Transform - pos: 9.5,-80.5 - parent: 2 - - uid: 14510 - components: - - type: Transform - pos: 43.5,-40.5 - parent: 2 - uid: 14515 components: - type: Transform @@ -142335,31 +141900,11 @@ entities: - type: Transform pos: -37.5,-1.5 parent: 2 - - uid: 14543 - components: - - type: Transform - pos: 80.5,-24.5 - parent: 2 - uid: 14546 components: - type: Transform pos: -10.5,-52.5 parent: 2 - - uid: 14715 - components: - - type: Transform - pos: 43.5,-42.5 - parent: 2 - - uid: 14773 - components: - - type: Transform - pos: -19.5,6.5 - parent: 2 - - uid: 14792 - components: - - type: Transform - pos: -18.5,0.5 - parent: 2 - uid: 14801 components: - type: Transform @@ -142370,11 +141915,6 @@ entities: - type: Transform pos: -19.5,9.5 parent: 2 - - uid: 14825 - components: - - type: Transform - pos: -28.5,16.5 - parent: 2 - uid: 14826 components: - type: Transform @@ -142385,11 +141925,6 @@ entities: - type: Transform pos: -31.5,9.5 parent: 2 - - uid: 14836 - components: - - type: Transform - pos: -31.5,12.5 - parent: 2 - uid: 14852 components: - type: Transform @@ -142398,12 +141933,42 @@ entities: - uid: 14916 components: - type: Transform - pos: -63.5,-35.5 + pos: 4.5,-85.5 + parent: 2 + - uid: 14917 + components: + - type: Transform + pos: -59.5,-9.5 + parent: 2 + - uid: 14922 + components: + - type: Transform + pos: -40.5,5.5 + parent: 2 + - uid: 14932 + components: + - type: Transform + pos: -72.5,-10.5 parent: 2 - uid: 14938 components: - type: Transform - pos: -63.5,-39.5 + pos: -73.5,-13.5 + parent: 2 + - uid: 14942 + components: + - type: Transform + pos: -71.5,-17.5 + parent: 2 + - uid: 14953 + components: + - type: Transform + pos: -70.5,-10.5 + parent: 2 + - uid: 14957 + components: + - type: Transform + pos: -61.5,-10.5 parent: 2 - uid: 14974 components: @@ -142413,28 +141978,93 @@ entities: - uid: 15008 components: - type: Transform - pos: 7.5,-64.5 + pos: -59.5,-54.5 + parent: 2 + - uid: 15015 + components: + - type: Transform + pos: 13.5,8.5 + parent: 2 + - uid: 15023 + components: + - type: Transform + pos: 7.5,7.5 parent: 2 - uid: 15024 components: - type: Transform pos: -22.5,8.5 parent: 2 + - uid: 15028 + components: + - type: Transform + pos: 20.5,20.5 + parent: 2 + - uid: 15033 + components: + - type: Transform + pos: 18.5,24.5 + parent: 2 + - uid: 15034 + components: + - type: Transform + pos: 74.5,-39.5 + parent: 2 - uid: 15042 components: - type: Transform - pos: 8.5,-61.5 + pos: 4.5,-87.5 parent: 2 - uid: 15057 components: - type: Transform pos: 8.5,-95.5 parent: 2 + - uid: 15142 + components: + - type: Transform + pos: -11.5,6.5 + parent: 2 + - uid: 15144 + components: + - type: Transform + pos: -10.5,9.5 + parent: 2 + - uid: 15154 + components: + - type: Transform + pos: 1.5,15.5 + parent: 2 + - uid: 15204 + components: + - type: Transform + pos: -37.5,4.5 + parent: 2 + - uid: 15238 + components: + - type: Transform + pos: -21.5,7.5 + parent: 2 - uid: 15240 components: - type: Transform pos: -54.5,-58.5 parent: 2 + - uid: 15244 + components: + - type: Transform + pos: -0.5,-85.5 + parent: 2 + - uid: 15265 + components: + - type: Transform + pos: 6.5,-87.5 + parent: 2 + - uid: 15283 + components: + - type: Transform + pos: -29.5,-68.5 + parent: 2 - uid: 15286 components: - type: Transform @@ -142443,13 +142073,38 @@ entities: - uid: 15289 components: - type: Transform - pos: -24.5,23.5 + pos: -31.5,-66.5 + parent: 2 + - uid: 15307 + components: + - type: Transform + pos: 4.5,-59.5 + parent: 2 + - uid: 15309 + components: + - type: Transform + pos: -23.5,-68.5 + parent: 2 + - uid: 15312 + components: + - type: Transform + pos: 8.5,15.5 + parent: 2 + - uid: 15316 + components: + - type: Transform + pos: -5.5,19.5 parent: 2 - uid: 15328 components: - type: Transform pos: -10.5,34.5 parent: 2 + - uid: 15352 + components: + - type: Transform + pos: 57.5,-77.5 + parent: 2 - uid: 15371 components: - type: Transform @@ -142458,12 +142113,42 @@ entities: - uid: 15375 components: - type: Transform - pos: -23.5,9.5 + pos: -17.5,-68.5 parent: 2 - uid: 15389 components: - type: Transform - pos: -26.5,24.5 + pos: -4.5,-86.5 + parent: 2 + - uid: 15444 + components: + - type: Transform + pos: -10.5,-86.5 + parent: 2 + - uid: 15446 + components: + - type: Transform + pos: 75.5,-65.5 + parent: 2 + - uid: 15447 + components: + - type: Transform + pos: 37.5,-77.5 + parent: 2 + - uid: 15448 + components: + - type: Transform + pos: -9.5,-71.5 + parent: 2 + - uid: 15449 + components: + - type: Transform + pos: 9.5,-79.5 + parent: 2 + - uid: 15450 + components: + - type: Transform + pos: 5.5,9.5 parent: 2 - uid: 15451 components: @@ -142475,20 +142160,25 @@ entities: - type: Transform pos: 36.5,23.5 parent: 2 + - uid: 15462 + components: + - type: Transform + pos: -10.5,-58.5 + parent: 2 - uid: 15467 components: - type: Transform - pos: -64.5,-17.5 + pos: -3.5,19.5 parent: 2 - - uid: 15478 + - uid: 15476 components: - type: Transform - pos: -59.5,-15.5 + pos: -67.5,-9.5 parent: 2 - uid: 15479 components: - type: Transform - pos: -66.5,-8.5 + pos: -10.5,-88.5 parent: 2 - uid: 15480 components: @@ -142498,52 +142188,117 @@ entities: - uid: 15481 components: - type: Transform - pos: -58.5,-9.5 + pos: 12.5,-86.5 parent: 2 - uid: 15482 components: - type: Transform - pos: -58.5,-15.5 + pos: 16.5,-75.5 + parent: 2 + - uid: 15486 + components: + - type: Transform + pos: 16.5,-81.5 + parent: 2 + - uid: 15572 + components: + - type: Transform + pos: -4.5,-27.5 parent: 2 - uid: 15644 components: - type: Transform pos: -20.5,23.5 parent: 2 + - uid: 15648 + components: + - type: Transform + pos: 8.5,-60.5 + parent: 2 - uid: 15650 components: - type: Transform pos: -17.5,15.5 parent: 2 + - uid: 15663 + components: + - type: Transform + pos: -68.5,-15.5 + parent: 2 + - uid: 15665 + components: + - type: Transform + pos: -17.5,9.5 + parent: 2 + - uid: 15704 + components: + - type: Transform + pos: -56.5,-11.5 + parent: 2 - uid: 15708 components: - type: Transform pos: -10.5,27.5 parent: 2 + - uid: 15714 + components: + - type: Transform + pos: -66.5,-7.5 + parent: 2 - uid: 15715 components: - type: Transform - pos: -19.5,0.5 + pos: -20.5,0.5 parent: 2 - uid: 15726 components: - type: Transform pos: -21.5,23.5 parent: 2 + - uid: 15730 + components: + - type: Transform + pos: -1.5,-33.5 + parent: 2 + - uid: 15732 + components: + - type: Transform + pos: -64.5,-8.5 + parent: 2 + - uid: 15742 + components: + - type: Transform + pos: -19.5,15.5 + parent: 2 + - uid: 15743 + components: + - type: Transform + pos: -5.5,23.5 + parent: 2 + - uid: 15768 + components: + - type: Transform + pos: 76.5,-47.5 + parent: 2 - uid: 15786 components: - type: Transform pos: -54.5,-55.5 parent: 2 + - uid: 15788 + components: + - type: Transform + pos: -2.5,-29.5 + parent: 2 - uid: 15823 components: - type: Transform - pos: -61.5,-7.5 + pos: -59.5,-13.5 parent: 2 - uid: 15843 components: - type: Transform - pos: -72.5,-8.5 + pos: -41.5,-6.5 parent: 2 - uid: 15844 components: @@ -142553,7 +142308,7 @@ entities: - uid: 15865 components: - type: Transform - pos: -71.5,-11.5 + pos: 64.5,-61.5 parent: 2 - uid: 15866 components: @@ -142565,35 +142320,50 @@ entities: - type: Transform pos: -67.5,-15.5 parent: 2 + - uid: 15878 + components: + - type: Transform + pos: 59.5,-70.5 + parent: 2 + - uid: 15880 + components: + - type: Transform + pos: -28.5,13.5 + parent: 2 - uid: 15882 components: - type: Transform - pos: -68.5,-12.5 + pos: -52.5,-39.5 parent: 2 - uid: 15883 components: - type: Transform pos: -67.5,-11.5 parent: 2 + - uid: 15884 + components: + - type: Transform + pos: -31.5,3.5 + parent: 2 - uid: 15886 components: - type: Transform pos: -68.5,-7.5 parent: 2 + - uid: 15891 + components: + - type: Transform + pos: -28.5,8.5 + parent: 2 - uid: 15895 components: - type: Transform pos: -56.5,-14.5 parent: 2 - - uid: 15896 - components: - - type: Transform - pos: -57.5,-11.5 - parent: 2 - uid: 15898 components: - type: Transform - pos: -66.5,-13.5 + pos: -23.5,8.5 parent: 2 - uid: 15899 components: @@ -142605,21 +142375,51 @@ entities: - type: Transform pos: -61.5,-14.5 parent: 2 + - uid: 15904 + components: + - type: Transform + pos: -3.5,-29.5 + parent: 2 - uid: 15905 components: - type: Transform pos: -59.5,-7.5 parent: 2 + - uid: 15906 + components: + - type: Transform + pos: -31.5,4.5 + parent: 2 + - uid: 15909 + components: + - type: Transform + pos: -28.5,15.5 + parent: 2 + - uid: 15913 + components: + - type: Transform + pos: -25.5,18.5 + parent: 2 - uid: 15914 components: - type: Transform pos: -54.5,-14.5 parent: 2 + - uid: 15915 + components: + - type: Transform + pos: 13.5,-86.5 + parent: 2 - uid: 15916 components: - type: Transform pos: -51.5,-14.5 parent: 2 + - uid: 15921 + components: + - type: Transform + pos: -17.5,6.5 + parent: 2 - uid: 15924 components: - type: Transform @@ -142628,7 +142428,7 @@ entities: - uid: 15928 components: - type: Transform - pos: 42.5,-40.5 + pos: 12.5,-76.5 parent: 2 - uid: 15941 components: @@ -142638,47 +142438,82 @@ entities: - uid: 15945 components: - type: Transform - pos: -69.5,-15.5 + pos: -34.5,24.5 parent: 2 - uid: 15949 components: - type: Transform pos: 18.5,-30.5 parent: 2 + - uid: 15950 + components: + - type: Transform + pos: -0.5,-35.5 + parent: 2 + - uid: 15951 + components: + - type: Transform + pos: 8.5,-65.5 + parent: 2 - uid: 15952 components: - type: Transform pos: 17.5,-23.5 parent: 2 + - uid: 15953 + components: + - type: Transform + pos: -8.5,7.5 + parent: 2 - uid: 15954 components: - type: Transform - pos: 18.5,-27.5 + pos: -12.5,-91.5 parent: 2 - uid: 15955 components: - type: Transform pos: 17.5,-27.5 parent: 2 + - uid: 15956 + components: + - type: Transform + pos: -8.5,6.5 + parent: 2 + - uid: 15957 + components: + - type: Transform + pos: -3.5,-73.5 + parent: 2 - uid: 15958 components: - type: Transform - pos: 18.5,-31.5 + pos: -2.5,5.5 parent: 2 - uid: 15960 components: - type: Transform pos: 19.5,-32.5 parent: 2 + - uid: 15961 + components: + - type: Transform + pos: -0.5,7.5 + parent: 2 + - uid: 15962 + components: + - type: Transform + pos: 1.5,6.5 + parent: 2 - uid: 15963 components: - type: Transform - pos: 23.5,-32.5 + pos: 1.5,4.5 parent: 2 - uid: 15964 components: - type: Transform - pos: 25.5,-41.5 + pos: -4.5,3.5 parent: 2 - uid: 15966 components: @@ -142688,7 +142523,7 @@ entities: - uid: 15967 components: - type: Transform - pos: 36.5,-28.5 + pos: -6.5,4.5 parent: 2 - uid: 15972 components: @@ -142698,7 +142533,12 @@ entities: - uid: 15973 components: - type: Transform - pos: 18.5,-23.5 + pos: 15.5,-90.5 + parent: 2 + - uid: 15974 + components: + - type: Transform + pos: -5.5,-76.5 parent: 2 - uid: 15975 components: @@ -142718,12 +142558,12 @@ entities: - uid: 15978 components: - type: Transform - pos: 31.5,-23.5 + pos: -6.5,-76.5 parent: 2 - uid: 15979 components: - type: Transform - pos: 40.5,-30.5 + pos: -9.5,1.5 parent: 2 - uid: 15980 components: @@ -142733,12 +142573,22 @@ entities: - uid: 15981 components: - type: Transform - pos: 40.5,-27.5 + pos: -1.5,-58.5 parent: 2 - uid: 15982 components: - type: Transform - pos: 40.5,-28.5 + pos: 11.5,-80.5 + parent: 2 + - uid: 15983 + components: + - type: Transform + pos: -8.5,-79.5 + parent: 2 + - uid: 15985 + components: + - type: Transform + pos: -32.5,22.5 parent: 2 - uid: 15986 components: @@ -142753,12 +142603,27 @@ entities: - uid: 15989 components: - type: Transform - pos: 41.5,-29.5 + pos: 5.5,1.5 + parent: 2 + - uid: 15990 + components: + - type: Transform + pos: -12.5,6.5 parent: 2 - uid: 15991 components: - type: Transform - pos: 25.5,-44.5 + pos: -3.5,-24.5 + parent: 2 + - uid: 15993 + components: + - type: Transform + pos: -10.5,-23.5 + parent: 2 + - uid: 15994 + components: + - type: Transform + pos: 60.5,-77.5 parent: 2 - uid: 15995 components: @@ -142770,6 +142635,11 @@ entities: - type: Transform pos: -35.5,16.5 parent: 2 + - uid: 15997 + components: + - type: Transform + pos: -5.5,-27.5 + parent: 2 - uid: 15999 components: - type: Transform @@ -142778,12 +142648,27 @@ entities: - uid: 16002 components: - type: Transform - pos: 24.5,-23.5 + pos: -10.5,-27.5 + parent: 2 + - uid: 16003 + components: + - type: Transform + pos: -3.5,-25.5 + parent: 2 + - uid: 16004 + components: + - type: Transform + pos: 28.5,-5.5 + parent: 2 + - uid: 16005 + components: + - type: Transform + pos: -35.5,24.5 parent: 2 - uid: 16006 components: - type: Transform - pos: 25.5,-46.5 + pos: -17.5,5.5 parent: 2 - uid: 16017 components: @@ -142793,17 +142678,17 @@ entities: - uid: 16032 components: - type: Transform - pos: -13.5,-55.5 + pos: -29.5,9.5 parent: 2 - uid: 16055 components: - type: Transform - pos: -1.5,-54.5 + pos: -8.5,-76.5 parent: 2 - uid: 16072 components: - type: Transform - pos: 47.5,18.5 + pos: 22.5,-27.5 parent: 2 - uid: 16080 components: @@ -142813,13 +142698,23 @@ entities: - uid: 16082 components: - type: Transform - pos: -13.5,-56.5 + pos: -19.5,-6.5 parent: 2 - uid: 16083 components: - type: Transform pos: -13.5,-52.5 parent: 2 + - uid: 16088 + components: + - type: Transform + pos: 30.5,-59.5 + parent: 2 + - uid: 16089 + components: + - type: Transform + pos: 32.5,-57.5 + parent: 2 - uid: 16092 components: - type: Transform @@ -142835,16 +142730,46 @@ entities: - type: Transform pos: -64.5,-57.5 parent: 2 + - uid: 16131 + components: + - type: Transform + pos: 0.5,-38.5 + parent: 2 - uid: 16141 components: - type: Transform pos: -43.5,-4.5 parent: 2 + - uid: 16153 + components: + - type: Transform + pos: -4.5,-61.5 + parent: 2 + - uid: 16170 + components: + - type: Transform + pos: -3.5,-72.5 + parent: 2 - uid: 16201 components: - type: Transform pos: 76.5,-75.5 parent: 2 + - uid: 16210 + components: + - type: Transform + pos: 11.5,-79.5 + parent: 2 + - uid: 16211 + components: + - type: Transform + pos: -22.5,7.5 + parent: 2 + - uid: 16219 + components: + - type: Transform + pos: 34.5,-56.5 + parent: 2 - uid: 16230 components: - type: Transform @@ -142853,17 +142778,32 @@ entities: - uid: 16231 components: - type: Transform - pos: 56.5,-57.5 + pos: 33.5,-56.5 parent: 2 - uid: 16232 components: - type: Transform - pos: 56.5,-58.5 + pos: 32.5,-59.5 + parent: 2 + - uid: 16233 + components: + - type: Transform + pos: 7.5,-69.5 + parent: 2 + - uid: 16234 + components: + - type: Transform + pos: 8.5,-66.5 parent: 2 - uid: 16236 components: - type: Transform - pos: 56.5,-59.5 + pos: -16.5,23.5 + parent: 2 + - uid: 16245 + components: + - type: Transform + pos: 26.5,-29.5 parent: 2 - uid: 16268 components: @@ -142875,6 +142815,21 @@ entities: - type: Transform pos: -59.5,-8.5 parent: 2 + - uid: 16276 + components: + - type: Transform + pos: -3.5,-68.5 + parent: 2 + - uid: 16308 + components: + - type: Transform + pos: -27.5,23.5 + parent: 2 + - uid: 16313 + components: + - type: Transform + pos: -9.5,23.5 + parent: 2 - uid: 16364 components: - type: Transform @@ -142883,27 +142838,52 @@ entities: - uid: 16365 components: - type: Transform - pos: -47.5,-14.5 + pos: -10.5,23.5 + parent: 2 + - uid: 16451 + components: + - type: Transform + pos: -17.5,17.5 + parent: 2 + - uid: 16452 + components: + - type: Transform + pos: 12.5,29.5 parent: 2 - uid: 16453 components: - type: Transform - pos: -58.5,-7.5 + pos: -10.5,28.5 parent: 2 - uid: 16454 components: - type: Transform pos: -59.5,-6.5 parent: 2 - - uid: 16636 - components: - - type: Transform - pos: -50.5,-14.5 - parent: 2 - uid: 16641 components: - type: Transform - pos: 56.5,-61.5 + pos: -17.5,10.5 + parent: 2 + - uid: 16665 + components: + - type: Transform + pos: -17.5,18.5 + parent: 2 + - uid: 16673 + components: + - type: Transform + pos: 41.5,-14.5 + parent: 2 + - uid: 16704 + components: + - type: Transform + pos: 25.5,-33.5 + parent: 2 + - uid: 16715 + components: + - type: Transform + pos: -29.5,-12.5 parent: 2 - uid: 16723 components: @@ -142913,7 +142893,7 @@ entities: - uid: 16724 components: - type: Transform - pos: 58.5,-60.5 + pos: 49.5,-6.5 parent: 2 - uid: 16731 components: @@ -142923,7 +142903,7 @@ entities: - uid: 16732 components: - type: Transform - pos: 58.5,-57.5 + pos: 32.5,-52.5 parent: 2 - uid: 16744 components: @@ -142943,27 +142923,67 @@ entities: - uid: 16783 components: - type: Transform - pos: -41.5,0.5 + pos: 25.5,-36.5 parent: 2 - uid: 16792 components: - type: Transform - pos: 58.5,-67.5 + pos: -31.5,-2.5 parent: 2 - uid: 16818 components: - type: Transform pos: 57.5,-66.5 parent: 2 + - uid: 16835 + components: + - type: Transform + pos: 29.5,-52.5 + parent: 2 + - uid: 16840 + components: + - type: Transform + pos: 49.5,-8.5 + parent: 2 - uid: 16886 components: - type: Transform pos: -43.5,-2.5 parent: 2 + - uid: 16894 + components: + - type: Transform + pos: 48.5,-2.5 + parent: 2 - uid: 16895 components: - type: Transform - pos: -64.5,-60.5 + pos: 49.5,-9.5 + parent: 2 + - uid: 16913 + components: + - type: Transform + pos: -5.5,-96.5 + parent: 2 + - uid: 16921 + components: + - type: Transform + pos: 44.5,-13.5 + parent: 2 + - uid: 16937 + components: + - type: Transform + pos: 14.5,-89.5 + parent: 2 + - uid: 16948 + components: + - type: Transform + pos: 43.5,7.5 + parent: 2 + - uid: 16964 + components: + - type: Transform + pos: 42.5,6.5 parent: 2 - uid: 16965 components: @@ -142975,10 +142995,10 @@ entities: - type: Transform pos: 58.5,-65.5 parent: 2 - - uid: 16995 + - uid: 16996 components: - type: Transform - pos: 59.5,-57.5 + pos: -17.5,23.5 parent: 2 - uid: 16997 components: @@ -142993,7 +143013,7 @@ entities: - uid: 16999 components: - type: Transform - pos: 61.5,-51.5 + pos: 51.5,13.5 parent: 2 - uid: 17000 components: @@ -143003,7 +143023,7 @@ entities: - uid: 17002 components: - type: Transform - pos: 62.5,-55.5 + pos: 50.5,8.5 parent: 2 - uid: 17005 components: @@ -143013,32 +143033,87 @@ entities: - uid: 17027 components: - type: Transform - pos: 32.5,-67.5 + pos: 49.5,8.5 parent: 2 - uid: 17057 components: - type: Transform - pos: 32.5,-68.5 + pos: -20.5,17.5 parent: 2 - uid: 17062 components: - type: Transform - pos: 31.5,-68.5 + pos: 44.5,6.5 + parent: 2 + - uid: 17073 + components: + - type: Transform + pos: 27.5,-49.5 + parent: 2 + - uid: 17090 + components: + - type: Transform + pos: 26.5,-49.5 + parent: 2 + - uid: 17120 + components: + - type: Transform + pos: 26.5,-52.5 parent: 2 - uid: 17124 components: - type: Transform - pos: -13.5,-53.5 + pos: 27.5,20.5 parent: 2 - uid: 17143 components: - type: Transform - pos: 32.5,-69.5 + pos: 5.5,-24.5 parent: 2 - uid: 17144 components: - type: Transform - pos: 51.5,-72.5 + pos: 4.5,-24.5 + parent: 2 + - uid: 17149 + components: + - type: Transform + pos: 44.5,-17.5 + parent: 2 + - uid: 17151 + components: + - type: Transform + pos: 43.5,-26.5 + parent: 2 + - uid: 17166 + components: + - type: Transform + pos: -49.5,-14.5 + parent: 2 + - uid: 17168 + components: + - type: Transform + pos: -34.5,8.5 + parent: 2 + - uid: 17198 + components: + - type: Transform + pos: -58.5,-49.5 + parent: 2 + - uid: 17275 + components: + - type: Transform + pos: -29.5,-16.5 + parent: 2 + - uid: 17284 + components: + - type: Transform + pos: 49.5,-34.5 + parent: 2 + - uid: 17298 + components: + - type: Transform + pos: 53.5,-35.5 parent: 2 - uid: 17393 components: @@ -143048,22 +143123,27 @@ entities: - uid: 17405 components: - type: Transform - pos: 22.5,20.5 + pos: 56.5,-37.5 parent: 2 - uid: 17459 components: - type: Transform pos: 50.5,13.5 parent: 2 - - uid: 17461 + - uid: 17527 components: - type: Transform - pos: 44.5,13.5 + pos: 48.5,3.5 parent: 2 - uid: 17528 components: - type: Transform - pos: 19.5,11.5 + pos: 47.5,3.5 + parent: 2 + - uid: 17544 + components: + - type: Transform + pos: 43.5,-1.5 parent: 2 - uid: 17655 components: @@ -143075,16 +143155,41 @@ entities: - type: Transform pos: 64.5,-51.5 parent: 2 + - uid: 17721 + components: + - type: Transform + pos: 43.5,-18.5 + parent: 2 + - uid: 17726 + components: + - type: Transform + pos: -21.5,13.5 + parent: 2 + - uid: 17728 + components: + - type: Transform + pos: 17.5,-29.5 + parent: 2 - uid: 17730 components: - type: Transform pos: 86.5,-25.5 parent: 2 + - uid: 17731 + components: + - type: Transform + pos: 54.5,-37.5 + parent: 2 - uid: 17732 components: - type: Transform pos: 85.5,-26.5 parent: 2 + - uid: 17733 + components: + - type: Transform + pos: -17.5,14.5 + parent: 2 - uid: 17734 components: - type: Transform @@ -143095,11 +143200,41 @@ entities: - type: Transform pos: 86.5,-32.5 parent: 2 + - uid: 17736 + components: + - type: Transform + pos: -13.5,-2.5 + parent: 2 + - uid: 17751 + components: + - type: Transform + pos: 57.5,-41.5 + parent: 2 + - uid: 17761 + components: + - type: Transform + pos: 58.5,-43.5 + parent: 2 + - uid: 17800 + components: + - type: Transform + pos: 5.5,-5.5 + parent: 2 - uid: 17817 components: - type: Transform pos: -58.5,-51.5 parent: 2 + - uid: 17847 + components: + - type: Transform + pos: -28.5,31.5 + parent: 2 + - uid: 17848 + components: + - type: Transform + pos: -14.5,-5.5 + parent: 2 - uid: 17849 components: - type: Transform @@ -143110,20 +143245,80 @@ entities: - type: Transform pos: 89.5,-11.5 parent: 2 + - uid: 17865 + components: + - type: Transform + pos: -38.5,10.5 + parent: 2 + - uid: 17924 + components: + - type: Transform + pos: 43.5,-25.5 + parent: 2 - uid: 17972 components: - type: Transform - pos: -28.5,25.5 + pos: 45.5,-85.5 parent: 2 - - uid: 18070 + - uid: 18058 components: - type: Transform - pos: 19.5,16.5 + pos: 38.5,-68.5 parent: 2 - - uid: 18161 + - uid: 18065 components: - type: Transform - pos: 90.5,-12.5 + pos: 38.5,-69.5 + parent: 2 + - uid: 18072 + components: + - type: Transform + pos: 49.5,-85.5 + parent: 2 + - uid: 18079 + components: + - type: Transform + pos: -31.5,-64.5 + parent: 2 + - uid: 18179 + components: + - type: Transform + pos: 40.5,-23.5 + parent: 2 + - uid: 18190 + components: + - type: Transform + pos: 56.5,-23.5 + parent: 2 + - uid: 18191 + components: + - type: Transform + pos: 54.5,-27.5 + parent: 2 + - uid: 18195 + components: + - type: Transform + pos: 55.5,-19.5 + parent: 2 + - uid: 18196 + components: + - type: Transform + pos: 50.5,-27.5 + parent: 2 + - uid: 18197 + components: + - type: Transform + pos: 49.5,-29.5 + parent: 2 + - uid: 18198 + components: + - type: Transform + pos: 50.5,-32.5 + parent: 2 + - uid: 18199 + components: + - type: Transform + pos: 50.5,-29.5 parent: 2 - uid: 18208 components: @@ -143135,20 +143330,15 @@ entities: - type: Transform pos: -14.5,39.5 parent: 2 - - uid: 18211 - components: - - type: Transform - pos: -11.5,36.5 - parent: 2 - uid: 18212 components: - type: Transform - pos: -13.5,38.5 + pos: 50.5,-76.5 parent: 2 - uid: 18220 components: - type: Transform - pos: -16.5,40.5 + pos: -40.5,-21.5 parent: 2 - uid: 18222 components: @@ -143173,7 +143363,7 @@ entities: - uid: 18258 components: - type: Transform - pos: -10.5,30.5 + pos: -12.5,37.5 parent: 2 - uid: 18262 components: @@ -143188,47 +143378,202 @@ entities: - uid: 18270 components: - type: Transform - pos: -10.5,35.5 + pos: -58.5,-39.5 + parent: 2 + - uid: 18351 + components: + - type: Transform + pos: -10.5,-45.5 + parent: 2 + - uid: 18389 + components: + - type: Transform + pos: 76.5,-39.5 + parent: 2 + - uid: 18399 + components: + - type: Transform + pos: -36.5,-70.5 parent: 2 - uid: 18409 components: - type: Transform pos: 44.5,23.5 parent: 2 + - uid: 18425 + components: + - type: Transform + pos: -36.5,-66.5 + parent: 2 + - uid: 18426 + components: + - type: Transform + pos: -46.5,-24.5 + parent: 2 + - uid: 18427 + components: + - type: Transform + pos: -36.5,-81.5 + parent: 2 + - uid: 18433 + components: + - type: Transform + pos: 42.5,-49.5 + parent: 2 + - uid: 18434 + components: + - type: Transform + pos: 54.5,-56.5 + parent: 2 + - uid: 18439 + components: + - type: Transform + pos: 52.5,-14.5 + parent: 2 + - uid: 18442 + components: + - type: Transform + pos: 40.5,-64.5 + parent: 2 + - uid: 18447 + components: + - type: Transform + pos: 51.5,-43.5 + parent: 2 + - uid: 18449 + components: + - type: Transform + pos: -30.5,-39.5 + parent: 2 + - uid: 18450 + components: + - type: Transform + pos: 38.5,-65.5 + parent: 2 + - uid: 18459 + components: + - type: Transform + pos: 54.5,-48.5 + parent: 2 + - uid: 18470 + components: + - type: Transform + pos: -29.5,-57.5 + parent: 2 + - uid: 18480 + components: + - type: Transform + pos: -28.5,-56.5 + parent: 2 + - uid: 18484 + components: + - type: Transform + pos: 32.5,-50.5 + parent: 2 + - uid: 18518 + components: + - type: Transform + pos: -36.5,-65.5 + parent: 2 + - uid: 18521 + components: + - type: Transform + pos: 50.5,-77.5 + parent: 2 + - uid: 18522 + components: + - type: Transform + pos: -28.5,-65.5 + parent: 2 - uid: 18523 components: - type: Transform pos: 97.5,-35.5 parent: 2 + - uid: 18552 + components: + - type: Transform + pos: -37.5,-13.5 + parent: 2 - uid: 18605 components: - type: Transform pos: -28.5,34.5 parent: 2 - - uid: 18724 + - uid: 18725 components: - type: Transform - pos: 51.5,-34.5 + pos: -35.5,-81.5 + parent: 2 + - uid: 18762 + components: + - type: Transform + pos: -37.5,5.5 + parent: 2 + - uid: 18847 + components: + - type: Transform + pos: 42.5,-34.5 + parent: 2 + - uid: 18848 + components: + - type: Transform + pos: -31.5,-59.5 parent: 2 - uid: 18877 components: - type: Transform - pos: 21.5,13.5 + pos: 26.5,-59.5 + parent: 2 + - uid: 18967 + components: + - type: Transform + pos: -25.5,-20.5 + parent: 2 + - uid: 18970 + components: + - type: Transform + pos: 53.5,-62.5 + parent: 2 + - uid: 19051 + components: + - type: Transform + pos: 50.5,-75.5 parent: 2 - uid: 19054 components: - type: Transform pos: -23.5,4.5 parent: 2 + - uid: 19068 + components: + - type: Transform + pos: -19.5,2.5 + parent: 2 - uid: 19147 components: - type: Transform pos: 22.5,13.5 parent: 2 + - uid: 19149 + components: + - type: Transform + pos: -28.5,-50.5 + parent: 2 + - uid: 19156 + components: + - type: Transform + pos: -52.5,-20.5 + parent: 2 + - uid: 19157 + components: + - type: Transform + pos: 43.5,-76.5 + parent: 2 - uid: 19222 components: - type: Transform - pos: 20.5,16.5 + pos: -36.5,-60.5 parent: 2 - uid: 19226 components: @@ -143238,22 +143583,27 @@ entities: - uid: 19228 components: - type: Transform - pos: -7.5,-96.5 + pos: 4.5,-15.5 parent: 2 - uid: 19229 components: - type: Transform pos: 4.5,-55.5 parent: 2 - - uid: 19240 + - uid: 19231 components: - type: Transform - pos: 8.5,-96.5 + pos: 49.5,-84.5 parent: 2 - - uid: 19245 + - uid: 19239 components: - type: Transform - pos: 12.5,-79.5 + pos: 43.5,-63.5 + parent: 2 + - uid: 19241 + components: + - type: Transform + pos: 13.5,-4.5 parent: 2 - uid: 19246 components: @@ -143263,23 +143613,58 @@ entities: - uid: 19247 components: - type: Transform - pos: 13.5,-63.5 + pos: -32.5,-12.5 parent: 2 - uid: 19254 components: - type: Transform - pos: 13.5,-61.5 + pos: -55.5,-61.5 parent: 2 - - uid: 19261 + - uid: 19257 components: - type: Transform - pos: -5.5,-69.5 + pos: 80.5,-46.5 + parent: 2 + - uid: 19260 + components: + - type: Transform + pos: 72.5,-47.5 + parent: 2 + - uid: 19262 + components: + - type: Transform + pos: 50.5,-79.5 parent: 2 - uid: 19264 components: - type: Transform pos: 4.5,-57.5 parent: 2 + - uid: 19265 + components: + - type: Transform + pos: 44.5,15.5 + parent: 2 + - uid: 19266 + components: + - type: Transform + pos: -49.5,-60.5 + parent: 2 + - uid: 19274 + components: + - type: Transform + pos: 11.5,-0.5 + parent: 2 + - uid: 19396 + components: + - type: Transform + pos: 43.5,-74.5 + parent: 2 + - uid: 19397 + components: + - type: Transform + pos: 80.5,-14.5 + parent: 2 - uid: 19398 components: - type: Transform @@ -143288,17 +143673,27 @@ entities: - uid: 19559 components: - type: Transform - pos: 75.5,-39.5 + pos: -51.5,-61.5 parent: 2 - uid: 19588 components: - type: Transform - pos: -19.5,4.5 + pos: 53.5,-63.5 parent: 2 - - uid: 19626 + - uid: 19600 components: - type: Transform - pos: -19.5,5.5 + pos: 37.5,-61.5 + parent: 2 + - uid: 19778 + components: + - type: Transform + pos: 13.5,2.5 + parent: 2 + - uid: 19844 + components: + - type: Transform + pos: 20.5,23.5 parent: 2 - uid: 19892 components: @@ -143313,7 +143708,17 @@ entities: - uid: 19894 components: - type: Transform - pos: 53.5,-32.5 + pos: -43.5,-58.5 + parent: 2 + - uid: 19905 + components: + - type: Transform + pos: -46.5,-58.5 + parent: 2 + - uid: 19906 + components: + - type: Transform + pos: -11.5,-57.5 parent: 2 - uid: 19907 components: @@ -143330,6 +143735,31 @@ entities: - type: Transform pos: 37.5,-76.5 parent: 2 + - uid: 19916 + components: + - type: Transform + pos: -55.5,-57.5 + parent: 2 + - uid: 19919 + components: + - type: Transform + pos: -57.5,-24.5 + parent: 2 + - uid: 19948 + components: + - type: Transform + pos: -55.5,-24.5 + parent: 2 + - uid: 19959 + components: + - type: Transform + pos: -56.5,-21.5 + parent: 2 + - uid: 20006 + components: + - type: Transform + pos: -56.5,-22.5 + parent: 2 - uid: 20142 components: - type: Transform @@ -143338,13 +143768,43 @@ entities: - uid: 20153 components: - type: Transform - pos: 36.5,-49.5 + pos: -50.5,-60.5 parent: 2 - uid: 20160 components: - type: Transform pos: -5.5,-72.5 parent: 2 + - uid: 20163 + components: + - type: Transform + pos: -54.5,-50.5 + parent: 2 + - uid: 20165 + components: + - type: Transform + pos: 10.5,-13.5 + parent: 2 + - uid: 20167 + components: + - type: Transform + pos: -59.5,-57.5 + parent: 2 + - uid: 20170 + components: + - type: Transform + pos: -62.5,-60.5 + parent: 2 + - uid: 20175 + components: + - type: Transform + pos: -25.5,-34.5 + parent: 2 + - uid: 20178 + components: + - type: Transform + pos: -40.5,-39.5 + parent: 2 - uid: 20181 components: - type: Transform @@ -143353,122 +143813,307 @@ entities: - uid: 20193 components: - type: Transform - pos: 12.5,-66.5 + pos: -35.5,-21.5 parent: 2 - uid: 20195 components: - type: Transform - pos: 9.5,-76.5 + pos: -59.5,-60.5 + parent: 2 + - uid: 20221 + components: + - type: Transform + pos: -31.5,-21.5 + parent: 2 + - uid: 20279 + components: + - type: Transform + pos: -52.5,-24.5 + parent: 2 + - uid: 20318 + components: + - type: Transform + pos: -36.5,-59.5 + parent: 2 + - uid: 20320 + components: + - type: Transform + pos: -50.5,-39.5 + parent: 2 + - uid: 20541 + components: + - type: Transform + pos: -46.5,-20.5 + parent: 2 + - uid: 20556 + components: + - type: Transform + pos: -39.5,-18.5 + parent: 2 + - uid: 20634 + components: + - type: Transform + pos: -53.5,-37.5 parent: 2 - uid: 20663 components: - type: Transform - pos: 26.5,26.5 + pos: -52.5,-27.5 parent: 2 - uid: 20670 components: - type: Transform - pos: 43.5,22.5 + pos: -52.5,-32.5 + parent: 2 + - uid: 20767 + components: + - type: Transform + pos: -52.5,-26.5 parent: 2 - uid: 20770 components: - type: Transform pos: -33.5,-1.5 parent: 2 + - uid: 21223 + components: + - type: Transform + pos: -56.5,-32.5 + parent: 2 + - uid: 21271 + components: + - type: Transform + pos: -35.5,20.5 + parent: 2 + - uid: 21297 + components: + - type: Transform + pos: -56.5,-27.5 + parent: 2 + - uid: 21312 + components: + - type: Transform + pos: -51.5,-42.5 + parent: 2 + - uid: 21314 + components: + - type: Transform + pos: 13.5,-5.5 + parent: 2 + - uid: 21389 + components: + - type: Transform + pos: -43.5,-43.5 + parent: 2 + - uid: 21395 + components: + - type: Transform + pos: -43.5,-47.5 + parent: 2 + - uid: 21426 + components: + - type: Transform + pos: -48.5,-47.5 + parent: 2 + - uid: 21458 + components: + - type: Transform + pos: 13.5,-7.5 + parent: 2 + - uid: 21738 + components: + - type: Transform + pos: 4.5,-54.5 + parent: 2 - uid: 21760 components: - type: Transform pos: 17.5,17.5 parent: 2 + - uid: 21784 + components: + - type: Transform + pos: 7.5,-14.5 + parent: 2 - uid: 21785 components: - type: Transform - pos: 44.5,25.5 + pos: 48.5,25.5 parent: 2 - uid: 21807 components: - type: Transform - pos: 39.5,23.5 + pos: -40.5,-42.5 + parent: 2 + - uid: 21852 + components: + - type: Transform + pos: -31.5,-26.5 + parent: 2 + - uid: 21859 + components: + - type: Transform + pos: -30.5,-2.5 + parent: 2 + - uid: 21860 + components: + - type: Transform + pos: 48.5,18.5 + parent: 2 + - uid: 21868 + components: + - type: Transform + pos: 11.5,-11.5 parent: 2 - uid: 21870 components: - type: Transform pos: 15.5,26.5 parent: 2 + - uid: 21871 + components: + - type: Transform + pos: -30.5,1.5 + parent: 2 - uid: 21877 components: - type: Transform - pos: 24.5,20.5 + pos: -62.5,-36.5 + parent: 2 + - uid: 21878 + components: + - type: Transform + pos: -62.5,-38.5 parent: 2 - uid: 21879 components: - type: Transform - pos: 18.5,25.5 + pos: -62.5,-35.5 parent: 2 - uid: 21881 components: - type: Transform - pos: 26.5,23.5 + pos: -11.5,-52.5 parent: 2 - uid: 21886 components: - type: Transform - pos: 51.5,12.5 + pos: -62.5,-57.5 parent: 2 - uid: 21891 components: - type: Transform - pos: 29.5,26.5 + pos: -54.5,-57.5 + parent: 2 + - uid: 21892 + components: + - type: Transform + pos: -58.5,-14.5 parent: 2 - uid: 21897 components: - type: Transform pos: 41.5,23.5 parent: 2 - - uid: 21899 + - uid: 21910 components: - type: Transform - pos: 63.5,-55.5 + pos: -71.5,-7.5 + parent: 2 + - uid: 21914 + components: + - type: Transform + pos: 42.5,-30.5 parent: 2 - uid: 21925 components: - type: Transform - pos: 18.5,11.5 + pos: -66.5,-17.5 + parent: 2 + - uid: 21960 + components: + - type: Transform + pos: -64.5,-11.5 + parent: 2 + - uid: 21963 + components: + - type: Transform + pos: -64.5,-13.5 + parent: 2 + - uid: 21967 + components: + - type: Transform + pos: -53.5,-14.5 + parent: 2 + - uid: 21995 + components: + - type: Transform + pos: -48.5,-14.5 + parent: 2 + - uid: 21996 + components: + - type: Transform + pos: -65.5,-17.5 + parent: 2 + - uid: 22002 + components: + - type: Transform + pos: 17.5,-26.5 + parent: 2 + - uid: 22003 + components: + - type: Transform + pos: 23.5,-23.5 parent: 2 - uid: 22004 components: - type: Transform - pos: 18.5,20.5 + pos: 18.5,-28.5 parent: 2 - uid: 22013 components: - type: Transform - pos: -36.5,10.5 + pos: 18.5,-32.5 parent: 2 - - uid: 22015 + - uid: 22017 components: - type: Transform - pos: 26.5,20.5 + pos: 24.5,-32.5 parent: 2 - - uid: 22025 + - uid: 22021 components: - type: Transform - pos: -58.5,-50.5 + pos: 27.5,-23.5 parent: 2 - uid: 22027 components: - type: Transform pos: 14.5,13.5 parent: 2 + - uid: 22031 + components: + - type: Transform + pos: 38.5,-23.5 + parent: 2 + - uid: 22032 + components: + - type: Transform + pos: 41.5,-28.5 + parent: 2 - uid: 22038 components: - type: Transform pos: 18.5,30.5 parent: 2 + - uid: 22055 + components: + - type: Transform + pos: 25.5,-47.5 + parent: 2 - uid: 22081 components: - type: Transform - pos: 42.5,17.5 + pos: 42.5,-28.5 parent: 2 - uid: 22082 components: @@ -143488,2917 +144133,3297 @@ entities: - uid: 22096 components: - type: Transform - pos: 13.5,14.5 + pos: 25.5,-23.5 parent: 2 - - uid: 22101 + - uid: 22097 components: - type: Transform - pos: 24.5,24.5 + pos: 36.5,-23.5 + parent: 2 + - uid: 22098 + components: + - type: Transform + pos: 66.5,-70.5 + parent: 2 + - uid: 22099 + components: + - type: Transform + pos: 76.5,-74.5 + parent: 2 + - uid: 22103 + components: + - type: Transform + pos: -62.5,-17.5 + parent: 2 + - uid: 22104 + components: + - type: Transform + pos: -59.5,-16.5 + parent: 2 + - uid: 22105 + components: + - type: Transform + pos: 26.5,-11.5 + parent: 2 + - uid: 22109 + components: + - type: Transform + pos: -58.5,-17.5 + parent: 2 + - uid: 22110 + components: + - type: Transform + pos: -59.5,-18.5 + parent: 2 + - uid: 22112 + components: + - type: Transform + pos: -36.5,14.5 + parent: 2 + - uid: 22115 + components: + - type: Transform + pos: 58.5,-66.5 + parent: 2 + - uid: 22116 + components: + - type: Transform + pos: 56.5,-63.5 parent: 2 - uid: 22117 components: - type: Transform pos: 20.5,24.5 parent: 2 + - uid: 22119 + components: + - type: Transform + pos: 60.5,-57.5 + parent: 2 - uid: 22125 components: - type: Transform pos: 18.5,23.5 parent: 2 + - uid: 22127 + components: + - type: Transform + pos: 61.5,-55.5 + parent: 2 + - uid: 22132 + components: + - type: Transform + pos: 12.5,-8.5 + parent: 2 + - uid: 22134 + components: + - type: Transform + pos: 66.5,-84.5 + parent: 2 - uid: 22184 components: - type: Transform pos: 8.5,7.5 parent: 2 - - uid: 22639 - components: - - type: Transform - pos: 45.5,15.5 - parent: 2 - - uid: 23358 - components: - - type: Transform - pos: -23.5,-57.5 - parent: 2 -- proto: WallReinforcedRust - entities: - - uid: 249 - components: - - type: Transform - pos: -64.5,-6.5 - parent: 2 - - uid: 694 - components: - - type: Transform - pos: -41.5,4.5 - parent: 2 - - uid: 893 - components: - - type: Transform - pos: -69.5,-9.5 - parent: 2 - - uid: 908 - components: - - type: Transform - pos: -69.5,-16.5 - parent: 2 - - uid: 997 - components: - - type: Transform - pos: -70.5,-14.5 - parent: 2 - - uid: 1002 - components: - - type: Transform - pos: -63.5,-10.5 - parent: 2 - - uid: 1027 - components: - - type: Transform - pos: -59.5,-9.5 - parent: 2 - - uid: 1053 - components: - - type: Transform - pos: -34.5,-0.5 - parent: 2 - - uid: 1079 - components: - - type: Transform - pos: -40.5,5.5 - parent: 2 - - uid: 1082 - components: - - type: Transform - pos: -72.5,-10.5 - parent: 2 - - uid: 1083 - components: - - type: Transform - pos: -73.5,-13.5 - parent: 2 - - uid: 1101 - components: - - type: Transform - pos: -71.5,-17.5 - parent: 2 - - uid: 1103 - components: - - type: Transform - pos: -70.5,-10.5 - parent: 2 - - uid: 1104 - components: - - type: Transform - pos: -61.5,-10.5 - parent: 2 - - uid: 1118 - components: - - type: Transform - pos: -59.5,-54.5 - parent: 2 - - uid: 1158 - components: - - type: Transform - pos: 13.5,8.5 - parent: 2 - - uid: 1324 - components: - - type: Transform - pos: 7.5,7.5 - parent: 2 - - uid: 1448 - components: - - type: Transform - pos: 20.5,20.5 - parent: 2 - - uid: 1659 - components: - - type: Transform - pos: 18.5,24.5 - parent: 2 - - uid: 2139 - components: - - type: Transform - pos: 74.5,-39.5 - parent: 2 - - uid: 2805 - components: - - type: Transform - pos: 4.5,-87.5 - parent: 2 - - uid: 3090 - components: - - type: Transform - pos: -11.5,6.5 - parent: 2 - - uid: 3127 - components: - - type: Transform - pos: -68.5,-6.5 - parent: 2 - - uid: 3208 - components: - - type: Transform - pos: -10.5,9.5 - parent: 2 - - uid: 3209 - components: - - type: Transform - pos: 1.5,15.5 - parent: 2 - - uid: 3212 - components: - - type: Transform - pos: -37.5,4.5 - parent: 2 - - uid: 3218 - components: - - type: Transform - pos: -31.5,-6.5 - parent: 2 - - uid: 3219 - components: - - type: Transform - pos: -21.5,7.5 - parent: 2 - - uid: 3261 - components: - - type: Transform - pos: -0.5,-85.5 - parent: 2 - - uid: 3300 - components: - - type: Transform - pos: 6.5,-87.5 - parent: 2 - - uid: 3306 - components: - - type: Transform - pos: -29.5,-68.5 - parent: 2 - - uid: 3309 - components: - - type: Transform - pos: -31.5,-66.5 - parent: 2 - - uid: 3318 - components: - - type: Transform - pos: 4.5,-59.5 - parent: 2 - - uid: 3323 - components: - - type: Transform - pos: -23.5,-68.5 - parent: 2 - - uid: 3339 - components: - - type: Transform - pos: 8.5,15.5 - parent: 2 - - uid: 3341 - components: - - type: Transform - pos: -5.5,19.5 - parent: 2 - - uid: 3401 - components: - - type: Transform - pos: 57.5,-77.5 - parent: 2 - - uid: 3415 - components: - - type: Transform - pos: -30.5,-65.5 - parent: 2 - - uid: 3423 - components: - - type: Transform - pos: -17.5,-68.5 - parent: 2 - - uid: 3429 - components: - - type: Transform - pos: -4.5,-86.5 - parent: 2 - - uid: 3447 - components: - - type: Transform - pos: -10.5,-86.5 - parent: 2 - - uid: 3573 - components: - - type: Transform - pos: -9.5,-72.5 - parent: 2 - - uid: 3719 - components: - - type: Transform - pos: 75.5,-65.5 - parent: 2 - - uid: 3760 - components: - - type: Transform - pos: 37.5,-77.5 - parent: 2 - - uid: 3812 - components: - - type: Transform - pos: -9.5,-71.5 - parent: 2 - - uid: 3828 - components: - - type: Transform - pos: 9.5,-79.5 - parent: 2 - - uid: 3845 - components: - - type: Transform - pos: 5.5,9.5 - parent: 2 - - uid: 3862 - components: - - type: Transform - pos: -10.5,-59.5 - parent: 2 - - uid: 4164 - components: - - type: Transform - pos: -10.5,-58.5 - parent: 2 - - uid: 4352 - components: - - type: Transform - pos: -17.5,1.5 - parent: 2 - - uid: 4447 - components: - - type: Transform - pos: -3.5,19.5 - parent: 2 - - uid: 4696 - components: - - type: Transform - pos: -67.5,-9.5 - parent: 2 - - uid: 4735 - components: - - type: Transform - pos: 67.5,-66.5 - parent: 2 - - uid: 4852 - components: - - type: Transform - pos: -10.5,-88.5 - parent: 2 - - uid: 4885 - components: - - type: Transform - pos: 12.5,-86.5 - parent: 2 - - uid: 4908 - components: - - type: Transform - pos: 16.5,-75.5 - parent: 2 - - uid: 4918 - components: - - type: Transform - pos: 16.5,-81.5 - parent: 2 - - uid: 4925 - components: - - type: Transform - pos: -13.5,-73.5 - parent: 2 - - uid: 4974 - components: - - type: Transform - pos: -4.5,-27.5 - parent: 2 - - uid: 5101 - components: - - type: Transform - pos: -13.5,-79.5 - parent: 2 - - uid: 5114 - components: - - type: Transform - pos: 8.5,-60.5 - parent: 2 - - uid: 5146 - components: - - type: Transform - pos: -68.5,-15.5 - parent: 2 - - uid: 5165 - components: - - type: Transform - pos: -19.5,11.5 - parent: 2 - - uid: 5183 - components: - - type: Transform - pos: -17.5,9.5 - parent: 2 - - uid: 5192 - components: - - type: Transform - pos: -56.5,-11.5 - parent: 2 - - uid: 5199 - components: - - type: Transform - pos: -66.5,-7.5 - parent: 2 - - uid: 5218 - components: - - type: Transform - pos: -65.5,-7.5 - parent: 2 - - uid: 5221 - components: - - type: Transform - pos: -20.5,0.5 - parent: 2 - - uid: 5247 - components: - - type: Transform - pos: -1.5,-33.5 - parent: 2 - - uid: 5274 - components: - - type: Transform - pos: -64.5,-8.5 - parent: 2 - - uid: 5331 - components: - - type: Transform - pos: -19.5,15.5 - parent: 2 - - uid: 5344 - components: - - type: Transform - pos: -5.5,23.5 - parent: 2 - - uid: 5346 - components: - - type: Transform - pos: -1.5,-29.5 - parent: 2 - - uid: 5378 - components: - - type: Transform - pos: 76.5,-47.5 - parent: 2 - - uid: 5512 - components: - - type: Transform - pos: -2.5,-29.5 - parent: 2 - - uid: 5522 - components: - - type: Transform - pos: -59.5,-13.5 - parent: 2 - - uid: 5539 - components: - - type: Transform - pos: -41.5,-6.5 - parent: 2 - - uid: 5562 - components: - - type: Transform - pos: -60.5,-10.5 - parent: 2 - - uid: 5736 - components: - - type: Transform - pos: 64.5,-61.5 - parent: 2 - - uid: 5737 - components: - - type: Transform - pos: 59.5,-70.5 - parent: 2 - - uid: 5754 - components: - - type: Transform - pos: -28.5,13.5 - parent: 2 - - uid: 5774 - components: - - type: Transform - pos: 4.5,-85.5 - parent: 2 - - uid: 5775 - components: - - type: Transform - pos: -31.5,3.5 - parent: 2 - - uid: 5792 - components: - - type: Transform - pos: -28.5,8.5 - parent: 2 - - uid: 5797 - components: - - type: Transform - pos: -29.5,8.5 - parent: 2 - - uid: 5806 - components: - - type: Transform - pos: -23.5,8.5 - parent: 2 - - uid: 5811 - components: - - type: Transform - pos: 51.5,-32.5 - parent: 2 - - uid: 5814 - components: - - type: Transform - pos: -3.5,-29.5 - parent: 2 - - uid: 5848 - components: - - type: Transform - pos: -31.5,4.5 - parent: 2 - - uid: 5855 - components: - - type: Transform - pos: -28.5,15.5 - parent: 2 - - uid: 5864 - components: - - type: Transform - pos: -25.5,18.5 - parent: 2 - - uid: 5866 - components: - - type: Transform - pos: 13.5,-86.5 - parent: 2 - - uid: 5881 - components: - - type: Transform - pos: -17.5,6.5 - parent: 2 - - uid: 5888 - components: - - type: Transform - pos: 12.5,-76.5 - parent: 2 - - uid: 5892 - components: - - type: Transform - pos: 13.5,-88.5 - parent: 2 - - uid: 5898 - components: - - type: Transform - pos: -34.5,24.5 - parent: 2 - - uid: 5947 - components: - - type: Transform - pos: -0.5,-35.5 - parent: 2 - - uid: 6085 - components: - - type: Transform - pos: 8.5,-65.5 - parent: 2 - - uid: 6099 - components: - - type: Transform - pos: -6.5,9.5 - parent: 2 - - uid: 6145 - components: - - type: Transform - pos: -8.5,7.5 - parent: 2 - - uid: 6161 - components: - - type: Transform - pos: -12.5,-91.5 - parent: 2 - - uid: 6179 - components: - - type: Transform - pos: -8.5,6.5 - parent: 2 - - uid: 6186 - components: - - type: Transform - pos: -3.5,-73.5 - parent: 2 - - uid: 6223 - components: - - type: Transform - pos: -2.5,5.5 - parent: 2 - - uid: 6225 - components: - - type: Transform - pos: -64.5,-15.5 - parent: 2 - - uid: 6232 - components: - - type: Transform - pos: -0.5,7.5 - parent: 2 - - uid: 6238 - components: - - type: Transform - pos: 1.5,6.5 - parent: 2 - - uid: 6254 - components: - - type: Transform - pos: 1.5,4.5 - parent: 2 - - uid: 6257 - components: - - type: Transform - pos: -4.5,3.5 - parent: 2 - - uid: 6261 - components: - - type: Transform - pos: -6.5,4.5 - parent: 2 - - uid: 6297 - components: - - type: Transform - pos: -8.5,4.5 - parent: 2 - - uid: 6307 - components: - - type: Transform - pos: 5.5,5.5 - parent: 2 - - uid: 6321 - components: - - type: Transform - pos: 6.5,-73.5 - parent: 2 - - uid: 6324 - components: - - type: Transform - pos: 8.5,-75.5 - parent: 2 - - uid: 6325 - components: - - type: Transform - pos: 15.5,-90.5 - parent: 2 - - uid: 6352 - components: - - type: Transform - pos: -5.5,-76.5 - parent: 2 - - uid: 6353 - components: - - type: Transform - pos: -6.5,-76.5 - parent: 2 - - uid: 6369 - components: - - type: Transform - pos: -13.5,1.5 - parent: 2 - - uid: 6374 - components: - - type: Transform - pos: -9.5,1.5 - parent: 2 - - uid: 6397 - components: - - type: Transform - pos: -1.5,-58.5 - parent: 2 - - uid: 6407 - components: - - type: Transform - pos: 11.5,-80.5 - parent: 2 - - uid: 6428 - components: - - type: Transform - pos: -8.5,-79.5 - parent: 2 - - uid: 6476 - components: - - type: Transform - pos: 65.5,-37.5 - parent: 2 - - uid: 6510 - components: - - type: Transform - pos: 11.5,-76.5 - parent: 2 - - uid: 6604 - components: - - type: Transform - pos: -32.5,22.5 - parent: 2 - - uid: 6620 - components: - - type: Transform - pos: 5.5,1.5 - parent: 2 - - uid: 6632 - components: - - type: Transform - pos: -12.5,6.5 - parent: 2 - - uid: 6679 - components: - - type: Transform - pos: -3.5,-24.5 - parent: 2 - - uid: 6905 - components: - - type: Transform - pos: -10.5,-23.5 - parent: 2 - - uid: 6908 - components: - - type: Transform - pos: 60.5,-77.5 - parent: 2 - - uid: 6913 - components: - - type: Transform - pos: -5.5,-27.5 - parent: 2 - - uid: 6923 - components: - - type: Transform - pos: -9.5,-27.5 - parent: 2 - - uid: 6927 - components: - - type: Transform - pos: -10.5,-27.5 - parent: 2 - - uid: 6933 - components: - - type: Transform - pos: -3.5,-25.5 - parent: 2 - - uid: 6934 - components: - - type: Transform - pos: 28.5,-5.5 - parent: 2 - - uid: 6982 - components: - - type: Transform - pos: 80.5,-43.5 - parent: 2 - - uid: 6995 - components: - - type: Transform - pos: -35.5,24.5 - parent: 2 - - uid: 6997 - components: - - type: Transform - pos: -17.5,5.5 - parent: 2 - - uid: 7026 - components: - - type: Transform - pos: -29.5,9.5 - parent: 2 - - uid: 7087 - components: - - type: Transform - pos: -8.5,-76.5 - parent: 2 - - uid: 7107 - components: - - type: Transform - pos: 22.5,-27.5 - parent: 2 - - uid: 7163 - components: - - type: Transform - pos: -19.5,-6.5 - parent: 2 - - uid: 7167 - components: - - type: Transform - pos: 30.5,-59.5 - parent: 2 - - uid: 7168 - components: - - type: Transform - pos: 32.5,-57.5 - parent: 2 - - uid: 7175 - components: - - type: Transform - pos: -3.5,-66.5 - parent: 2 - - uid: 7210 - components: - - type: Transform - pos: 22.5,-28.5 - parent: 2 - - uid: 7218 - components: - - type: Transform - pos: 1.5,-38.5 - parent: 2 - - uid: 7222 - components: - - type: Transform - pos: 0.5,-38.5 - parent: 2 - - uid: 7228 - components: - - type: Transform - pos: 2.5,-35.5 - parent: 2 - - uid: 7286 - components: - - type: Transform - pos: -4.5,-61.5 - parent: 2 - - uid: 7298 - components: - - type: Transform - pos: -33.5,-7.5 - parent: 2 - - uid: 7315 - components: - - type: Transform - pos: -3.5,-72.5 - parent: 2 - - uid: 7318 - components: - - type: Transform - pos: 6.5,-21.5 - parent: 2 - - uid: 7320 - components: - - type: Transform - pos: 11.5,-79.5 - parent: 2 - - uid: 7326 - components: - - type: Transform - pos: -26.5,-12.5 - parent: 2 - - uid: 7352 - components: - - type: Transform - pos: -22.5,7.5 - parent: 2 - - uid: 7370 - components: - - type: Transform - pos: -20.5,18.5 - parent: 2 - - uid: 7430 - components: - - type: Transform - pos: 34.5,-56.5 - parent: 2 - - uid: 7456 - components: - - type: Transform - pos: 33.5,-56.5 - parent: 2 - - uid: 7461 - components: - - type: Transform - pos: 32.5,-59.5 - parent: 2 - - uid: 7505 - components: - - type: Transform - pos: 7.5,-69.5 - parent: 2 - - uid: 7507 - components: - - type: Transform - pos: 8.5,-66.5 - parent: 2 - - uid: 7572 - components: - - type: Transform - pos: -16.5,23.5 - parent: 2 - - uid: 7605 - components: - - type: Transform - pos: 26.5,-29.5 - parent: 2 - - uid: 7612 - components: - - type: Transform - pos: -3.5,-68.5 - parent: 2 - - uid: 7634 - components: - - type: Transform - pos: -27.5,23.5 - parent: 2 - - uid: 7637 - components: - - type: Transform - pos: -9.5,23.5 - parent: 2 - - uid: 7638 - components: - - type: Transform - pos: -10.5,23.5 - parent: 2 - - uid: 7639 - components: - - type: Transform - pos: -17.5,17.5 - parent: 2 - - uid: 7640 - components: - - type: Transform - pos: 12.5,29.5 - parent: 2 - - uid: 7641 - components: - - type: Transform - pos: -10.5,28.5 - parent: 2 - - uid: 7642 - components: - - type: Transform - pos: -2.5,16.5 - parent: 2 - - uid: 7643 - components: - - type: Transform - pos: -17.5,10.5 - parent: 2 - - uid: 7661 - components: - - type: Transform - pos: -19.5,12.5 - parent: 2 - - uid: 7701 - components: - - type: Transform - pos: -17.5,18.5 - parent: 2 - - uid: 7717 - components: - - type: Transform - pos: 41.5,-14.5 - parent: 2 - - uid: 7723 - components: - - type: Transform - pos: 25.5,-33.5 - parent: 2 - - uid: 7744 - components: - - type: Transform - pos: 49.5,-3.5 - parent: 2 - - uid: 7748 - components: - - type: Transform - pos: -29.5,-12.5 - parent: 2 - - uid: 7749 - components: - - type: Transform - pos: 49.5,-6.5 - parent: 2 - - uid: 7758 - components: - - type: Transform - pos: 32.5,-52.5 - parent: 2 - - uid: 7759 - components: - - type: Transform - pos: 25.5,-36.5 - parent: 2 - - uid: 7788 - components: - - type: Transform - pos: -31.5,-2.5 - parent: 2 - - uid: 7799 - components: - - type: Transform - pos: 66.5,-44.5 - parent: 2 - - uid: 7820 - components: - - type: Transform - pos: 29.5,-51.5 - parent: 2 - - uid: 7823 - components: - - type: Transform - pos: 29.5,-52.5 - parent: 2 - - uid: 7996 - components: - - type: Transform - pos: 49.5,-8.5 - parent: 2 - - uid: 8022 - components: - - type: Transform - pos: 48.5,-2.5 - parent: 2 - - uid: 8028 - components: - - type: Transform - pos: 49.5,-9.5 - parent: 2 - - uid: 8041 - components: - - type: Transform - pos: -5.5,-96.5 - parent: 2 - - uid: 8042 - components: - - type: Transform - pos: 44.5,-13.5 - parent: 2 - - uid: 8047 - components: - - type: Transform - pos: 48.5,-3.5 - parent: 2 - - uid: 8051 - components: - - type: Transform - pos: 14.5,-89.5 - parent: 2 - - uid: 8089 - components: - - type: Transform - pos: 43.5,7.5 - parent: 2 - - uid: 8105 - components: - - type: Transform - pos: 42.5,7.5 - parent: 2 - - uid: 8111 - components: - - type: Transform - pos: 42.5,6.5 - parent: 2 - - uid: 8144 - components: - - type: Transform - pos: 45.5,13.5 - parent: 2 - - uid: 8175 - components: - - type: Transform - pos: -17.5,23.5 - parent: 2 - - uid: 8209 - components: - - type: Transform - pos: 51.5,8.5 - parent: 2 - - uid: 8211 - components: - - type: Transform - pos: 51.5,13.5 - parent: 2 - - uid: 8235 - components: - - type: Transform - pos: 48.5,7.5 - parent: 2 - - uid: 8237 - components: - - type: Transform - pos: 50.5,8.5 - parent: 2 - - uid: 8240 - components: - - type: Transform - pos: 49.5,8.5 - parent: 2 - - uid: 8257 - components: - - type: Transform - pos: -20.5,17.5 - parent: 2 - - uid: 8262 - components: - - type: Transform - pos: 44.5,6.5 - parent: 2 - - uid: 8271 - components: - - type: Transform - pos: 27.5,-49.5 - parent: 2 - - uid: 8273 - components: - - type: Transform - pos: 26.5,-49.5 - parent: 2 - - uid: 8276 - components: - - type: Transform - pos: 26.5,-52.5 - parent: 2 - - uid: 8318 - components: - - type: Transform - pos: 27.5,20.5 - parent: 2 - - uid: 8392 - components: - - type: Transform - pos: 5.5,-24.5 - parent: 2 - - uid: 8399 - components: - - type: Transform - pos: 4.5,-24.5 - parent: 2 - - uid: 8400 - components: - - type: Transform - pos: 44.5,-17.5 - parent: 2 - - uid: 8404 - components: - - type: Transform - pos: 43.5,-26.5 - parent: 2 - - uid: 8486 - components: - - type: Transform - pos: -49.5,-14.5 - parent: 2 - - uid: 8703 - components: - - type: Transform - pos: -34.5,8.5 - parent: 2 - - uid: 8725 - components: - - type: Transform - pos: -58.5,-49.5 - parent: 2 - - uid: 8737 - components: - - type: Transform - pos: -29.5,-16.5 - parent: 2 - - uid: 8746 - components: - - type: Transform - pos: 49.5,-34.5 - parent: 2 - - uid: 8748 - components: - - type: Transform - pos: 53.5,-35.5 - parent: 2 - - uid: 8894 - components: - - type: Transform - pos: 55.5,-37.5 - parent: 2 - - uid: 8904 - components: - - type: Transform - pos: 56.5,-37.5 - parent: 2 - - uid: 9256 - components: - - type: Transform - pos: 40.5,-19.5 - parent: 2 - - uid: 9262 - components: - - type: Transform - pos: 48.5,3.5 - parent: 2 - - uid: 9279 - components: - - type: Transform - pos: 43.5,4.5 - parent: 2 - - uid: 9280 - components: - - type: Transform - pos: 47.5,3.5 - parent: 2 - - uid: 9281 - components: - - type: Transform - pos: 43.5,-1.5 - parent: 2 - - uid: 9313 - components: - - type: Transform - pos: 43.5,-18.5 - parent: 2 - - uid: 9562 - components: - - type: Transform - pos: -21.5,13.5 - parent: 2 - - uid: 9571 - components: - - type: Transform - pos: 17.5,-29.5 - parent: 2 - - uid: 9617 - components: - - type: Transform - pos: 54.5,-37.5 - parent: 2 - - uid: 9799 - components: - - type: Transform - pos: -17.5,14.5 - parent: 2 - - uid: 9858 - components: - - type: Transform - pos: -13.5,-2.5 - parent: 2 - - uid: 9899 - components: - - type: Transform - pos: -14.5,-9.5 - parent: 2 - - uid: 10002 - components: - - type: Transform - pos: 57.5,-41.5 - parent: 2 - - uid: 10004 - components: - - type: Transform - pos: 58.5,-43.5 - parent: 2 - - uid: 10017 - components: - - type: Transform - pos: 5.5,-5.5 - parent: 2 - - uid: 10023 - components: - - type: Transform - pos: -14.5,-17.5 - parent: 2 - - uid: 10055 - components: - - type: Transform - pos: -13.5,-5.5 - parent: 2 - - uid: 10175 - components: - - type: Transform - pos: -28.5,31.5 - parent: 2 - - uid: 10241 - components: - - type: Transform - pos: -48.5,-10.5 - parent: 2 - - uid: 10263 - components: - - type: Transform - pos: -14.5,-21.5 - parent: 2 - - uid: 10535 - components: - - type: Transform - pos: -14.5,-5.5 - parent: 2 - - uid: 10630 - components: - - type: Transform - pos: -38.5,10.5 - parent: 2 - - uid: 10705 - components: - - type: Transform - pos: 43.5,-25.5 - parent: 2 - - uid: 10708 - components: - - type: Transform - pos: 40.5,-25.5 - parent: 2 - - uid: 10715 - components: - - type: Transform - pos: -28.5,28.5 - parent: 2 - - uid: 10777 - components: - - type: Transform - pos: -26.5,37.5 - parent: 2 - - uid: 10857 - components: - - type: Transform - pos: 45.5,-85.5 - parent: 2 - - uid: 10865 - components: - - type: Transform - pos: 38.5,-68.5 - parent: 2 - - uid: 10866 - components: - - type: Transform - pos: 38.5,-69.5 - parent: 2 - - uid: 10877 - components: - - type: Transform - pos: 61.5,-80.5 - parent: 2 - - uid: 10885 - components: - - type: Transform - pos: 84.5,-38.5 - parent: 2 - - uid: 10893 - components: - - type: Transform - pos: 49.5,-85.5 - parent: 2 - - uid: 10925 - components: - - type: Transform - pos: -31.5,-64.5 - parent: 2 - - uid: 10978 - components: - - type: Transform - pos: -20.5,40.5 - parent: 2 - - uid: 11017 - components: - - type: Transform - pos: 40.5,-23.5 - parent: 2 - - uid: 11018 - components: - - type: Transform - pos: 56.5,-23.5 - parent: 2 - - uid: 11021 - components: - - type: Transform - pos: 54.5,-27.5 - parent: 2 - - uid: 11022 - components: - - type: Transform - pos: 54.5,-15.5 - parent: 2 - - uid: 11023 - components: - - type: Transform - pos: 55.5,-19.5 - parent: 2 - - uid: 11033 - components: - - type: Transform - pos: 50.5,-27.5 - parent: 2 - - uid: 11038 - components: - - type: Transform - pos: 49.5,-29.5 - parent: 2 - - uid: 11039 - components: - - type: Transform - pos: 50.5,-32.5 - parent: 2 - - uid: 11040 - components: - - type: Transform - pos: 50.5,-29.5 - parent: 2 - - uid: 11042 - components: - - type: Transform - pos: 50.5,-14.5 - parent: 2 - - uid: 11047 - components: - - type: Transform - pos: 52.5,-14.5 - parent: 2 - - uid: 11076 - components: - - type: Transform - pos: 50.5,-76.5 - parent: 2 - - uid: 11082 - components: - - type: Transform - pos: -40.5,-21.5 - parent: 2 - - uid: 11109 - components: - - type: Transform - pos: -27.5,-59.5 - parent: 2 - - uid: 11165 - components: - - type: Transform - pos: -12.5,37.5 - parent: 2 - - uid: 11266 - components: - - type: Transform - pos: -58.5,-39.5 - parent: 2 - - uid: 11291 - components: - - type: Transform - pos: -26.5,-43.5 - parent: 2 - - uid: 11292 - components: - - type: Transform - pos: -39.5,-16.5 - parent: 2 - - uid: 11297 - components: - - type: Transform - pos: -10.5,-45.5 - parent: 2 - - uid: 11332 - components: - - type: Transform - pos: -10.5,-47.5 - parent: 2 - - uid: 11455 - components: - - type: Transform - pos: -19.5,-45.5 - parent: 2 - - uid: 11498 - components: - - type: Transform - pos: -31.5,-70.5 - parent: 2 - - uid: 11554 - components: - - type: Transform - pos: 76.5,-39.5 - parent: 2 - - uid: 11572 - components: - - type: Transform - pos: -36.5,-70.5 - parent: 2 - - uid: 11620 - components: - - type: Transform - pos: -36.5,-66.5 - parent: 2 - - uid: 11622 - components: - - type: Transform - pos: -46.5,-24.5 - parent: 2 - - uid: 11629 - components: - - type: Transform - pos: -25.5,-17.5 - parent: 2 - - uid: 11825 - components: - - type: Transform - pos: -36.5,-81.5 - parent: 2 - - uid: 11875 - components: - - type: Transform - pos: 44.5,-79.5 - parent: 2 - - uid: 11879 - components: - - type: Transform - pos: 42.5,-49.5 - parent: 2 - - uid: 11880 - components: - - type: Transform - pos: 49.5,-90.5 - parent: 2 - - uid: 11881 - components: - - type: Transform - pos: 56.5,-48.5 - parent: 2 - - uid: 11882 - components: - - type: Transform - pos: 54.5,-56.5 - parent: 2 - - uid: 11883 - components: - - type: Transform - pos: 45.5,-90.5 - parent: 2 - - uid: 11884 - components: - - type: Transform - pos: 42.5,-47.5 - parent: 2 - - uid: 11887 - components: - - type: Transform - pos: 40.5,-64.5 - parent: 2 - - uid: 11890 - components: - - type: Transform - pos: 51.5,-43.5 - parent: 2 - - uid: 11903 - components: - - type: Transform - pos: -30.5,-39.5 - parent: 2 - - uid: 11927 - components: - - type: Transform - pos: 38.5,-65.5 - parent: 2 - - uid: 11938 - components: - - type: Transform - pos: 54.5,-48.5 - parent: 2 - - uid: 11965 - components: - - type: Transform - pos: -29.5,-57.5 - parent: 2 - - uid: 12004 - components: - - type: Transform - pos: -28.5,-56.5 - parent: 2 - - uid: 12118 - components: - - type: Transform - pos: 32.5,-50.5 - parent: 2 - - uid: 12127 - components: - - type: Transform - pos: -19.5,3.5 - parent: 2 - - uid: 12207 - components: - - type: Transform - pos: -36.5,-65.5 - parent: 2 - - uid: 12224 - components: - - type: Transform - pos: 50.5,-77.5 - parent: 2 - - uid: 12227 - components: - - type: Transform - pos: -28.5,-65.5 - parent: 2 - - uid: 12240 - components: - - type: Transform - pos: -37.5,-13.5 - parent: 2 - - uid: 12315 - components: - - type: Transform - pos: -35.5,-12.5 - parent: 2 - - uid: 12316 - components: - - type: Transform - pos: -37.5,-16.5 - parent: 2 - - uid: 12317 - components: - - type: Transform - pos: -31.5,-81.5 - parent: 2 - - uid: 12318 - components: - - type: Transform - pos: -35.5,-81.5 - parent: 2 - - uid: 12321 - components: - - type: Transform - pos: -37.5,5.5 - parent: 2 - - uid: 12342 - components: - - type: Transform - pos: -31.5,-82.5 - parent: 2 - - uid: 12353 - components: - - type: Transform - pos: 53.5,-58.5 - parent: 2 - - uid: 12362 - components: - - type: Transform - pos: -31.5,-59.5 - parent: 2 - - uid: 12365 - components: - - type: Transform - pos: 26.5,-59.5 - parent: 2 - - uid: 12390 - components: - - type: Transform - pos: -25.5,-20.5 - parent: 2 - - uid: 12441 - components: - - type: Transform - pos: 53.5,-62.5 - parent: 2 - - uid: 12478 - components: - - type: Transform - pos: -59.5,-35.5 - parent: 2 - - uid: 12480 - components: - - type: Transform - pos: -61.5,-35.5 - parent: 2 - - uid: 12486 - components: - - type: Transform - pos: 50.5,-75.5 - parent: 2 - - uid: 12504 - components: - - type: Transform - pos: -19.5,2.5 - parent: 2 - - uid: 12561 - components: - - type: Transform - pos: 44.5,22.5 - parent: 2 - - uid: 12565 - components: - - type: Transform - pos: -28.5,-50.5 - parent: 2 - - uid: 12570 - components: - - type: Transform - pos: -52.5,-20.5 - parent: 2 - - uid: 12601 - components: - - type: Transform - pos: 43.5,-76.5 - parent: 2 - - uid: 12616 - components: - - type: Transform - pos: -36.5,-60.5 - parent: 2 - - uid: 12622 - components: - - type: Transform - pos: 4.5,-15.5 - parent: 2 - - uid: 12625 - components: - - type: Transform - pos: -47.5,-58.5 - parent: 2 - - uid: 12648 - components: - - type: Transform - pos: 49.5,-84.5 - parent: 2 - - uid: 12653 - components: - - type: Transform - pos: 60.5,-47.5 - parent: 2 - - uid: 12655 - components: - - type: Transform - pos: 43.5,-63.5 - parent: 2 - - uid: 12656 - components: - - type: Transform - pos: 37.5,-60.5 - parent: 2 - - uid: 12689 - components: - - type: Transform - pos: 13.5,0.5 - parent: 2 - - uid: 12690 - components: - - type: Transform - pos: 13.5,-4.5 - parent: 2 - - uid: 12691 - components: - - type: Transform - pos: -32.5,-13.5 - parent: 2 - - uid: 12717 - components: - - type: Transform - pos: -32.5,-12.5 - parent: 2 - - uid: 12724 - components: - - type: Transform - pos: -62.5,-39.5 - parent: 2 - - uid: 12780 - components: - - type: Transform - pos: -55.5,-61.5 - parent: 2 - - uid: 12799 - components: - - type: Transform - pos: 80.5,-47.5 - parent: 2 - - uid: 12800 - components: - - type: Transform - pos: 80.5,-46.5 - parent: 2 - - uid: 12810 - components: - - type: Transform - pos: 72.5,-47.5 - parent: 2 - - uid: 12811 - components: - - type: Transform - pos: -0.5,-54.5 - parent: 2 - - uid: 12812 - components: - - type: Transform - pos: 50.5,-79.5 - parent: 2 - - uid: 12858 - components: - - type: Transform - pos: 44.5,15.5 - parent: 2 - - uid: 12859 - components: - - type: Transform - pos: -49.5,-60.5 - parent: 2 - - uid: 12902 - components: - - type: Transform - pos: 11.5,-0.5 - parent: 2 - - uid: 13123 - components: - - type: Transform - pos: 23.5,-5.5 - parent: 2 - - uid: 13141 - components: - - type: Transform - pos: 43.5,-74.5 - parent: 2 - - uid: 13157 - components: - - type: Transform - pos: 48.5,22.5 - parent: 2 - - uid: 13211 - components: - - type: Transform - pos: -51.5,-61.5 - parent: 2 - - uid: 13223 - components: - - type: Transform - pos: 53.5,-63.5 - parent: 2 - - uid: 13224 - components: - - type: Transform - pos: 60.5,-51.5 - parent: 2 - - uid: 13227 - components: - - type: Transform - pos: 37.5,-61.5 - parent: 2 - - uid: 13229 - components: - - type: Transform - pos: -35.5,-11.5 - parent: 2 - - uid: 13250 - components: - - type: Transform - pos: 13.5,2.5 - parent: 2 - - uid: 13273 - components: - - type: Transform - pos: 20.5,23.5 - parent: 2 - - uid: 13407 - components: - - type: Transform - pos: -43.5,-58.5 - parent: 2 - - uid: 13409 - components: - - type: Transform - pos: -46.5,-58.5 - parent: 2 - - uid: 13667 - components: - - type: Transform - pos: -11.5,-57.5 - parent: 2 - - uid: 13671 - components: - - type: Transform - pos: -55.5,-57.5 - parent: 2 - - uid: 13674 - components: - - type: Transform - pos: -31.5,-17.5 - parent: 2 - - uid: 13704 - components: - - type: Transform - pos: -57.5,-24.5 - parent: 2 - - uid: 13706 - components: - - type: Transform - pos: -55.5,-24.5 - parent: 2 - - uid: 13723 - components: - - type: Transform - pos: -56.5,-21.5 - parent: 2 - - uid: 13724 - components: - - type: Transform - pos: -56.5,-22.5 - parent: 2 - - uid: 13725 - components: - - type: Transform - pos: -53.5,-47.5 - parent: 2 - - uid: 13773 - components: - - type: Transform - pos: -50.5,-60.5 - parent: 2 - - uid: 13813 - components: - - type: Transform - pos: -54.5,-50.5 - parent: 2 - - uid: 13866 - components: - - type: Transform - pos: 10.5,-13.5 - parent: 2 - - uid: 13867 - components: - - type: Transform - pos: 14.5,-2.5 - parent: 2 - - uid: 13887 - components: - - type: Transform - pos: -32.5,-30.5 - parent: 2 - - uid: 13890 - components: - - type: Transform - pos: -59.5,-57.5 - parent: 2 - - uid: 13900 - components: - - type: Transform - pos: -62.5,-60.5 - parent: 2 - - uid: 13901 - components: - - type: Transform - pos: -29.5,-20.5 - parent: 2 - - uid: 13903 - components: - - type: Transform - pos: -36.5,-39.5 - parent: 2 - - uid: 13907 - components: - - type: Transform - pos: -25.5,-34.5 - parent: 2 - - uid: 13908 - components: - - type: Transform - pos: -62.5,-58.5 - parent: 2 - - uid: 13914 - components: - - type: Transform - pos: -40.5,-39.5 - parent: 2 - - uid: 13922 - components: - - type: Transform - pos: -35.5,-21.5 - parent: 2 - - uid: 13975 - components: - - type: Transform - pos: -59.5,-60.5 - parent: 2 - - uid: 14094 - components: - - type: Transform - pos: -31.5,-21.5 - parent: 2 - - uid: 14095 - components: - - type: Transform - pos: -52.5,-24.5 - parent: 2 - - uid: 14098 - components: - - type: Transform - pos: -36.5,-59.5 - parent: 2 - - uid: 14099 - components: - - type: Transform - pos: -53.5,-36.5 - parent: 2 - - uid: 14100 - components: - - type: Transform - pos: -50.5,-39.5 - parent: 2 - - uid: 14101 - components: - - type: Transform - pos: -51.5,-39.5 - parent: 2 - - uid: 14102 - components: - - type: Transform - pos: -46.5,-20.5 - parent: 2 - - uid: 14104 - components: - - type: Transform - pos: -39.5,-18.5 - parent: 2 - - uid: 14131 - components: - - type: Transform - pos: -53.5,-37.5 - parent: 2 - - uid: 14132 - components: - - type: Transform - pos: -54.5,-39.5 - parent: 2 - - uid: 14133 - components: - - type: Transform - pos: -52.5,-27.5 - parent: 2 - - uid: 14137 - components: - - type: Transform - pos: -52.5,-32.5 - parent: 2 - - uid: 14150 - components: - - type: Transform - pos: -52.5,-26.5 - parent: 2 - - uid: 14151 - components: - - type: Transform - pos: -56.5,-32.5 - parent: 2 - - uid: 14190 - components: - - type: Transform - pos: -35.5,20.5 - parent: 2 - - uid: 14279 - components: - - type: Transform - pos: -56.5,-27.5 - parent: 2 - - uid: 14280 - components: - - type: Transform - pos: -57.5,-20.5 - parent: 2 - - uid: 14365 - components: - - type: Transform - pos: -51.5,-42.5 - parent: 2 - - uid: 14399 - components: - - type: Transform - pos: -51.5,-45.5 - parent: 2 - - uid: 14413 - components: - - type: Transform - pos: 13.5,-5.5 - parent: 2 - - uid: 14481 - components: - - type: Transform - pos: 47.5,-42.5 - parent: 2 - - uid: 14514 - components: - - type: Transform - pos: 43.5,-41.5 - parent: 2 - - uid: 14525 - components: - - type: Transform - pos: 80.5,-16.5 - parent: 2 - - uid: 14744 - components: - - type: Transform - pos: 22.5,-9.5 - parent: 2 - - uid: 14811 - components: - - type: Transform - pos: -43.5,-44.5 - parent: 2 - - uid: 14816 - components: - - type: Transform - pos: -43.5,-43.5 - parent: 2 - - uid: 14906 - components: - - type: Transform - pos: -43.5,-47.5 - parent: 2 - - uid: 14908 - components: - - type: Transform - pos: 12.5,-7.5 - parent: 2 - - uid: 14917 - components: - - type: Transform - pos: -48.5,-47.5 - parent: 2 - - uid: 14922 - components: - - type: Transform - pos: -47.5,-47.5 - parent: 2 - - uid: 14932 - components: - - type: Transform - pos: -50.5,-46.5 - parent: 2 - - uid: 14942 - components: - - type: Transform - pos: 13.5,-7.5 - parent: 2 - - uid: 14953 - components: - - type: Transform - pos: 33.5,23.5 - parent: 2 - - uid: 14957 - components: - - type: Transform - pos: 9.5,-13.5 - parent: 2 - - uid: 15015 - components: - - type: Transform - pos: 4.5,-54.5 - parent: 2 - - uid: 15023 - components: - - type: Transform - pos: 7.5,-14.5 - parent: 2 - - uid: 15028 - components: - - type: Transform - pos: 45.5,18.5 - parent: 2 - - uid: 15142 - components: - - type: Transform - pos: -40.5,-42.5 - parent: 2 - - uid: 15204 - components: - - type: Transform - pos: -31.5,-26.5 - parent: 2 - - uid: 15265 - components: - - type: Transform - pos: -30.5,-2.5 - parent: 2 - - uid: 15307 - components: - - type: Transform - pos: 48.5,18.5 - parent: 2 - - uid: 15312 - components: - - type: Transform - pos: 11.5,-11.5 - parent: 2 - - uid: 15316 - components: - - type: Transform - pos: -30.5,1.5 - parent: 2 - - uid: 15444 - components: - - type: Transform - pos: -62.5,-36.5 - parent: 2 - - uid: 15445 - components: - - type: Transform - pos: -62.5,-38.5 - parent: 2 - - uid: 15446 - components: - - type: Transform - pos: -62.5,-35.5 - parent: 2 - - uid: 15447 - components: - - type: Transform - pos: -11.5,-52.5 - parent: 2 - - uid: 15448 - components: - - type: Transform - pos: -62.5,-57.5 - parent: 2 - - uid: 15449 - components: - - type: Transform - pos: -54.5,-57.5 - parent: 2 - - uid: 15450 - components: - - type: Transform - pos: -54.5,-49.5 - parent: 2 - - uid: 15457 - components: - - type: Transform - pos: -64.5,-59.5 - parent: 2 - - uid: 15476 - components: - - type: Transform - pos: -58.5,-14.5 - parent: 2 - - uid: 15742 - components: - - type: Transform - pos: -38.5,14.5 - parent: 2 - - uid: 15768 - components: - - type: Transform - pos: 11.5,-15.5 - parent: 2 - - uid: 15884 - components: - - type: Transform - pos: -71.5,-7.5 - parent: 2 - - uid: 15891 - components: - - type: Transform - pos: 42.5,-30.5 - parent: 2 - - uid: 15900 - components: - - type: Transform - pos: -66.5,-17.5 - parent: 2 - - uid: 15904 - components: - - type: Transform - pos: -64.5,-11.5 - parent: 2 - - uid: 15909 - components: - - type: Transform - pos: -64.5,-13.5 - parent: 2 - - uid: 15913 - components: - - type: Transform - pos: -53.5,-14.5 - parent: 2 - - uid: 15915 - components: - - type: Transform - pos: -58.5,-13.5 - parent: 2 - - uid: 15921 - components: - - type: Transform - pos: -48.5,-14.5 - parent: 2 - - uid: 15944 - components: - - type: Transform - pos: -65.5,-17.5 - parent: 2 - - uid: 15950 - components: - - type: Transform - pos: 17.5,-26.5 - parent: 2 - - uid: 15951 - components: - - type: Transform - pos: 23.5,-23.5 - parent: 2 - - uid: 15953 - components: - - type: Transform - pos: 18.5,-28.5 - parent: 2 - - uid: 15956 - components: - - type: Transform - pos: 18.5,-29.5 - parent: 2 - - uid: 15959 - components: - - type: Transform - pos: 18.5,-32.5 - parent: 2 - - uid: 15961 - components: - - type: Transform - pos: 21.5,-32.5 - parent: 2 - - uid: 15962 - components: - - type: Transform - pos: 22.5,-32.5 - parent: 2 - - uid: 15970 - components: - - type: Transform - pos: 25.5,-40.5 - parent: 2 - - uid: 15971 - components: - - type: Transform - pos: 24.5,-32.5 - parent: 2 - - uid: 15974 - components: - - type: Transform - pos: 27.5,-23.5 - parent: 2 - - uid: 15983 - components: - - type: Transform - pos: 37.5,-23.5 - parent: 2 - - uid: 15984 - components: - - type: Transform - pos: 39.5,-30.5 - parent: 2 - - uid: 15985 - components: - - type: Transform - pos: 38.5,-23.5 - parent: 2 - - uid: 15990 - components: - - type: Transform - pos: 41.5,-28.5 - parent: 2 - - uid: 15993 - components: - - type: Transform - pos: 25.5,-42.5 - parent: 2 - - uid: 15994 - components: - - type: Transform - pos: 25.5,-47.5 - parent: 2 - - uid: 15997 - components: - - type: Transform - pos: 42.5,-28.5 - parent: 2 - - uid: 15998 - components: - - type: Transform - pos: 17.5,-25.5 - parent: 2 - - uid: 16003 - components: - - type: Transform - pos: 25.5,-23.5 - parent: 2 - - uid: 16004 - components: - - type: Transform - pos: 36.5,-23.5 - parent: 2 - - uid: 16005 - components: - - type: Transform - pos: 25.5,-43.5 - parent: 2 - - uid: 16088 - components: - - type: Transform - pos: -35.5,14.5 - parent: 2 - - uid: 16151 - components: - - type: Transform - pos: 66.5,-70.5 - parent: 2 - - uid: 16210 - components: - - type: Transform - pos: 76.5,-74.5 - parent: 2 - - uid: 16211 - components: - - type: Transform - pos: 77.5,-73.5 - parent: 2 - - uid: 16217 - components: - - type: Transform - pos: 56.5,-65.5 - parent: 2 - - uid: 16233 - components: - - type: Transform - pos: 25.5,-11.5 - parent: 2 - - uid: 16234 - components: - - type: Transform - pos: -62.5,-17.5 - parent: 2 - - uid: 16276 - components: - - type: Transform - pos: -59.5,-16.5 - parent: 2 - - uid: 16308 - components: - - type: Transform - pos: 26.5,-11.5 - parent: 2 - - uid: 16313 - components: - - type: Transform - pos: 22.5,-6.5 - parent: 2 - - uid: 16451 - components: - - type: Transform - pos: -58.5,-17.5 - parent: 2 - - uid: 16452 - components: - - type: Transform - pos: -59.5,-18.5 - parent: 2 - - uid: 16665 - components: - - type: Transform - pos: -36.5,14.5 - parent: 2 - - uid: 16673 - components: - - type: Transform - pos: -35.5,7.5 - parent: 2 - - uid: 16827 - components: - - type: Transform - pos: 58.5,-66.5 - parent: 2 - - uid: 16835 - components: - - type: Transform - pos: 56.5,-63.5 - parent: 2 - - uid: 16840 - components: - - type: Transform - pos: 75.5,-75.5 - parent: 2 - - uid: 16964 - components: - - type: Transform - pos: 61.5,-70.5 - parent: 2 - - uid: 16996 - components: - - type: Transform - pos: 60.5,-57.5 - parent: 2 - - uid: 17001 - components: - - type: Transform - pos: 61.5,-55.5 - parent: 2 - - uid: 17090 - components: - - type: Transform - pos: -36.5,-6.5 - parent: 2 - - uid: 17198 - components: - - type: Transform - pos: -42.5,-2.5 - parent: 2 - - uid: 17527 - components: - - type: Transform - pos: 12.5,-8.5 - parent: 2 - - uid: 17726 - components: - - type: Transform - pos: 66.5,-84.5 - parent: 2 - - uid: 17728 + - uid: 22259 components: - type: Transform pos: 62.5,-80.5 parent: 2 - - uid: 17731 + - uid: 22417 components: - type: Transform pos: 86.5,-26.5 parent: 2 - - uid: 17733 - components: - - type: Transform - pos: 86.5,-28.5 - parent: 2 - - uid: 17736 + - uid: 22594 components: - type: Transform pos: 85.5,-32.5 parent: 2 - - uid: 17845 - components: - - type: Transform - pos: 64.5,-67.5 - parent: 2 - - uid: 17847 - components: - - type: Transform - pos: 73.5,-72.5 - parent: 2 - - uid: 17848 + - uid: 22636 components: - type: Transform pos: 87.5,-10.5 parent: 2 - - uid: 17865 + - uid: 22639 components: - type: Transform pos: -41.5,-2.5 parent: 2 - - uid: 17924 - components: - - type: Transform - pos: 66.5,-37.5 - parent: 2 - - uid: 18058 + - uid: 22994 components: - type: Transform pos: 80.5,-23.5 parent: 2 - - uid: 18179 + - uid: 23036 components: - type: Transform pos: 13.5,-96.5 parent: 2 - - uid: 18191 + - uid: 23037 components: - type: Transform pos: 64.5,-84.5 parent: 2 - - uid: 18195 - components: - - type: Transform - pos: 63.5,-83.5 - parent: 2 - - uid: 18196 + - uid: 23112 components: - type: Transform pos: 56.5,-60.5 parent: 2 - - uid: 18197 + - uid: 23145 components: - type: Transform pos: 58.5,-59.5 parent: 2 - - uid: 18199 + - uid: 23325 components: - type: Transform pos: 58.5,-64.5 parent: 2 - - uid: 18447 - components: - - type: Transform - pos: 86.5,-24.5 - parent: 2 - - uid: 18449 - components: - - type: Transform - pos: 85.5,-24.5 - parent: 2 - - uid: 18450 + - uid: 23437 components: - type: Transform pos: 83.5,-24.5 parent: 2 - - uid: 18470 + - uid: 23438 components: - type: Transform pos: 93.5,-14.5 parent: 2 - - uid: 18480 - components: - - type: Transform - pos: 91.5,-12.5 - parent: 2 - - uid: 18484 + - uid: 23440 components: - type: Transform pos: 85.5,-15.5 parent: 2 - - uid: 18516 - components: - - type: Transform - pos: 93.5,-34.5 - parent: 2 - - uid: 18518 - components: - - type: Transform - pos: 97.5,-25.5 - parent: 2 - - uid: 18521 - components: - - type: Transform - pos: 97.5,-33.5 - parent: 2 - - uid: 18522 - components: - - type: Transform - pos: 97.5,-34.5 - parent: 2 - - uid: 18725 + - uid: 23608 components: - type: Transform pos: 52.5,-34.5 parent: 2 - - uid: 18762 + - uid: 23609 components: - type: Transform pos: 83.5,-38.5 parent: 2 - - uid: 19051 + - uid: 23610 components: - type: Transform pos: -6.5,-96.5 parent: 2 - - uid: 19068 + - uid: 23611 components: - type: Transform pos: 15.5,-96.5 parent: 2 - - uid: 19149 + - uid: 23612 components: - type: Transform pos: 5.5,-98.5 parent: 2 - - uid: 19239 - components: - - type: Transform - pos: 81.5,-47.5 - parent: 2 - - uid: 19241 + - uid: 23613 components: - type: Transform pos: 39.5,-75.5 parent: 2 - - uid: 19396 + - uid: 23614 components: - type: Transform pos: 15.5,-69.5 parent: 2 - - uid: 19397 + - uid: 23615 components: - type: Transform pos: 21.5,-69.5 parent: 2 - - uid: 19600 + - uid: 23616 components: - type: Transform pos: 60.5,-45.5 parent: 2 - - uid: 19778 + - uid: 23617 components: - type: Transform pos: 94.5,-34.5 parent: 2 - - uid: 19905 - components: - - type: Transform - pos: 37.5,-78.5 - parent: 2 - - uid: 19906 + - uid: 23618 components: - type: Transform pos: 39.5,-78.5 parent: 2 - - uid: 19948 - components: - - type: Transform - pos: 83.5,-13.5 - parent: 2 - - uid: 20122 + - uid: 23619 components: - type: Transform pos: 22.5,16.5 parent: 2 - - uid: 20541 - components: - - type: Transform - pos: 11.5,-9.5 - parent: 2 - - uid: 20556 + - uid: 23620 components: - type: Transform pos: 13.5,3.5 parent: 2 - - uid: 20636 - components: - - type: Transform - pos: 11.5,-13.5 - parent: 2 - - uid: 21355 - components: - - type: Transform - pos: 14.5,4.5 - parent: 2 - - uid: 21363 - components: - - type: Transform - pos: 18.5,18.5 - parent: 2 - - uid: 21365 - components: - - type: Transform - pos: 13.5,4.5 - parent: 2 - - uid: 21370 - components: - - type: Transform - pos: 41.5,22.5 - parent: 2 - - uid: 21450 + - uid: 23621 components: - type: Transform pos: 40.5,23.5 parent: 2 - - uid: 21458 + - uid: 23622 components: - type: Transform pos: 42.5,16.5 parent: 2 - - uid: 21673 + - uid: 23623 components: - type: Transform pos: 18.5,19.5 parent: 2 - - uid: 21738 - components: - - type: Transform - pos: 22.5,-5.5 - parent: 2 - - uid: 21784 - components: - - type: Transform - pos: 30.5,26.5 - parent: 2 - - uid: 21803 + - uid: 23625 components: - type: Transform pos: 36.5,26.5 parent: 2 - - uid: 21852 - components: - - type: Transform - pos: 26.5,25.5 - parent: 2 - - uid: 21860 + - uid: 23626 components: - type: Transform pos: 36.5,20.5 parent: 2 - - uid: 21868 + - uid: 23627 components: - type: Transform pos: 33.5,26.5 parent: 2 - - uid: 21871 + - uid: 23628 components: - type: Transform pos: 17.5,18.5 parent: 2 - - uid: 21878 + - uid: 23629 components: - type: Transform pos: 23.5,20.5 parent: 2 - - uid: 21892 - components: - - type: Transform - pos: 44.5,24.5 - parent: 2 - - uid: 21894 - components: - - type: Transform - pos: 42.5,18.5 - parent: 2 - - uid: 21910 + - uid: 23630 components: - type: Transform pos: 48.5,23.5 parent: 2 - - uid: 21914 + - uid: 23631 components: - type: Transform pos: 41.5,13.5 parent: 2 - - uid: 21960 + - uid: 23632 components: - type: Transform pos: 28.5,26.5 parent: 2 - - uid: 21995 + - uid: 23633 components: - type: Transform pos: 18.5,16.5 parent: 2 - - uid: 22002 - components: - - type: Transform - pos: 14.5,14.5 - parent: 2 - - uid: 22010 - components: - - type: Transform - pos: 25.5,20.5 - parent: 2 - - uid: 22016 + - uid: 23634 components: - type: Transform pos: 15.5,29.5 parent: 2 - - uid: 22017 - components: - - type: Transform - pos: 15.5,30.5 - parent: 2 - - uid: 22021 - components: - - type: Transform - pos: 28.5,30.5 - parent: 2 - - uid: 22097 + - uid: 23635 components: - type: Transform pos: 21.5,11.5 parent: 2 - - uid: 22098 + - uid: 23636 components: - type: Transform pos: 17.5,11.5 parent: 2 - - uid: 22118 + - uid: 23637 components: - type: Transform pos: 21.5,16.5 parent: 2 - - uid: 22119 + - uid: 23638 components: - type: Transform pos: 22.5,14.5 parent: 2 - - uid: 22127 - components: - - type: Transform - pos: 19.5,23.5 - parent: 2 - - uid: 22134 + - uid: 23639 components: - type: Transform pos: 43.5,13.5 parent: 2 - - uid: 22259 - components: - - type: Transform - pos: -31.5,-16.5 - parent: 2 - - uid: 22417 + - uid: 23640 components: - type: Transform pos: 22.5,15.5 parent: 2 - - uid: 22594 + - uid: 23641 components: - type: Transform pos: -4.5,-33.5 parent: 2 - - uid: 23036 + - uid: 23642 components: - type: Transform pos: 9.5,7.5 parent: 2 - - uid: 23037 + - uid: 23643 components: - type: Transform pos: 10.5,7.5 parent: 2 - - uid: 23112 + - uid: 23644 components: - type: Transform pos: -5.5,-32.5 parent: 2 - - uid: 23145 + - uid: 23645 components: - type: Transform pos: 11.5,-7.5 parent: 2 - - uid: 23325 + - uid: 23646 components: - type: Transform pos: -34.5,3.5 parent: 2 +- proto: WallReinforcedRust + entities: + - uid: 5855 + components: + - type: Transform + pos: -19.5,4.5 + parent: 2 + - uid: 5864 + components: + - type: Transform + pos: -27.5,-68.5 + parent: 2 + - uid: 5866 + components: + - type: Transform + pos: -60.5,-10.5 + parent: 2 + - uid: 5881 + components: + - type: Transform + pos: -33.5,24.5 + parent: 2 + - uid: 5882 + components: + - type: Transform + pos: 57.5,-42.5 + parent: 2 + - uid: 5886 + components: + - type: Transform + pos: 44.5,25.5 + parent: 2 + - uid: 5888 + components: + - type: Transform + pos: 30.5,26.5 + parent: 2 + - uid: 5892 + components: + - type: Transform + pos: 57.5,-37.5 + parent: 2 + - uid: 5898 + components: + - type: Transform + pos: 65.5,-43.5 + parent: 2 + - uid: 5901 + components: + - type: Transform + pos: 45.5,-49.5 + parent: 2 + - uid: 5907 + components: + - type: Transform + pos: 29.5,-50.5 + parent: 2 + - uid: 5909 + components: + - type: Transform + pos: 25.5,20.5 + parent: 2 + - uid: 5922 + components: + - type: Transform + pos: -28.5,14.5 + parent: 2 + - uid: 5931 + components: + - type: Transform + pos: -40.5,-13.5 + parent: 2 + - uid: 5937 + components: + - type: Transform + pos: -38.5,14.5 + parent: 2 + - uid: 5947 + components: + - type: Transform + pos: 51.5,-34.5 + parent: 2 + - uid: 5953 + components: + - type: Transform + pos: 54.5,-23.5 + parent: 2 + - uid: 5957 + components: + - type: Transform + pos: -43.5,-44.5 + parent: 2 + - uid: 5966 + components: + - type: Transform + pos: -28.5,7.5 + parent: 2 + - uid: 5968 + components: + - type: Transform + pos: -34.5,21.5 + parent: 2 + - uid: 5970 + components: + - type: Transform + pos: -59.5,-35.5 + parent: 2 + - uid: 6028 + components: + - type: Transform + pos: 60.5,-78.5 + parent: 2 + - uid: 6036 + components: + - type: Transform + pos: -54.5,-10.5 + parent: 2 + - uid: 6053 + components: + - type: Transform + pos: -21.5,-68.5 + parent: 2 + - uid: 6060 + components: + - type: Transform + pos: 50.5,-34.5 + parent: 2 + - uid: 6085 + components: + - type: Transform + pos: 21.5,-32.5 + parent: 2 + - uid: 6099 + components: + - type: Transform + pos: 66.5,-37.5 + parent: 2 + - uid: 6108 + components: + - type: Transform + pos: -13.5,-53.5 + parent: 2 + - uid: 6109 + components: + - type: Transform + pos: 47.5,-42.5 + parent: 2 + - uid: 6116 + components: + - type: Transform + pos: -30.5,5.5 + parent: 2 + - uid: 6122 + components: + - type: Transform + pos: -5.5,-60.5 + parent: 2 + - uid: 6128 + components: + - type: Transform + pos: -35.5,-10.5 + parent: 2 + - uid: 6145 + components: + - type: Transform + pos: -29.5,-20.5 + parent: 2 + - uid: 6149 + components: + - type: Transform + pos: -53.5,-36.5 + parent: 2 + - uid: 6159 + components: + - type: Transform + pos: -9.5,-72.5 + parent: 2 + - uid: 6161 + components: + - type: Transform + pos: 54.5,-57.5 + parent: 2 + - uid: 6172 + components: + - type: Transform + pos: -31.5,-6.5 + parent: 2 + - uid: 6179 + components: + - type: Transform + pos: 66.5,-45.5 + parent: 2 + - uid: 6184 + components: + - type: Transform + pos: -37.5,0.5 + parent: 2 + - uid: 6186 + components: + - type: Transform + pos: -20.5,40.5 + parent: 2 + - uid: 6193 + components: + - type: Transform + pos: 2.5,-35.5 + parent: 2 + - uid: 6207 + components: + - type: Transform + pos: 25.5,-44.5 + parent: 2 + - uid: 6223 + components: + - type: Transform + pos: 93.5,-34.5 + parent: 2 + - uid: 6225 + components: + - type: Transform + pos: 31.5,-68.5 + parent: 2 + - uid: 6232 + components: + - type: Transform + pos: -30.5,-81.5 + parent: 2 + - uid: 6238 + components: + - type: Transform + pos: 27.5,-32.5 + parent: 2 + - uid: 6240 + components: + - type: Transform + pos: 26.5,25.5 + parent: 2 + - uid: 6254 + components: + - type: Transform + pos: -27.5,-57.5 + parent: 2 + - uid: 6257 + components: + - type: Transform + pos: 22.5,-8.5 + parent: 2 + - uid: 6261 + components: + - type: Transform + pos: -31.5,-38.5 + parent: 2 + - uid: 6288 + components: + - type: Transform + pos: -10.5,30.5 + parent: 2 + - uid: 6292 + components: + - type: Transform + pos: -8.5,4.5 + parent: 2 + - uid: 6297 + components: + - type: Transform + pos: 44.5,-79.5 + parent: 2 + - uid: 6306 + components: + - type: Transform + pos: -16.5,40.5 + parent: 2 + - uid: 6307 + components: + - type: Transform + pos: 45.5,18.5 + parent: 2 + - uid: 6321 + components: + - type: Transform + pos: 6.5,-75.5 + parent: 2 + - uid: 6324 + components: + - type: Transform + pos: -35.5,-12.5 + parent: 2 + - uid: 6325 + components: + - type: Transform + pos: 9.5,-76.5 + parent: 2 + - uid: 6339 + components: + - type: Transform + pos: -23.5,9.5 + parent: 2 + - uid: 6352 + components: + - type: Transform + pos: -52.5,-28.5 + parent: 2 + - uid: 6353 + components: + - type: Transform + pos: 56.5,-51.5 + parent: 2 + - uid: 6357 + components: + - type: Transform + pos: 9.5,-80.5 + parent: 2 + - uid: 6360 + components: + - type: Transform + pos: 25.5,-42.5 + parent: 2 + - uid: 6369 + components: + - type: Transform + pos: -19.5,-45.5 + parent: 2 + - uid: 6373 + components: + - type: Transform + pos: 55.5,-37.5 + parent: 2 + - uid: 6374 + components: + - type: Transform + pos: 48.5,7.5 + parent: 2 + - uid: 6376 + components: + - type: Transform + pos: 13.5,-89.5 + parent: 2 + - uid: 6379 + components: + - type: Transform + pos: -5.5,17.5 + parent: 2 + - uid: 6389 + components: + - type: Transform + pos: -54.5,-39.5 + parent: 2 + - uid: 6397 + components: + - type: Transform + pos: -26.5,-26.5 + parent: 2 + - uid: 6400 + components: + - type: Transform + pos: 67.5,-66.5 + parent: 2 + - uid: 6407 + components: + - type: Transform + pos: -13.5,-56.5 + parent: 2 + - uid: 6422 + components: + - type: Transform + pos: -64.5,-16.5 + parent: 2 + - uid: 6427 + components: + - type: Transform + pos: 42.5,7.5 + parent: 2 + - uid: 6428 + components: + - type: Transform + pos: 12.5,-3.5 + parent: 2 + - uid: 6430 + components: + - type: Transform + pos: -9.5,-66.5 + parent: 2 + - uid: 6433 + components: + - type: Transform + pos: 26.5,26.5 + parent: 2 + - uid: 6437 + components: + - type: Transform + pos: -13.5,-79.5 + parent: 2 + - uid: 6439 + components: + - type: Transform + pos: 85.5,-24.5 + parent: 2 + - uid: 6446 + components: + - type: Transform + pos: 37.5,-23.5 + parent: 2 + - uid: 6464 + components: + - type: Transform + pos: 58.5,-57.5 + parent: 2 + - uid: 6476 + components: + - type: Transform + pos: -9.5,-54.5 + parent: 2 + - uid: 6493 + components: + - type: Transform + pos: 25.5,17.5 + parent: 2 + - uid: 6496 + components: + - type: Transform + pos: -22.5,15.5 + parent: 2 + - uid: 6510 + components: + - type: Transform + pos: -26.5,-14.5 + parent: 2 + - uid: 6526 + components: + - type: Transform + pos: -36.5,-1.5 + parent: 2 + - uid: 6556 + components: + - type: Transform + pos: -18.5,-45.5 + parent: 2 + - uid: 6604 + components: + - type: Transform + pos: 40.5,-19.5 + parent: 2 + - uid: 6616 + components: + - type: Transform + pos: -58.5,-13.5 + parent: 2 + - uid: 6618 + components: + - type: Transform + pos: 19.5,16.5 + parent: 2 + - uid: 6620 + components: + - type: Transform + pos: 1.5,27.5 + parent: 2 + - uid: 6623 + components: + - type: Transform + pos: 64.5,-55.5 + parent: 2 + - uid: 6627 + components: + - type: Transform + pos: 56.5,-45.5 + parent: 2 + - uid: 6628 + components: + - type: Transform + pos: -8.5,-27.5 + parent: 2 + - uid: 6629 + components: + - type: Transform + pos: -11.5,36.5 + parent: 2 + - uid: 6632 + components: + - type: Transform + pos: 11.5,-15.5 + parent: 2 + - uid: 6640 + components: + - type: Transform + pos: 18.5,-29.5 + parent: 2 + - uid: 6641 + components: + - type: Transform + pos: -29.5,8.5 + parent: 2 + - uid: 6670 + components: + - type: Transform + pos: 17.5,-19.5 + parent: 2 + - uid: 6679 + components: + - type: Transform + pos: -21.5,-12.5 + parent: 2 + - uid: 6680 + components: + - type: Transform + pos: 6.5,-23.5 + parent: 2 + - uid: 6687 + components: + - type: Transform + pos: -22.5,13.5 + parent: 2 + - uid: 6713 + components: + - type: Transform + pos: -9.5,-53.5 + parent: 2 + - uid: 6716 + components: + - type: Transform + pos: -2.5,3.5 + parent: 2 + - uid: 6739 + components: + - type: Transform + pos: -50.5,-46.5 + parent: 2 + - uid: 6741 + components: + - type: Transform + pos: -31.5,-33.5 + parent: 2 + - uid: 6781 + components: + - type: Transform + pos: 53.5,-61.5 + parent: 2 + - uid: 6842 + components: + - type: Transform + pos: 30.5,-66.5 + parent: 2 + - uid: 6850 + components: + - type: Transform + pos: -56.5,-26.5 + parent: 2 + - uid: 6882 + components: + - type: Transform + pos: -31.5,-17.5 + parent: 2 + - uid: 6899 + components: + - type: Transform + pos: 56.5,-57.5 + parent: 2 + - uid: 6904 + components: + - type: Transform + pos: 40.5,-43.5 + parent: 2 + - uid: 6905 + components: + - type: Transform + pos: -10.5,-64.5 + parent: 2 + - uid: 6908 + components: + - type: Transform + pos: 25.5,-43.5 + parent: 2 + - uid: 6913 + components: + - type: Transform + pos: -33.5,-7.5 + parent: 2 + - uid: 6923 + components: + - type: Transform + pos: -62.5,-58.5 + parent: 2 + - uid: 6925 + components: + - type: Transform + pos: 5.5,-7.5 + parent: 2 + - uid: 6927 + components: + - type: Transform + pos: -57.5,-32.5 + parent: 2 + - uid: 6933 + components: + - type: Transform + pos: -19.5,-68.5 + parent: 2 + - uid: 6934 + components: + - type: Transform + pos: -46.5,-42.5 + parent: 2 + - uid: 6944 + components: + - type: Transform + pos: 71.5,-39.5 + parent: 2 + - uid: 6968 + components: + - type: Transform + pos: 9.5,-11.5 + parent: 2 + - uid: 6970 + components: + - type: Transform + pos: 11.5,-8.5 + parent: 2 + - uid: 6974 + components: + - type: Transform + pos: 91.5,-12.5 + parent: 2 + - uid: 6982 + components: + - type: Transform + pos: 17.5,-60.5 + parent: 2 + - uid: 6988 + components: + - type: Transform + pos: -21.5,32.5 + parent: 2 + - uid: 6993 + components: + - type: Transform + pos: 36.5,-56.5 + parent: 2 + - uid: 6995 + components: + - type: Transform + pos: 49.5,-62.5 + parent: 2 + - uid: 6997 + components: + - type: Transform + pos: -5.5,-75.5 + parent: 2 + - uid: 7003 + components: + - type: Transform + pos: 48.5,-62.5 + parent: 2 + - uid: 7021 + components: + - type: Transform + pos: -32.5,-30.5 + parent: 2 + - uid: 7026 + components: + - type: Transform + pos: 63.5,-55.5 + parent: 2 + - uid: 7060 + components: + - type: Transform + pos: 39.5,-30.5 + parent: 2 + - uid: 7075 + components: + - type: Transform + pos: -61.5,-7.5 + parent: 2 + - uid: 7086 + components: + - type: Transform + pos: 75.5,-39.5 + parent: 2 + - uid: 7087 + components: + - type: Transform + pos: -68.5,-12.5 + parent: 2 + - uid: 7092 + components: + - type: Transform + pos: 22.5,-9.5 + parent: 2 + - uid: 7106 + components: + - type: Transform + pos: -2.5,16.5 + parent: 2 + - uid: 7107 + components: + - type: Transform + pos: -50.5,-24.5 + parent: 2 + - uid: 7113 + components: + - type: Transform + pos: -36.5,-6.5 + parent: 2 + - uid: 7118 + components: + - type: Transform + pos: 50.5,-45.5 + parent: 2 + - uid: 7163 + components: + - type: Transform + pos: 55.5,-23.5 + parent: 2 + - uid: 7164 + components: + - type: Transform + pos: -3.5,-66.5 + parent: 2 + - uid: 7167 + components: + - type: Transform + pos: -57.5,-20.5 + parent: 2 + - uid: 7168 + components: + - type: Transform + pos: 7.5,27.5 + parent: 2 + - uid: 7175 + components: + - type: Transform + pos: -51.5,-35.5 + parent: 2 + - uid: 7184 + components: + - type: Transform + pos: -19.5,5.5 + parent: 2 + - uid: 7210 + components: + - type: Transform + pos: 13.5,29.5 + parent: 2 + - uid: 7216 + components: + - type: Transform + pos: 18.5,20.5 + parent: 2 + - uid: 7218 + components: + - type: Transform + pos: 44.5,-47.5 + parent: 2 + - uid: 7222 + components: + - type: Transform + pos: -27.5,-54.5 + parent: 2 + - uid: 7228 + components: + - type: Transform + pos: -9.5,17.5 + parent: 2 + - uid: 7229 + components: + - type: Transform + pos: -64.5,-10.5 + parent: 2 + - uid: 7230 + components: + - type: Transform + pos: 10.5,-5.5 + parent: 2 + - uid: 7233 + components: + - type: Transform + pos: 5.5,-11.5 + parent: 2 + - uid: 7286 + components: + - type: Transform + pos: 42.5,-32.5 + parent: 2 + - uid: 7293 + components: + - type: Transform + pos: 58.5,-67.5 + parent: 2 + - uid: 7294 + components: + - type: Transform + pos: -35.5,21.5 + parent: 2 + - uid: 7298 + components: + - type: Transform + pos: 12.5,-15.5 + parent: 2 + - uid: 7300 + components: + - type: Transform + pos: 52.5,-43.5 + parent: 2 + - uid: 7308 + components: + - type: Transform + pos: 42.5,-62.5 + parent: 2 + - uid: 7315 + components: + - type: Transform + pos: -31.5,-20.5 + parent: 2 + - uid: 7318 + components: + - type: Transform + pos: 11.5,-76.5 + parent: 2 + - uid: 7320 + components: + - type: Transform + pos: -30.5,-20.5 + parent: 2 + - uid: 7326 + components: + - type: Transform + pos: -66.5,-13.5 + parent: 2 + - uid: 7330 + components: + - type: Transform + pos: -6.5,13.5 + parent: 2 + - uid: 7352 + components: + - type: Transform + pos: -3.5,17.5 + parent: 2 + - uid: 7359 + components: + - type: Transform + pos: 56.5,-59.5 + parent: 2 + - uid: 7370 + components: + - type: Transform + pos: 36.5,-57.5 + parent: 2 + - uid: 7390 + components: + - type: Transform + pos: 43.5,-78.5 + parent: 2 + - uid: 7404 + components: + - type: Transform + pos: -58.5,-11.5 + parent: 2 + - uid: 7430 + components: + - type: Transform + pos: 5.5,-13.5 + parent: 2 + - uid: 7456 + components: + - type: Transform + pos: -14.5,-17.5 + parent: 2 + - uid: 7461 + components: + - type: Transform + pos: -20.5,18.5 + parent: 2 + - uid: 7505 + components: + - type: Transform + pos: -36.5,-11.5 + parent: 2 + - uid: 7507 + components: + - type: Transform + pos: 13.5,-20.5 + parent: 2 + - uid: 7518 + components: + - type: Transform + pos: -0.5,27.5 + parent: 2 + - uid: 7529 + components: + - type: Transform + pos: 26.5,-5.5 + parent: 2 + - uid: 7531 + components: + - type: Transform + pos: 43.5,-42.5 + parent: 2 + - uid: 7546 + components: + - type: Transform + pos: -35.5,-70.5 + parent: 2 + - uid: 7572 + components: + - type: Transform + pos: -27.5,-51.5 + parent: 2 + - uid: 7588 + components: + - type: Transform + pos: -10.5,-59.5 + parent: 2 + - uid: 7602 + components: + - type: Transform + pos: -24.5,-12.5 + parent: 2 + - uid: 7605 + components: + - type: Transform + pos: 12.5,-68.5 + parent: 2 + - uid: 7612 + components: + - type: Transform + pos: -40.5,-19.5 + parent: 2 + - uid: 7618 + components: + - type: Transform + pos: -5.5,13.5 + parent: 2 + - uid: 7628 + components: + - type: Transform + pos: -69.5,-16.5 + parent: 2 + - uid: 7631 + components: + - type: Transform + pos: -39.5,-21.5 + parent: 2 + - uid: 7634 + components: + - type: Transform + pos: -38.5,-17.5 + parent: 2 + - uid: 7637 + components: + - type: Transform + pos: -37.5,-16.5 + parent: 2 + - uid: 7638 + components: + - type: Transform + pos: -66.5,-8.5 + parent: 2 + - uid: 7639 + components: + - type: Transform + pos: 86.5,-24.5 + parent: 2 + - uid: 7640 + components: + - type: Transform + pos: -31.5,-10.5 + parent: 2 + - uid: 7641 + components: + - type: Transform + pos: 42.5,-26.5 + parent: 2 + - uid: 7642 + components: + - type: Transform + pos: -31.5,-62.5 + parent: 2 + - uid: 7643 + components: + - type: Transform + pos: 11.5,-9.5 + parent: 2 + - uid: 7649 + components: + - type: Transform + pos: -50.5,-10.5 + parent: 2 + - uid: 7659 + components: + - type: Transform + pos: -13.5,0.5 + parent: 2 + - uid: 7661 + components: + - type: Transform + pos: 25.5,-11.5 + parent: 2 + - uid: 7667 + components: + - type: Transform + pos: 18.5,-31.5 + parent: 2 + - uid: 7673 + components: + - type: Transform + pos: 29.5,-59.5 + parent: 2 + - uid: 7700 + components: + - type: Transform + pos: 29.5,-51.5 + parent: 2 + - uid: 7701 + components: + - type: Transform + pos: 23.5,-27.5 + parent: 2 + - uid: 7707 + components: + - type: Transform + pos: 47.5,18.5 + parent: 2 + - uid: 7717 + components: + - type: Transform + pos: 23.5,-5.5 + parent: 2 + - uid: 7723 + components: + - type: Transform + pos: 14.5,-2.5 + parent: 2 + - uid: 7724 + components: + - type: Transform + pos: 10.5,29.5 + parent: 2 + - uid: 7731 + components: + - type: Transform + pos: -35.5,22.5 + parent: 2 + - uid: 7744 + components: + - type: Transform + pos: 37.5,-60.5 + parent: 2 + - uid: 7748 + components: + - type: Transform + pos: -63.5,-10.5 + parent: 2 + - uid: 7749 + components: + - type: Transform + pos: 53.5,-37.5 + parent: 2 + - uid: 7758 + components: + - type: Transform + pos: 40.5,-28.5 + parent: 2 + - uid: 7759 + components: + - type: Transform + pos: -9.5,-27.5 + parent: 2 + - uid: 7788 + components: + - type: Transform + pos: 32.5,-64.5 + parent: 2 + - uid: 7796 + components: + - type: Transform + pos: -37.5,-28.5 + parent: 2 + - uid: 7799 + components: + - type: Transform + pos: -31.5,-70.5 + parent: 2 + - uid: 7820 + components: + - type: Transform + pos: -47.5,-47.5 + parent: 2 + - uid: 7823 + components: + - type: Transform + pos: 25.5,-40.5 + parent: 2 + - uid: 7831 + components: + - type: Transform + pos: 41.5,-33.5 + parent: 2 + - uid: 7943 + components: + - type: Transform + pos: 51.5,-32.5 + parent: 2 + - uid: 7996 + components: + - type: Transform + pos: -28.5,17.5 + parent: 2 + - uid: 8022 + components: + - type: Transform + pos: -2.5,4.5 + parent: 2 + - uid: 8028 + components: + - type: Transform + pos: -63.5,-35.5 + parent: 2 + - uid: 8039 + components: + - type: Transform + pos: 56.5,-58.5 + parent: 2 + - uid: 8041 + components: + - type: Transform + pos: -19.5,-12.5 + parent: 2 + - uid: 8042 + components: + - type: Transform + pos: -32.5,-13.5 + parent: 2 + - uid: 8047 + components: + - type: Transform + pos: -49.5,-25.5 + parent: 2 + - uid: 8049 + components: + - type: Transform + pos: 49.5,22.5 + parent: 2 + - uid: 8051 + components: + - type: Transform + pos: 29.5,-48.5 + parent: 2 + - uid: 8054 + components: + - type: Transform + pos: -6.5,20.5 + parent: 2 + - uid: 8089 + components: + - type: Transform + pos: -51.5,-32.5 + parent: 2 + - uid: 8105 + components: + - type: Transform + pos: 45.5,13.5 + parent: 2 + - uid: 8111 + components: + - type: Transform + pos: 44.5,-14.5 + parent: 2 + - uid: 8144 + components: + - type: Transform + pos: -0.5,-54.5 + parent: 2 + - uid: 8175 + components: + - type: Transform + pos: -53.5,-47.5 + parent: 2 + - uid: 8196 + components: + - type: Transform + pos: 42.5,22.5 + parent: 2 + - uid: 8198 + components: + - type: Transform + pos: -35.5,-11.5 + parent: 2 + - uid: 8200 + components: + - type: Transform + pos: 84.5,-38.5 + parent: 2 + - uid: 8204 + components: + - type: Transform + pos: 56.5,-65.5 + parent: 2 + - uid: 8209 + components: + - type: Transform + pos: 39.5,23.5 + parent: 2 + - uid: 8211 + components: + - type: Transform + pos: 16.5,-20.5 + parent: 2 + - uid: 8235 + components: + - type: Transform + pos: 18.5,26.5 + parent: 2 + - uid: 8237 + components: + - type: Transform + pos: 49.5,-28.5 + parent: 2 + - uid: 8240 + components: + - type: Transform + pos: -68.5,-8.5 + parent: 2 + - uid: 8257 + components: + - type: Transform + pos: 8.5,-96.5 + parent: 2 + - uid: 8262 + components: + - type: Transform + pos: -21.5,18.5 + parent: 2 + - uid: 8271 + components: + - type: Transform + pos: 32.5,-32.5 + parent: 2 + - uid: 8273 + components: + - type: Transform + pos: -28.5,25.5 + parent: 2 + - uid: 8276 + components: + - type: Transform + pos: -10.5,35.5 + parent: 2 + - uid: 8290 + components: + - type: Transform + pos: -35.5,-59.5 + parent: 2 + - uid: 8302 + components: + - type: Transform + pos: -64.5,-15.5 + parent: 2 + - uid: 8318 + components: + - type: Transform + pos: -22.5,-44.5 + parent: 2 + - uid: 8342 + components: + - type: Transform + pos: 8.5,-75.5 + parent: 2 + - uid: 8347 + components: + - type: Transform + pos: -21.5,0.5 + parent: 2 + - uid: 8376 + components: + - type: Transform + pos: -1.5,15.5 + parent: 2 + - uid: 8380 + components: + - type: Transform + pos: -18.5,-3.5 + parent: 2 + - uid: 8386 + components: + - type: Transform + pos: -8.5,23.5 + parent: 2 + - uid: 8388 + components: + - type: Transform + pos: -19.5,40.5 + parent: 2 + - uid: 8392 + components: + - type: Transform + pos: 3.5,-7.5 + parent: 2 + - uid: 8399 + components: + - type: Transform + pos: -43.5,-45.5 + parent: 2 + - uid: 8400 + components: + - type: Transform + pos: 22.5,-6.5 + parent: 2 + - uid: 8404 + components: + - type: Transform + pos: 43.5,-41.5 + parent: 2 + - uid: 8412 + components: + - type: Transform + pos: -2.5,27.5 + parent: 2 + - uid: 8463 + components: + - type: Transform + pos: -21.5,28.5 + parent: 2 + - uid: 8477 + components: + - type: Transform + pos: 97.5,-34.5 + parent: 2 + - uid: 8486 + components: + - type: Transform + pos: -19.5,3.5 + parent: 2 + - uid: 8492 + components: + - type: Transform + pos: -13.5,24.5 + parent: 2 + - uid: 8526 + components: + - type: Transform + pos: 58.5,-60.5 + parent: 2 + - uid: 8541 + components: + - type: Transform + pos: -31.5,-81.5 + parent: 2 + - uid: 8544 + components: + - type: Transform + pos: 13.5,-88.5 + parent: 2 + - uid: 8554 + components: + - type: Transform + pos: 65.5,-70.5 + parent: 2 + - uid: 8555 + components: + - type: Transform + pos: -31.5,-65.5 + parent: 2 + - uid: 8559 + components: + - type: Transform + pos: 14.5,-0.5 + parent: 2 + - uid: 8577 + components: + - type: Transform + pos: -9.5,-49.5 + parent: 2 + - uid: 8623 + components: + - type: Transform + pos: -26.5,-39.5 + parent: 2 + - uid: 8624 + components: + - type: Transform + pos: -5.5,-69.5 + parent: 2 + - uid: 8703 + components: + - type: Transform + pos: 13.5,0.5 + parent: 2 + - uid: 8725 + components: + - type: Transform + pos: -52.5,-46.5 + parent: 2 + - uid: 8737 + components: + - type: Transform + pos: 16.5,-71.5 + parent: 2 + - uid: 8746 + components: + - type: Transform + pos: -20.5,-14.5 + parent: 2 + - uid: 8748 + components: + - type: Transform + pos: -27.5,-52.5 + parent: 2 + - uid: 8750 + components: + - type: Transform + pos: 50.5,-65.5 + parent: 2 + - uid: 8760 + components: + - type: Transform + pos: 50.5,-74.5 + parent: 2 + - uid: 8770 + components: + - type: Transform + pos: 32.5,-68.5 + parent: 2 + - uid: 8772 + components: + - type: Transform + pos: -8.5,-80.5 + parent: 2 + - uid: 8777 + components: + - type: Transform + pos: -18.5,-13.5 + parent: 2 + - uid: 8785 + components: + - type: Transform + pos: -42.5,-2.5 + parent: 2 + - uid: 8787 + components: + - type: Transform + pos: -4.5,4.5 + parent: 2 + - uid: 8853 + components: + - type: Transform + pos: 14.5,-15.5 + parent: 2 + - uid: 8861 + components: + - type: Transform + pos: -24.5,24.5 + parent: 2 + - uid: 8873 + components: + - type: Transform + pos: -51.5,-28.5 + parent: 2 + - uid: 8876 + components: + - type: Transform + pos: -26.5,-12.5 + parent: 2 + - uid: 8878 + components: + - type: Transform + pos: 61.5,-80.5 + parent: 2 + - uid: 8879 + components: + - type: Transform + pos: 51.5,-47.5 + parent: 2 + - uid: 8880 + components: + - type: Transform + pos: 23.5,-32.5 + parent: 2 + - uid: 8882 + components: + - type: Transform + pos: 24.5,24.5 + parent: 2 + - uid: 8887 + components: + - type: Transform + pos: -5.5,16.5 + parent: 2 + - uid: 8894 + components: + - type: Transform + pos: 44.5,24.5 + parent: 2 + - uid: 8896 + components: + - type: Transform + pos: 32.5,-51.5 + parent: 2 + - uid: 8904 + components: + - type: Transform + pos: 25.5,-32.5 + parent: 2 + - uid: 8913 + components: + - type: Transform + pos: -26.5,-43.5 + parent: 2 + - uid: 8973 + components: + - type: Transform + pos: -48.5,-10.5 + parent: 2 + - uid: 9017 + components: + - type: Transform + pos: -17.5,0.5 + parent: 2 + - uid: 9148 + components: + - type: Transform + pos: 22.5,-32.5 + parent: 2 + - uid: 9215 + components: + - type: Transform + pos: 45.5,-90.5 + parent: 2 + - uid: 9256 + components: + - type: Transform + pos: -35.5,-82.5 + parent: 2 + - uid: 9262 + components: + - type: Transform + pos: -51.5,-39.5 + parent: 2 + - uid: 9271 + components: + - type: Transform + pos: 40.5,-27.5 + parent: 2 + - uid: 9279 + components: + - type: Transform + pos: 50.5,-46.5 + parent: 2 + - uid: 9280 + components: + - type: Transform + pos: 36.5,-47.5 + parent: 2 + - uid: 9281 + components: + - type: Transform + pos: 33.5,23.5 + parent: 2 + - uid: 9313 + components: + - type: Transform + pos: 42.5,-40.5 + parent: 2 + - uid: 9333 + components: + - type: Transform + pos: -36.5,-38.5 + parent: 2 + - uid: 9399 + components: + - type: Transform + pos: -13.5,-55.5 + parent: 2 + - uid: 9420 + components: + - type: Transform + pos: 7.5,-64.5 + parent: 2 + - uid: 9430 + components: + - type: Transform + pos: 6.5,-73.5 + parent: 2 + - uid: 9507 + components: + - type: Transform + pos: -15.5,24.5 + parent: 2 + - uid: 9522 + components: + - type: Transform + pos: -36.5,10.5 + parent: 2 + - uid: 9542 + components: + - type: Transform + pos: 54.5,-15.5 + parent: 2 + - uid: 9549 + components: + - type: Transform + pos: 19.5,11.5 + parent: 2 + - uid: 9555 + components: + - type: Transform + pos: 49.5,-3.5 + parent: 2 + - uid: 9556 + components: + - type: Transform + pos: 48.5,6.5 + parent: 2 + - uid: 9562 + components: + - type: Transform + pos: -13.5,1.5 + parent: 2 + - uid: 9571 + components: + - type: Transform + pos: 40.5,-25.5 + parent: 2 + - uid: 9597 + components: + - type: Transform + pos: 80.5,-47.5 + parent: 2 + - uid: 9600 + components: + - type: Transform + pos: -36.5,-39.5 + parent: 2 + - uid: 9613 + components: + - type: Transform + pos: 44.5,13.5 + parent: 2 + - uid: 9617 + components: + - type: Transform + pos: -54.5,-49.5 + parent: 2 + - uid: 9656 + components: + - type: Transform + pos: -13.5,-73.5 + parent: 2 + - uid: 9661 + components: + - type: Transform + pos: -33.5,21.5 + parent: 2 + - uid: 9668 + components: + - type: Transform + pos: -33.5,-9.5 + parent: 2 + - uid: 9677 + components: + - type: Transform + pos: -64.5,-6.5 + parent: 2 + - uid: 9678 + components: + - type: Transform + pos: 18.5,18.5 + parent: 2 + - uid: 9691 + components: + - type: Transform + pos: -42.5,-6.5 + parent: 2 + - uid: 9701 + components: + - type: Transform + pos: -28.5,27.5 + parent: 2 + - uid: 9708 + components: + - type: Transform + pos: -56.5,-20.5 + parent: 2 + - uid: 9715 + components: + - type: Transform + pos: -58.5,-7.5 + parent: 2 + - uid: 9718 + components: + - type: Transform + pos: -31.5,11.5 + parent: 2 + - uid: 9799 + components: + - type: Transform + pos: 14.5,14.5 + parent: 2 + - uid: 9852 + components: + - type: Transform + pos: -14.5,-21.5 + parent: 2 + - uid: 9858 + components: + - type: Transform + pos: 1.5,-38.5 + parent: 2 + - uid: 9859 + components: + - type: Transform + pos: -30.5,-6.5 + parent: 2 + - uid: 9862 + components: + - type: Transform + pos: -24.5,-13.5 + parent: 2 + - uid: 9894 + components: + - type: Transform + pos: 39.5,-47.5 + parent: 2 + - uid: 9896 + components: + - type: Transform + pos: -67.5,-13.5 + parent: 2 + - uid: 9897 + components: + - type: Transform + pos: 9.5,27.5 + parent: 2 + - uid: 9898 + components: + - type: Transform + pos: -64.5,-60.5 + parent: 2 + - uid: 9899 + components: + - type: Transform + pos: -20.5,-45.5 + parent: 2 + - uid: 9922 + components: + - type: Transform + pos: 5.5,-87.5 + parent: 2 + - uid: 9933 + components: + - type: Transform + pos: -51.5,-45.5 + parent: 2 + - uid: 9938 + components: + - type: Transform + pos: -69.5,-15.5 + parent: 2 + - uid: 9944 + components: + - type: Transform + pos: 24.5,-23.5 + parent: 2 + - uid: 9971 + components: + - type: Transform + pos: -4.5,-69.5 + parent: 2 + - uid: 9992 + components: + - type: Transform + pos: -56.5,-13.5 + parent: 2 + - uid: 9996 + components: + - type: Transform + pos: -3.5,-75.5 + parent: 2 + - uid: 9997 + components: + - type: Transform + pos: 60.5,-51.5 + parent: 2 + - uid: 10002 + components: + - type: Transform + pos: 14.5,-65.5 + parent: 2 + - uid: 10011 + components: + - type: Transform + pos: -18.5,10.5 + parent: 2 + - uid: 10017 + components: + - type: Transform + pos: 66.5,-44.5 + parent: 2 + - uid: 10023 + components: + - type: Transform + pos: -31.5,-57.5 + parent: 2 + - uid: 10053 + components: + - type: Transform + pos: 80.5,-43.5 + parent: 2 + - uid: 10055 + components: + - type: Transform + pos: 6.5,-21.5 + parent: 2 + - uid: 10061 + components: + - type: Transform + pos: -28.5,-17.5 + parent: 2 + - uid: 10065 + components: + - type: Transform + pos: -37.5,-6.5 + parent: 2 + - uid: 10096 + components: + - type: Transform + pos: 14.5,-16.5 + parent: 2 + - uid: 10121 + components: + - type: Transform + pos: 0.5,27.5 + parent: 2 + - uid: 10133 + components: + - type: Transform + pos: -41.5,0.5 + parent: 2 + - uid: 10173 + components: + - type: Transform + pos: 53.5,-32.5 + parent: 2 + - uid: 10175 + components: + - type: Transform + pos: 51.5,-72.5 + parent: 2 + - uid: 10188 + components: + - type: Transform + pos: -13.5,-75.5 + parent: 2 + - uid: 10193 + components: + - type: Transform + pos: 36.5,-51.5 + parent: 2 + - uid: 10218 + components: + - type: Transform + pos: 29.5,26.5 + parent: 2 + - uid: 10228 + components: + - type: Transform + pos: -58.5,-50.5 + parent: 2 + - uid: 10230 + components: + - type: Transform + pos: 23.5,-29.5 + parent: 2 + - uid: 10241 + components: + - type: Transform + pos: -40.5,-18.5 + parent: 2 + - uid: 10252 + components: + - type: Transform + pos: 86.5,-28.5 + parent: 2 + - uid: 10263 + components: + - type: Transform + pos: 90.5,-12.5 + parent: 2 + - uid: 10389 + components: + - type: Transform + pos: -35.5,-78.5 + parent: 2 + - uid: 10409 + components: + - type: Transform + pos: -18.5,-5.5 + parent: 2 + - uid: 10410 + components: + - type: Transform + pos: -31.5,-16.5 + parent: 2 + - uid: 10412 + components: + - type: Transform + pos: 28.5,-6.5 + parent: 2 + - uid: 10417 + components: + - type: Transform + pos: -1.5,-29.5 + parent: 2 + - uid: 10420 + components: + - type: Transform + pos: -58.5,-15.5 + parent: 2 + - uid: 10422 + components: + - type: Transform + pos: 18.5,-23.5 + parent: 2 + - uid: 10425 + components: + - type: Transform + pos: 42.5,-63.5 + parent: 2 + - uid: 10429 + components: + - type: Transform + pos: -19.5,6.5 + parent: 2 + - uid: 10430 + components: + - type: Transform + pos: 13.5,-65.5 + parent: 2 + - uid: 10432 + components: + - type: Transform + pos: -35.5,7.5 + parent: 2 + - uid: 10483 + components: + - type: Transform + pos: 49.5,-7.5 + parent: 2 + - uid: 10494 + components: + - type: Transform + pos: -27.5,-59.5 + parent: 2 + - uid: 10498 + components: + - type: Transform + pos: 17.5,-25.5 + parent: 2 + - uid: 10531 + components: + - type: Transform + pos: 22.5,-29.5 + parent: 2 + - uid: 10535 + components: + - type: Transform + pos: -27.5,21.5 + parent: 2 + - uid: 10536 + components: + - type: Transform + pos: -26.5,37.5 + parent: 2 + - uid: 10541 + components: + - type: Transform + pos: 25.5,-34.5 + parent: 2 + - uid: 10550 + components: + - type: Transform + pos: 16.5,-83.5 + parent: 2 + - uid: 10552 + components: + - type: Transform + pos: -68.5,-6.5 + parent: 2 + - uid: 10557 + components: + - type: Transform + pos: -32.5,-38.5 + parent: 2 + - uid: 10571 + components: + - type: Transform + pos: 38.5,-67.5 + parent: 2 + - uid: 10610 + components: + - type: Transform + pos: -25.5,-17.5 + parent: 2 + - uid: 10627 + components: + - type: Transform + pos: 42.5,18.5 + parent: 2 + - uid: 10628 + components: + - type: Transform + pos: -19.5,11.5 + parent: 2 + - uid: 10629 + components: + - type: Transform + pos: 50.5,-63.5 + parent: 2 + - uid: 10630 + components: + - type: Transform + pos: 28.5,-9.5 + parent: 2 + - uid: 10679 + components: + - type: Transform + pos: -37.5,-58.5 + parent: 2 + - uid: 10691 + components: + - type: Transform + pos: 39.5,-16.5 + parent: 2 + - uid: 10693 + components: + - type: Transform + pos: 42.5,-1.5 + parent: 2 + - uid: 10694 + components: + - type: Transform + pos: -31.5,-58.5 + parent: 2 + - uid: 10695 + components: + - type: Transform + pos: 48.5,-64.5 + parent: 2 + - uid: 10700 + components: + - type: Transform + pos: 40.5,-62.5 + parent: 2 + - uid: 10704 + components: + - type: Transform + pos: -5.5,-61.5 + parent: 2 + - uid: 10705 + components: + - type: Transform + pos: -52.5,-61.5 + parent: 2 + - uid: 10706 + components: + - type: Transform + pos: -30.5,-65.5 + parent: 2 + - uid: 10708 + components: + - type: Transform + pos: 43.5,-75.5 + parent: 2 + - uid: 10709 + components: + - type: Transform + pos: 49.5,-90.5 + parent: 2 + - uid: 10711 + components: + - type: Transform + pos: -27.5,-49.5 + parent: 2 + - uid: 10715 + components: + - type: Transform + pos: -9.5,-79.5 + parent: 2 + - uid: 10748 + components: + - type: Transform + pos: -1.5,-30.5 + parent: 2 + - uid: 10766 + components: + - type: Transform + pos: -13.5,-5.5 + parent: 2 + - uid: 10767 + components: + - type: Transform + pos: 38.5,-62.5 + parent: 2 + - uid: 10777 + components: + - type: Transform + pos: -0.5,-37.5 + parent: 2 + - uid: 10780 + components: + - type: Transform + pos: -0.5,9.5 + parent: 2 + - uid: 10788 + components: + - type: Transform + pos: 20.5,11.5 + parent: 2 + - uid: 10789 + components: + - type: Transform + pos: 19.5,23.5 + parent: 2 + - uid: 10808 + components: + - type: Transform + pos: -35.5,-1.5 + parent: 2 + - uid: 10820 + components: + - type: Transform + pos: -43.5,-42.5 + parent: 2 + - uid: 10822 + components: + - type: Transform + pos: -49.5,-35.5 + parent: 2 + - uid: 10826 + components: + - type: Transform + pos: 33.5,-47.5 + parent: 2 + - uid: 10830 + components: + - type: Transform + pos: -3.5,-26.5 + parent: 2 + - uid: 10843 + components: + - type: Transform + pos: -12.5,25.5 + parent: 2 + - uid: 10850 + components: + - type: Transform + pos: 56.5,-48.5 + parent: 2 + - uid: 10857 + components: + - type: Transform + pos: -34.5,-0.5 + parent: 2 + - uid: 10858 + components: + - type: Transform + pos: 43.5,4.5 + parent: 2 + - uid: 10865 + components: + - type: Transform + pos: -65.5,-15.5 + parent: 2 + - uid: 10866 + components: + - type: Transform + pos: -19.5,13.5 + parent: 2 + - uid: 10877 + components: + - type: Transform + pos: -71.5,-11.5 + parent: 2 + - uid: 10879 + components: + - type: Transform + pos: 60.5,-47.5 + parent: 2 + - uid: 10880 + components: + - type: Transform + pos: 36.5,-28.5 + parent: 2 + - uid: 10881 + components: + - type: Transform + pos: -31.5,-14.5 + parent: 2 + - uid: 10885 + components: + - type: Transform + pos: 63.5,-83.5 + parent: 2 + - uid: 10893 + components: + - type: Transform + pos: 43.5,-69.5 + parent: 2 + - uid: 10896 + components: + - type: Transform + pos: -39.5,-16.5 + parent: 2 + - uid: 10914 + components: + - type: Transform + pos: 45.5,15.5 + parent: 2 + - uid: 10925 + components: + - type: Transform + pos: 21.5,13.5 + parent: 2 + - uid: 10968 + components: + - type: Transform + pos: 4.5,-86.5 + parent: 2 + - uid: 10971 + components: + - type: Transform + pos: -8.5,5.5 + parent: 2 + - uid: 10978 + components: + - type: Transform + pos: -27.5,-56.5 + parent: 2 + - uid: 10999 + components: + - type: Transform + pos: -65.5,-7.5 + parent: 2 + - uid: 11017 + components: + - type: Transform + pos: 15.5,30.5 + parent: 2 + - uid: 11018 + components: + - type: Transform + pos: -59.5,-15.5 + parent: 2 + - uid: 11021 + components: + - type: Transform + pos: 51.5,8.5 + parent: 2 + - uid: 11022 + components: + - type: Transform + pos: -62.5,-39.5 + parent: 2 + - uid: 11023 + components: + - type: Transform + pos: 43.5,22.5 + parent: 2 + - uid: 11033 + components: + - type: Transform + pos: 18.5,25.5 + parent: 2 + - uid: 11038 + components: + - type: Transform + pos: -13.5,-69.5 + parent: 2 + - uid: 11039 + components: + - type: Transform + pos: 53.5,-47.5 + parent: 2 + - uid: 11040 + components: + - type: Transform + pos: 22.5,-5.5 + parent: 2 + - uid: 11042 + components: + - type: Transform + pos: 7.5,-20.5 + parent: 2 + - uid: 11047 + components: + - type: Transform + pos: -20.5,25.5 + parent: 2 + - uid: 11059 + components: + - type: Transform + pos: -37.5,-59.5 + parent: 2 + - uid: 11074 + components: + - type: Transform + pos: -61.5,-35.5 + parent: 2 + - uid: 11076 + components: + - type: Transform + pos: -10.5,-66.5 + parent: 2 + - uid: 11078 + components: + - type: Transform + pos: 65.5,-37.5 + parent: 2 + - uid: 11080 + components: + - type: Transform + pos: -30.5,12.5 + parent: 2 + - uid: 11082 + components: + - type: Transform + pos: -28.5,-16.5 + parent: 2 + - uid: 11106 + components: + - type: Transform + pos: -1.5,-24.5 + parent: 2 + - uid: 11109 + components: + - type: Transform + pos: 23.5,-60.5 + parent: 2 + - uid: 11122 + components: + - type: Transform + pos: -28.5,28.5 + parent: 2 + - uid: 11165 + components: + - type: Transform + pos: 31.5,-23.5 + parent: 2 + - uid: 11187 + components: + - type: Transform + pos: 44.5,-43.5 + parent: 2 + - uid: 11198 + components: + - type: Transform + pos: 43.5,-17.5 + parent: 2 + - uid: 11199 + components: + - type: Transform + pos: 47.5,-70.5 + parent: 2 + - uid: 11202 + components: + - type: Transform + pos: 53.5,-14.5 + parent: 2 + - uid: 11209 + components: + - type: Transform + pos: 61.5,-70.5 + parent: 2 + - uid: 11239 + components: + - type: Transform + pos: 44.5,0.5 + parent: 2 + - uid: 11241 + components: + - type: Transform + pos: 81.5,-47.5 + parent: 2 + - uid: 11252 + components: + - type: Transform + pos: -23.5,-57.5 + parent: 2 + - uid: 11253 + components: + - type: Transform + pos: 40.5,-26.5 + parent: 2 + - uid: 11261 + components: + - type: Transform + pos: -18.5,28.5 + parent: 2 + - uid: 11266 + components: + - type: Transform + pos: 20.5,16.5 + parent: 2 + - uid: 11271 + components: + - type: Transform + pos: -58.5,-9.5 + parent: 2 + - uid: 11286 + components: + - type: Transform + pos: 44.5,-49.5 + parent: 2 + - uid: 11287 + components: + - type: Transform + pos: 13.5,9.5 + parent: 2 + - uid: 11291 + components: + - type: Transform + pos: -31.5,1.5 + parent: 2 + - uid: 11292 + components: + - type: Transform + pos: -25.5,-37.5 + parent: 2 + - uid: 11297 + components: + - type: Transform + pos: -36.5,-74.5 + parent: 2 + - uid: 11310 + components: + - type: Transform + pos: -23.5,-14.5 + parent: 2 + - uid: 11332 + components: + - type: Transform + pos: 97.5,-25.5 + parent: 2 + - uid: 11347 + components: + - type: Transform + pos: 18.5,11.5 + parent: 2 + - uid: 11368 + components: + - type: Transform + pos: -23.5,6.5 + parent: 2 + - uid: 11389 + components: + - type: Transform + pos: 16.5,-60.5 + parent: 2 + - uid: 11396 + components: + - type: Transform + pos: -46.5,-40.5 + parent: 2 + - uid: 11399 + components: + - type: Transform + pos: 4.5,27.5 + parent: 2 + - uid: 11402 + components: + - type: Transform + pos: -20.5,-57.5 + parent: 2 + - uid: 11439 + components: + - type: Transform + pos: 48.5,1.5 + parent: 2 + - uid: 11455 + components: + - type: Transform + pos: -28.5,-51.5 + parent: 2 + - uid: 11498 + components: + - type: Transform + pos: -10.5,-25.5 + parent: 2 + - uid: 11503 + components: + - type: Transform + pos: 2.5,-85.5 + parent: 2 + - uid: 11523 + components: + - type: Transform + pos: 8.5,-61.5 + parent: 2 + - uid: 11553 + components: + - type: Transform + pos: -21.5,1.5 + parent: 2 + - uid: 11554 + components: + - type: Transform + pos: 13.5,-6.5 + parent: 2 + - uid: 11572 + components: + - type: Transform + pos: -46.5,-19.5 + parent: 2 + - uid: 11575 + components: + - type: Transform + pos: 48.5,-3.5 + parent: 2 + - uid: 11577 + components: + - type: Transform + pos: -71.5,-12.5 + parent: 2 + - uid: 11594 + components: + - type: Transform + pos: 37.5,-63.5 + parent: 2 + - uid: 11595 + components: + - type: Transform + pos: -47.5,-58.5 + parent: 2 + - uid: 11609 + components: + - type: Transform + pos: 56.5,-61.5 + parent: 2 + - uid: 11620 + components: + - type: Transform + pos: 62.5,-55.5 + parent: 2 + - uid: 11625 + components: + - type: Transform + pos: -37.5,6.5 + parent: 2 + - uid: 11629 + components: + - type: Transform + pos: -20.5,9.5 + parent: 2 + - uid: 11634 + components: + - type: Transform + pos: -19.5,12.5 + parent: 2 + - uid: 11636 + components: + - type: Transform + pos: -14.5,-10.5 + parent: 2 + - uid: 11637 + components: + - type: Transform + pos: 11.5,-87.5 + parent: 2 + - uid: 11655 + components: + - type: Transform + pos: 40.5,-30.5 + parent: 2 + - uid: 11656 + components: + - type: Transform + pos: 11.5,-13.5 + parent: 2 + - uid: 11674 + components: + - type: Transform + pos: -68.5,-17.5 + parent: 2 + - uid: 11766 + components: + - type: Transform + pos: 18.5,-27.5 + parent: 2 + - uid: 11787 + components: + - type: Transform + pos: 44.5,4.5 + parent: 2 + - uid: 11795 + components: + - type: Transform + pos: 37.5,-78.5 + parent: 2 + - uid: 11803 + components: + - type: Transform + pos: -46.5,-41.5 + parent: 2 + - uid: 11805 + components: + - type: Transform + pos: 97.5,-33.5 + parent: 2 + - uid: 11824 + components: + - type: Transform + pos: 5.5,7.5 + parent: 2 + - uid: 11825 + components: + - type: Transform + pos: -49.5,-39.5 + parent: 2 + - uid: 11841 + components: + - type: Transform + pos: 80.5,-16.5 + parent: 2 + - uid: 11842 + components: + - type: Transform + pos: -38.5,-13.5 + parent: 2 + - uid: 11844 + components: + - type: Transform + pos: 13.5,4.5 + parent: 2 + - uid: 11848 + components: + - type: Transform + pos: -64.5,-14.5 + parent: 2 + - uid: 11859 + components: + - type: Transform + pos: 18.5,-19.5 + parent: 2 + - uid: 11875 + components: + - type: Transform + pos: 83.5,-12.5 + parent: 2 + - uid: 11879 + components: + - type: Transform + pos: -64.5,-17.5 + parent: 2 + - uid: 11880 + components: + - type: Transform + pos: -49.5,-10.5 + parent: 2 + - uid: 11881 + components: + - type: Transform + pos: 5.5,5.5 + parent: 2 + - uid: 11882 + components: + - type: Transform + pos: -6.5,9.5 + parent: 2 + - uid: 11883 + components: + - type: Transform + pos: 22.5,-28.5 + parent: 2 + - uid: 11884 + components: + - type: Transform + pos: -19.5,-9.5 + parent: 2 + - uid: 11886 + components: + - type: Transform + pos: -10.5,-47.5 + parent: 2 + - uid: 11887 + components: + - type: Transform + pos: -50.5,-14.5 + parent: 2 + - uid: 11890 + components: + - type: Transform + pos: -35.5,14.5 + parent: 2 + - uid: 11892 + components: + - type: Transform + pos: 44.5,22.5 + parent: 2 + - uid: 11894 + components: + - type: Transform + pos: -9.5,-76.5 + parent: 2 + - uid: 11903 + components: + - type: Transform + pos: -30.5,-33.5 + parent: 2 + - uid: 11905 + components: + - type: Transform + pos: -54.5,-60.5 + parent: 2 + - uid: 11927 + components: + - type: Transform + pos: 4.5,-13.5 + parent: 2 + - uid: 11931 + components: + - type: Transform + pos: 3.5,-54.5 + parent: 2 + - uid: 11932 + components: + - type: Transform + pos: -59.5,-11.5 + parent: 2 + - uid: 11936 + components: + - type: Transform + pos: -64.5,-59.5 + parent: 2 + - uid: 11938 + components: + - type: Transform + pos: -13.5,2.5 + parent: 2 + - uid: 11939 + components: + - type: Transform + pos: 64.5,-67.5 + parent: 2 + - uid: 11965 + components: + - type: Transform + pos: -17.5,8.5 + parent: 2 + - uid: 11966 + components: + - type: Transform + pos: 26.5,20.5 + parent: 2 + - uid: 11985 + components: + - type: Transform + pos: 41.5,22.5 + parent: 2 + - uid: 11987 + components: + - type: Transform + pos: -54.5,-56.5 + parent: 2 + - uid: 11991 + components: + - type: Transform + pos: 14.5,4.5 + parent: 2 + - uid: 11997 + components: + - type: Transform + pos: 12.5,-7.5 + parent: 2 + - uid: 12004 + components: + - type: Transform + pos: -43.5,-6.5 + parent: 2 + - uid: 12005 + components: + - type: Transform + pos: 28.5,30.5 + parent: 2 + - uid: 12026 + components: + - type: Transform + pos: 77.5,-73.5 + parent: 2 + - uid: 12029 + components: + - type: Transform + pos: -37.5,-31.5 + parent: 2 + - uid: 12032 + components: + - type: Transform + pos: 53.5,-58.5 + parent: 2 + - uid: 12040 + components: + - type: Transform + pos: -3.5,-87.5 + parent: 2 + - uid: 12049 + components: + - type: Transform + pos: -26.5,24.5 + parent: 2 + - uid: 12063 + components: + - type: Transform + pos: 73.5,-72.5 + parent: 2 + - uid: 12074 + components: + - type: Transform + pos: 27.5,19.5 + parent: 2 + - uid: 12075 + components: + - type: Transform + pos: 24.5,18.5 + parent: 2 + - uid: 12116 + components: + - type: Transform + pos: 83.5,-13.5 + parent: 2 + - uid: 12118 + components: + - type: Transform + pos: -14.5,-9.5 + parent: 2 + - uid: 12127 + components: + - type: Transform + pos: 32.5,-67.5 + parent: 2 + - uid: 20321 + components: + - type: Transform + pos: 56.5,-50.5 + parent: 2 + - uid: 23647 + components: + - type: Transform + pos: 57.5,-19.5 + parent: 2 + - uid: 23648 + components: + - type: Transform + pos: 42.5,-47.5 + parent: 2 + - uid: 23649 + components: + - type: Transform + pos: 52.5,-62.5 + parent: 2 + - uid: 23650 + components: + - type: Transform + pos: 30.5,-60.5 + parent: 2 + - uid: 23651 + components: + - type: Transform + pos: -37.5,19.5 + parent: 2 + - uid: 23652 + components: + - type: Transform + pos: -11.5,-45.5 + parent: 2 + - uid: 23653 + components: + - type: Transform + pos: -58.5,-10.5 + parent: 2 + - uid: 23654 + components: + - type: Transform + pos: 7.5,13.5 + parent: 2 + - uid: 23655 + components: + - type: Transform + pos: 42.5,-64.5 + parent: 2 + - uid: 23656 + components: + - type: Transform + pos: -17.5,1.5 + parent: 2 + - uid: 23657 + components: + - type: Transform + pos: -69.5,-8.5 + parent: 2 + - uid: 23658 + components: + - type: Transform + pos: -9.5,-57.5 + parent: 2 + - uid: 23659 + components: + - type: Transform + pos: -40.5,6.5 + parent: 2 + - uid: 23660 + components: + - type: Transform + pos: 60.5,-50.5 + parent: 2 + - uid: 23661 + components: + - type: Transform + pos: -42.5,4.5 + parent: 2 + - uid: 23662 + components: + - type: Transform + pos: 9.5,-13.5 + parent: 2 + - uid: 23663 + components: + - type: Transform + pos: 75.5,-75.5 + parent: 2 + - uid: 23664 + components: + - type: Transform + pos: -50.5,-35.5 + parent: 2 - proto: WallSolid entities: - - uid: 11 - components: - - type: Transform - pos: -23.5,-6.5 - parent: 2 - - uid: 39 - components: - - type: Transform - pos: -11.5,-5.5 - parent: 2 - uid: 86 components: - type: Transform pos: -15.5,21.5 parent: 2 - - uid: 116 - components: - - type: Transform - pos: 19.5,-12.5 - parent: 2 - - uid: 120 - components: - - type: Transform - pos: -22.5,-6.5 - parent: 2 - - uid: 130 - components: - - type: Transform - pos: -41.5,-22.5 - parent: 2 - uid: 152 components: - type: Transform @@ -146419,11 +147444,6 @@ entities: - type: Transform pos: 21.5,-34.5 parent: 2 - - uid: 231 - components: - - type: Transform - pos: 47.5,-50.5 - parent: 2 - uid: 257 components: - type: Transform @@ -146449,6 +147469,11 @@ entities: - type: Transform pos: 0.5,-43.5 parent: 2 + - uid: 337 + components: + - type: Transform + pos: -24.5,19.5 + parent: 2 - uid: 350 components: - type: Transform @@ -146464,11 +147489,6 @@ entities: - type: Transform pos: -23.5,12.5 parent: 2 - - uid: 482 - components: - - type: Transform - pos: 22.5,-1.5 - parent: 2 - uid: 542 components: - type: Transform @@ -146519,11 +147539,6 @@ entities: - type: Transform pos: -17.5,21.5 parent: 2 - - uid: 762 - components: - - type: Transform - pos: 12.5,-34.5 - parent: 2 - uid: 766 components: - type: Transform @@ -146539,55 +147554,95 @@ entities: - type: Transform pos: -13.5,-25.5 parent: 2 - - uid: 885 - components: - - type: Transform - pos: -29.5,-6.5 - parent: 2 - uid: 928 components: - type: Transform pos: -9.5,21.5 parent: 2 - - uid: 935 - components: - - type: Transform - pos: 30.5,23.5 - parent: 2 - - uid: 957 - components: - - type: Transform - pos: -12.5,20.5 - parent: 2 - - uid: 978 - components: - - type: Transform - pos: 10.5,22.5 - parent: 2 - uid: 996 components: - type: Transform pos: 35.5,14.5 parent: 2 + - uid: 1025 + components: + - type: Transform + pos: 34.5,0.5 + parent: 2 + - uid: 1042 + components: + - type: Transform + pos: 44.5,-59.5 + parent: 2 + - uid: 1070 + components: + - type: Transform + pos: 75.5,-40.5 + parent: 2 + - uid: 1079 + components: + - type: Transform + pos: 73.5,-73.5 + parent: 2 + - uid: 1103 + components: + - type: Transform + pos: 71.5,-59.5 + parent: 2 + - uid: 1110 + components: + - type: Transform + pos: -39.5,-25.5 + parent: 2 + - uid: 1112 + components: + - type: Transform + pos: 41.5,-52.5 + parent: 2 + - uid: 1118 + components: + - type: Transform + pos: 90.5,-25.5 + parent: 2 + - uid: 1123 + components: + - type: Transform + pos: -1.5,-16.5 + parent: 2 - uid: 1129 components: - type: Transform pos: 33.5,-17.5 parent: 2 + - uid: 1150 + components: + - type: Transform + pos: 17.5,4.5 + parent: 2 - uid: 1155 components: - type: Transform - pos: 13.5,18.5 + pos: -17.5,-31.5 + parent: 2 + - uid: 1158 + components: + - type: Transform + pos: -10.5,-16.5 + parent: 2 + - uid: 1168 + components: + - type: Transform + pos: 85.5,-20.5 parent: 2 - uid: 1302 components: - type: Transform pos: 30.5,19.5 parent: 2 - - uid: 1392 + - uid: 1376 components: - type: Transform - pos: -16.5,18.5 + pos: 70.5,-67.5 parent: 2 - uid: 1393 components: @@ -146604,10 +147659,25 @@ entities: - type: Transform pos: -6.5,-12.5 parent: 2 + - uid: 1439 + components: + - type: Transform + pos: -31.5,-23.5 + parent: 2 + - uid: 1451 + components: + - type: Transform + pos: 21.5,-45.5 + parent: 2 - uid: 1481 components: - type: Transform - pos: -10.5,-0.5 + pos: -6.5,-45.5 + parent: 2 + - uid: 1506 + components: + - type: Transform + pos: -15.5,-26.5 parent: 2 - uid: 1574 components: @@ -146634,11 +147704,6 @@ entities: - type: Transform pos: 49.5,-43.5 parent: 2 - - uid: 1668 - components: - - type: Transform - pos: 34.5,-1.5 - parent: 2 - uid: 1675 components: - type: Transform @@ -146649,15 +147714,15 @@ entities: - type: Transform pos: -42.5,-53.5 parent: 2 - - uid: 1680 + - uid: 1683 components: - type: Transform - pos: 23.5,-39.5 + pos: -25.5,21.5 parent: 2 - uid: 1711 components: - type: Transform - pos: 24.5,9.5 + pos: 34.5,-6.5 parent: 2 - uid: 1714 components: @@ -146669,46 +147734,36 @@ entities: - type: Transform pos: -21.5,-28.5 parent: 2 - - uid: 1783 - components: - - type: Transform - pos: 30.5,16.5 - parent: 2 - uid: 1812 components: - type: Transform pos: -25.5,-44.5 parent: 2 - - uid: 1823 - components: - - type: Transform - pos: -50.5,-50.5 - parent: 2 - uid: 1869 components: - type: Transform pos: 43.5,-5.5 parent: 2 + - uid: 1882 + components: + - type: Transform + pos: 27.5,-40.5 + parent: 2 - uid: 1893 components: - type: Transform pos: 3.5,-15.5 parent: 2 - - uid: 1901 - components: - - type: Transform - pos: -13.5,-9.5 - parent: 2 - - uid: 1923 - components: - - type: Transform - pos: -10.5,-5.5 - parent: 2 - uid: 2063 components: - type: Transform pos: 15.5,-4.5 parent: 2 + - uid: 2068 + components: + - type: Transform + pos: -41.5,-25.5 + parent: 2 - uid: 2072 components: - type: Transform @@ -146729,11 +147784,6 @@ entities: - type: Transform pos: 36.5,-33.5 parent: 2 - - uid: 2096 - components: - - type: Transform - pos: 47.5,-31.5 - parent: 2 - uid: 2143 components: - type: Transform @@ -146744,15 +147794,20 @@ entities: - type: Transform pos: 23.5,-0.5 parent: 2 + - uid: 2213 + components: + - type: Transform + pos: 46.5,-9.5 + parent: 2 - uid: 2216 components: - type: Transform - pos: -6.5,-16.5 + pos: 38.5,4.5 parent: 2 - - uid: 2234 + - uid: 2277 components: - type: Transform - pos: -5.5,-16.5 + pos: -36.5,-34.5 parent: 2 - uid: 2284 components: @@ -146769,15 +147824,10 @@ entities: - type: Transform pos: -10.5,-29.5 parent: 2 - - uid: 2317 + - uid: 2343 components: - type: Transform - pos: 49.5,-35.5 - parent: 2 - - uid: 2325 - components: - - type: Transform - pos: -14.5,21.5 + pos: 38.5,16.5 parent: 2 - uid: 2344 components: @@ -146797,7 +147847,12 @@ entities: - uid: 2350 components: - type: Transform - pos: 44.5,-34.5 + pos: 24.5,-1.5 + parent: 2 + - uid: 2413 + components: + - type: Transform + pos: 40.5,-0.5 parent: 2 - uid: 2414 components: @@ -146809,10 +147864,10 @@ entities: - type: Transform pos: 40.5,-5.5 parent: 2 - - uid: 2488 + - uid: 2454 components: - type: Transform - pos: -13.5,-29.5 + pos: 46.5,-26.5 parent: 2 - uid: 2606 components: @@ -146849,11 +147904,21 @@ entities: - type: Transform pos: -21.5,-50.5 parent: 2 + - uid: 2745 + components: + - type: Transform + pos: 48.5,-10.5 + parent: 2 - uid: 2750 components: - type: Transform pos: -6.5,-17.5 parent: 2 + - uid: 2847 + components: + - type: Transform + pos: -6.5,-19.5 + parent: 2 - uid: 2856 components: - type: Transform @@ -146864,21 +147929,21 @@ entities: - type: Transform pos: -13.5,-16.5 parent: 2 - - uid: 2906 + - uid: 2912 components: - type: Transform - pos: -11.5,-16.5 - parent: 2 - - uid: 2930 - components: - - type: Transform - pos: -10.5,-14.5 + pos: -19.5,21.5 parent: 2 - uid: 2938 components: - type: Transform pos: -12.5,-16.5 parent: 2 + - uid: 2943 + components: + - type: Transform + pos: 13.5,-46.5 + parent: 2 - uid: 2983 components: - type: Transform @@ -146894,6 +147959,11 @@ entities: - type: Transform pos: 30.5,-46.5 parent: 2 + - uid: 3072 + components: + - type: Transform + pos: 20.5,-5.5 + parent: 2 - uid: 3076 components: - type: Transform @@ -146902,7 +147972,7 @@ entities: - uid: 3079 components: - type: Transform - pos: 71.5,-67.5 + pos: 23.5,-43.5 parent: 2 - uid: 3081 components: @@ -146914,10 +147984,25 @@ entities: - type: Transform pos: 23.5,-57.5 parent: 2 - - uid: 3089 + - uid: 3101 components: - type: Transform - pos: -18.5,-49.5 + pos: 23.5,-42.5 + parent: 2 + - uid: 3126 + components: + - type: Transform + pos: -16.5,-29.5 + parent: 2 + - uid: 3127 + components: + - type: Transform + pos: 33.5,-18.5 + parent: 2 + - uid: 3137 + components: + - type: Transform + pos: 89.5,-28.5 parent: 2 - uid: 3160 components: @@ -146929,41 +148014,61 @@ entities: - type: Transform pos: 61.5,-74.5 parent: 2 - - uid: 3177 - components: - - type: Transform - pos: -10.5,-33.5 - parent: 2 - uid: 3207 components: - type: Transform - pos: 2.5,-31.5 + pos: -19.5,-26.5 + parent: 2 + - uid: 3209 + components: + - type: Transform + pos: 39.5,4.5 + parent: 2 + - uid: 3215 + components: + - type: Transform + pos: 12.5,-61.5 + parent: 2 + - uid: 3218 + components: + - type: Transform + pos: -13.5,-28.5 parent: 2 - uid: 3220 components: - type: Transform pos: 2.5,-28.5 parent: 2 + - uid: 3231 + components: + - type: Transform + pos: 63.5,-74.5 + parent: 2 - uid: 3247 components: - type: Transform - pos: -5.5,-35.5 + pos: -0.5,-46.5 + parent: 2 + - uid: 3261 + components: + - type: Transform + pos: 44.5,-32.5 parent: 2 - uid: 3265 components: - type: Transform pos: -12.5,-33.5 parent: 2 + - uid: 3270 + components: + - type: Transform + pos: 17.5,-58.5 + parent: 2 - uid: 3271 components: - type: Transform pos: -9.5,-35.5 parent: 2 - - uid: 3282 - components: - - type: Transform - pos: -15.5,-28.5 - parent: 2 - uid: 3283 components: - type: Transform @@ -146974,26 +148079,11 @@ entities: - type: Transform pos: -16.5,-28.5 parent: 2 - - uid: 3298 - components: - - type: Transform - pos: -12.5,-29.5 - parent: 2 - - uid: 3299 - components: - - type: Transform - pos: -16.5,-31.5 - parent: 2 - uid: 3302 components: - type: Transform pos: 49.5,-27.5 parent: 2 - - uid: 3304 - components: - - type: Transform - pos: -20.5,-28.5 - parent: 2 - uid: 3305 components: - type: Transform @@ -147014,10 +148104,10 @@ entities: - type: Transform pos: -12.5,-34.5 parent: 2 - - uid: 3314 + - uid: 3318 components: - type: Transform - pos: 12.5,-37.5 + pos: 20.5,-45.5 parent: 2 - uid: 3324 components: @@ -147039,26 +148129,26 @@ entities: - type: Transform pos: -15.5,-21.5 parent: 2 - - uid: 3353 - components: - - type: Transform - pos: -20.5,-21.5 - parent: 2 - uid: 3355 components: - type: Transform pos: 22.5,-17.5 parent: 2 + - uid: 3379 + components: + - type: Transform + pos: 15.5,-3.5 + parent: 2 + - uid: 3401 + components: + - type: Transform + pos: 54.5,-55.5 + parent: 2 - uid: 3404 components: - type: Transform pos: 14.5,-7.5 parent: 2 - - uid: 3409 - components: - - type: Transform - pos: -21.5,-30.5 - parent: 2 - uid: 3410 components: - type: Transform @@ -147072,18 +148162,18 @@ entities: - uid: 3419 components: - type: Transform - pos: -14.5,-39.5 + pos: 14.5,-9.5 + parent: 2 + - uid: 3429 + components: + - type: Transform + pos: -17.5,-26.5 parent: 2 - uid: 3442 components: - type: Transform pos: -13.5,-39.5 parent: 2 - - uid: 3444 - components: - - type: Transform - pos: -13.5,-37.5 - parent: 2 - uid: 3448 components: - type: Transform @@ -147094,10 +148184,15 @@ entities: - type: Transform pos: 5.5,-37.5 parent: 2 + - uid: 3462 + components: + - type: Transform + pos: 69.5,-81.5 + parent: 2 - uid: 3469 components: - type: Transform - pos: -0.5,-41.5 + pos: 2.5,-41.5 parent: 2 - uid: 3478 components: @@ -147129,11 +148224,6 @@ entities: - type: Transform pos: 6.5,-26.5 parent: 2 - - uid: 3504 - components: - - type: Transform - pos: 5.5,-26.5 - parent: 2 - uid: 3509 components: - type: Transform @@ -147149,20 +148239,10 @@ entities: - type: Transform pos: -1.5,-42.5 parent: 2 - - uid: 3663 + - uid: 3579 components: - type: Transform - pos: -11.5,-25.5 - parent: 2 - - uid: 3666 - components: - - type: Transform - pos: 6.5,-37.5 - parent: 2 - - uid: 3716 - components: - - type: Transform - pos: 19.5,-38.5 + pos: -14.5,-28.5 parent: 2 - uid: 3734 components: @@ -147189,10 +148269,10 @@ entities: - type: Transform pos: 13.5,-34.5 parent: 2 - - uid: 3782 + - uid: 3812 components: - type: Transform - pos: 19.5,-34.5 + pos: 0.5,-45.5 parent: 2 - uid: 3813 components: @@ -147204,6 +148284,11 @@ entities: - type: Transform pos: 21.5,-38.5 parent: 2 + - uid: 3828 + components: + - type: Transform + pos: -9.5,-29.5 + parent: 2 - uid: 3834 components: - type: Transform @@ -147259,21 +148344,11 @@ entities: - type: Transform pos: 16.5,-49.5 parent: 2 - - uid: 4005 - components: - - type: Transform - pos: 16.5,-48.5 - parent: 2 - uid: 4006 components: - type: Transform pos: 16.5,-47.5 parent: 2 - - uid: 4007 - components: - - type: Transform - pos: 16.5,-46.5 - parent: 2 - uid: 4023 components: - type: Transform @@ -147284,65 +148359,55 @@ entities: - type: Transform pos: 25.5,-1.5 parent: 2 - - uid: 4046 - components: - - type: Transform - pos: -21.5,-25.5 - parent: 2 - uid: 4055 components: - type: Transform - pos: -21.5,-26.5 + pos: 28.5,-12.5 parent: 2 - - uid: 4061 + - uid: 4073 components: - type: Transform - pos: 29.5,-0.5 + pos: 4.5,-26.5 parent: 2 - uid: 4098 components: - type: Transform pos: 22.5,8.5 parent: 2 + - uid: 4157 + components: + - type: Transform + pos: 46.5,-59.5 + parent: 2 - uid: 4173 components: - type: Transform pos: 35.5,-39.5 parent: 2 - - uid: 4178 - components: - - type: Transform - pos: 39.5,-39.5 - parent: 2 - uid: 4179 components: - type: Transform pos: 31.5,-24.5 parent: 2 - - uid: 4180 - components: - - type: Transform - pos: 31.5,-26.5 - parent: 2 - uid: 4181 components: - type: Transform pos: 31.5,-27.5 parent: 2 - - uid: 4182 - components: - - type: Transform - pos: 31.5,-28.5 - parent: 2 - uid: 4214 components: - type: Transform pos: 37.5,-33.5 parent: 2 + - uid: 4281 + components: + - type: Transform + pos: 37.5,-0.5 + parent: 2 - uid: 4335 components: - type: Transform - pos: 30.5,-39.5 + pos: 28.5,-1.5 parent: 2 - uid: 4336 components: @@ -147384,36 +148449,86 @@ entities: - type: Transform pos: 30.5,-44.5 parent: 2 + - uid: 4520 + components: + - type: Transform + pos: 0.5,-42.5 + parent: 2 + - uid: 4524 + components: + - type: Transform + pos: 33.5,-14.5 + parent: 2 + - uid: 4558 + components: + - type: Transform + pos: 14.5,-11.5 + parent: 2 - uid: 4642 components: - type: Transform pos: 8.5,-40.5 parent: 2 + - uid: 4694 + components: + - type: Transform + pos: 38.5,5.5 + parent: 2 - uid: 4703 components: - type: Transform pos: 68.5,-66.5 parent: 2 - - uid: 4737 + - uid: 4789 components: - type: Transform - pos: 61.5,-76.5 + pos: 18.5,-0.5 + parent: 2 + - uid: 4828 + components: + - type: Transform + pos: -36.5,-25.5 parent: 2 - uid: 4862 components: - type: Transform pos: 71.5,-68.5 parent: 2 + - uid: 4867 + components: + - type: Transform + pos: 66.5,-40.5 + parent: 2 - uid: 4871 components: - type: Transform pos: 8.5,-32.5 parent: 2 + - uid: 4883 + components: + - type: Transform + pos: 18.5,-5.5 + parent: 2 + - uid: 4885 + components: + - type: Transform + pos: 50.5,-50.5 + parent: 2 + - uid: 4918 + components: + - type: Transform + pos: 34.5,16.5 + parent: 2 - uid: 4923 components: - type: Transform pos: 49.5,-37.5 parent: 2 + - uid: 4931 + components: + - type: Transform + pos: 14.5,-10.5 + parent: 2 - uid: 4935 components: - type: Transform @@ -147424,26 +148539,31 @@ entities: - type: Transform pos: -41.5,-33.5 parent: 2 - - uid: 4998 - components: - - type: Transform - pos: -35.5,-56.5 - parent: 2 - uid: 5027 components: - type: Transform pos: -35.5,-55.5 parent: 2 - - uid: 5029 + - uid: 5101 components: - type: Transform - pos: 29.5,3.5 + pos: 35.5,10.5 + parent: 2 + - uid: 5155 + components: + - type: Transform + pos: 44.5,-8.5 parent: 2 - uid: 5162 components: - type: Transform pos: 44.5,-5.5 parent: 2 + - uid: 5165 + components: + - type: Transform + pos: 23.5,-44.5 + parent: 2 - uid: 5175 components: - type: Transform @@ -147459,11 +148579,36 @@ entities: - type: Transform pos: -35.5,-57.5 parent: 2 + - uid: 5192 + components: + - type: Transform + pos: -19.5,-31.5 + parent: 2 + - uid: 5195 + components: + - type: Transform + pos: -18.5,-26.5 + parent: 2 + - uid: 5218 + components: + - type: Transform + pos: 71.5,-75.5 + parent: 2 + - uid: 5221 + components: + - type: Transform + pos: 47.5,-35.5 + parent: 2 - uid: 5241 components: - type: Transform pos: -35.5,-53.5 parent: 2 + - uid: 5279 + components: + - type: Transform + pos: -10.5,-15.5 + parent: 2 - uid: 5304 components: - type: Transform @@ -147479,11 +148624,6 @@ entities: - type: Transform pos: 22.5,4.5 parent: 2 - - uid: 5414 - components: - - type: Transform - pos: -12.5,19.5 - parent: 2 - uid: 5422 components: - type: Transform @@ -147494,25 +148634,50 @@ entities: - type: Transform pos: 40.5,16.5 parent: 2 + - uid: 5479 + components: + - type: Transform + pos: -41.5,-34.5 + parent: 2 + - uid: 5488 + components: + - type: Transform + pos: 0.5,-46.5 + parent: 2 - uid: 5513 components: - type: Transform pos: 10.5,26.5 parent: 2 + - uid: 5522 + components: + - type: Transform + pos: 62.5,-76.5 + parent: 2 + - uid: 5541 + components: + - type: Transform + pos: -35.5,-50.5 + parent: 2 - uid: 5542 components: - type: Transform pos: 44.5,-7.5 parent: 2 + - uid: 5547 + components: + - type: Transform + pos: 36.5,16.5 + parent: 2 - uid: 5572 components: - type: Transform - pos: 49.5,-41.5 + pos: 5.5,-43.5 parent: 2 - uid: 5580 components: - type: Transform - pos: -51.5,-49.5 + pos: 29.5,20.5 parent: 2 - uid: 5585 components: @@ -147537,17 +148702,22 @@ entities: - uid: 5618 components: - type: Transform - pos: 49.5,-40.5 + pos: 63.5,-79.5 parent: 2 - uid: 5653 components: - type: Transform pos: 26.5,-58.5 parent: 2 - - uid: 5668 + - uid: 5657 components: - type: Transform - pos: -50.5,-56.5 + pos: 3.5,-43.5 + parent: 2 + - uid: 5667 + components: + - type: Transform + pos: 23.5,4.5 parent: 2 - uid: 5688 components: @@ -147559,6 +148729,11 @@ entities: - type: Transform pos: 26.5,-53.5 parent: 2 + - uid: 5703 + components: + - type: Transform + pos: -20.5,-39.5 + parent: 2 - uid: 5723 components: - type: Transform @@ -147569,10 +148744,10 @@ entities: - type: Transform pos: 62.5,-74.5 parent: 2 - - uid: 5741 + - uid: 5737 components: - type: Transform - pos: -21.5,-39.5 + pos: 26.5,5.5 parent: 2 - uid: 5743 components: @@ -147597,7 +148772,7 @@ entities: - uid: 5773 components: - type: Transform - pos: 33.5,-16.5 + pos: -14.5,-26.5 parent: 2 - uid: 5776 components: @@ -147629,6 +148804,11 @@ entities: - type: Transform pos: 34.5,-8.5 parent: 2 + - uid: 5797 + components: + - type: Transform + pos: 39.5,-8.5 + parent: 2 - uid: 5798 components: - type: Transform @@ -147637,7 +148817,7 @@ entities: - uid: 5803 components: - type: Transform - pos: -20.5,-35.5 + pos: -35.5,-47.5 parent: 2 - uid: 5804 components: @@ -147662,7 +148842,7 @@ entities: - uid: 5826 components: - type: Transform - pos: 22.5,-14.5 + pos: 35.5,11.5 parent: 2 - uid: 5830 components: @@ -147674,6 +148854,11 @@ entities: - type: Transform pos: 31.5,-44.5 parent: 2 + - uid: 5836 + components: + - type: Transform + pos: 86.5,-17.5 + parent: 2 - uid: 5859 components: - type: Transform @@ -147684,11 +148869,6 @@ entities: - type: Transform pos: 5.5,-41.5 parent: 2 - - uid: 5882 - components: - - type: Transform - pos: 5.5,-46.5 - parent: 2 - uid: 5885 components: - type: Transform @@ -147724,31 +148904,16 @@ entities: - type: Transform pos: 4.5,-29.5 parent: 2 - - uid: 5937 - components: - - type: Transform - pos: 4.5,-32.5 - parent: 2 - uid: 5940 components: - type: Transform pos: 4.5,-33.5 parent: 2 - - uid: 5953 - components: - - type: Transform - pos: 22.5,-45.5 - parent: 2 - uid: 5955 components: - type: Transform pos: 22.5,-46.5 parent: 2 - - uid: 5957 - components: - - type: Transform - pos: 22.5,-50.5 - parent: 2 - uid: 5958 components: - type: Transform @@ -147759,31 +148924,16 @@ entities: - type: Transform pos: 16.5,-51.5 parent: 2 - - uid: 5966 - components: - - type: Transform - pos: 18.5,-51.5 - parent: 2 - uid: 5967 components: - type: Transform pos: 19.5,-51.5 parent: 2 - - uid: 5968 - components: - - type: Transform - pos: 20.5,-51.5 - parent: 2 - uid: 5969 components: - type: Transform pos: 21.5,-51.5 parent: 2 - - uid: 5970 - components: - - type: Transform - pos: 22.5,-51.5 - parent: 2 - uid: 5975 components: - type: Transform @@ -147804,41 +148954,21 @@ entities: - type: Transform pos: 8.5,-29.5 parent: 2 - - uid: 6028 - components: - - type: Transform - pos: 8.5,-35.5 - parent: 2 - uid: 6034 components: - type: Transform pos: 39.5,-11.5 parent: 2 - - uid: 6036 - components: - - type: Transform - pos: 39.5,-12.5 - parent: 2 - uid: 6037 components: - type: Transform pos: 39.5,-9.5 parent: 2 - - uid: 6060 - components: - - type: Transform - pos: 11.5,-2.5 - parent: 2 - uid: 6069 components: - type: Transform pos: 39.5,-5.5 parent: 2 - - uid: 6108 - components: - - type: Transform - pos: 39.5,-14.5 - parent: 2 - uid: 6112 components: - type: Transform @@ -147854,36 +148984,16 @@ entities: - type: Transform pos: 34.5,-0.5 parent: 2 - - uid: 6159 - components: - - type: Transform - pos: 35.5,-0.5 - parent: 2 - uid: 6160 components: - type: Transform pos: 36.5,-0.5 parent: 2 - - uid: 6184 - components: - - type: Transform - pos: 38.5,-0.5 - parent: 2 - - uid: 6193 - components: - - type: Transform - pos: 30.5,-45.5 - parent: 2 - uid: 6241 components: - type: Transform pos: 34.5,-3.5 parent: 2 - - uid: 6292 - components: - - type: Transform - pos: 49.5,-42.5 - parent: 2 - uid: 6294 components: - type: Transform @@ -147899,11 +149009,6 @@ entities: - type: Transform pos: 20.5,-42.5 parent: 2 - - uid: 6339 - components: - - type: Transform - pos: 1.5,-30.5 - parent: 2 - uid: 6346 components: - type: Transform @@ -147914,11 +149019,6 @@ entities: - type: Transform pos: -15.5,-49.5 parent: 2 - - uid: 6357 - components: - - type: Transform - pos: -12.5,-49.5 - parent: 2 - uid: 6365 components: - type: Transform @@ -147929,11 +149029,6 @@ entities: - type: Transform pos: 12.5,-55.5 parent: 2 - - uid: 6446 - components: - - type: Transform - pos: 12.5,-35.5 - parent: 2 - uid: 6494 components: - type: Transform @@ -147989,11 +149084,6 @@ entities: - type: Transform pos: 17.5,-15.5 parent: 2 - - uid: 6680 - components: - - type: Transform - pos: 22.5,-54.5 - parent: 2 - uid: 6681 components: - type: Transform @@ -148014,66 +149104,26 @@ entities: - type: Transform pos: 18.5,-55.5 parent: 2 - - uid: 6687 - components: - - type: Transform - pos: 18.5,-53.5 - parent: 2 - - uid: 6739 - components: - - type: Transform - pos: 37.5,-39.5 - parent: 2 - uid: 6840 components: - type: Transform pos: 22.5,-42.5 parent: 2 - - uid: 6842 - components: - - type: Transform - pos: 16.5,-50.5 - parent: 2 - uid: 6863 components: - type: Transform pos: 21.5,-42.5 parent: 2 - - uid: 6899 - components: - - type: Transform - pos: 13.5,-50.5 - parent: 2 - - uid: 6904 - components: - - type: Transform - pos: 19.5,-37.5 - parent: 2 - uid: 6929 components: - type: Transform pos: -6.5,-15.5 parent: 2 - - uid: 6974 - components: - - type: Transform - pos: 2.5,-34.5 - parent: 2 - - uid: 6988 - components: - - type: Transform - pos: 39.5,-10.5 - parent: 2 - uid: 6992 components: - type: Transform pos: -39.5,-51.5 parent: 2 - - uid: 7021 - components: - - type: Transform - pos: -38.5,-56.5 - parent: 2 - uid: 7022 components: - type: Transform @@ -148084,11 +149134,6 @@ entities: - type: Transform pos: -37.5,-56.5 parent: 2 - - uid: 7060 - components: - - type: Transform - pos: 48.5,-14.5 - parent: 2 - uid: 7069 components: - type: Transform @@ -148104,41 +149149,16 @@ entities: - type: Transform pos: -42.5,-52.5 parent: 2 - - uid: 7086 - components: - - type: Transform - pos: 46.5,-4.5 - parent: 2 - uid: 7098 components: - type: Transform pos: 42.5,-8.5 parent: 2 - - uid: 7106 - components: - - type: Transform - pos: 46.5,-10.5 - parent: 2 - - uid: 7113 - components: - - type: Transform - pos: 47.5,-10.5 - parent: 2 - - uid: 7118 - components: - - type: Transform - pos: 44.5,-9.5 - parent: 2 - uid: 7174 components: - type: Transform pos: 3.5,-45.5 parent: 2 - - uid: 7216 - components: - - type: Transform - pos: 24.5,-16.5 - parent: 2 - uid: 7217 components: - type: Transform @@ -148174,46 +149194,21 @@ entities: - type: Transform pos: 40.5,1.5 parent: 2 - - uid: 7293 - components: - - type: Transform - pos: 39.5,-1.5 - parent: 2 - - uid: 7294 - components: - - type: Transform - pos: 39.5,-2.5 - parent: 2 - uid: 7299 components: - type: Transform pos: 40.5,2.5 parent: 2 - - uid: 7300 - components: - - type: Transform - pos: 40.5,3.5 - parent: 2 - uid: 7301 components: - type: Transform pos: 40.5,4.5 parent: 2 - - uid: 7330 - components: - - type: Transform - pos: -39.5,-53.5 - parent: 2 - uid: 7403 components: - type: Transform pos: 37.5,5.5 parent: 2 - - uid: 7531 - components: - - type: Transform - pos: -17.5,-44.5 - parent: 2 - uid: 7534 components: - type: Transform @@ -148249,16 +149244,6 @@ entities: - type: Transform pos: 34.5,7.5 parent: 2 - - uid: 7667 - components: - - type: Transform - pos: 34.5,8.5 - parent: 2 - - uid: 7673 - components: - - type: Transform - pos: -40.5,-25.5 - parent: 2 - uid: 7760 components: - type: Transform @@ -148289,21 +149274,11 @@ entities: - type: Transform pos: 46.5,-11.5 parent: 2 - - uid: 8347 - components: - - type: Transform - pos: 46.5,-7.5 - parent: 2 - uid: 8364 components: - type: Transform pos: 20.5,-38.5 parent: 2 - - uid: 8386 - components: - - type: Transform - pos: 42.5,-5.5 - parent: 2 - uid: 8393 components: - type: Transform @@ -148324,36 +149299,16 @@ entities: - type: Transform pos: -3.5,-16.5 parent: 2 - - uid: 8477 - components: - - type: Transform - pos: 17.5,-11.5 - parent: 2 - uid: 8503 components: - type: Transform pos: 18.5,4.5 parent: 2 - - uid: 8526 - components: - - type: Transform - pos: 20.5,-12.5 - parent: 2 - uid: 8542 components: - type: Transform pos: 17.5,-12.5 parent: 2 - - uid: 8555 - components: - - type: Transform - pos: -47.5,-49.5 - parent: 2 - - uid: 8559 - components: - - type: Transform - pos: 44.5,-27.5 - parent: 2 - uid: 8645 components: - type: Transform @@ -148384,11 +149339,6 @@ entities: - type: Transform pos: 45.5,-26.5 parent: 2 - - uid: 8913 - components: - - type: Transform - pos: 49.5,-26.5 - parent: 2 - uid: 8984 components: - type: Transform @@ -148419,21 +149369,11 @@ entities: - type: Transform pos: 47.5,-27.5 parent: 2 - - uid: 9148 - components: - - type: Transform - pos: 29.5,0.5 - parent: 2 - uid: 9213 components: - type: Transform pos: 51.5,-23.5 parent: 2 - - uid: 9215 - components: - - type: Transform - pos: 47.5,-23.5 - parent: 2 - uid: 9287 components: - type: Transform @@ -148479,11 +149419,6 @@ entities: - type: Transform pos: 22.5,-12.5 parent: 2 - - uid: 9420 - components: - - type: Transform - pos: 23.5,-58.5 - parent: 2 - uid: 9429 components: - type: Transform @@ -148504,11 +149439,6 @@ entities: - type: Transform pos: -46.5,-38.5 parent: 2 - - uid: 9555 - components: - - type: Transform - pos: 25.5,9.5 - parent: 2 - uid: 9628 components: - type: Transform @@ -148519,11 +149449,6 @@ entities: - type: Transform pos: 29.5,-2.5 parent: 2 - - uid: 9668 - components: - - type: Transform - pos: 17.5,1.5 - parent: 2 - uid: 9675 components: - type: Transform @@ -148549,26 +149474,11 @@ entities: - type: Transform pos: -21.5,-53.5 parent: 2 - - uid: 9715 - components: - - type: Transform - pos: -21.5,-52.5 - parent: 2 - - uid: 9718 - components: - - type: Transform - pos: -21.5,-51.5 - parent: 2 - uid: 9837 components: - type: Transform pos: -18.5,-46.5 parent: 2 - - uid: 9859 - components: - - type: Transform - pos: 33.5,-5.5 - parent: 2 - uid: 9995 components: - type: Transform @@ -148654,11 +149564,6 @@ entities: - type: Transform pos: -50.5,-54.5 parent: 2 - - uid: 10483 - components: - - type: Transform - pos: -52.5,-56.5 - parent: 2 - uid: 10511 components: - type: Transform @@ -148669,21 +149574,11 @@ entities: - type: Transform pos: -5.5,-5.5 parent: 2 - - uid: 10552 - components: - - type: Transform - pos: -6.5,-6.5 - parent: 2 - uid: 10554 components: - type: Transform pos: 23.5,0.5 parent: 2 - - uid: 10610 - components: - - type: Transform - pos: -6.5,-9.5 - parent: 2 - uid: 10611 components: - type: Transform @@ -148769,21 +149664,11 @@ entities: - type: Transform pos: 66.5,-72.5 parent: 2 - - uid: 10830 - components: - - type: Transform - pos: 69.5,-79.5 - parent: 2 - uid: 10842 components: - type: Transform pos: 66.5,-83.5 parent: 2 - - uid: 10858 - components: - - type: Transform - pos: 74.5,-75.5 - parent: 2 - uid: 10864 components: - type: Transform @@ -148794,46 +149679,16 @@ entities: - type: Transform pos: 73.5,-74.5 parent: 2 - - uid: 10881 - components: - - type: Transform - pos: 73.5,-75.5 - parent: 2 - - uid: 10896 - components: - - type: Transform - pos: 70.5,-78.5 - parent: 2 - - uid: 10968 - components: - - type: Transform - pos: 12.5,-54.5 - parent: 2 - uid: 10970 components: - type: Transform pos: 12.5,-56.5 parent: 2 - - uid: 11078 - components: - - type: Transform - pos: 27.5,14.5 - parent: 2 - - uid: 11080 - components: - - type: Transform - pos: 35.5,12.5 - parent: 2 - uid: 11104 components: - type: Transform pos: -6.5,-7.5 parent: 2 - - uid: 11106 - components: - - type: Transform - pos: -0.5,-5.5 - parent: 2 - uid: 11115 components: - type: Transform @@ -148889,11 +149744,6 @@ entities: - type: Transform pos: 23.5,9.5 parent: 2 - - uid: 11503 - components: - - type: Transform - pos: 63.5,-76.5 - parent: 2 - uid: 11518 components: - type: Transform @@ -148909,16 +149759,6 @@ entities: - type: Transform pos: -45.5,-26.5 parent: 2 - - uid: 11848 - components: - - type: Transform - pos: -10.5,-35.5 - parent: 2 - - uid: 11886 - components: - - type: Transform - pos: 43.5,-55.5 - parent: 2 - uid: 11888 components: - type: Transform @@ -148934,11 +149774,6 @@ entities: - type: Transform pos: 28.5,14.5 parent: 2 - - uid: 11997 - components: - - type: Transform - pos: 35.5,16.5 - parent: 2 - uid: 12000 components: - type: Transform @@ -148964,11 +149799,6 @@ entities: - type: Transform pos: -40.5,-35.5 parent: 2 - - uid: 12130 - components: - - type: Transform - pos: -40.5,-38.5 - parent: 2 - uid: 12176 components: - type: Transform @@ -148984,21 +149814,11 @@ entities: - type: Transform pos: 44.5,-55.5 parent: 2 - - uid: 12230 - components: - - type: Transform - pos: -46.5,-33.5 - parent: 2 - uid: 12232 components: - type: Transform pos: -32.5,-23.5 parent: 2 - - uid: 12503 - components: - - type: Transform - pos: 49.5,-58.5 - parent: 2 - uid: 12505 components: - type: Transform @@ -149034,11 +149854,6 @@ entities: - type: Transform pos: 38.5,10.5 parent: 2 - - uid: 12637 - components: - - type: Transform - pos: -40.5,-22.5 - parent: 2 - uid: 12660 components: - type: Transform @@ -149054,11 +149869,6 @@ entities: - type: Transform pos: 8.5,-57.5 parent: 2 - - uid: 12770 - components: - - type: Transform - pos: 11.5,-90.5 - parent: 2 - uid: 12773 components: - type: Transform @@ -149074,46 +149884,16 @@ entities: - type: Transform pos: 8.5,-91.5 parent: 2 - - uid: 12801 - components: - - type: Transform - pos: 5.5,-88.5 - parent: 2 - uid: 12802 components: - type: Transform pos: 8.5,-92.5 parent: 2 - - uid: 12804 - components: - - type: Transform - pos: -5.5,-91.5 - parent: 2 - uid: 12805 components: - type: Transform pos: -3.5,-91.5 parent: 2 - - uid: 12806 - components: - - type: Transform - pos: -2.5,-88.5 - parent: 2 - - uid: 12807 - components: - - type: Transform - pos: -5.5,-92.5 - parent: 2 - - uid: 12809 - components: - - type: Transform - pos: -6.5,-91.5 - parent: 2 - - uid: 12813 - components: - - type: Transform - pos: -2.5,-96.5 - parent: 2 - uid: 12814 components: - type: Transform @@ -149139,11 +149919,6 @@ entities: - type: Transform pos: 22.5,-16.5 parent: 2 - - uid: 12982 - components: - - type: Transform - pos: -41.5,-24.5 - parent: 2 - uid: 13072 components: - type: Transform @@ -149189,11 +149964,6 @@ entities: - type: Transform pos: -32.5,-25.5 parent: 2 - - uid: 13209 - components: - - type: Transform - pos: 20.5,-57.5 - parent: 2 - uid: 13210 components: - type: Transform @@ -149209,21 +149979,11 @@ entities: - type: Transform pos: 14.5,-12.5 parent: 2 - - uid: 13219 - components: - - type: Transform - pos: 17.5,-57.5 - parent: 2 - uid: 13222 components: - type: Transform pos: 41.5,-55.5 parent: 2 - - uid: 13225 - components: - - type: Transform - pos: 41.5,-54.5 - parent: 2 - uid: 13226 components: - type: Transform @@ -149239,11 +149999,6 @@ entities: - type: Transform pos: 26.5,-15.5 parent: 2 - - uid: 13252 - components: - - type: Transform - pos: 25.5,-15.5 - parent: 2 - uid: 13253 components: - type: Transform @@ -149254,11 +150009,6 @@ entities: - type: Transform pos: 12.5,-27.5 parent: 2 - - uid: 13281 - components: - - type: Transform - pos: 5.5,-89.5 - parent: 2 - uid: 13304 components: - type: Transform @@ -149274,31 +150024,6 @@ entities: - type: Transform pos: 28.5,-13.5 parent: 2 - - uid: 13364 - components: - - type: Transform - pos: 22.5,-18.5 - parent: 2 - - uid: 13395 - components: - - type: Transform - pos: 13.5,-12.5 - parent: 2 - - uid: 13408 - components: - - type: Transform - pos: 26.5,14.5 - parent: 2 - - uid: 13668 - components: - - type: Transform - pos: 29.5,-15.5 - parent: 2 - - uid: 13669 - components: - - type: Transform - pos: 27.5,-15.5 - parent: 2 - uid: 13672 components: - type: Transform @@ -149309,11 +150034,6 @@ entities: - type: Transform pos: 30.5,17.5 parent: 2 - - uid: 13693 - components: - - type: Transform - pos: -24.5,-54.5 - parent: 2 - uid: 13712 components: - type: Transform @@ -149329,11 +150049,6 @@ entities: - type: Transform pos: 1.5,-42.5 parent: 2 - - uid: 13747 - components: - - type: Transform - pos: 29.5,-19.5 - parent: 2 - uid: 13756 components: - type: Transform @@ -149344,11 +150059,6 @@ entities: - type: Transform pos: 27.5,-19.5 parent: 2 - - uid: 13758 - components: - - type: Transform - pos: 25.5,-19.5 - parent: 2 - uid: 13759 components: - type: Transform @@ -149419,31 +150129,11 @@ entities: - type: Transform pos: -39.5,-42.5 parent: 2 - - uid: 14179 - components: - - type: Transform - pos: -39.5,-43.5 - parent: 2 - - uid: 14181 - components: - - type: Transform - pos: -39.5,-46.5 - parent: 2 - uid: 14182 components: - type: Transform pos: -39.5,-47.5 parent: 2 - - uid: 14379 - components: - - type: Transform - pos: -28.5,1.5 - parent: 2 - - uid: 14386 - components: - - type: Transform - pos: -27.5,1.5 - parent: 2 - uid: 14414 components: - type: Transform @@ -149459,21 +150149,11 @@ entities: - type: Transform pos: 47.5,-38.5 parent: 2 - - uid: 14477 - components: - - type: Transform - pos: 47.5,-39.5 - parent: 2 - uid: 14480 components: - type: Transform pos: 47.5,-41.5 parent: 2 - - uid: 14496 - components: - - type: Transform - pos: 43.5,-38.5 - parent: 2 - uid: 14500 components: - type: Transform @@ -149494,16 +150174,6 @@ entities: - type: Transform pos: 41.5,-12.5 parent: 2 - - uid: 14787 - components: - - type: Transform - pos: -28.5,3.5 - parent: 2 - - uid: 14853 - components: - - type: Transform - pos: -22.5,-2.5 - parent: 2 - uid: 15041 components: - type: Transform @@ -149514,11 +150184,6 @@ entities: - type: Transform pos: 12.5,-59.5 parent: 2 - - uid: 15244 - components: - - type: Transform - pos: -47.5,-50.5 - parent: 2 - uid: 15251 components: - type: Transform @@ -149544,55 +150209,55 @@ entities: - type: Transform pos: -24.5,22.5 parent: 2 - - uid: 15648 + - uid: 15445 components: - type: Transform - pos: -23.5,-54.5 + pos: 20.5,8.5 + parent: 2 + - uid: 15457 + components: + - type: Transform + pos: -24.5,21.5 + parent: 2 + - uid: 15466 + components: + - type: Transform + pos: 17.5,-59.5 + parent: 2 + - uid: 15478 + components: + - type: Transform + pos: 43.5,-8.5 + parent: 2 + - uid: 15606 + components: + - type: Transform + pos: 49.5,-55.5 parent: 2 - uid: 15680 components: - type: Transform pos: 38.5,11.5 parent: 2 - - uid: 15704 - components: - - type: Transform - pos: -10.5,18.5 - parent: 2 - uid: 15712 components: - type: Transform pos: -0.5,21.5 parent: 2 - - uid: 15730 - components: - - type: Transform - pos: 9.5,21.5 - parent: 2 - uid: 15731 components: - type: Transform pos: 38.5,12.5 parent: 2 - - uid: 15743 - components: - - type: Transform - pos: -47.5,-55.5 - parent: 2 - - uid: 15788 - components: - - type: Transform - pos: -44.5,-54.5 - parent: 2 - uid: 15815 components: - type: Transform pos: 8.5,21.5 parent: 2 - - uid: 15880 + - uid: 15896 components: - type: Transform - pos: 7.5,-46.5 + pos: 17.5,-0.5 parent: 2 - uid: 15903 components: @@ -149609,6 +150274,21 @@ entities: - type: Transform pos: 0.5,21.5 parent: 2 + - uid: 15970 + components: + - type: Transform + pos: 38.5,-8.5 + parent: 2 + - uid: 16151 + components: + - type: Transform + pos: -29.5,-8.5 + parent: 2 + - uid: 16162 + components: + - type: Transform + pos: 47.5,-40.5 + parent: 2 - uid: 16168 components: - type: Transform @@ -149619,20 +150299,10 @@ entities: - type: Transform pos: 26.5,13.5 parent: 2 - - uid: 16170 + - uid: 16217 components: - type: Transform - pos: 8.5,-58.5 - parent: 2 - - uid: 16219 - components: - - type: Transform - pos: 54.5,-52.5 - parent: 2 - - uid: 16245 - components: - - type: Transform - pos: 2.5,21.5 + pos: 37.5,16.5 parent: 2 - uid: 16323 components: @@ -149644,16 +150314,16 @@ entities: - type: Transform pos: 6.5,21.5 parent: 2 + - uid: 16636 + components: + - type: Transform + pos: -34.5,19.5 + parent: 2 - uid: 16655 components: - type: Transform pos: 34.5,10.5 parent: 2 - - uid: 16715 - components: - - type: Transform - pos: 1.5,21.5 - parent: 2 - uid: 16899 components: - type: Transform @@ -149669,21 +150339,11 @@ entities: - type: Transform pos: -51.5,-48.5 parent: 2 - - uid: 16913 - components: - - type: Transform - pos: -51.5,-47.5 - parent: 2 - uid: 16920 components: - type: Transform pos: -48.5,-51.5 parent: 2 - - uid: 16921 - components: - - type: Transform - pos: -50.5,-51.5 - parent: 2 - uid: 16924 components: - type: Transform @@ -149709,15 +150369,15 @@ entities: - type: Transform pos: -21.5,-17.5 parent: 2 - - uid: 16948 - components: - - type: Transform - pos: -39.5,-56.5 - parent: 2 - uid: 16949 components: - type: Transform - pos: -44.5,-52.5 + pos: 47.5,-26.5 + parent: 2 + - uid: 17001 + components: + - type: Transform + pos: 18.5,-52.5 parent: 2 - uid: 17011 components: @@ -149729,16 +150389,6 @@ entities: - type: Transform pos: -42.5,-4.5 parent: 2 - - uid: 17149 - components: - - type: Transform - pos: 19.5,-1.5 - parent: 2 - - uid: 17151 - components: - - type: Transform - pos: 18.5,-1.5 - parent: 2 - uid: 17153 components: - type: Transform @@ -149749,15 +150399,20 @@ entities: - type: Transform pos: -40.5,-56.5 parent: 2 + - uid: 17315 + components: + - type: Transform + pos: 18.5,-54.5 + parent: 2 - uid: 17323 components: - type: Transform pos: 41.5,12.5 parent: 2 - - uid: 17544 + - uid: 17461 components: - type: Transform - pos: 39.5,10.5 + pos: 8.5,-55.5 parent: 2 - uid: 17720 components: @@ -149769,11 +150424,6 @@ entities: - type: Transform pos: 86.5,-22.5 parent: 2 - - uid: 17751 - components: - - type: Transform - pos: -45.5,-49.5 - parent: 2 - uid: 17752 components: - type: Transform @@ -149789,41 +150439,36 @@ entities: - type: Transform pos: 83.5,-15.5 parent: 2 - - uid: 18072 + - uid: 17845 components: - type: Transform - pos: 13.5,17.5 + pos: -46.5,-29.5 parent: 2 - - uid: 18079 + - uid: 18161 components: - type: Transform - pos: 39.5,7.5 + pos: 30.5,20.5 parent: 2 - - uid: 18198 + - uid: 18211 components: - type: Transform - pos: 94.5,-20.5 + pos: -25.5,-48.5 parent: 2 - uid: 18341 components: - type: Transform pos: 93.5,-20.5 parent: 2 + - uid: 18382 + components: + - type: Transform + pos: 20.5,-55.5 + parent: 2 - uid: 18424 components: - type: Transform pos: 85.5,-16.5 parent: 2 - - uid: 18427 - components: - - type: Transform - pos: 86.5,-18.5 - parent: 2 - - uid: 18434 - components: - - type: Transform - pos: 92.5,-21.5 - parent: 2 - uid: 18435 components: - type: Transform @@ -149869,6 +150514,11 @@ entities: - type: Transform pos: 41.5,10.5 parent: 2 + - uid: 18622 + components: + - type: Transform + pos: 38.5,7.5 + parent: 2 - uid: 18855 components: - type: Transform @@ -149884,16 +150534,6 @@ entities: - type: Transform pos: 46.5,-13.5 parent: 2 - - uid: 19156 - components: - - type: Transform - pos: 10.5,-90.5 - parent: 2 - - uid: 19157 - components: - - type: Transform - pos: 10.5,-91.5 - parent: 2 - uid: 19187 components: - type: Transform @@ -149904,26 +150544,11 @@ entities: - type: Transform pos: -1.5,-88.5 parent: 2 - - uid: 19231 - components: - - type: Transform - pos: 9.5,-91.5 - parent: 2 - uid: 19236 components: - type: Transform pos: 1.5,-88.5 parent: 2 - - uid: 19262 - components: - - type: Transform - pos: 6.5,-91.5 - parent: 2 - - uid: 19265 - components: - - type: Transform - pos: -2.5,-97.5 - parent: 2 - uid: 19273 components: - type: Transform @@ -149934,6 +150559,21 @@ entities: - type: Transform pos: 30.5,15.5 parent: 2 + - uid: 19918 + components: + - type: Transform + pos: -11.5,21.5 + parent: 2 + - uid: 20172 + components: + - type: Transform + pos: 20.5,9.5 + parent: 2 + - uid: 20176 + components: + - type: Transform + pos: 46.5,-38.5 + parent: 2 - uid: 20245 components: - type: Transform @@ -149954,11 +150594,21 @@ entities: - type: Transform pos: 30.5,12.5 parent: 2 + - uid: 20319 + components: + - type: Transform + pos: 23.5,-38.5 + parent: 2 - uid: 20392 components: - type: Transform pos: -6.5,-46.5 parent: 2 + - uid: 20706 + components: + - type: Transform + pos: 2.5,-39.5 + parent: 2 - uid: 20715 components: - type: Transform @@ -149969,55 +150619,80 @@ entities: - type: Transform pos: 22.5,17.5 parent: 2 - - uid: 21426 + - uid: 21311 components: - type: Transform - pos: 26.5,9.5 + pos: -27.5,-6.5 + parent: 2 + - uid: 21355 + components: + - type: Transform + pos: 66.5,-82.5 + parent: 2 + - uid: 21365 + components: + - type: Transform + pos: -26.5,-23.5 + parent: 2 + - uid: 21370 + components: + - type: Transform + pos: -10.5,-34.5 + parent: 2 + - uid: 21673 + components: + - type: Transform + pos: 14.5,-50.5 + parent: 2 + - uid: 21803 + components: + - type: Transform + pos: 4.5,-31.5 parent: 2 - uid: 21900 components: - type: Transform pos: 20.5,4.5 parent: 2 - - uid: 21967 + - uid: 21968 components: - type: Transform - pos: 19.5,-2.5 + pos: 46.5,-3.5 parent: 2 - uid: 21997 components: - type: Transform pos: -54.5,-52.5 parent: 2 - - uid: 22003 - components: - - type: Transform - pos: 14.5,-8.5 - parent: 2 - uid: 22005 components: - type: Transform pos: 17.5,20.5 parent: 2 + - uid: 22010 + components: + - type: Transform + pos: 22.5,9.5 + parent: 2 + - uid: 22015 + components: + - type: Transform + pos: -1.5,-35.5 + parent: 2 + - uid: 22022 + components: + - type: Transform + pos: 6.5,-46.5 + parent: 2 - uid: 22028 components: - type: Transform pos: 28.5,20.5 parent: 2 - - uid: 22031 + - uid: 22054 components: - type: Transform - pos: -25.5,-49.5 - parent: 2 - - uid: 22032 - components: - - type: Transform - pos: -26.5,-49.5 - parent: 2 - - uid: 22055 - components: - - type: Transform - pos: -34.5,15.5 + pos: 22.5,-53.5 parent: 2 - uid: 22078 components: @@ -150029,16 +150704,16 @@ entities: - type: Transform pos: 34.5,-5.5 parent: 2 - - uid: 22112 - components: - - type: Transform - pos: 38.5,13.5 - parent: 2 - uid: 22113 components: - type: Transform pos: 39.5,13.5 parent: 2 + - uid: 22118 + components: + - type: Transform + pos: 13.5,-54.5 + parent: 2 - uid: 22120 components: - type: Transform @@ -150047,12 +150722,7 @@ entities: - uid: 22128 components: - type: Transform - pos: 23.5,-2.5 - parent: 2 - - uid: 22132 - components: - - type: Transform - pos: 40.5,10.5 + pos: -29.5,-2.5 parent: 2 - uid: 22572 components: @@ -150074,1082 +150744,1462 @@ entities: - type: Transform pos: -23.5,-56.5 parent: 2 -- proto: WallSolidRust - entities: - - uid: 1683 - components: - - type: Transform - pos: 13.5,-54.5 - parent: 2 - - uid: 2492 - components: - - type: Transform - pos: 14.5,-50.5 - parent: 2 - - uid: 2745 - components: - - type: Transform - pos: 66.5,-40.5 - parent: 2 - - uid: 3838 - components: - - type: Transform - pos: 17.5,-58.5 - parent: 2 - - uid: 4867 - components: - - type: Transform - pos: 70.5,-67.5 - parent: 2 - - uid: 4884 - components: - - type: Transform - pos: 69.5,-67.5 - parent: 2 - - uid: 5387 - components: - - type: Transform - pos: 75.5,-40.5 - parent: 2 - - uid: 5657 - components: - - type: Transform - pos: 17.5,-59.5 - parent: 2 - - uid: 6053 - components: - - type: Transform - pos: 63.5,-74.5 - parent: 2 - - uid: 7724 - components: - - type: Transform - pos: 14.5,-54.5 - parent: 2 - - uid: 7796 - components: - - type: Transform - pos: 66.5,-42.5 - parent: 2 - - uid: 7943 - components: - - type: Transform - pos: 16.5,-52.5 - parent: 2 - - uid: 9271 - components: - - type: Transform - pos: 12.5,-52.5 - parent: 2 - - uid: 9430 - components: - - type: Transform - pos: 13.5,-46.5 - parent: 2 - - uid: 9522 - components: - - type: Transform - pos: 48.5,-10.5 - parent: 2 - - uid: 9556 - components: - - type: Transform - pos: 47.5,-14.5 - parent: 2 - - uid: 9677 - components: - - type: Transform - pos: 6.5,-35.5 - parent: 2 - - uid: 9678 - components: - - type: Transform - pos: 2.5,-46.5 - parent: 2 - - uid: 9708 - components: - - type: Transform - pos: 33.5,-18.5 - parent: 2 - - uid: 9862 - components: - - type: Transform - pos: 35.5,15.5 - parent: 2 - - uid: 9896 - components: - - type: Transform - pos: 44.5,-31.5 - parent: 2 - - uid: 9897 - components: - - type: Transform - pos: 47.5,-35.5 - parent: 2 - - uid: 9898 - components: - - type: Transform - pos: 45.5,-35.5 - parent: 2 - - uid: 9922 - components: - - type: Transform - pos: 44.5,-32.5 - parent: 2 - - uid: 9938 - components: - - type: Transform - pos: 20.5,-58.5 - parent: 2 - - uid: 9992 - components: - - type: Transform - pos: 64.5,-78.5 - parent: 2 - - uid: 9996 - components: - - type: Transform - pos: 66.5,-73.5 - parent: 2 - - uid: 9997 - components: - - type: Transform - pos: 44.5,-35.5 - parent: 2 - - uid: 10053 - components: - - type: Transform - pos: -9.5,-29.5 - parent: 2 - - uid: 10061 - components: - - type: Transform - pos: -12.5,-30.5 - parent: 2 - - uid: 10065 - components: - - type: Transform - pos: 8.5,-54.5 - parent: 2 - - uid: 10133 - components: - - type: Transform - pos: -25.5,-48.5 - parent: 2 - - uid: 10188 - components: - - type: Transform - pos: 26.5,5.5 - parent: 2 - - uid: 10389 - components: - - type: Transform - pos: 4.5,-26.5 - parent: 2 - - uid: 10536 - components: - - type: Transform - pos: -10.5,-34.5 - parent: 2 - - uid: 10571 - components: - - type: Transform - pos: -17.5,-31.5 - parent: 2 - - uid: 10627 - components: - - type: Transform - pos: -13.5,-28.5 - parent: 2 - - uid: 10628 - components: - - type: Transform - pos: -13.5,-35.5 - parent: 2 - - uid: 10695 - components: - - type: Transform - pos: -14.5,-28.5 - parent: 2 - - uid: 10700 - components: - - type: Transform - pos: -18.5,-28.5 - parent: 2 - - uid: 10704 - components: - - type: Transform - pos: -16.5,-29.5 - parent: 2 - - uid: 10706 - components: - - type: Transform - pos: -18.5,-31.5 - parent: 2 - - uid: 10711 - components: - - type: Transform - pos: -1.5,-35.5 - parent: 2 - - uid: 10820 - components: - - type: Transform - pos: 69.5,-80.5 - parent: 2 - - uid: 10822 - components: - - type: Transform - pos: 66.5,-74.5 - parent: 2 - - uid: 10843 - components: - - type: Transform - pos: 66.5,-82.5 - parent: 2 - - uid: 10850 - components: - - type: Transform - pos: 73.5,-73.5 - parent: 2 - - uid: 10879 - components: - - type: Transform - pos: 71.5,-75.5 - parent: 2 - - uid: 10880 - components: - - type: Transform - pos: 72.5,-75.5 - parent: 2 - - uid: 10914 - components: - - type: Transform - pos: 20.5,9.5 - parent: 2 - - uid: 11074 - components: - - type: Transform - pos: 23.5,-38.5 - parent: 2 - - uid: 11187 - components: - - type: Transform - pos: 20.5,8.5 - parent: 2 - - uid: 11198 - components: - - type: Transform - pos: 27.5,-40.5 - parent: 2 - - uid: 11199 - components: - - type: Transform - pos: 26.5,-40.5 - parent: 2 - - uid: 11241 - components: - - type: Transform - pos: 42.5,-38.5 - parent: 2 - - uid: 11252 - components: - - type: Transform - pos: 71.5,-59.5 - parent: 2 - - uid: 11287 - components: - - type: Transform - pos: 30.5,20.5 - parent: 2 - - uid: 11310 - components: - - type: Transform - pos: -29.5,-8.5 - parent: 2 - - uid: 11368 - components: - - type: Transform - pos: 62.5,-76.5 - parent: 2 - - uid: 11439 - components: - - type: Transform - pos: 16.5,-45.5 - parent: 2 - - uid: 11523 - components: - - type: Transform - pos: 63.5,-79.5 - parent: 2 - - uid: 11609 - components: - - type: Transform - pos: 23.5,-43.5 - parent: 2 - - uid: 11634 - components: - - type: Transform - pos: 40.5,-4.5 - parent: 2 - - uid: 11636 - components: - - type: Transform - pos: -23.5,-2.5 - parent: 2 - - uid: 11655 - components: - - type: Transform - pos: 33.5,-10.5 - parent: 2 - - uid: 11656 - components: - - type: Transform - pos: -21.5,-35.5 - parent: 2 - - uid: 11674 - components: - - type: Transform - pos: 33.5,-14.5 - parent: 2 - - uid: 11766 - components: - - type: Transform - pos: 5.5,-35.5 - parent: 2 - - uid: 11795 - components: - - type: Transform - pos: 38.5,-8.5 - parent: 2 - - uid: 11805 - components: - - type: Transform - pos: 26.5,-57.5 - parent: 2 - - uid: 11841 - components: - - type: Transform - pos: -20.5,-39.5 - parent: 2 - - uid: 11842 - components: - - type: Transform - pos: 4.5,-31.5 - parent: 2 - - uid: 11931 - components: - - type: Transform - pos: -19.5,-31.5 - parent: 2 - - uid: 11932 - components: - - type: Transform - pos: 22.5,-48.5 - parent: 2 - - uid: 11936 - components: - - type: Transform - pos: 39.5,-8.5 - parent: 2 - - uid: 11939 - components: - - type: Transform - pos: 40.5,-12.5 - parent: 2 - - uid: 11966 - components: - - type: Transform - pos: 33.5,-15.5 - parent: 2 - - uid: 11985 - components: - - type: Transform - pos: 40.5,-3.5 - parent: 2 - - uid: 11987 - components: - - type: Transform - pos: 22.5,-52.5 - parent: 2 - - uid: 11991 - components: - - type: Transform - pos: 22.5,-53.5 - parent: 2 - - uid: 12032 - components: - - type: Transform - pos: 20.5,-55.5 - parent: 2 - - uid: 12040 - components: - - type: Transform - pos: 18.5,-54.5 - parent: 2 - - uid: 12063 - components: - - type: Transform - pos: 18.5,-52.5 - parent: 2 - - uid: 12074 - components: - - type: Transform - pos: 44.5,-8.5 - parent: 2 - - uid: 12116 - components: - - type: Transform - pos: 34.5,0.5 - parent: 2 - - uid: 12132 - components: - - type: Transform - pos: 7.5,-40.5 - parent: 2 - - uid: 12202 - components: - - type: Transform - pos: 46.5,-6.5 - parent: 2 - - uid: 12203 - components: - - type: Transform - pos: 43.5,-8.5 - parent: 2 - - uid: 12206 - components: - - type: Transform - pos: -35.5,-50.5 - parent: 2 - - uid: 12290 - components: - - type: Transform - pos: 46.5,-26.5 - parent: 2 - - uid: 12307 - components: - - type: Transform - pos: 47.5,-26.5 - parent: 2 - - uid: 12360 - components: - - type: Transform - pos: 54.5,-55.5 - parent: 2 - - uid: 12361 - components: - - type: Transform - pos: -35.5,-49.5 - parent: 2 - - uid: 12363 - components: - - type: Transform - pos: -35.5,-47.5 - parent: 2 - - uid: 12500 - components: - - type: Transform - pos: 49.5,-55.5 - parent: 2 - - uid: 12502 + - uid: 23435 components: - type: Transform pos: 49.5,-56.5 parent: 2 - - uid: 12541 + - uid: 23624 components: - type: Transform - pos: 6.5,-46.5 + pos: 45.5,-35.5 parent: 2 - - uid: 12551 +- proto: WallSolidRust + entities: + - uid: 311 components: - type: Transform - pos: 5.5,-43.5 + pos: -15.5,-28.5 parent: 2 - - uid: 12603 + - uid: 1027 components: - type: Transform - pos: 41.5,-52.5 + pos: 7.5,-40.5 parent: 2 - - uid: 12628 - components: - - type: Transform - pos: 29.5,24.5 - parent: 2 - - uid: 12722 - components: - - type: Transform - pos: -15.5,-26.5 - parent: 2 - - uid: 12735 - components: - - type: Transform - pos: 37.5,-0.5 - parent: 2 - - uid: 12751 - components: - - type: Transform - pos: 39.5,-0.5 - parent: 2 - - uid: 12771 - components: - - type: Transform - pos: 40.5,-0.5 - parent: 2 - - uid: 12825 - components: - - type: Transform - pos: 8.5,-55.5 - parent: 2 - - uid: 12853 - components: - - type: Transform - pos: 46.5,-3.5 - parent: 2 - - uid: 13191 - components: - - type: Transform - pos: 3.5,-43.5 - parent: 2 - - uid: 13199 - components: - - type: Transform - pos: 40.5,0.5 - parent: 2 - - uid: 13221 - components: - - type: Transform - pos: 50.5,-50.5 - parent: 2 - - uid: 13268 - components: - - type: Transform - pos: 34.5,5.5 - parent: 2 - - uid: 13274 - components: - - type: Transform - pos: 46.5,-9.5 - parent: 2 - - uid: 13287 - components: - - type: Transform - pos: 23.5,4.5 - parent: 2 - - uid: 13289 - components: - - type: Transform - pos: 25.5,-57.5 - parent: 2 - - uid: 13392 - components: - - type: Transform - pos: 22.5,9.5 - parent: 2 - - uid: 13397 - components: - - type: Transform - pos: 17.5,-0.5 - parent: 2 - - uid: 13401 - components: - - type: Transform - pos: 18.5,-0.5 - parent: 2 - - uid: 13404 - components: - - type: Transform - pos: 17.5,4.5 - parent: 2 - - uid: 13663 + - uid: 1045 components: - type: Transform pos: 17.5,3.5 parent: 2 - - uid: 13735 + - uid: 1053 components: - type: Transform - pos: 24.5,-1.5 + pos: -50.5,-50.5 parent: 2 - - uid: 13736 + - uid: 1104 components: - type: Transform - pos: 28.5,-1.5 + pos: -13.5,-29.5 parent: 2 - - uid: 13740 - components: - - type: Transform - pos: 24.5,4.5 - parent: 2 - - uid: 13762 - components: - - type: Transform - pos: 15.5,-7.5 - parent: 2 - - uid: 13779 - components: - - type: Transform - pos: 18.5,-5.5 - parent: 2 - - uid: 13782 - components: - - type: Transform - pos: 20.5,-5.5 - parent: 2 - - uid: 13783 - components: - - type: Transform - pos: 15.5,-3.5 - parent: 2 - - uid: 13794 - components: - - type: Transform - pos: -12.5,21.5 - parent: 2 - - uid: 13812 - components: - - type: Transform - pos: -11.5,21.5 - parent: 2 - - uid: 13892 - components: - - type: Transform - pos: 36.5,16.5 - parent: 2 - - uid: 14209 - components: - - type: Transform - pos: -19.5,21.5 - parent: 2 - - uid: 14247 - components: - - type: Transform - pos: -6.5,-19.5 - parent: 2 - - uid: 14348 - components: - - type: Transform - pos: 23.5,3.5 - parent: 2 - - uid: 14479 - components: - - type: Transform - pos: 47.5,-40.5 - parent: 2 - - uid: 14484 - components: - - type: Transform - pos: 46.5,-38.5 - parent: 2 - - uid: 14509 - components: - - type: Transform - pos: -1.5,-16.5 - parent: 2 - - uid: 14517 - components: - - type: Transform - pos: 45.5,-40.5 - parent: 2 - - uid: 14833 - components: - - type: Transform - pos: 23.5,-42.5 - parent: 2 - - uid: 15144 - components: - - type: Transform - pos: -10.5,-15.5 - parent: 2 - - uid: 15154 - components: - - type: Transform - pos: 23.5,-44.5 - parent: 2 - - uid: 15283 - components: - - type: Transform - pos: -10.5,-16.5 - parent: 2 - - uid: 15309 - components: - - type: Transform - pos: -18.5,21.5 - parent: 2 - - uid: 15352 - components: - - type: Transform - pos: -0.5,-16.5 - parent: 2 - - uid: 15462 - components: - - type: Transform - pos: 2.5,-30.5 - parent: 2 - - uid: 15466 - components: - - type: Transform - pos: 2.5,-29.5 - parent: 2 - - uid: 15486 - components: - - type: Transform - pos: -17.5,-26.5 - parent: 2 - - uid: 15606 - components: - - type: Transform - pos: 0.5,-45.5 - parent: 2 - - uid: 15663 - components: - - type: Transform - pos: -18.5,-26.5 - parent: 2 - - uid: 15665 - components: - - type: Transform - pos: -19.5,-26.5 - parent: 2 - - uid: 15732 - components: - - type: Transform - pos: 7.5,-26.5 - parent: 2 - - uid: 15878 - components: - - type: Transform - pos: 35.5,11.5 - parent: 2 - - uid: 15906 + - uid: 1245 components: - type: Transform pos: 17.5,9.5 parent: 2 - - uid: 15957 + - uid: 1432 components: - type: Transform - pos: -14.5,19.5 + pos: 8.5,-54.5 parent: 2 - - uid: 16162 + - uid: 1440 components: - type: Transform - pos: -14.5,-26.5 + pos: -5.5,-35.5 parent: 2 - - uid: 16704 + - uid: 1484 components: - type: Transform - pos: -41.5,-34.5 + pos: 26.5,14.5 parent: 2 - - uid: 16894 + - uid: 1530 components: - type: Transform - pos: -26.5,-23.5 + pos: 29.5,-19.5 parent: 2 - - uid: 16937 + - uid: 1663 components: - type: Transform - pos: -34.5,19.5 + pos: 39.5,10.5 parent: 2 - - uid: 17073 + - uid: 1783 components: - type: Transform - pos: 35.5,10.5 + pos: -51.5,-49.5 parent: 2 - - uid: 17120 + - uid: 2139 components: - type: Transform - pos: -29.5,-2.5 + pos: -16.5,-31.5 parent: 2 - - uid: 17166 + - uid: 2353 components: - type: Transform - pos: 44.5,-59.5 + pos: 30.5,23.5 parent: 2 - - uid: 17168 + - uid: 2610 components: - type: Transform - pos: 46.5,-59.5 + pos: -5.5,-16.5 parent: 2 - - uid: 17275 + - uid: 2756 components: - type: Transform - pos: 2.5,-33.5 + pos: -18.5,-31.5 parent: 2 - - uid: 17284 + - uid: 2805 components: - type: Transform - pos: -27.5,-6.5 + pos: -2.5,-88.5 parent: 2 - - uid: 17721 + - uid: 3016 components: - type: Transform - pos: 85.5,-20.5 + pos: -39.5,-53.5 parent: 2 - - uid: 18065 - components: - - type: Transform - pos: 34.5,16.5 - parent: 2 - - uid: 18190 - components: - - type: Transform - pos: 92.5,-20.5 - parent: 2 - - uid: 18425 - components: - - type: Transform - pos: 85.5,-17.5 - parent: 2 - - uid: 18426 - components: - - type: Transform - pos: 86.5,-17.5 - parent: 2 - - uid: 18433 - components: - - type: Transform - pos: 90.5,-25.5 - parent: 2 - - uid: 18439 - components: - - type: Transform - pos: 89.5,-22.5 - parent: 2 - - uid: 18442 - components: - - type: Transform - pos: 92.5,-30.5 - parent: 2 - - uid: 18459 - components: - - type: Transform - pos: 89.5,-28.5 - parent: 2 - - uid: 18552 - components: - - type: Transform - pos: -36.5,-34.5 - parent: 2 - - uid: 18622 + - uid: 3251 components: - type: Transform pos: -38.5,-34.5 parent: 2 - - uid: 18967 + - uid: 3282 components: - type: Transform - pos: 38.5,4.5 + pos: 47.5,-39.5 parent: 2 - - uid: 18970 - components: - - type: Transform - pos: 29.5,20.5 - parent: 2 - - uid: 18974 - components: - - type: Transform - pos: 39.5,4.5 - parent: 2 - - uid: 19257 - components: - - type: Transform - pos: 0.5,-42.5 - parent: 2 - - uid: 19260 - components: - - type: Transform - pos: -6.5,-45.5 - parent: 2 - - uid: 19266 - components: - - type: Transform - pos: -0.5,-46.5 - parent: 2 - - uid: 19274 - components: - - type: Transform - pos: 38.5,5.5 - parent: 2 - - uid: 19348 - components: - - type: Transform - pos: 66.5,-79.5 - parent: 2 - - uid: 19844 - components: - - type: Transform - pos: 67.5,-59.5 - parent: 2 - - uid: 19916 - components: - - type: Transform - pos: 0.5,-46.5 - parent: 2 - - uid: 19918 - components: - - type: Transform - pos: 12.5,-61.5 - parent: 2 - - uid: 19919 - components: - - type: Transform - pos: 12.5,-58.5 - parent: 2 - - uid: 19959 - components: - - type: Transform - pos: 69.5,-83.5 - parent: 2 - - uid: 20006 - components: - - type: Transform - pos: 69.5,-81.5 - parent: 2 - - uid: 20221 - components: - - type: Transform - pos: -5.5,-46.5 - parent: 2 - - uid: 20279 - components: - - type: Transform - pos: 20.5,-45.5 - parent: 2 - - uid: 20767 - components: - - type: Transform - pos: -41.5,-25.5 - parent: 2 - - uid: 21223 - components: - - type: Transform - pos: -46.5,-29.5 - parent: 2 - - uid: 21271 - components: - - type: Transform - pos: 37.5,16.5 - parent: 2 - - uid: 21297 - components: - - type: Transform - pos: -39.5,-25.5 - parent: 2 - - uid: 21311 - components: - - type: Transform - pos: -36.5,-25.5 - parent: 2 - - uid: 21312 - components: - - type: Transform - pos: -31.5,-23.5 - parent: 2 - - uid: 21314 - components: - - type: Transform - pos: -45.5,-33.5 - parent: 2 - - uid: 21389 - components: - - type: Transform - pos: -46.5,-34.5 - parent: 2 - - uid: 21395 - components: - - type: Transform - pos: -52.5,-31.5 - parent: 2 - - uid: 21438 - components: - - type: Transform - pos: 38.5,16.5 - parent: 2 - - uid: 21859 - components: - - type: Transform - pos: -24.5,21.5 - parent: 2 - - uid: 21963 - components: - - type: Transform - pos: 14.5,-11.5 - parent: 2 - - uid: 21968 - components: - - type: Transform - pos: 14.5,-9.5 - parent: 2 - - uid: 21996 - components: - - type: Transform - pos: 14.5,-10.5 - parent: 2 - - uid: 22022 - components: - - type: Transform - pos: 21.5,-45.5 - parent: 2 - - uid: 22054 - components: - - type: Transform - pos: -24.5,19.5 - parent: 2 - - uid: 22099 + - uid: 3298 components: - type: Transform pos: 34.5,-2.5 parent: 2 - - uid: 22102 + - uid: 3306 components: - type: Transform - pos: 35.5,-5.5 + pos: 6.5,-91.5 parent: 2 - - uid: 22103 + - uid: 3309 components: - type: Transform - pos: 38.5,7.5 + pos: 49.5,-35.5 parent: 2 - - uid: 22104 + - uid: 3341 components: - type: Transform - pos: 29.5,-5.5 + pos: -11.5,-25.5 parent: 2 - - uid: 22105 + - uid: 3447 components: - type: Transform - pos: 34.5,-7.5 + pos: 43.5,-55.5 parent: 2 - - uid: 22108 + - uid: 3504 components: - type: Transform - pos: 37.5,7.5 + pos: 46.5,-7.5 parent: 2 - - uid: 22109 + - uid: 3965 components: - type: Transform - pos: 34.5,-6.5 + pos: 4.5,-32.5 parent: 2 - - uid: 22110 + - uid: 4182 + components: + - type: Transform + pos: -41.5,-22.5 + parent: 2 + - uid: 4269 + components: + - type: Transform + pos: -38.5,-56.5 + parent: 2 + - uid: 4346 + components: + - type: Transform + pos: -24.5,-54.5 + parent: 2 + - uid: 4544 + components: + - type: Transform + pos: 19.5,-1.5 + parent: 2 + - uid: 4719 + components: + - type: Transform + pos: 9.5,-91.5 + parent: 2 + - uid: 4749 + components: + - type: Transform + pos: -23.5,-2.5 + parent: 2 + - uid: 4811 + components: + - type: Transform + pos: -39.5,-43.5 + parent: 2 + - uid: 4974 + components: + - type: Transform + pos: -52.5,-56.5 + parent: 2 + - uid: 5114 + components: + - type: Transform + pos: 25.5,-57.5 + parent: 2 + - uid: 5176 + components: + - type: Transform + pos: 8.5,-58.5 + parent: 2 + - uid: 5290 + components: + - type: Transform + pos: 11.5,-2.5 + parent: 2 + - uid: 5331 + components: + - type: Transform + pos: -6.5,-6.5 + parent: 2 + - uid: 5378 + components: + - type: Transform + pos: 66.5,-79.5 + parent: 2 + - uid: 5493 + components: + - type: Transform + pos: 40.5,0.5 + parent: 2 + - uid: 5512 + components: + - type: Transform + pos: 38.5,13.5 + parent: 2 + - uid: 5539 + components: + - type: Transform + pos: 46.5,-6.5 + parent: 2 + - uid: 5548 + components: + - type: Transform + pos: 20.5,-51.5 + parent: 2 + - uid: 5569 + components: + - type: Transform + pos: 34.5,5.5 + parent: 2 + - uid: 5636 + components: + - type: Transform + pos: -18.5,-49.5 + parent: 2 + - uid: 5736 + components: + - type: Transform + pos: -6.5,-91.5 + parent: 2 + - uid: 5754 + components: + - type: Transform + pos: 39.5,-39.5 + parent: 2 + - uid: 5806 + components: + - type: Transform + pos: 13.5,17.5 + parent: 2 + - uid: 12568 + components: + - type: Transform + pos: -5.5,-46.5 + parent: 2 + - uid: 12569 + components: + - type: Transform + pos: 17.5,-11.5 + parent: 2 + - uid: 12570 + components: + - type: Transform + pos: 61.5,-76.5 + parent: 2 + - uid: 12573 + components: + - type: Transform + pos: -40.5,-22.5 + parent: 2 + - uid: 12582 + components: + - type: Transform + pos: 40.5,3.5 + parent: 2 + - uid: 12601 + components: + - type: Transform + pos: 20.5,-58.5 + parent: 2 + - uid: 12603 + components: + - type: Transform + pos: -39.5,-56.5 + parent: 2 + - uid: 12616 + components: + - type: Transform + pos: 42.5,-38.5 + parent: 2 + - uid: 12617 + components: + - type: Transform + pos: 34.5,8.5 + parent: 2 + - uid: 12618 + components: + - type: Transform + pos: -47.5,-49.5 + parent: 2 + - uid: 12621 + components: + - type: Transform + pos: -12.5,-30.5 + parent: 2 + - uid: 12622 + components: + - type: Transform + pos: 2.5,-34.5 + parent: 2 + - uid: 12624 + components: + - type: Transform + pos: 69.5,-79.5 + parent: 2 + - uid: 12625 + components: + - type: Transform + pos: 49.5,-58.5 + parent: 2 + - uid: 12628 + components: + - type: Transform + pos: -0.5,-5.5 + parent: 2 + - uid: 12637 + components: + - type: Transform + pos: 18.5,-51.5 + parent: 2 + - uid: 12648 + components: + - type: Transform + pos: 40.5,-4.5 + parent: 2 + - uid: 12653 + components: + - type: Transform + pos: -50.5,-56.5 + parent: 2 + - uid: 12655 components: - type: Transform pos: 29.5,-1.5 parent: 2 - - uid: 22115 + - uid: 12656 + components: + - type: Transform + pos: -12.5,21.5 + parent: 2 + - uid: 12689 + components: + - type: Transform + pos: -11.5,-5.5 + parent: 2 + - uid: 12690 + components: + - type: Transform + pos: 33.5,-5.5 + parent: 2 + - uid: 12691 + components: + - type: Transform + pos: 29.5,24.5 + parent: 2 + - uid: 12692 + components: + - type: Transform + pos: 63.5,-76.5 + parent: 2 + - uid: 12693 + components: + - type: Transform + pos: 25.5,-19.5 + parent: 2 + - uid: 12705 + components: + - type: Transform + pos: -5.5,-91.5 + parent: 2 + - uid: 12717 + components: + - type: Transform + pos: 92.5,-30.5 + parent: 2 + - uid: 12722 + components: + - type: Transform + pos: -26.5,-49.5 + parent: 2 + - uid: 12724 + components: + - type: Transform + pos: 48.5,-14.5 + parent: 2 + - uid: 12726 + components: + - type: Transform + pos: 31.5,-28.5 + parent: 2 + - uid: 12734 + components: + - type: Transform + pos: 22.5,-52.5 + parent: 2 + - uid: 12735 + components: + - type: Transform + pos: 24.5,-16.5 + parent: 2 + - uid: 12751 + components: + - type: Transform + pos: -10.5,-14.5 + parent: 2 + - uid: 12770 + components: + - type: Transform + pos: -28.5,1.5 + parent: 2 + - uid: 12771 + components: + - type: Transform + pos: 33.5,-16.5 + parent: 2 + - uid: 12772 + components: + - type: Transform + pos: 22.5,-51.5 + parent: 2 + - uid: 12775 + components: + - type: Transform + pos: 11.5,-90.5 + parent: 2 + - uid: 12780 + components: + - type: Transform + pos: 23.5,-2.5 + parent: 2 + - uid: 12784 + components: + - type: Transform + pos: -20.5,-28.5 + parent: 2 + - uid: 12790 + components: + - type: Transform + pos: 47.5,-10.5 + parent: 2 + - uid: 12799 + components: + - type: Transform + pos: -40.5,-25.5 + parent: 2 + - uid: 12800 + components: + - type: Transform + pos: 10.5,-90.5 + parent: 2 + - uid: 12801 + components: + - type: Transform + pos: -21.5,-30.5 + parent: 2 + - uid: 12804 + components: + - type: Transform + pos: -23.5,-6.5 + parent: 2 + - uid: 12806 + components: + - type: Transform + pos: 66.5,-73.5 + parent: 2 + - uid: 12807 + components: + - type: Transform + pos: 44.5,-31.5 + parent: 2 + - uid: 12809 + components: + - type: Transform + pos: 37.5,7.5 + parent: 2 + - uid: 12810 + components: + - type: Transform + pos: -23.5,-54.5 + parent: 2 + - uid: 12811 + components: + - type: Transform + pos: 2.5,-33.5 + parent: 2 + - uid: 12812 + components: + - type: Transform + pos: 13.5,-12.5 + parent: 2 + - uid: 12813 + components: + - type: Transform + pos: 94.5,-20.5 + parent: 2 + - uid: 12825 + components: + - type: Transform + pos: 37.5,-39.5 + parent: 2 + - uid: 12846 + components: + - type: Transform + pos: -51.5,-47.5 + parent: 2 + - uid: 12848 + components: + - type: Transform + pos: 31.5,-26.5 + parent: 2 + - uid: 12853 + components: + - type: Transform + pos: -46.5,-34.5 + parent: 2 + - uid: 12858 + components: + - type: Transform + pos: 85.5,-17.5 + parent: 2 + - uid: 12859 + components: + - type: Transform + pos: 40.5,-3.5 + parent: 2 + - uid: 12902 + components: + - type: Transform + pos: -6.5,-16.5 + parent: 2 + - uid: 12921 + components: + - type: Transform + pos: 47.5,-23.5 + parent: 2 + - uid: 12982 + components: + - type: Transform + pos: 2.5,-29.5 + parent: 2 + - uid: 13027 + components: + - type: Transform + pos: 19.5,-34.5 + parent: 2 + - uid: 13057 + components: + - type: Transform + pos: -44.5,-52.5 + parent: 2 + - uid: 13123 + components: + - type: Transform + pos: 69.5,-67.5 + parent: 2 + - uid: 13124 + components: + - type: Transform + pos: 2.5,-30.5 + parent: 2 + - uid: 13132 + components: + - type: Transform + pos: 26.5,-57.5 + parent: 2 + - uid: 13141 + components: + - type: Transform + pos: 24.5,4.5 + parent: 2 + - uid: 13157 + components: + - type: Transform + pos: -18.5,-28.5 + parent: 2 + - uid: 13167 + components: + - type: Transform + pos: 19.5,-2.5 + parent: 2 + - uid: 13191 + components: + - type: Transform + pos: 47.5,-50.5 + parent: 2 + - uid: 13195 + components: + - type: Transform + pos: 69.5,-83.5 + parent: 2 + - uid: 13199 + components: + - type: Transform + pos: 43.5,-38.5 + parent: 2 + - uid: 13209 + components: + - type: Transform + pos: -40.5,-38.5 + parent: 2 + - uid: 13211 + components: + - type: Transform + pos: 25.5,-15.5 + parent: 2 + - uid: 13219 + components: + - type: Transform + pos: 19.5,-37.5 + parent: 2 + - uid: 13221 + components: + - type: Transform + pos: -12.5,20.5 + parent: 2 + - uid: 13223 + components: + - type: Transform + pos: 30.5,-45.5 + parent: 2 + - uid: 13224 + components: + - type: Transform + pos: -21.5,-26.5 + parent: 2 + - uid: 13225 + components: + - type: Transform + pos: 14.5,-54.5 + parent: 2 + - uid: 13227 + components: + - type: Transform + pos: 72.5,-75.5 + parent: 2 + - uid: 13229 + components: + - type: Transform + pos: 22.5,-14.5 + parent: 2 + - uid: 13250 + components: + - type: Transform + pos: 17.5,1.5 + parent: 2 + - uid: 13252 + components: + - type: Transform + pos: 2.5,-31.5 + parent: 2 + - uid: 13257 + components: + - type: Transform + pos: 29.5,-15.5 + parent: 2 + - uid: 13268 + components: + - type: Transform + pos: 74.5,-75.5 + parent: 2 + - uid: 13269 + components: + - type: Transform + pos: -39.5,-46.5 + parent: 2 + - uid: 13273 + components: + - type: Transform + pos: 8.5,-35.5 + parent: 2 + - uid: 13274 + components: + - type: Transform + pos: -5.5,-92.5 + parent: 2 + - uid: 13279 + components: + - type: Transform + pos: 66.5,-42.5 + parent: 2 + - uid: 13281 + components: + - type: Transform + pos: 46.5,-4.5 + parent: 2 + - uid: 13287 + components: + - type: Transform + pos: -20.5,-21.5 + parent: 2 + - uid: 13289 + components: + - type: Transform + pos: 17.5,-57.5 + parent: 2 + - uid: 13292 + components: + - type: Transform + pos: 39.5,-10.5 + parent: 2 + - uid: 13296 + components: + - type: Transform + pos: 89.5,-22.5 + parent: 2 + - uid: 13306 + components: + - type: Transform + pos: 67.5,-59.5 + parent: 2 + - uid: 13364 + components: + - type: Transform + pos: -16.5,18.5 + parent: 2 + - uid: 13391 + components: + - type: Transform + pos: -11.5,-16.5 + parent: 2 + - uid: 13392 + components: + - type: Transform + pos: 5.5,-46.5 + parent: 2 + - uid: 13395 + components: + - type: Transform + pos: 27.5,14.5 + parent: 2 + - uid: 13397 + components: + - type: Transform + pos: 40.5,10.5 + parent: 2 + - uid: 13401 + components: + - type: Transform + pos: 41.5,-54.5 + parent: 2 + - uid: 13404 + components: + - type: Transform + pos: 33.5,-10.5 + parent: 2 + - uid: 13407 + components: + - type: Transform + pos: -10.5,18.5 + parent: 2 + - uid: 13408 + components: + - type: Transform + pos: -14.5,-39.5 + parent: 2 + - uid: 13409 + components: + - type: Transform + pos: 5.5,-89.5 + parent: 2 + - uid: 13469 + components: + - type: Transform + pos: -10.5,-33.5 + parent: 2 + - uid: 13531 + components: + - type: Transform + pos: 45.5,-40.5 + parent: 2 + - uid: 13540 components: - type: Transform pos: 29.5,-11.5 parent: 2 - - uid: 22116 + - uid: 13663 components: - type: Transform - pos: 28.5,-12.5 + pos: -12.5,19.5 parent: 2 - - uid: 22994 + - uid: 13667 components: - type: Transform - pos: -25.5,21.5 + pos: 16.5,-46.5 + parent: 2 + - uid: 13668 + components: + - type: Transform + pos: 42.5,-5.5 + parent: 2 + - uid: 13669 + components: + - type: Transform + pos: 30.5,16.5 + parent: 2 + - uid: 13671 + components: + - type: Transform + pos: -47.5,-50.5 + parent: 2 + - uid: 13674 + components: + - type: Transform + pos: 27.5,-15.5 + parent: 2 + - uid: 13691 + components: + - type: Transform + pos: 44.5,-34.5 + parent: 2 + - uid: 13693 + components: + - type: Transform + pos: -35.5,-56.5 + parent: 2 + - uid: 13704 + components: + - type: Transform + pos: 20.5,-57.5 + parent: 2 + - uid: 13706 + components: + - type: Transform + pos: 71.5,-67.5 + parent: 2 + - uid: 13723 + components: + - type: Transform + pos: 49.5,-41.5 + parent: 2 + - uid: 13724 + components: + - type: Transform + pos: 12.5,-34.5 + parent: 2 + - uid: 13725 + components: + - type: Transform + pos: 2.5,21.5 + parent: 2 + - uid: 13735 + components: + - type: Transform + pos: -17.5,-44.5 + parent: 2 + - uid: 13736 + components: + - type: Transform + pos: 25.5,9.5 + parent: 2 + - uid: 13738 + components: + - type: Transform + pos: 29.5,-5.5 + parent: 2 + - uid: 13740 + components: + - type: Transform + pos: -28.5,3.5 + parent: 2 + - uid: 13747 + components: + - type: Transform + pos: -34.5,15.5 + parent: 2 + - uid: 13758 + components: + - type: Transform + pos: 14.5,-8.5 + parent: 2 + - uid: 13762 + components: + - type: Transform + pos: 39.5,-2.5 + parent: 2 + - uid: 13764 + components: + - type: Transform + pos: -27.5,1.5 + parent: 2 + - uid: 13765 + components: + - type: Transform + pos: 29.5,3.5 + parent: 2 + - uid: 13773 + components: + - type: Transform + pos: -12.5,-49.5 + parent: 2 + - uid: 13779 + components: + - type: Transform + pos: 1.5,-30.5 + parent: 2 + - uid: 13782 + components: + - type: Transform + pos: 54.5,-52.5 + parent: 2 + - uid: 13783 + components: + - type: Transform + pos: 30.5,-39.5 + parent: 2 + - uid: 13794 + components: + - type: Transform + pos: -14.5,21.5 + parent: 2 + - uid: 13812 + components: + - type: Transform + pos: 49.5,-26.5 + parent: 2 + - uid: 13813 + components: + - type: Transform + pos: 22.5,-45.5 + parent: 2 + - uid: 13866 + components: + - type: Transform + pos: -12.5,-29.5 + parent: 2 + - uid: 13867 + components: + - type: Transform + pos: 19.5,-38.5 + parent: 2 + - uid: 13880 + components: + - type: Transform + pos: -21.5,-35.5 + parent: 2 + - uid: 13882 + components: + - type: Transform + pos: 24.5,9.5 + parent: 2 + - uid: 13883 + components: + - type: Transform + pos: 7.5,-46.5 + parent: 2 + - uid: 13887 + components: + - type: Transform + pos: 12.5,-58.5 + parent: 2 + - uid: 13890 + components: + - type: Transform + pos: -22.5,-6.5 + parent: 2 + - uid: 13892 + components: + - type: Transform + pos: -41.5,-24.5 + parent: 2 + - uid: 13897 + components: + - type: Transform + pos: -35.5,-49.5 + parent: 2 + - uid: 13900 + components: + - type: Transform + pos: 2.5,-46.5 + parent: 2 + - uid: 13901 + components: + - type: Transform + pos: -45.5,-33.5 + parent: 2 + - uid: 13903 + components: + - type: Transform + pos: 22.5,-54.5 + parent: 2 + - uid: 13904 + components: + - type: Transform + pos: 12.5,-54.5 + parent: 2 + - uid: 13906 + components: + - type: Transform + pos: 12.5,-35.5 + parent: 2 + - uid: 13907 + components: + - type: Transform + pos: -22.5,-2.5 + parent: 2 + - uid: 13908 + components: + - type: Transform + pos: 7.5,-26.5 + parent: 2 + - uid: 13912 + components: + - type: Transform + pos: -18.5,21.5 + parent: 2 + - uid: 13914 + components: + - type: Transform + pos: -25.5,-49.5 + parent: 2 + - uid: 13917 + components: + - type: Transform + pos: 22.5,-18.5 + parent: 2 + - uid: 13922 + components: + - type: Transform + pos: -2.5,-96.5 + parent: 2 + - uid: 13975 + components: + - type: Transform + pos: 46.5,-10.5 + parent: 2 + - uid: 14094 + components: + - type: Transform + pos: 40.5,-12.5 + parent: 2 + - uid: 14095 + components: + - type: Transform + pos: 10.5,-91.5 + parent: 2 + - uid: 14098 + components: + - type: Transform + pos: 26.5,-40.5 + parent: 2 + - uid: 14099 + components: + - type: Transform + pos: 23.5,-58.5 + parent: 2 + - uid: 14100 + components: + - type: Transform + pos: -20.5,-35.5 + parent: 2 + - uid: 14101 + components: + - type: Transform + pos: 20.5,-12.5 + parent: 2 + - uid: 14102 + components: + - type: Transform + pos: 12.5,-37.5 + parent: 2 + - uid: 14104 + components: + - type: Transform + pos: -10.5,-0.5 + parent: 2 + - uid: 14131 + components: + - type: Transform + pos: 44.5,-27.5 + parent: 2 + - uid: 14132 + components: + - type: Transform + pos: 39.5,-0.5 + parent: 2 + - uid: 14133 + components: + - type: Transform + pos: 16.5,-48.5 + parent: 2 + - uid: 14137 + components: + - type: Transform + pos: 34.5,-1.5 + parent: 2 + - uid: 14150 + components: + - type: Transform + pos: -2.5,-97.5 + parent: 2 + - uid: 14151 + components: + - type: Transform + pos: -52.5,-31.5 + parent: 2 + - uid: 14179 + components: + - type: Transform + pos: -47.5,-55.5 + parent: 2 + - uid: 14181 + components: + - type: Transform + pos: 35.5,-5.5 + parent: 2 + - uid: 14190 + components: + - type: Transform + pos: 13.5,18.5 + parent: 2 + - uid: 14209 + components: + - type: Transform + pos: 49.5,-40.5 + parent: 2 + - uid: 14247 + components: + - type: Transform + pos: -6.5,-9.5 + parent: 2 + - uid: 14263 + components: + - type: Transform + pos: 35.5,16.5 + parent: 2 + - uid: 14276 + components: + - type: Transform + pos: 47.5,-31.5 + parent: 2 + - uid: 14279 + components: + - type: Transform + pos: -21.5,-51.5 + parent: 2 + - uid: 14280 + components: + - type: Transform + pos: 18.5,-1.5 + parent: 2 + - uid: 14314 + components: + - type: Transform + pos: 92.5,-21.5 + parent: 2 + - uid: 14334 + components: + - type: Transform + pos: 44.5,-35.5 + parent: 2 + - uid: 14348 + components: + - type: Transform + pos: -10.5,-5.5 + parent: 2 + - uid: 14365 + components: + - type: Transform + pos: -13.5,-37.5 + parent: 2 + - uid: 14379 + components: + - type: Transform + pos: -0.5,-16.5 + parent: 2 + - uid: 14386 + components: + - type: Transform + pos: 86.5,-18.5 + parent: 2 + - uid: 14399 + components: + - type: Transform + pos: 9.5,21.5 + parent: 2 + - uid: 14413 + components: + - type: Transform + pos: 33.5,-15.5 + parent: 2 + - uid: 14456 + components: + - type: Transform + pos: 29.5,-0.5 + parent: 2 + - uid: 14477 + components: + - type: Transform + pos: 38.5,-0.5 + parent: 2 + - uid: 14479 + components: + - type: Transform + pos: 39.5,-12.5 + parent: 2 + - uid: 14481 + components: + - type: Transform + pos: 5.5,-88.5 + parent: 2 + - uid: 14484 + components: + - type: Transform + pos: 23.5,-39.5 + parent: 2 + - uid: 14496 + components: + - type: Transform + pos: 5.5,-35.5 + parent: 2 + - uid: 14501 + components: + - type: Transform + pos: 69.5,-80.5 + parent: 2 + - uid: 14503 + components: + - type: Transform + pos: 23.5,3.5 + parent: 2 + - uid: 14509 + components: + - type: Transform + pos: -14.5,19.5 + parent: 2 + - uid: 14510 + components: + - type: Transform + pos: -21.5,-25.5 + parent: 2 + - uid: 14514 + components: + - type: Transform + pos: 49.5,-42.5 + parent: 2 + - uid: 14517 + components: + - type: Transform + pos: 35.5,15.5 + parent: 2 + - uid: 14525 + components: + - type: Transform + pos: 16.5,-50.5 + parent: 2 + - uid: 14543 + components: + - type: Transform + pos: 18.5,-53.5 + parent: 2 + - uid: 14715 + components: + - type: Transform + pos: -46.5,-33.5 + parent: 2 + - uid: 14744 + components: + - type: Transform + pos: 19.5,-12.5 + parent: 2 + - uid: 14773 + components: + - type: Transform + pos: 6.5,-35.5 + parent: 2 + - uid: 14787 + components: + - type: Transform + pos: 22.5,-50.5 + parent: 2 + - uid: 14792 + components: + - type: Transform + pos: 10.5,22.5 + parent: 2 + - uid: 14811 + components: + - type: Transform + pos: 66.5,-74.5 + parent: 2 + - uid: 14816 + components: + - type: Transform + pos: 16.5,-45.5 + parent: 2 + - uid: 14825 + components: + - type: Transform + pos: -50.5,-51.5 + parent: 2 + - uid: 14833 + components: + - type: Transform + pos: 64.5,-78.5 + parent: 2 + - uid: 14836 + components: + - type: Transform + pos: 73.5,-75.5 + parent: 2 + - uid: 14853 + components: + - type: Transform + pos: 22.5,-1.5 + parent: 2 + - uid: 14906 + components: + - type: Transform + pos: 39.5,-1.5 + parent: 2 + - uid: 14908 + components: + - type: Transform + pos: 6.5,-37.5 + parent: 2 + - uid: 15900 + components: + - type: Transform + pos: 70.5,-78.5 + parent: 2 + - uid: 15944 + components: + - type: Transform + pos: -44.5,-54.5 + parent: 2 + - uid: 15959 + components: + - type: Transform + pos: 39.5,-14.5 + parent: 2 + - uid: 15971 + components: + - type: Transform + pos: 15.5,-7.5 + parent: 2 + - uid: 15998 + components: + - type: Transform + pos: 12.5,-52.5 + parent: 2 + - uid: 16827 + components: + - type: Transform + pos: 29.5,0.5 + parent: 2 + - uid: 16995 + components: + - type: Transform + pos: -13.5,-9.5 + parent: 2 + - uid: 18070 + components: + - type: Transform + pos: -29.5,-6.5 + parent: 2 + - uid: 18388 + components: + - type: Transform + pos: -13.5,-35.5 + parent: 2 + - uid: 18516 + components: + - type: Transform + pos: 22.5,-48.5 + parent: 2 + - uid: 18724 + components: + - type: Transform + pos: 1.5,21.5 + parent: 2 + - uid: 19240 + components: + - type: Transform + pos: 26.5,9.5 + parent: 2 + - uid: 19245 + components: + - type: Transform + pos: 35.5,-0.5 + parent: 2 + - uid: 19261 + components: + - type: Transform + pos: 35.5,12.5 + parent: 2 + - uid: 19348 + components: + - type: Transform + pos: -10.5,-35.5 + parent: 2 + - uid: 19626 + components: + - type: Transform + pos: 39.5,7.5 + parent: 2 + - uid: 20122 + components: + - type: Transform + pos: 44.5,-9.5 + parent: 2 + - uid: 20166 + components: + - type: Transform + pos: 16.5,-52.5 + parent: 2 + - uid: 21363 + components: + - type: Transform + pos: -45.5,-49.5 + parent: 2 + - uid: 21438 + components: + - type: Transform + pos: 5.5,-26.5 + parent: 2 + - uid: 22016 + components: + - type: Transform + pos: 34.5,-7.5 + parent: 2 + - uid: 22101 + components: + - type: Transform + pos: -21.5,-52.5 + parent: 2 + - uid: 22102 + components: + - type: Transform + pos: -21.5,-39.5 + parent: 2 + - uid: 22108 + components: + - type: Transform + pos: 13.5,-50.5 + parent: 2 + - uid: 23607 + components: + - type: Transform + pos: 92.5,-20.5 parent: 2 - proto: WardrobeAtmosphericsFilled entities: @@ -151242,13 +152292,6 @@ entities: - type: Transform pos: 32.5,-24.5 parent: 2 -- proto: WardrobeScienceFilled - entities: - - uid: 11343 - components: - - type: Transform - pos: 32.5,-29.5 - parent: 2 - proto: WardrobeYellowFilled entities: - uid: 2311 @@ -151725,7 +152768,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7609: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 12433 components: - type: Transform @@ -151960,7 +153004,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7610: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureJanitorLocked entities: - uid: 5537 @@ -152315,6 +153360,11 @@ entities: - type: Transform pos: 20.5,-41.5 parent: 2 + - uid: 23124 + components: + - type: Transform + pos: -0.5,-41.5 + parent: 2 - proto: WindowDirectional entities: - uid: 339 diff --git a/Resources/Maps/bagel.yml b/Resources/Maps/bagel.yml index 2ac538e80f..7b74ac605f 100644 --- a/Resources/Maps/bagel.yml +++ b/Resources/Maps/bagel.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 250.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/27/2025 06:48:27 - entityCount: 25710 + time: 04/19/2025 10:44:14 + entityCount: 25722 maps: - 943 grids: @@ -11586,7 +11586,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18404: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 18404 components: - type: MetaData @@ -11597,7 +11598,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18403: - - DoorStatus: Close + - - DoorStatus + - Close - proto: AirlockCommandLocked entities: - uid: 5803 @@ -11630,7 +11632,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18076: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 18125 components: - type: MetaData @@ -11700,7 +11703,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5859: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 15490 components: - type: MetaData @@ -11860,7 +11864,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13627: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13627 components: - type: Transform @@ -11871,7 +11876,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12194: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 97 @@ -11936,7 +11942,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4889: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 5085 components: - type: Transform @@ -11967,7 +11974,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6673: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5406 components: - type: Transform @@ -12012,7 +12020,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7332: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7345 components: - type: Transform @@ -12055,7 +12064,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12706: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12706 components: - type: Transform @@ -12064,7 +12074,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8358: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13183 components: - type: Transform @@ -12085,7 +12096,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3335: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3335 components: - type: Transform @@ -12094,7 +12106,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3334: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5497 components: - type: Transform @@ -12103,7 +12116,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7692: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7692 components: - type: Transform @@ -12112,7 +12126,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5497: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15525 components: - type: MetaData @@ -12142,7 +12157,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25540: - - DoorStatus: InputB + - - DoorStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 16412 @@ -12153,7 +12169,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25540: - - DoorStatus: InputA + - - DoorStatus + - InputA - type: DeviceLinkSink invokeCounter: 1 - uid: 16422 @@ -12166,7 +12183,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25541: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 16432 components: - type: Transform @@ -12177,7 +12195,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25541: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 16435 components: - type: Transform @@ -12188,7 +12207,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25538: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 16439 components: - type: Transform @@ -12199,7 +12219,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25538: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 16454 components: - type: Transform @@ -12210,7 +12231,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25536: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 16508 components: - type: Transform @@ -12221,7 +12243,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25536: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 17481 components: - type: Transform @@ -12230,7 +12253,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17490: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17490 components: - type: Transform @@ -12239,7 +12263,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17481: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20107 components: - type: Transform @@ -12248,7 +12273,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20108: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20108 components: - type: Transform @@ -12257,7 +12283,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20107: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20550 components: - type: Transform @@ -12278,7 +12305,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3080: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3080 components: - type: Transform @@ -12287,7 +12315,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3071: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4595 components: - type: Transform @@ -12296,7 +12325,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4596: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4596 components: - type: Transform @@ -12305,7 +12335,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4595: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6673 components: - type: Transform @@ -12314,7 +12345,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5312: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7362 components: - type: Transform @@ -12325,7 +12357,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7364: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 8522 components: - type: Transform @@ -12334,7 +12367,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3900: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10940 components: - type: Transform @@ -12343,7 +12377,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10942: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10942 components: - type: Transform @@ -12352,7 +12387,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10940: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12842 components: - type: Transform @@ -12361,7 +12397,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12584: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19087 components: - type: Transform @@ -12372,7 +12409,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25634: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21235 components: - type: Transform @@ -12381,7 +12419,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21236: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21236 components: - type: Transform @@ -12390,7 +12429,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21235: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22426 components: - type: Transform @@ -12399,9 +12439,11 @@ entities: - type: DeviceLinkSource linkedPorts: 22428: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 22429: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22427 components: - type: Transform @@ -12410,9 +12452,11 @@ entities: - type: DeviceLinkSource linkedPorts: 22429: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 22428: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22428 components: - type: Transform @@ -12421,9 +12465,11 @@ entities: - type: DeviceLinkSource linkedPorts: 22427: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 22426: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22429 components: - type: Transform @@ -12432,9 +12478,11 @@ entities: - type: DeviceLinkSource linkedPorts: 22427: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 22426: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24098 components: - type: Transform @@ -12445,7 +12493,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1435: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 25634 components: - type: Transform @@ -12457,7 +12506,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19087: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 5137 @@ -12564,7 +12614,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4890: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 5405 @@ -12607,7 +12658,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7362: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 7525 @@ -12669,7 +12721,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24098: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2167 components: - type: Transform @@ -12680,7 +12733,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2418: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2418 components: - type: Transform @@ -12691,7 +12745,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2167: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3900 components: - type: Transform @@ -12700,7 +12755,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8522: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11630 components: - type: Transform @@ -12709,7 +12765,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11631: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11631 components: - type: Transform @@ -12718,7 +12775,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11630: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 18076 components: - type: Transform @@ -12727,7 +12785,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18033: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalShuttleSyndicateLocked entities: - uid: 8065 @@ -13990,7 +14049,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7316: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt lastSignals: DoorStatus: False DockStatus: True @@ -14005,7 +14065,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12842: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockSyndicateGlassLocked entities: - uid: 5333 @@ -14077,7 +14138,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2970: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2970 components: - type: Transform @@ -14086,7 +14148,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2963: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirSensor entities: - uid: 109 @@ -17736,9 +17799,12 @@ entities: - type: DeviceLinkSource linkedPorts: 1483: - - Start: Close - - Timer: Open - - Timer: AutoClose + - - Start + - Close + - - Timer + - Open + - - Timer + - AutoClose - uid: 1853 components: - type: MetaData @@ -17750,9 +17816,12 @@ entities: - type: DeviceLinkSource linkedPorts: 1548: - - Start: Close - - Timer: Open - - Timer: AutoClose + - - Start + - Close + - - Timer + - Open + - - Timer + - AutoClose - uid: 9058 components: - type: MetaData @@ -17764,9 +17833,12 @@ entities: - type: DeviceLinkSource linkedPorts: 1555: - - Start: Close - - Timer: Open - - Timer: AutoClose + - - Start + - Close + - - Timer + - Open + - - Timer + - AutoClose - uid: 9158 components: - type: MetaData @@ -17778,9 +17850,12 @@ entities: - type: DeviceLinkSource linkedPorts: 1487: - - Start: Close - - Timer: Open - - Timer: AutoClose + - - Start + - Close + - - Timer + - Open + - - Timer + - AutoClose - proto: BrokenBottle entities: - uid: 23662 @@ -61951,29 +62026,11 @@ entities: - type: Transform pos: -1.5,33.5 parent: 60 - - uid: 17154 + - uid: 22139 components: - type: Transform - pos: -51.5,-4.5 + pos: -53.5,4.5 parent: 60 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.1496 - moles: - - 1.6495836 - - 6.2055764 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - uid: 23417 components: - type: Transform @@ -63983,7 +64040,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9442: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - uid: 24680 components: - type: Transform @@ -63992,7 +64050,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9570: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 13949 @@ -64048,6 +64107,44 @@ entities: - type: Transform pos: 43.5,10.5 parent: 60 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 1921 + components: + - type: Transform + pos: -1.5,21.5 + parent: 60 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 22116 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 47.5,-10.5 + parent: 60 +- proto: ComputerCargoOrdersScience + entities: + - uid: 7070 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -45.5,-9.5 + parent: 60 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 9618 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -28.5,-6.5 + parent: 60 +- proto: ComputerCargoOrdersService + entities: + - uid: 9591 + components: + - type: Transform + pos: 21.5,-26.5 + parent: 60 - proto: ComputerCargoShuttle entities: - uid: 21024 @@ -64165,6 +64262,14 @@ entities: rot: 1.5707963267948966 rad pos: -64.5,46.5 parent: 60 +- proto: ComputerFundingAllocation + entities: + - uid: 278 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 3.5,-30.5 + parent: 60 - proto: ComputerId entities: - uid: 1378 @@ -65324,6 +65429,46 @@ entities: - type: Transform pos: 33.5,-37.5 parent: 60 +- proto: CrateLockBoxEngineering + entities: + - uid: 22134 + components: + - type: Transform + pos: 4.5,17.5 + parent: 60 +- proto: CrateLockBoxMedical + entities: + - uid: 22133 + components: + - type: Transform + pos: 49.5,-20.5 + parent: 60 +- proto: CrateLockBoxScience + entities: + - uid: 22135 + components: + - type: Transform + pos: -49.5,-4.5 + parent: 60 +- proto: CrateLockBoxSecurity + entities: + - uid: 22136 + components: + - type: Transform + pos: -31.5,-16.5 + parent: 60 +- proto: CrateLockBoxService + entities: + - uid: 22137 + components: + - type: Transform + pos: 13.5,-39.5 + parent: 60 + - uid: 22138 + components: + - type: Transform + pos: 34.5,-41.5 + parent: 60 - proto: CrateMaterialSteel entities: - uid: 16243 @@ -72377,16 +72522,16 @@ entities: - type: Transform pos: -49.5,-15.5 parent: 60 - - uid: 4359 - components: - - type: Transform - pos: 3.5,-30.5 - parent: 60 - uid: 5297 components: - type: Transform pos: -22.5,-29.5 parent: 60 + - uid: 10369 + components: + - type: Transform + pos: 3.5,-28.5 + parent: 60 - proto: filingCabinetTallRandom entities: - uid: 134 @@ -114087,21 +114232,29 @@ entities: - type: DeviceLinkSource linkedPorts: 21783: - - Pressed: Toggle + - - Pressed + - Toggle 21784: - - Pressed: Toggle + - - Pressed + - Toggle 21785: - - Pressed: Toggle + - - Pressed + - Toggle 5306: - - Pressed: Toggle + - - Pressed + - Toggle 14432: - - Pressed: Toggle + - - Pressed + - Toggle 20723: - - Pressed: Toggle + - - Pressed + - Toggle 16505: - - Pressed: Toggle + - - Pressed + - Toggle 16020: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonMedical entities: - uid: 859 @@ -114115,9 +114268,11 @@ entities: - type: DeviceLinkSource linkedPorts: 6832: - - Pressed: Open + - - Pressed + - Open 94: - - Pressed: Open + - - Pressed + - Open - uid: 25271 components: - type: Transform @@ -114127,15 +114282,20 @@ entities: - type: DeviceLinkSource linkedPorts: 24366: - - Pressed: Toggle + - - Pressed + - Toggle 24367: - - Pressed: Toggle + - - Pressed + - Toggle 24368: - - Pressed: Toggle + - - Pressed + - Toggle 24369: - - Pressed: Toggle + - - Pressed + - Toggle 24372: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonSecurity entities: - uid: 25410 @@ -114147,9 +114307,11 @@ entities: - type: DeviceLinkSource linkedPorts: 25409: - - Pressed: Toggle + - - Pressed + - Toggle 6207: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockerAtmosphericsFilledHardsuit entities: - uid: 15401 @@ -114929,9 +115091,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16432: - - Output: DoorBolt + - - Output + - DoorBolt 16422: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -114946,9 +115110,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16412: - - Output: DoorBolt + - - Output + - DoorBolt 16407: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -114963,9 +115129,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16435: - - Output: DoorBolt + - - Output + - DoorBolt 16439: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -114980,9 +115148,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16454: - - Output: DoorBolt + - - Output + - DoorBolt 16508: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -115075,6 +115245,13 @@ entities: - type: Transform pos: 4.5,-44.5 parent: 60 +- proto: MachineMaterialSilo + entities: + - uid: 17154 + components: + - type: Transform + pos: -51.5,-4.5 + parent: 60 - proto: MagazineLightRifle entities: - uid: 1863 @@ -115496,7 +115673,7 @@ entities: - uid: 9425 components: - type: Transform - pos: -45.496006,-9.58335 + pos: -45.038364,-10.503761 parent: 60 - uid: 9474 components: @@ -115506,7 +115683,7 @@ entities: - uid: 13014 components: - type: Transform - pos: -45.404285,-9.838601 + pos: -44.96024,-10.316261 parent: 60 - uid: 19181 components: @@ -118528,11 +118705,6 @@ entities: showEnts: False occludes: True ent: 4540 - - uid: 9618 - components: - - type: Transform - pos: -1.5,21.5 - parent: 60 - proto: PottedPlant4 entities: - uid: 15519 @@ -118834,6 +119006,11 @@ entities: - type: Transform pos: 38.5,11.5 parent: 60 + - uid: 22117 + components: + - type: Transform + pos: -1.5,17.5 + parent: 60 - proto: PottedPlantRD entities: - uid: 5770 @@ -128175,11 +128352,14 @@ entities: - type: DeviceLinkSource linkedPorts: 7697: - - Pressed: Toggle + - - Pressed + - Toggle 914: - - Pressed: Toggle + - - Pressed + - Toggle 920: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23871 components: - type: MetaData @@ -128190,11 +128370,14 @@ entities: - type: DeviceLinkSource linkedPorts: 7697: - - Pressed: Toggle + - - Pressed + - Toggle 914: - - Pressed: Toggle + - - Pressed + - Toggle 920: - - Pressed: Toggle + - - Pressed + - Toggle - proto: ResearchAndDevelopmentServer entities: - uid: 8499 @@ -129419,9 +129602,11 @@ entities: - type: DeviceLinkSource linkedPorts: 2608: - - Pressed: Toggle + - - Pressed + - Toggle 2408: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3803 components: - type: MetaData @@ -129433,7 +129618,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7729: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 5346 components: - type: Transform @@ -129443,19 +129629,26 @@ entities: - type: DeviceLinkSource linkedPorts: 5361: - - Pressed: Toggle + - - Pressed + - Toggle 5344: - - Pressed: Toggle + - - Pressed + - Toggle 5360: - - Pressed: Toggle + - - Pressed + - Toggle 5358: - - Pressed: Toggle + - - Pressed + - Toggle 5352: - - Pressed: Toggle + - - Pressed + - Toggle 5359: - - Pressed: Toggle + - - Pressed + - Toggle 5345: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7746 components: - type: MetaData @@ -129466,7 +129659,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7728: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14913 components: - type: Transform @@ -129475,7 +129669,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15089: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14914 components: - type: Transform @@ -129484,7 +129679,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15089: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15424 components: - type: MetaData @@ -129495,11 +129691,14 @@ entities: - type: DeviceLinkSource linkedPorts: 16978: - - Pressed: Toggle + - - Pressed + - Toggle 16980: - - Pressed: Toggle + - - Pressed + - Toggle 16979: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15426 components: - type: MetaData @@ -129510,11 +129709,14 @@ entities: - type: DeviceLinkSource linkedPorts: 16977: - - Pressed: Toggle + - - Pressed + - Toggle 16976: - - Pressed: Toggle + - - Pressed + - Toggle 16973: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 1240 @@ -129526,13 +129728,17 @@ entities: - type: DeviceLinkSource linkedPorts: 21340: - - Pressed: Toggle + - - Pressed + - Toggle 21341: - - Pressed: Toggle + - - Pressed + - Toggle 21342: - - Pressed: Toggle + - - Pressed + - Toggle 1631: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1603 components: - type: Transform @@ -129541,11 +129747,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4487: - - Pressed: Toggle + - - Pressed + - Toggle 4496: - - Pressed: Toggle + - - Pressed + - Toggle 4355: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2287 components: - type: Transform @@ -129554,23 +129763,32 @@ entities: - type: DeviceLinkSource linkedPorts: 2250: - - Pressed: Toggle + - - Pressed + - Toggle 14208: - - Pressed: Toggle + - - Pressed + - Toggle 16129: - - Pressed: Toggle + - - Pressed + - Toggle 2381: - - Pressed: Toggle + - - Pressed + - Toggle 12303: - - Pressed: Toggle + - - Pressed + - Toggle 16134: - - Pressed: Toggle + - - Pressed + - Toggle 3106: - - Pressed: Toggle + - - Pressed + - Toggle 17671: - - Pressed: Toggle + - - Pressed + - Toggle 4045: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2511 components: - type: MetaData @@ -129582,7 +129800,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14521: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 2625 components: - type: MetaData @@ -129594,23 +129813,32 @@ entities: - type: DeviceLinkSource linkedPorts: 6775: - - Pressed: Toggle + - - Pressed + - Toggle 6772: - - Pressed: Toggle + - - Pressed + - Toggle 6771: - - Pressed: Toggle + - - Pressed + - Toggle 6774: - - Pressed: Toggle + - - Pressed + - Toggle 6773: - - Pressed: Toggle + - - Pressed + - Toggle 4670: - - Pressed: Toggle + - - Pressed + - Toggle 4109: - - Pressed: Toggle + - - Pressed + - Toggle 3844: - - Pressed: Toggle + - - Pressed + - Toggle 3845: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2882 components: - type: Transform @@ -129620,11 +129848,14 @@ entities: - type: DeviceLinkSource linkedPorts: 3208: - - Pressed: Toggle + - - Pressed + - Toggle 7664: - - Pressed: Toggle + - - Pressed + - Toggle 21334: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9571 components: - type: Transform @@ -129633,7 +129864,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13639: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11257 components: - type: Transform @@ -129645,23 +129877,32 @@ entities: - type: DeviceLinkSource linkedPorts: 10577: - - Pressed: Toggle + - - Pressed + - Toggle 8389: - - Pressed: Toggle + - - Pressed + - Toggle 9167: - - Pressed: Toggle + - - Pressed + - Toggle 3978: - - Pressed: Toggle + - - Pressed + - Toggle 4673: - - Pressed: Toggle + - - Pressed + - Toggle 4677: - - Pressed: Toggle + - - Pressed + - Toggle 4513: - - Pressed: Toggle + - - Pressed + - Toggle 4671: - - Pressed: Toggle + - - Pressed + - Toggle 4679: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11678 components: - type: Transform @@ -129671,9 +129912,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19159: - - Pressed: Toggle + - - Pressed + - Toggle 19158: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13575 components: - type: Transform @@ -129683,21 +129926,29 @@ entities: - type: DeviceLinkSource linkedPorts: 147: - - Pressed: Toggle + - - Pressed + - Toggle 4034: - - Pressed: Toggle + - - Pressed + - Toggle 16527: - - Pressed: Toggle + - - Pressed + - Toggle 12509: - - Pressed: Toggle + - - Pressed + - Toggle 1454: - - Pressed: Toggle + - - Pressed + - Toggle 3200: - - Pressed: Toggle + - - Pressed + - Toggle 17491: - - Pressed: Toggle + - - Pressed + - Toggle 17379: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13899 components: - type: MetaData @@ -129709,7 +129960,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14444: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 14549 components: - type: Transform @@ -129719,11 +129971,14 @@ entities: - type: DeviceLinkSource linkedPorts: 8381: - - Pressed: Toggle + - - Pressed + - Toggle 8382: - - Pressed: Toggle + - - Pressed + - Toggle 5149: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14550 components: - type: Transform @@ -129733,13 +129988,17 @@ entities: - type: DeviceLinkSource linkedPorts: 7131: - - Pressed: Toggle + - - Pressed + - Toggle 5560: - - Pressed: Toggle + - - Pressed + - Toggle 7132: - - Pressed: Toggle + - - Pressed + - Toggle 21068: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14551 components: - type: Transform @@ -129749,9 +130008,11 @@ entities: - type: DeviceLinkSource linkedPorts: 14548: - - Pressed: Toggle + - - Pressed + - Toggle 14547: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14622 components: - type: MetaData @@ -129762,7 +130023,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13901: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14910 components: - type: Transform @@ -129772,11 +130034,14 @@ entities: - type: DeviceLinkSource linkedPorts: 327: - - Pressed: Toggle + - - Pressed + - Toggle 2404: - - Pressed: Toggle + - - Pressed + - Toggle 2506: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 16158 components: - type: Transform @@ -129791,11 +130056,14 @@ entities: - type: DeviceLinkSource linkedPorts: 2506: - - Pressed: Toggle + - - Pressed + - Toggle 2404: - - Pressed: Toggle + - - Pressed + - Toggle 327: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 20425 components: - type: MetaData @@ -129807,7 +130075,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17459: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 20979 components: - type: MetaData @@ -129818,7 +130087,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17460: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 21386 components: - type: MetaData @@ -129830,7 +130100,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21175: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 21611 components: - type: MetaData @@ -129842,7 +130113,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17448: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 24334 components: - type: MetaData @@ -129854,7 +130126,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24333: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24347 components: - type: MetaData @@ -129866,7 +130139,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11167: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24365 components: - type: MetaData @@ -129878,7 +130152,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24337: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24787 components: - type: Transform @@ -129888,7 +130163,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24784: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24788 components: - type: Transform @@ -129898,7 +130174,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24784: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24789 components: - type: Transform @@ -129908,7 +130185,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24785: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24790 components: - type: Transform @@ -129918,7 +130196,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24785: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalSwitchDirectional entities: - uid: 1580 @@ -129934,14 +130213,20 @@ entities: - type: DeviceLinkSource linkedPorts: 1638: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1639: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open 1640: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 1583 components: - type: MetaData @@ -129955,14 +130240,20 @@ entities: - type: DeviceLinkSource linkedPorts: 1293: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1238: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open 1257: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 1624 components: - type: MetaData @@ -129976,14 +130267,20 @@ entities: - type: DeviceLinkSource linkedPorts: 1354: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1384: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1652: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 1699 components: - type: MetaData @@ -129997,14 +130294,20 @@ entities: - type: DeviceLinkSource linkedPorts: 1653: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1655: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1656: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 2103 components: - type: MetaData @@ -130016,8 +130319,10 @@ entities: - type: DeviceLinkSource linkedPorts: 1919: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 4506 components: - type: MetaData @@ -130029,8 +130334,10 @@ entities: - type: DeviceLinkSource linkedPorts: 5825: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 5758 components: - type: MetaData @@ -130042,8 +130349,10 @@ entities: - type: DeviceLinkSource linkedPorts: 1530: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 5835 components: - type: MetaData @@ -130055,8 +130364,10 @@ entities: - type: DeviceLinkSource linkedPorts: 4201: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 6307 components: - type: MetaData @@ -130068,8 +130379,10 @@ entities: - type: DeviceLinkSource linkedPorts: 1485: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 7563 components: - type: Transform @@ -130079,7 +130392,8 @@ entities: - type: DeviceLinkSource linkedPorts: 186: - - Status: Toggle + - - Status + - Toggle - uid: 8127 components: - type: MetaData @@ -130091,8 +130405,10 @@ entities: - type: DeviceLinkSource linkedPorts: 24352: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 8221 components: - type: MetaData @@ -130106,14 +130422,20 @@ entities: - type: DeviceLinkSource linkedPorts: 1681: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 10622: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 5432: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 8349 components: - type: MetaData @@ -130125,8 +130447,10 @@ entities: - type: DeviceLinkSource linkedPorts: 8297: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 8433 components: - type: MetaData @@ -130138,50 +130462,80 @@ entities: - type: DeviceLinkSource linkedPorts: 188: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 187: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9680: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4564: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4563: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4552: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4542: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4505: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4457: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 13978: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8721: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4565: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 207: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 208: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9679: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 8670 components: - type: MetaData @@ -130193,11 +130547,15 @@ entities: - type: DeviceLinkSource linkedPorts: 242: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8454: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 8677 components: - type: MetaData @@ -130209,8 +130567,10 @@ entities: - type: DeviceLinkSource linkedPorts: 8678: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 8908 components: - type: MetaData @@ -130222,11 +130582,15 @@ entities: - type: DeviceLinkSource linkedPorts: 243: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 245: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 9309 components: - type: Transform @@ -130235,7 +130599,8 @@ entities: - type: DeviceLinkSource linkedPorts: 186: - - Status: Toggle + - - Status + - Toggle - uid: 9397 components: - type: MetaData @@ -130246,14 +130611,20 @@ entities: - type: DeviceLinkSource linkedPorts: 18519: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18518: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18517: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 9549 components: - type: MetaData @@ -130264,23 +130635,35 @@ entities: - type: DeviceLinkSource linkedPorts: 11628: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11629: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 13618: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11583: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 13616: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 12021: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 9550 components: - type: MetaData @@ -130291,23 +130674,35 @@ entities: - type: DeviceLinkSource linkedPorts: 11628: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 13618: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11629: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11583: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 13616: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 12021: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 16398 components: - type: MetaData @@ -130318,11 +130713,15 @@ entities: - type: DeviceLinkSource linkedPorts: 16541: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16542: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 16399 components: - type: MetaData @@ -130334,20 +130733,30 @@ entities: - type: DeviceLinkSource linkedPorts: 6524: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6526: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6522: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25417: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16735: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 16402 components: - type: MetaData @@ -130359,11 +130768,15 @@ entities: - type: DeviceLinkSource linkedPorts: 16058: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 15575: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 16433 components: - type: MetaData @@ -130377,11 +130790,15 @@ entities: - type: DeviceLinkSource linkedPorts: 16425: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 14167: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 17957 components: - type: MetaData @@ -130393,17 +130810,25 @@ entities: - type: DeviceLinkSource linkedPorts: 190: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 189: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 191: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 206: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 18802 components: - type: MetaData @@ -130416,47 +130841,75 @@ entities: - type: DeviceLinkSource linkedPorts: 13602: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 13176: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 13384: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 18873: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 5338: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 6127: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 13142: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 13389: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 13175: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 5221: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 9238: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 13178: - - Off: Forward - - On: Reverse + - - Off + - Forward + - - On + - Reverse 13177: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward 397: - - On: Reverse - - Off: Forward + - - On + - Reverse + - - Off + - Forward - uid: 18859 components: - type: MetaData @@ -130477,14 +130930,20 @@ entities: - type: DeviceLinkSource linkedPorts: 19033: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19835: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19836: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 21187 components: - type: Transform @@ -130494,20 +130953,30 @@ entities: - type: DeviceLinkSource linkedPorts: 21186: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21085: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21754: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21753: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21755: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 25781 components: - type: Transform @@ -130516,17 +130985,25 @@ entities: - type: DeviceLinkSource linkedPorts: 20491: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16373: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16372: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16468: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 25782 components: - type: Transform @@ -130536,17 +131013,25 @@ entities: - type: DeviceLinkSource linkedPorts: 20491: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16373: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16372: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16468: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 25785 components: - type: MetaData @@ -130558,11 +131043,15 @@ entities: - type: DeviceLinkSource linkedPorts: 16541: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16542: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - proto: SignAnomaly entities: - uid: 9496 @@ -135805,12 +136294,6 @@ entities: parent: 60 - proto: StoolBar entities: - - uid: 1921 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 21.5,-27.5 - parent: 60 - uid: 1922 components: - type: Transform @@ -135915,6 +136398,11 @@ entities: - type: Transform pos: 35.5,18.5 parent: 60 + - uid: 22120 + components: + - type: Transform + pos: 18.5,-27.5 + parent: 60 - uid: 23459 components: - type: Transform @@ -138755,6 +139243,12 @@ entities: - type: Transform pos: 53.5,-36.5 parent: 60 + - uid: 4359 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 49.5,-13.5 + parent: 60 - uid: 4577 components: - type: Transform @@ -138875,11 +139369,6 @@ entities: - type: Transform pos: -45.5,-4.5 parent: 60 - - uid: 7070 - components: - - type: Transform - pos: 49.5,-13.5 - parent: 60 - uid: 7079 components: - type: Transform @@ -139060,11 +139549,6 @@ entities: - type: Transform pos: -49.5,-7.5 parent: 60 - - uid: 9591 - components: - - type: Transform - pos: -45.5,-9.5 - parent: 60 - uid: 9595 components: - type: Transform @@ -139090,11 +139574,6 @@ entities: - type: Transform pos: -18.5,32.5 parent: 60 - - uid: 10369 - components: - - type: Transform - pos: 21.5,-26.5 - parent: 60 - uid: 10620 components: - type: Transform @@ -139580,6 +140059,11 @@ entities: - type: Transform pos: 13.5,-26.5 parent: 60 + - uid: 22119 + components: + - type: Transform + pos: 18.5,-26.5 + parent: 60 - uid: 23424 components: - type: Transform @@ -141529,33 +142013,54 @@ entities: - type: DeviceLinkSource linkedPorts: 7725: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 7724: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 7723: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 3860: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 3894: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 3895: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 3896: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward - uid: 1189 components: - type: Transform @@ -141564,17 +142069,26 @@ entities: - type: DeviceLinkSource linkedPorts: 920: - - Middle: Close - - Right: Open - - Left: Open + - - Middle + - Close + - - Right + - Open + - - Left + - Open 914: - - Middle: Close - - Right: Open - - Left: Open + - - Middle + - Close + - - Right + - Open + - - Left + - Open 7697: - - Middle: Close - - Right: Open - - Left: Open + - - Middle + - Close + - - Right + - Open + - - Left + - Open - uid: 5805 components: - type: Transform @@ -141583,33 +142097,54 @@ entities: - type: DeviceLinkSource linkedPorts: 12703: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5489: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 8360: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12283: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6978: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6730: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12705: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 9480 components: - type: Transform @@ -141618,17 +142153,26 @@ entities: - type: DeviceLinkSource linkedPorts: 5627: - - Middle: Close - - Right: Open - - Left: Open + - - Middle + - Close + - - Right + - Open + - - Left + - Open 5626: - - Middle: Close - - Right: Open - - Left: Open + - - Middle + - Close + - - Right + - Open + - - Left + - Open 5628: - - Middle: Close - - Right: Open - - Left: Open + - - Middle + - Close + - - Right + - Open + - - Left + - Open - uid: 11821 components: - type: Transform @@ -141637,77 +142181,131 @@ entities: - type: DeviceLinkSource linkedPorts: 11697: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12019: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13083: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11864: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12882: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12018: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5742: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13136: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9282: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5740: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11816: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13114: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13084: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 8773: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 18895: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9242: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6145: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9452: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 13173 components: - type: Transform @@ -141718,25 +142316,40 @@ entities: - type: DeviceLinkSource linkedPorts: 13167: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13168: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13169: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13170: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13171: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 13174 components: - type: Transform @@ -141745,33 +142358,54 @@ entities: - type: DeviceLinkSource linkedPorts: 13166: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13165: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13164: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13163: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13162: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13221: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13222: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 23728 components: - type: Transform @@ -141780,17 +142414,26 @@ entities: - type: DeviceLinkSource linkedPorts: 23657: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19831: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 18894: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 24108 components: - type: Transform @@ -141799,9 +142442,12 @@ entities: - type: DeviceLinkSource linkedPorts: 4073: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - proto: UnfinishedMachineFrame entities: - uid: 3769 @@ -157264,11 +157910,6 @@ entities: parent: 60 - proto: WaterCooler entities: - - uid: 278 - components: - - type: Transform - pos: -28.5,-6.5 - parent: 60 - uid: 1382 components: - type: Transform @@ -157314,6 +157955,11 @@ entities: - type: Transform pos: -36.5,21.5 parent: 60 + - uid: 22118 + components: + - type: Transform + pos: -28.5,-3.5 + parent: 60 - proto: WaterTankFull entities: - uid: 2329 @@ -157817,7 +158463,8 @@ entities: - type: DeviceLinkSource linkedPorts: 234: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 15897 components: - type: Transform @@ -157829,7 +158476,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8920: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureAtmosphericsLocked entities: - uid: 13959 @@ -157856,7 +158504,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8413: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 2584 components: - type: Transform @@ -157901,7 +158550,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15897: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9176 components: - type: Transform diff --git a/Resources/Maps/box.yml b/Resources/Maps/box.yml index 457ef0a8ef..f7ef35dff1 100644 --- a/Resources/Maps/box.yml +++ b/Resources/Maps/box.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 250.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/29/2025 05:00:25 - entityCount: 28319 + time: 04/19/2025 11:18:31 + entityCount: 28356 maps: - 780 grids: @@ -8310,7 +8310,7 @@ entities: 0,8: 0: 26367 7: 4096 - 2: 32768 + 8: 32768 1,4: 0: 61680 1,5: @@ -8321,7 +8321,7 @@ entities: 0: 64911 1,8: 0: 49373 - 2: 4096 + 8: 4096 2,5: 0: 28799 2,6: @@ -8365,21 +8365,23 @@ entities: 0: 65358 -3,7: 0: 55769 - 7: 1024 + 9: 1024 -3,8: 0: 65421 -2,5: 0: 57599 -2,6: 0: 65356 - 7: 2 + 9: 2 -2,7: 0: 65533 -2,8: 0: 64991 -1,8: 0: 206 - 7: 57376 + 9: 8224 + 10: 16384 + 11: 32768 4,8: 0: 65535 5,4: @@ -8445,7 +8447,7 @@ entities: 0: 65535 -1,9: 0: 61038 - 7: 128 + 8: 128 -1,10: 1: 60928 5: 192 @@ -8456,10 +8458,9 @@ entities: 0: 65518 0,9: 0: 32655 - 7: 16 - 2: 32 - 8: 64 - 9: 32768 + 8: 48 + 12: 64 + 13: 32768 0,10: 5: 240 1: 65280 @@ -8470,7 +8471,7 @@ entities: 0: 65535 1,9: 0: 52733 - 9: 4096 + 13: 4096 1,10: 1: 53504 5: 8192 @@ -9002,7 +9003,7 @@ entities: 0: 65407 9,-2: 0: 57343 - 7: 8192 + 9: 8192 9,-5: 0: 61166 10,-4: @@ -9303,7 +9304,7 @@ entities: 1: 192 5: 49152 3,-17: - 10: 30576 + 14: 30576 4,-16: 1: 240 0: 61440 @@ -9884,7 +9885,7 @@ entities: 0: 255 1: 49152 4,-17: - 11: 30576 + 15: 30576 5,-20: 0: 65535 5,-19: @@ -10467,6 +10468,36 @@ entities: - 0 - 0 - 0 + - volume: 2500 + temperature: 293.14917 + moles: + - 16.99477 + - 63.932716 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.1495 + moles: + - 20.078888 + - 75.53487 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - volume: 2500 temperature: 293.14975 moles: @@ -10483,10 +10514,40 @@ entities: - 0 - 0 - volume: 2500 - temperature: 293.14923 + temperature: 293.14948 moles: - - 20.078888 - - 75.53487 + - 18.472576 + - 69.49208 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.1492 + moles: + - 18.472576 + - 69.49208 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - volume: 2500 + temperature: 293.149 + moles: + - 18.472576 + - 69.49208 - 0 - 0 - 0 @@ -10551,8 +10612,8 @@ entities: id: docking46345 localAnchorB: -0.5,-1 localAnchorA: -66.5,22 - damping: 42.400753 - stiffness: 380.5883 + damping: 42.400772 + stiffness: 380.58847 - type: OccluderTree - type: Shuttle - type: RadiationGridResistance @@ -10632,6 +10693,15 @@ entities: parent: 8364 - proto: ActionToggleInternals entities: + - uid: 10072 + mapInit: true + paused: true + components: + - type: Transform + parent: 9182 + - type: InstantAction + originalIconColor: '#FFFFFFFF' + container: 9182 - uid: 25167 components: - type: Transform @@ -10646,6 +10716,17 @@ entities: - type: InstantAction originalIconColor: '#FFFFFFFF' container: 20121 +- proto: ActionToggleJetpack + entities: + - uid: 10071 + mapInit: true + paused: true + components: + - type: Transform + parent: 9182 + - type: InstantAction + originalIconColor: '#FFFFFFFF' + container: 9182 - proto: ActionToggleLight entities: - uid: 16587 @@ -13217,7 +13298,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13669: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13669 components: - type: Transform @@ -13226,7 +13308,8 @@ entities: - type: DeviceLinkSource linkedPorts: 431: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalEngineeringLocked entities: - uid: 3852 @@ -13238,9 +13321,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3707: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 3858: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11000 components: - type: Transform @@ -13249,7 +13334,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23210: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23210 components: - type: Transform @@ -13258,7 +13344,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11000: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 1727 @@ -13269,7 +13356,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5209: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 8807 components: - type: Transform @@ -13310,7 +13398,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12644: - - DoorStatus: Close + - - DoorStatus + - Close - proto: AirlockExternalGlassAtmosphericsLocked entities: - uid: 3858 @@ -13323,9 +13412,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3852: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 3707: - - DoorStatus: Close + - - DoorStatus + - Close - proto: AirlockExternalGlassCargoLocked entities: - uid: 7010 @@ -13336,7 +13427,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15002: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15002 components: - type: Transform @@ -13345,7 +13437,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7010: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 18040 components: - type: Transform @@ -13369,9 +13462,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3601: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 4365: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3601 components: - type: Transform @@ -13383,9 +13478,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4365: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 2905: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3707 components: - type: Transform @@ -13397,9 +13494,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3852: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 3858: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 4365 components: - type: Transform @@ -13411,9 +13510,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3601: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 2905: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11754 components: - type: Transform @@ -13425,7 +13526,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14105: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14105 components: - type: Transform @@ -13437,7 +13539,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11754: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14448 components: - type: Transform @@ -13446,7 +13549,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14449: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14449 components: - type: Transform @@ -13455,7 +13559,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14448: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17059 components: - type: Transform @@ -13472,7 +13577,8 @@ entities: - type: DeviceLinkSource linkedPorts: 509: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 509 components: - type: Transform @@ -13481,7 +13587,8 @@ entities: - type: DeviceLinkSource linkedPorts: 508: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 594 components: - type: MetaData @@ -13499,7 +13606,8 @@ entities: - type: DeviceLinkSource linkedPorts: 562: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 4758 components: - type: Transform @@ -13508,7 +13616,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15592: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9436 components: - type: Transform @@ -13517,7 +13626,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9810: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11795 components: - type: Transform @@ -13528,7 +13638,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19987: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12466 components: - type: Transform @@ -13537,7 +13648,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1110: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 12467 components: - type: Transform @@ -13546,7 +13658,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12470: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 12468 components: - type: Transform @@ -13555,7 +13668,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12469: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 13138 components: - type: Transform @@ -13564,7 +13678,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13139: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13139 components: - type: Transform @@ -13573,7 +13688,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13138: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 18669 components: - type: Transform @@ -13582,7 +13698,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19366: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19988 components: - type: Transform @@ -13591,7 +13708,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19989: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 606 @@ -13681,7 +13799,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12486: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 655 components: - type: Transform @@ -13691,7 +13810,8 @@ entities: - type: DeviceLinkSource linkedPorts: 593: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 5626 components: - type: Transform @@ -13700,7 +13820,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22633: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9810 components: - type: Transform @@ -13709,7 +13830,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9436: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11651 components: - type: Transform @@ -13718,7 +13840,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11652: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11652 components: - type: Transform @@ -13727,7 +13850,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11651: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15592 components: - type: Transform @@ -13736,7 +13860,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4758: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19366 components: - type: Transform @@ -13745,7 +13870,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18669: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19985 components: - type: Transform @@ -13754,7 +13880,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19986: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19986 components: - type: Transform @@ -13763,7 +13890,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19985: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19987 components: - type: Transform @@ -13774,7 +13902,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11795: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19989 components: - type: Transform @@ -13783,7 +13912,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19988: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22633 components: - type: Transform @@ -13792,7 +13922,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5626: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalShuttleLocked entities: - uid: 593 @@ -13804,7 +13935,8 @@ entities: - type: DeviceLinkSource linkedPorts: 655: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 1110 components: - type: Transform @@ -13814,7 +13946,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12466: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 12469 components: - type: Transform @@ -13823,7 +13956,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12468: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 12470 components: - type: Transform @@ -13832,7 +13966,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12467: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 12486 components: - type: Transform @@ -13842,7 +13977,8 @@ entities: - type: DeviceLinkSource linkedPorts: 610: - - DoorStatus: Close + - - DoorStatus + - Close - proto: AirlockFreezer entities: - uid: 25720 @@ -13906,7 +14042,7 @@ entities: pos: 24.5,16.5 parent: 8364 - type: Door - secondsUntilStateChange: -95912.98 + secondsUntilStateChange: -97887.33 state: Opening - type: DeviceLinkSource lastSignals: @@ -14249,7 +14385,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1495: - - DoorStatus: Close + - - DoorStatus + - Close lastSignals: DoorStatus: False DockStatus: True @@ -14264,7 +14401,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1727: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 12644 @@ -14276,7 +14414,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12643: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 21828 @@ -15461,7 +15600,7 @@ entities: pos: 9.5,25.5 parent: 8364 - type: Door - secondsUntilStateChange: -9169.472 + secondsUntilStateChange: -11143.819 state: Opening - type: DeviceLinkSource lastSignals: @@ -16785,6 +16924,8 @@ entities: parent: 8364 - uid: 9415 components: + - type: MetaData + name: Security Breakroom APC - type: Transform rot: -1.5707963267948966 rad pos: 20.5,35.5 @@ -16795,6 +16936,14 @@ entities: rot: -1.5707963267948966 rad pos: 25.5,23.5 parent: 8364 + - uid: 10027 + components: + - type: MetaData + name: Armory APC + - type: Transform + rot: 1.5707963267948966 rad + pos: -3.5,36.5 + parent: 8364 - uid: 10544 components: - type: MetaData @@ -16863,13 +17012,6 @@ entities: rot: -1.5707963267948966 rad pos: -14.5,-18.5 parent: 8364 - - uid: 11965 - components: - - type: MetaData - name: Warden's Office APC - - type: Transform - pos: 3.5,34.5 - parent: 8364 - uid: 12020 components: - type: MetaData @@ -21465,15 +21607,10 @@ entities: parent: 8364 - proto: BoxFlashbang entities: - - uid: 9388 + - uid: 10066 components: - type: Transform - pos: -2.28955,39.38977 - parent: 8364 - - uid: 9589 - components: - - type: Transform - pos: 21.5,35.5 + pos: 6.4871874,35.49408 parent: 8364 - proto: BoxFolderBlack entities: @@ -21702,12 +21839,7 @@ entities: - uid: 5795 components: - type: Transform - pos: 15.418736,30.571737 - parent: 8364 - - uid: 9389 - components: - - type: Transform - pos: -2.648925,39.67102 + pos: 16.409477,33.177017 parent: 8364 - proto: BoxingBell entities: @@ -21731,25 +21863,25 @@ entities: parent: 8364 - proto: BoxLethalshot entities: - - uid: 4645 + - uid: 9388 components: - type: Transform - pos: -1.2980705,35.389374 + pos: 2.7149048,39.67169 parent: 8364 - - uid: 8641 + - uid: 9518 components: - type: Transform - pos: -1.6730705,35.712288 + pos: 2.7149048,39.41707 parent: 8364 - - uid: 9229 + - uid: 9538 components: - type: Transform - pos: -1.7147372,35.399788 + pos: 2.335275,39.66707 parent: 8364 - - uid: 9233 + - uid: 10029 components: - type: Transform - pos: -1.2668205,35.701874 + pos: 2.335275,39.407806 parent: 8364 - proto: BoxLightbulb entities: @@ -21794,6 +21926,34 @@ entities: - type: Transform pos: 58.505,18.482952 parent: 8364 +- proto: BoxMagazinePistol + entities: + - uid: 10021 + components: + - type: Transform + pos: 5.582965,37.72505 + parent: 8364 +- proto: BoxMagazinePistolPractice + entities: + - uid: 28331 + components: + - type: Transform + pos: 21.65355,36.475 + parent: 8364 +- proto: BoxMagazinePistolSubMachineGunPractice + entities: + - uid: 28333 + components: + - type: Transform + pos: 21.387924,36.2875 + parent: 8364 +- proto: BoxMagazineRiflePractice + entities: + - uid: 28332 + components: + - type: Transform + pos: 21.46605,36.725 + parent: 8364 - proto: BoxMouthSwab entities: - uid: 5468 @@ -21813,7 +21973,14 @@ entities: - uid: 548 components: - type: Transform - pos: -11.614725,-21.270159 + pos: -13.529548,-15.192467 + parent: 8364 +- proto: BoxShotgunPractice + entities: + - uid: 28334 + components: + - type: Transform + pos: 21.596834,35.81875 parent: 8364 - proto: BoxSterileMask entities: @@ -21827,6 +21994,13 @@ entities: - type: Transform pos: 24.405125,-36.239418 parent: 8364 +- proto: BoxStinger + entities: + - uid: 10081 + components: + - type: Transform + pos: 6.9403124,35.540955 + parent: 8364 - proto: BoxSyringe entities: - uid: 7928 @@ -21839,6 +22013,13 @@ entities: - type: Transform pos: 38.5,-59.5 parent: 8364 +- proto: BoxTearGas + entities: + - uid: 10022 + components: + - type: Transform + pos: 6.7996874,35.790955 + parent: 8364 - proto: BoxTrashbag entities: - uid: 27574 @@ -21858,14 +22039,14 @@ entities: - uid: 542 components: - type: Transform - pos: 12.512168,34.618263 + pos: 6.3934374,35.74408 parent: 8364 - proto: BrbSign entities: - uid: 13477 components: - type: Transform - pos: -11.524348,-21.41842 + pos: -13.388923,-15.426842 parent: 8364 - proto: BriefcaseBrown entities: @@ -21906,9 +22087,12 @@ entities: - type: DeviceLinkSource linkedPorts: 8624: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 25829 components: - type: Transform @@ -21917,9 +22101,12 @@ entities: - type: DeviceLinkSource linkedPorts: 8625: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 26575 components: - type: Transform @@ -21928,9 +22115,12 @@ entities: - type: DeviceLinkSource linkedPorts: 8626: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - proto: Bucket entities: - uid: 10718 @@ -23008,6 +23198,11 @@ entities: - type: Transform pos: 25.5,-51.5 parent: 8364 + - uid: 4213 + components: + - type: Transform + pos: -3.5,36.5 + parent: 8364 - uid: 4251 components: - type: Transform @@ -23208,6 +23403,11 @@ entities: - type: Transform pos: -21.5,-76.5 parent: 8364 + - uid: 4990 + components: + - type: Transform + pos: -2.5,36.5 + parent: 8364 - uid: 5069 components: - type: Transform @@ -24583,11 +24783,6 @@ entities: - type: Transform pos: 15.5,26.5 parent: 8364 - - uid: 7768 - components: - - type: Transform - pos: -1.5,32.5 - parent: 8364 - uid: 7770 components: - type: Transform @@ -24663,11 +24858,6 @@ entities: - type: Transform pos: 4.5,37.5 parent: 8364 - - uid: 8547 - components: - - type: Transform - pos: 3.5,33.5 - parent: 8364 - uid: 8557 components: - type: Transform @@ -24728,11 +24918,6 @@ entities: - type: Transform pos: 17.5,20.5 parent: 8364 - - uid: 8589 - components: - - type: Transform - pos: 3.5,32.5 - parent: 8364 - uid: 8590 components: - type: Transform @@ -24763,6 +24948,11 @@ entities: - type: Transform pos: -18.5,41.5 parent: 8364 + - uid: 8641 + components: + - type: Transform + pos: -3.5,29.5 + parent: 8364 - uid: 8651 components: - type: Transform @@ -24793,11 +24983,6 @@ entities: - type: Transform pos: -9.5,27.5 parent: 8364 - - uid: 8680 - components: - - type: Transform - pos: -3.5,29.5 - parent: 8364 - uid: 8681 components: - type: Transform @@ -25143,6 +25328,16 @@ entities: - type: Transform pos: -13.5,23.5 parent: 8364 + - uid: 8770 + components: + - type: Transform + pos: -2.5,31.5 + parent: 8364 + - uid: 8777 + components: + - type: Transform + pos: 14.5,40.5 + parent: 8364 - uid: 8812 components: - type: Transform @@ -25333,6 +25528,11 @@ entities: - type: Transform pos: -23.5,47.5 parent: 8364 + - uid: 9074 + components: + - type: Transform + pos: 14.5,41.5 + parent: 8364 - uid: 9088 components: - type: Transform @@ -25428,15 +25628,15 @@ entities: - type: Transform pos: -20.5,23.5 parent: 8364 - - uid: 9268 + - uid: 9164 components: - type: Transform - pos: 3.5,34.5 + pos: 14.5,37.5 parent: 8364 - - uid: 9288 + - uid: 9193 components: - type: Transform - pos: -3.5,33.5 + pos: 14.5,38.5 parent: 8364 - uid: 9292 components: @@ -25493,21 +25693,6 @@ entities: - type: Transform pos: 14.5,39.5 parent: 8364 - - uid: 9304 - components: - - type: Transform - pos: 15.5,39.5 - parent: 8364 - - uid: 9305 - components: - - type: Transform - pos: 15.5,40.5 - parent: 8364 - - uid: 9306 - components: - - type: Transform - pos: 15.5,38.5 - parent: 8364 - uid: 9307 components: - type: Transform @@ -25603,11 +25788,6 @@ entities: - type: Transform pos: 19.5,35.5 parent: 8364 - - uid: 9336 - components: - - type: Transform - pos: -2.5,30.5 - parent: 8364 - uid: 9337 components: - type: Transform @@ -26213,11 +26393,6 @@ entities: - type: Transform pos: -43.5,10.5 parent: 8364 - - uid: 9998 - components: - - type: Transform - pos: 15.5,41.5 - parent: 8364 - uid: 10003 components: - type: Transform @@ -26228,71 +26403,6 @@ entities: - type: Transform pos: -18.5,23.5 parent: 8364 - - uid: 10020 - components: - - type: Transform - pos: 15.5,42.5 - parent: 8364 - - uid: 10021 - components: - - type: Transform - pos: 14.5,42.5 - parent: 8364 - - uid: 10022 - components: - - type: Transform - pos: 13.5,42.5 - parent: 8364 - - uid: 10023 - components: - - type: Transform - pos: 15.5,37.5 - parent: 8364 - - uid: 10024 - components: - - type: Transform - pos: 16.5,37.5 - parent: 8364 - - uid: 10025 - components: - - type: Transform - pos: 16.5,36.5 - parent: 8364 - - uid: 10026 - components: - - type: Transform - pos: 14.5,37.5 - parent: 8364 - - uid: 10027 - components: - - type: Transform - pos: 13.5,37.5 - parent: 8364 - - uid: 10028 - components: - - type: Transform - pos: 12.5,37.5 - parent: 8364 - - uid: 10029 - components: - - type: Transform - pos: 12.5,36.5 - parent: 8364 - - uid: 10030 - components: - - type: Transform - pos: 11.5,37.5 - parent: 8364 - - uid: 10031 - components: - - type: Transform - pos: 11.5,38.5 - parent: 8364 - - uid: 10032 - components: - - type: Transform - pos: 11.5,40.5 - parent: 8364 - uid: 10033 components: - type: Transform @@ -26403,91 +26513,11 @@ entities: - type: Transform pos: 8.5,41.5 parent: 8364 - - uid: 10065 - components: - - type: Transform - pos: 0.5,34.5 - parent: 8364 - - uid: 10066 - components: - - type: Transform - pos: -0.5,34.5 - parent: 8364 - uid: 10067 components: - type: Transform pos: 4.5,31.5 parent: 8364 - - uid: 10068 - components: - - type: Transform - pos: 5.5,31.5 - parent: 8364 - - uid: 10069 - components: - - type: Transform - pos: 5.5,32.5 - parent: 8364 - - uid: 10070 - components: - - type: Transform - pos: 5.5,30.5 - parent: 8364 - - uid: 10071 - components: - - type: Transform - pos: 3.5,30.5 - parent: 8364 - - uid: 10072 - components: - - type: Transform - pos: 3.5,29.5 - parent: 8364 - - uid: 10073 - components: - - type: Transform - pos: 1.5,30.5 - parent: 8364 - - uid: 10074 - components: - - type: Transform - pos: 1.5,29.5 - parent: 8364 - - uid: 10075 - components: - - type: Transform - pos: 0.5,29.5 - parent: 8364 - - uid: 10076 - components: - - type: Transform - pos: -1.5,30.5 - parent: 8364 - - uid: 10077 - components: - - type: Transform - pos: -1.5,29.5 - parent: 8364 - - uid: 10078 - components: - - type: Transform - pos: -2.5,29.5 - parent: 8364 - - uid: 10079 - components: - - type: Transform - pos: -3.5,30.5 - parent: 8364 - - uid: 10080 - components: - - type: Transform - pos: -2.5,32.5 - parent: 8364 - - uid: 10081 - components: - - type: Transform - pos: -3.5,32.5 - parent: 8364 - uid: 10083 components: - type: Transform @@ -43968,6 +43998,76 @@ entities: - type: Transform pos: 47.5,-28.5 parent: 8364 + - uid: 28342 + components: + - type: Transform + pos: 1.5,36.5 + parent: 8364 + - uid: 28343 + components: + - type: Transform + pos: 1.5,35.5 + parent: 8364 + - uid: 28344 + components: + - type: Transform + pos: 1.5,34.5 + parent: 8364 + - uid: 28345 + components: + - type: Transform + pos: 1.5,33.5 + parent: 8364 + - uid: 28346 + components: + - type: Transform + pos: 1.5,32.5 + parent: 8364 + - uid: 28347 + components: + - type: Transform + pos: 1.5,38.5 + parent: 8364 + - uid: 28348 + components: + - type: Transform + pos: 1.5,39.5 + parent: 8364 + - uid: 28349 + components: + - type: Transform + pos: 1.5,40.5 + parent: 8364 + - uid: 28350 + components: + - type: Transform + pos: 1.5,41.5 + parent: 8364 + - uid: 28351 + components: + - type: Transform + pos: 0.5,41.5 + parent: 8364 + - uid: 28352 + components: + - type: Transform + pos: -0.5,41.5 + parent: 8364 + - uid: 28353 + components: + - type: Transform + pos: -1.5,41.5 + parent: 8364 + - uid: 28354 + components: + - type: Transform + pos: 2.5,41.5 + parent: 8364 + - uid: 28355 + components: + - type: Transform + pos: 3.5,41.5 + parent: 8364 - proto: CableApcStack entities: - uid: 1195 @@ -51459,6 +51559,11 @@ entities: - type: Transform pos: 43.5,-3.5 parent: 8364 + - uid: 4163 + components: + - type: Transform + pos: 0.5,31.5 + parent: 8364 - uid: 4277 components: - type: Transform @@ -52732,7 +52837,7 @@ entities: - uid: 8592 components: - type: Transform - pos: 3.5,34.5 + pos: -0.5,31.5 parent: 8364 - uid: 8597 components: @@ -52844,6 +52949,11 @@ entities: - type: Transform pos: -4.5,28.5 parent: 8364 + - uid: 8680 + components: + - type: Transform + pos: 3.5,29.5 + parent: 8364 - uid: 8750 components: - type: Transform @@ -53174,21 +53284,76 @@ entities: - type: Transform pos: -19.5,23.5 parent: 8364 + - uid: 9167 + components: + - type: Transform + pos: 14.5,42.5 + parent: 8364 + - uid: 9190 + components: + - type: Transform + pos: 14.5,41.5 + parent: 8364 + - uid: 9192 + components: + - type: Transform + pos: 14.5,40.5 + parent: 8364 + - uid: 9197 + components: + - type: Transform + pos: 11.5,40.5 + parent: 8364 + - uid: 9216 + components: + - type: Transform + pos: 12.5,37.5 + parent: 8364 - uid: 9218 components: - type: Transform pos: 7.5,42.5 parent: 8364 + - uid: 9222 + components: + - type: Transform + pos: 11.5,37.5 + parent: 8364 + - uid: 9223 + components: + - type: Transform + pos: 11.5,38.5 + parent: 8364 - uid: 9224 components: - type: Transform pos: 1.5,37.5 parent: 8364 + - uid: 9229 + components: + - type: Transform + pos: 12.5,36.5 + parent: 8364 + - uid: 9233 + components: + - type: Transform + pos: 15.5,37.5 + parent: 8364 + - uid: 9239 + components: + - type: Transform + pos: 13.5,42.5 + parent: 8364 - uid: 9249 components: - type: Transform pos: 2.5,42.5 parent: 8364 + - uid: 9257 + components: + - type: Transform + pos: 16.5,36.5 + parent: 8364 - uid: 9264 components: - type: Transform @@ -53204,16 +53369,56 @@ entities: - type: Transform pos: 1.5,33.5 parent: 8364 + - uid: 9268 + components: + - type: Transform + pos: 16.5,37.5 + parent: 8364 + - uid: 9288 + components: + - type: Transform + pos: 0.5,29.5 + parent: 8364 - uid: 9289 components: - type: Transform - pos: 3.5,33.5 + pos: 1.5,29.5 + parent: 8364 + - uid: 9304 + components: + - type: Transform + pos: -1.5,29.5 + parent: 8364 + - uid: 9305 + components: + - type: Transform + pos: -2.5,29.5 + parent: 8364 + - uid: 9336 + components: + - type: Transform + pos: -3.5,32.5 + parent: 8364 + - uid: 9344 + components: + - type: Transform + pos: -3.5,33.5 parent: 8364 - uid: 9346 components: - type: Transform pos: 2.5,40.5 parent: 8364 + - uid: 9369 + components: + - type: Transform + pos: 1.5,31.5 + parent: 8364 + - uid: 9373 + components: + - type: Transform + pos: -1.5,31.5 + parent: 8364 - uid: 9381 components: - type: Transform @@ -53454,6 +53659,11 @@ entities: - type: Transform pos: 9.5,36.5 parent: 8364 + - uid: 10068 + components: + - type: Transform + pos: 0.5,37.5 + parent: 8364 - uid: 10193 components: - type: Transform @@ -60849,6 +61059,36 @@ entities: - type: Transform pos: 47.5,-28.5 parent: 8364 + - uid: 28330 + components: + - type: Transform + pos: 15.5,42.5 + parent: 8364 + - uid: 28337 + components: + - type: Transform + pos: -0.5,37.5 + parent: 8364 + - uid: 28338 + components: + - type: Transform + pos: -1.5,37.5 + parent: 8364 + - uid: 28339 + components: + - type: Transform + pos: -2.5,37.5 + parent: 8364 + - uid: 28340 + components: + - type: Transform + pos: -2.5,36.5 + parent: 8364 + - uid: 28341 + components: + - type: Transform + pos: -3.5,36.5 + parent: 8364 - proto: CableMVStack entities: - uid: 1697 @@ -67965,6 +68205,12 @@ entities: rot: 1.5707963267948966 rad pos: 4.5,37.5 parent: 8364 + - uid: 9537 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -0.49284565,32.59999 + parent: 8364 - uid: 9646 components: - type: Transform @@ -72420,25 +72666,25 @@ entities: parent: 8364 - proto: ClothingHeadHelmetRiot entities: - - uid: 9190 + - uid: 7768 components: - type: Transform - pos: 2.7655263,39.62697 + pos: -0.23404753,39.35919 parent: 8364 - - uid: 9193 + - uid: 10026 components: - type: Transform - pos: 2.7655263,39.512383 + pos: -0.24099195,39.553642 parent: 8364 - - uid: 9197 + - uid: 10070 components: - type: Transform - pos: 2.7655263,39.366547 + pos: -0.24099195,39.66475 parent: 8364 - - uid: 10062 + - uid: 10076 components: - type: Transform - pos: 2.7551093,39.762383 + pos: -0.24099195,39.463364 parent: 8364 - proto: ClothingHeadsetEngineering entities: @@ -72618,7 +72864,12 @@ entities: - uid: 7694 components: - type: Transform - pos: 25.591892,35.701836 + pos: 24.58121,37.6 + parent: 8364 + - uid: 10065 + components: + - type: Transform + pos: 24.471834,37.44375 parent: 8364 - proto: ClothingNeckMantleRD entities: @@ -72727,37 +72978,47 @@ entities: parent: 8364 - proto: ClothingOuterArmorReflective entities: - - uid: 9483 + - uid: 10025 components: - type: Transform - pos: 1.6821928,39.418633 + pos: 1.7055252,39.60392 parent: 8364 - uid: 28240 components: - type: Transform - pos: 1.6926093,39.574883 + pos: 1.703789,39.675285 + parent: 8364 + - uid: 28327 + components: + - type: Transform + pos: 1.7055252,39.534477 + parent: 8364 + - uid: 28328 + components: + - type: Transform + pos: 1.7055252,39.458084 parent: 8364 - proto: ClothingOuterArmorRiot entities: - - uid: 9166 + - uid: 8547 components: - type: Transform - pos: 2.3384428,39.68947 + pos: -0.658415,39.35225 parent: 8364 - - uid: 9167 + - uid: 8572 components: - type: Transform - pos: 2.3384428,39.554047 + pos: -0.658415,39.442528 parent: 8364 - - uid: 9216 + - uid: 8589 components: - type: Transform - pos: 2.3488593,39.481133 + pos: -0.66535944,39.51197 parent: 8364 - - uid: 9223 + - uid: 26255 components: - type: Transform - pos: 2.3384428,39.366547 + pos: -0.658415,39.595306 parent: 8364 - proto: ClothingOuterCardborg entities: @@ -72816,6 +73077,36 @@ entities: - type: Transform pos: 66.509186,-76.72045 parent: 8364 +- proto: ClothingOuterHardsuitSecurity + entities: + - uid: 10031 + components: + - type: Transform + parent: 10030 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 10073 + components: + - type: Transform + parent: 8783 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 10075 + components: + - type: Transform + parent: 8825 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 11999 + components: + - type: Transform + parent: 11611 + - type: Physics + canCollide: False + - type: InsideEntityStorage - proto: ClothingOuterHoodieGrey entities: - uid: 21633 @@ -73592,7 +73883,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21199: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 19021 @@ -73661,6 +73953,45 @@ entities: - type: Transform pos: -22.5,-21.5 parent: 8364 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 20632 + components: + - type: Transform + pos: -1.5,-66.5 + parent: 8364 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 5493 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-25.5 + parent: 8364 +- proto: ComputerCargoOrdersScience + entities: + - uid: 28356 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 69.5,-25.5 + parent: 8364 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 17837 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 15.5,30.5 + parent: 8364 +- proto: ComputerCargoOrdersService + entities: + - uid: 5773 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,-10.5 + parent: 8364 - proto: ComputerCargoShuttle entities: - uid: 14854 @@ -73712,6 +74043,12 @@ entities: rot: 1.5707963267948966 rad pos: -8.5,-55.5 parent: 8364 + - uid: 18061 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 37.5,-35.5 + parent: 8364 - uid: 19094 components: - type: Transform @@ -73724,12 +74061,6 @@ entities: rot: -1.5707963267948966 rad pos: 37.5,-41.5 parent: 8364 - - uid: 20698 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 46.5,-25.5 - parent: 8364 - proto: ComputerCriminalRecords entities: - uid: 9181 @@ -73788,6 +74119,13 @@ entities: rot: 1.5707963267948966 rad pos: -1.5,-26.5 parent: 8364 +- proto: ComputerFundingAllocation + entities: + - uid: 20698 + components: + - type: Transform + pos: -11.5,-21.5 + parent: 8364 - proto: ComputerId entities: - uid: 5326 @@ -74003,6 +74341,17 @@ entities: rot: -1.5707963267948966 rad pos: -9.5,-26.5 parent: 8364 + - uid: 10020 + components: + - type: Transform + pos: -0.5,33.5 + parent: 8364 + - uid: 10077 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 12.5,34.5 + parent: 8364 - uid: 19297 components: - type: Transform @@ -74025,16 +74374,16 @@ entities: - type: Transform pos: -7.5,17.5 parent: 8364 + - uid: 9166 + components: + - type: Transform + pos: -1.5,33.5 + parent: 8364 - uid: 9205 components: - type: Transform pos: 14.5,41.5 parent: 8364 - - uid: 9222 - components: - - type: Transform - pos: -0.5,33.5 - parent: 8364 - proto: ComputerTechnologyDiskTerminal entities: - uid: 8464 @@ -74487,8 +74836,11 @@ entities: - uid: 8629 components: - type: Transform + anchored: True pos: 3.5,33.5 parent: 8364 + - type: Physics + bodyType: Static - proto: CrateEmergencyRadiation entities: - uid: 19055 @@ -75005,6 +75357,46 @@ entities: showEnts: False occludes: True ent: null +- proto: CrateLockBoxEngineering + entities: + - uid: 28326 + components: + - type: Transform + pos: 9.5,-68.5 + parent: 8364 +- proto: CrateLockBoxMedical + entities: + - uid: 28325 + components: + - type: Transform + pos: 28.5,-35.5 + parent: 8364 +- proto: CrateLockBoxScience + entities: + - uid: 28324 + components: + - type: Transform + pos: 69.5,-21.5 + parent: 8364 +- proto: CrateLockBoxSecurity + entities: + - uid: 28323 + components: + - type: Transform + pos: 6.5,30.5 + parent: 8364 +- proto: CrateLockBoxService + entities: + - uid: 28321 + components: + - type: Transform + pos: 37.5,2.5 + parent: 8364 + - uid: 28322 + components: + - type: Transform + pos: 45.5,2.5 + parent: 8364 - proto: CrateMaterialPlasma entities: - uid: 26965 @@ -75126,8 +75518,11 @@ entities: - uid: 7339 components: - type: Transform + anchored: True pos: -2.5,37.5 parent: 8364 + - type: Physics + bodyType: Static - proto: CrateServiceJanitorialSupplies entities: - uid: 27563 @@ -84704,10 +85099,10 @@ entities: parent: 8364 - proto: DresserWardenFilled entities: - - uid: 9257 + - uid: 28329 components: - type: Transform - pos: -1.5,33.5 + pos: -2.5,33.5 parent: 8364 - proto: DrinkBeerBottleFull entities: @@ -86040,11 +86435,6 @@ entities: - type: Transform pos: -3.5,15.5 parent: 8364 - - uid: 11609 - components: - - type: Transform - pos: 16.5,30.5 - parent: 8364 - uid: 11642 components: - type: Transform @@ -88108,7 +88498,7 @@ entities: pos: 18.5,-13.5 parent: 8364 - type: Door - secondsUntilStateChange: -3143.983 + secondsUntilStateChange: -5118.329 state: Closing - uid: 13388 components: @@ -88116,7 +88506,7 @@ entities: pos: 18.5,-14.5 parent: 8364 - type: Door - secondsUntilStateChange: -3179.683 + secondsUntilStateChange: -5154.0293 state: Closing - uid: 13389 components: @@ -88284,7 +88674,7 @@ entities: pos: -34.5,-14.5 parent: 8364 - type: Door - secondsUntilStateChange: -90101.516 + secondsUntilStateChange: -92075.87 state: Closing - uid: 15010 components: @@ -126716,28 +127106,76 @@ entities: entities: - uid: 9207 components: + - type: MetaData + name: disabler safe (5) - type: Transform anchored: True pos: 1.5,37.5 parent: 8364 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.1465 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - type: Physics bodyType: Static + - type: Label + currentLabel: 5 + - type: NameModifier + baseName: disabler safe - proto: GunSafePistolMk58 entities: - uid: 7751 components: + - type: MetaData + name: mk58 safe (4) - type: Transform anchored: True pos: 2.5,37.5 parent: 8364 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14572 + moles: + - 1.606311 + - 6.042789 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 - type: Physics bodyType: Static + - type: Label + currentLabel: 4 + - type: NameModifier + baseName: mk58 safe - proto: GunSafeRifleLecter entities: - - uid: 9373 + - uid: 10023 components: - type: MetaData - desc: A standard-issue Nanotrasen storage unit, containing 3 Lecter combat rifles. + name: lecter safe (3) - type: Transform anchored: True pos: -0.5,37.5 @@ -126748,7 +127186,7 @@ entities: air: volume: 200 immutable: False - temperature: 293.14673 + temperature: 293.1465 moles: - 1.7459903 - 6.568249 @@ -126768,19 +127206,23 @@ entities: showEnts: False occludes: True ents: - - 9376 - 9375 - 9374 + - 9376 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null + - type: Label + currentLabel: 3 + - type: NameModifier + baseName: lecter safe - proto: GunSafeSubMachineGunDrozd entities: - - uid: 9369 + - uid: 10024 components: - type: MetaData - desc: A standard-issue Nanotrasen storage unit, containing 3 Drozd submachine guns. + name: drozd safe (3) - type: Transform anchored: True pos: 0.5,37.5 @@ -126791,7 +127233,7 @@ entities: air: volume: 200 immutable: False - temperature: 293.14673 + temperature: 293.1465 moles: - 1.7459903 - 6.568249 @@ -126811,13 +127253,17 @@ entities: showEnts: False occludes: True ents: - - 9370 - 9371 - 9372 + - 9370 paper_label: !type:ContainerSlot showEnts: False occludes: True ent: null + - type: Label + currentLabel: 3 + - type: NameModifier + baseName: drozd safe - proto: GyroscopeUnanchored entities: - uid: 25012 @@ -127998,22 +128444,51 @@ entities: parent: 8364 - proto: JetpackSecurityFilled entities: - - uid: 8572 - components: - - type: Transform - pos: -0.68612957,39.73207 - parent: 8364 - uid: 9182 components: - type: Transform - pos: -0.38925457,39.51332 - parent: 8364 -- proto: Jukebox - entities: - - uid: 20632 + parent: 8783 + - type: GasTank + toggleActionEntity: 10072 + - type: Jetpack + toggleActionEntity: 10071 + - type: Physics + canCollide: False + - type: ActionsContainer + - type: ContainerContainer + containers: + actions: !type:Container + ents: + - 10071 + - 10072 + - type: InsideEntityStorage + - uid: 10032 components: - type: Transform - pos: 31.5,-10.5 + parent: 10030 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 10074 + components: + - type: Transform + parent: 8825 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 11965 + components: + - type: Transform + parent: 11611 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: Jukebox + entities: + - uid: 28320 + components: + - type: Transform + pos: 21.5,-3.5 parent: 8364 - proto: KitchenElectricGrill entities: @@ -128505,7 +128980,18 @@ entities: - type: DeviceLinkSource linkedPorts: 6419: - - Pressed: Open + - - Pressed + - Open + 25744: + - - Pressed + - Open + - - Pressed + - AutoClose + 25747: + - - Pressed + - Open + - - Pressed + - AutoClose - uid: 25554 components: - type: MetaData @@ -128517,7 +129003,14 @@ entities: - type: DeviceLinkSource linkedPorts: 6419: - - Pressed: Close + - - Pressed + - Close + 25744: + - - Pressed + - Close + 25747: + - - Pressed + - Close - proto: LockableButtonChiefMedicalOfficer entities: - uid: 3809 @@ -128528,9 +129021,11 @@ entities: - type: DeviceLinkSource linkedPorts: 2505: - - Pressed: Open + - - Pressed + - Open 2506: - - Pressed: Open + - - Pressed + - Open - proto: LockerAtmosphericsFilledHardsuit entities: - uid: 3883 @@ -129740,8 +130235,11 @@ entities: - uid: 9234 components: - type: Transform + anchored: True pos: -2.5,30.5 parent: 8364 + - type: Physics + bodyType: Static - type: EntityStorage air: volume: 200 @@ -130093,19 +130591,33 @@ entities: - type: Transform pos: -43.5,-12.5 parent: 8364 +- proto: MachineMaterialSilo + entities: + - uid: 11598 + components: + - type: Transform + pos: 69.5,-26.5 + parent: 8364 +- proto: MagazineBoxMagnumPractice + entities: + - uid: 10062 + components: + - type: Transform + pos: 25.61246,35.490623 + parent: 8364 - proto: MagazinePistolSubMachineGun entities: - uid: 9371 components: - type: Transform - parent: 9369 + parent: 10024 - type: Physics canCollide: False - type: InsideEntityStorage - uid: 9372 components: - type: Transform - parent: 9369 + parent: 10024 - type: Physics canCollide: False - type: InsideEntityStorage @@ -130130,14 +130642,14 @@ entities: - uid: 9374 components: - type: Transform - parent: 9373 + parent: 10023 - type: Physics canCollide: False - type: InsideEntityStorage - uid: 9376 components: - type: Transform - parent: 9373 + parent: 10023 - type: Physics canCollide: False - type: InsideEntityStorage @@ -132715,12 +133227,28 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,37.5 parent: 8364 + - type: DeviceLinkSink + invokeCounter: 2 + - type: DeviceLinkSource + linkedPorts: + 11608: + - - DoorStatus + - Close +- proto: PlasmaWindoorSecureSecurityLocked + entities: + - uid: 11608 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 5.5,37.5 + parent: 8364 - type: DeviceLinkSink invokeCounter: 1 - type: DeviceLinkSource linkedPorts: - 26255: - - DoorStatus: Close + 9517: + - - DoorStatus + - Close - proto: PlasticFlapsAirtightClear entities: - uid: 3067 @@ -132836,17 +133364,7 @@ entities: enabled: False - type: Physics bodyType: Dynamic - - uid: 9518 - components: - - type: Transform - anchored: False - pos: -2.5,36.5 - parent: 8364 - - type: TriggerOnProximity - enabled: False - - type: Physics - bodyType: Dynamic - - uid: 9566 + - uid: 10028 components: - type: Transform anchored: False @@ -138314,11 +138832,6 @@ entities: - type: Transform pos: 1.5,39.5 parent: 8364 - - uid: 9192 - components: - - type: Transform - pos: 2.5,39.5 - parent: 8364 - uid: 9231 components: - type: Transform @@ -138329,6 +138842,11 @@ entities: - type: Transform pos: 27.5,21.5 parent: 8364 + - uid: 9483 + components: + - type: Transform + pos: 2.5,39.5 + parent: 8364 - uid: 9637 components: - type: Transform @@ -138369,11 +138887,6 @@ entities: - type: Transform pos: 66.5,6.5 parent: 8364 - - uid: 11608 - components: - - type: Transform - pos: -1.5,35.5 - parent: 8364 - uid: 11680 components: - type: Transform @@ -145655,7 +146168,7 @@ entities: - uid: 506 components: - type: Transform - pos: 69.50902,-26.620325 + pos: 69.430275,-27.968096 parent: 8364 - uid: 19207 components: @@ -145699,7 +146212,7 @@ entities: - uid: 9316 components: - type: Transform - pos: -2.430175,38.67102 + pos: -2.4926982,39.33291 parent: 8364 - uid: 11753 components: @@ -145809,28 +146322,6 @@ entities: - type: Transform pos: -23.2492,-71.39133 parent: 8364 -- proto: ShellShotgunPractice - entities: - - uid: 8770 - components: - - type: Transform - pos: 25.354076,35.417572 - parent: 8364 - - uid: 9164 - components: - - type: Transform - pos: 25.463451,35.401947 - parent: 8364 - - uid: 9537 - components: - - type: Transform - pos: 25.713451,35.401947 - parent: 8364 - - uid: 9538 - components: - - type: Transform - pos: 25.572826,35.401947 - parent: 8364 - proto: Shovel entities: - uid: 15416 @@ -146413,11 +146904,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4205: - - Pressed: Toggle + - - Pressed + - Toggle 3542: - - Pressed: Toggle + - - Pressed + - Toggle 25091: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1910 components: - type: Transform @@ -146427,21 +146921,29 @@ entities: - type: DeviceLinkSource linkedPorts: 1924: - - Pressed: Toggle + - - Pressed + - Toggle 1923: - - Pressed: Toggle + - - Pressed + - Toggle 1918: - - Pressed: Toggle + - - Pressed + - Toggle 17901: - - Pressed: Toggle + - - Pressed + - Toggle 22990: - - Pressed: Toggle + - - Pressed + - Toggle 18406: - - Pressed: Toggle + - - Pressed + - Toggle 5241: - - Pressed: Toggle + - - Pressed + - Toggle 5223: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2638 components: - type: Transform @@ -146450,7 +146952,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13910: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3753 components: - type: Transform @@ -146459,7 +146962,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3750: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3754 components: - type: Transform @@ -146468,7 +146972,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22831: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3807 components: - type: Transform @@ -146477,7 +146982,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3535: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4249 components: - type: Transform @@ -146487,11 +146993,14 @@ entities: - type: DeviceLinkSource linkedPorts: 25091: - - Pressed: Toggle + - - Pressed + - Toggle 3542: - - Pressed: Toggle + - - Pressed + - Toggle 4205: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4250 components: - type: Transform @@ -146501,11 +147010,14 @@ entities: - type: DeviceLinkSource linkedPorts: 13849: - - Pressed: Toggle + - - Pressed + - Toggle 3605: - - Pressed: Toggle + - - Pressed + - Toggle 15544: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 5222 components: - type: Transform @@ -146514,11 +147026,14 @@ entities: - type: DeviceLinkSource linkedPorts: 5336: - - Pressed: Toggle + - - Pressed + - Toggle 5338: - - Pressed: Toggle + - - Pressed + - Toggle 22014: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 5243 components: - type: Transform @@ -146527,11 +147042,14 @@ entities: - type: DeviceLinkSource linkedPorts: 19078: - - Pressed: Toggle + - - Pressed + - Toggle 19080: - - Pressed: Toggle + - - Pressed + - Toggle 19090: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 5322 components: - type: Transform @@ -146540,7 +147058,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9923: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 5478 components: - type: Transform @@ -146549,21 +147068,29 @@ entities: - type: DeviceLinkSource linkedPorts: 20840: - - Pressed: Toggle + - - Pressed + - Toggle 20841: - - Pressed: Toggle + - - Pressed + - Toggle 20842: - - Pressed: Toggle + - - Pressed + - Toggle 20843: - - Pressed: Toggle + - - Pressed + - Toggle 20844: - - Pressed: Toggle + - - Pressed + - Toggle 20845: - - Pressed: Toggle + - - Pressed + - Toggle 20846: - - Pressed: Toggle + - - Pressed + - Toggle 20848: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9421 components: - type: Transform @@ -146572,13 +147099,17 @@ entities: - type: DeviceLinkSource linkedPorts: 9642: - - Pressed: Toggle + - - Pressed + - Toggle 9639: - - Pressed: Toggle + - - Pressed + - Toggle 9640: - - Pressed: Toggle + - - Pressed + - Toggle 9641: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9868 components: - type: Transform @@ -146587,13 +147118,17 @@ entities: - type: DeviceLinkSource linkedPorts: 10454: - - Pressed: Toggle + - - Pressed + - Toggle 10455: - - Pressed: Toggle + - - Pressed + - Toggle 10456: - - Pressed: Toggle + - - Pressed + - Toggle 10457: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11625 components: - type: Transform @@ -146602,11 +147137,14 @@ entities: - type: DeviceLinkSource linkedPorts: 6086: - - Pressed: Toggle + - - Pressed + - Toggle 5898: - - Pressed: Toggle + - - Pressed + - Toggle 5911: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11628 components: - type: Transform @@ -146615,11 +147153,14 @@ entities: - type: DeviceLinkSource linkedPorts: 6087: - - Pressed: Toggle + - - Pressed + - Toggle 6098: - - Pressed: Toggle + - - Pressed + - Toggle 6099: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11984 components: - type: Transform @@ -146629,9 +147170,11 @@ entities: - type: DeviceLinkSource linkedPorts: 8814: - - Pressed: Toggle + - - Pressed + - Toggle 9243: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 16830 components: - type: MetaData @@ -146643,7 +147186,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5373: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 17685 components: - type: Transform @@ -146653,19 +147197,26 @@ entities: - type: DeviceLinkSource linkedPorts: 15422: - - Pressed: Toggle + - - Pressed + - Toggle 1455: - - Pressed: Toggle + - - Pressed + - Toggle 17669: - - Pressed: Toggle + - - Pressed + - Toggle 15377: - - Pressed: Toggle + - - Pressed + - Toggle 1454: - - Pressed: Toggle + - - Pressed + - Toggle 14850: - - Pressed: Toggle + - - Pressed + - Toggle 15428: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 17791 components: - type: Transform @@ -146674,9 +147225,11 @@ entities: - type: DeviceLinkSource linkedPorts: 18327: - - Pressed: Toggle + - - Pressed + - Toggle 18326: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 19172 components: - type: Transform @@ -146685,9 +147238,11 @@ entities: - type: DeviceLinkSource linkedPorts: 8814: - - Pressed: Toggle + - - Pressed + - Toggle 9243: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 19856 components: - type: Transform @@ -146696,11 +147251,14 @@ entities: - type: DeviceLinkSource linkedPorts: 20182: - - Pressed: Toggle + - - Pressed + - Toggle 4458: - - Pressed: Toggle + - - Pressed + - Toggle 20180: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 20896 components: - type: Transform @@ -146709,11 +147267,14 @@ entities: - type: DeviceLinkSource linkedPorts: 5592: - - Pressed: Toggle + - - Pressed + - Toggle 5591: - - Pressed: Toggle + - - Pressed + - Toggle 5590: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 22220 components: - type: MetaData @@ -146725,11 +147286,14 @@ entities: - type: DeviceLinkSource linkedPorts: 3851: - - Pressed: Toggle + - - Pressed + - Toggle 11732: - - Pressed: Toggle + - - Pressed + - Toggle 10835: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 25517 components: - type: Transform @@ -146739,11 +147303,14 @@ entities: - type: DeviceLinkSource linkedPorts: 20853: - - Pressed: Toggle + - - Pressed + - Toggle 20852: - - Pressed: Toggle + - - Pressed + - Toggle 20851: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 26795 components: - type: Transform @@ -146752,23 +147319,32 @@ entities: - type: DeviceLinkSource linkedPorts: 26786: - - Pressed: Toggle + - - Pressed + - Toggle 26787: - - Pressed: Toggle + - - Pressed + - Toggle 26788: - - Pressed: Toggle + - - Pressed + - Toggle 26789: - - Pressed: Toggle + - - Pressed + - Toggle 26790: - - Pressed: Toggle + - - Pressed + - Toggle 26791: - - Pressed: Toggle + - - Pressed + - Toggle 26792: - - Pressed: Toggle + - - Pressed + - Toggle 26794: - - Pressed: Toggle + - - Pressed + - Toggle 26793: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 26932 components: - type: MetaData @@ -146780,13 +147356,17 @@ entities: - type: DeviceLinkSource linkedPorts: 3789: - - Pressed: Toggle + - - Pressed + - Toggle 3788: - - Pressed: Toggle + - - Pressed + - Toggle 3875: - - Pressed: Toggle + - - Pressed + - Toggle 3868: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 26934 components: - type: MetaData @@ -146798,9 +147378,11 @@ entities: - type: DeviceLinkSource linkedPorts: 26666: - - Pressed: Toggle + - - Pressed + - Toggle 26667: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 26935 components: - type: MetaData @@ -146812,11 +147394,14 @@ entities: - type: DeviceLinkSource linkedPorts: 5798: - - Pressed: Toggle + - - Pressed + - Toggle 9379: - - Pressed: Toggle + - - Pressed + - Toggle 4704: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 26936 components: - type: MetaData @@ -146828,9 +147413,11 @@ entities: - type: DeviceLinkSource linkedPorts: 26668: - - Pressed: Toggle + - - Pressed + - Toggle 26669: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 26937 components: - type: MetaData @@ -146842,13 +147429,17 @@ entities: - type: DeviceLinkSource linkedPorts: 3868: - - Pressed: Toggle + - - Pressed + - Toggle 3875: - - Pressed: Toggle + - - Pressed + - Toggle 3788: - - Pressed: Toggle + - - Pressed + - Toggle 3789: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 27744 components: - type: Transform @@ -146858,11 +147449,14 @@ entities: - type: DeviceLinkSource linkedPorts: 15544: - - Pressed: Toggle + - - Pressed + - Toggle 3605: - - Pressed: Toggle + - - Pressed + - Toggle 13849: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 28254 components: - type: MetaData @@ -146874,11 +147468,14 @@ entities: - type: DeviceLinkSource linkedPorts: 20002: - - Pressed: Toggle + - - Pressed + - Toggle 28251: - - Pressed: Toggle + - - Pressed + - Toggle 28253: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 10732 @@ -146891,11 +147488,14 @@ entities: - type: DeviceLinkSource linkedPorts: 8158: - - Pressed: Toggle + - - Pressed + - Toggle 27220: - - Pressed: Toggle + - - Pressed + - Toggle 27221: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 27608 components: - type: Transform @@ -146904,7 +147504,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11334: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 27659 components: - type: Transform @@ -146914,7 +147515,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6417: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 27660 components: - type: Transform @@ -146924,7 +147526,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6416: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 27661 components: - type: Transform @@ -146934,7 +147537,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6415: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 27662 components: - type: Transform @@ -146944,7 +147548,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6414: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 27663 components: - type: Transform @@ -146954,7 +147559,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6413: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 27664 components: - type: Transform @@ -146964,7 +147570,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6412: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - proto: SignalSwitch entities: - uid: 9411 @@ -146980,11 +147587,15 @@ entities: - type: DeviceLinkSource linkedPorts: 19930: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19932: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 13247 components: - type: MetaData @@ -147004,26 +147615,40 @@ entities: - type: DeviceLinkSource linkedPorts: 8650: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8649: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8648: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8647: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8646: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8645: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8644: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 9368 components: - type: MetaData @@ -147037,14 +147662,20 @@ entities: - type: DeviceLinkSource linkedPorts: 6970: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4212: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3134: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 11568 components: - type: MetaData @@ -147058,44 +147689,70 @@ entities: - type: DeviceLinkSource linkedPorts: 12030: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 12033: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 17151: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open 18370: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19886: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19890: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19931: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19959: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19968: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open 20152: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 22451: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11980: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 12024: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 15129 components: - type: MetaData @@ -147108,11 +147765,15 @@ entities: - type: DeviceLinkSource linkedPorts: 4495: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4494: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - proto: SignAnomaly entities: - uid: 25994 @@ -147129,10 +147790,11 @@ entities: parent: 8364 - proto: SignArmory entities: - - uid: 4990 + - uid: 9306 components: - type: Transform - pos: 4.5,34.5 + rot: 1.5707963267948966 rad + pos: 3.5,34.5 parent: 8364 - proto: SignAtmos entities: @@ -150693,6 +151355,11 @@ entities: - type: Transform pos: 9.5,36.5 parent: 8364 + - uid: 9389 + components: + - type: Transform + pos: 6.5,36.5 + parent: 8364 - uid: 20856 components: - type: Transform @@ -150835,6 +151502,18 @@ entities: - type: Transform pos: -31.5,-43.5 parent: 8364 +- proto: SpeedLoaderMagnumPractice + entities: + - uid: 28335 + components: + - type: Transform + pos: 25.346834,35.803123 + parent: 8364 + - uid: 28336 + components: + - type: Transform + pos: 25.284334,35.553123 + parent: 8364 - proto: SprayBottleSpaceCleaner entities: - uid: 1153 @@ -151708,43 +152387,18 @@ entities: parent: 8364 - proto: SuitStorageSec entities: - - uid: 4163 - components: - - type: Transform - pos: 0.5,35.5 - parent: 8364 - - uid: 4213 - components: - - type: Transform - pos: -0.5,35.5 - parent: 8364 - uid: 8783 components: + - type: MetaData + name: suit storage unit (Double) - type: Transform pos: 3.5,35.5 parent: 8364 - - uid: 8825 - components: - - type: Transform - pos: 4.5,35.5 - parent: 8364 - - uid: 16531 - components: - - type: Transform - pos: -8.5,3.5 - parent: 8364 -- proto: SuitStorageWarden - entities: - - uid: 11999 - components: - - type: Transform - pos: -2.5,33.5 - parent: 8364 - type: EntityStorage air: volume: 200 immutable: False - temperature: 293.14673 + temperature: 293.1465 moles: - 1.7459903 - 6.568249 @@ -151758,6 +152412,165 @@ entities: - 0 - 0 - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 10073 + - 9182 + - type: Label + currentLabel: Double + - type: NameModifier + baseName: suit storage unit + - uid: 8825 + components: + - type: MetaData + name: suit storage unit (Double) + - type: Transform + pos: 4.5,35.5 + parent: 8364 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.1465 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 10075 + - 10074 + - type: Label + currentLabel: Double + - type: NameModifier + baseName: suit storage unit + - uid: 10030 + components: + - type: MetaData + name: suit storage unit (Double) + - type: Transform + pos: -1.5,35.5 + parent: 8364 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.1462 + moles: + - 1.606311 + - 6.042789 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 10031 + - 10032 + - type: Label + currentLabel: Double + - type: NameModifier + baseName: suit storage unit + - uid: 11611 + components: + - type: MetaData + name: suit storage unit (Double) + - type: Transform + pos: -0.5,35.5 + parent: 8364 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14594 + moles: + - 1.606311 + - 6.042789 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 11965 + - 11999 + - type: Label + currentLabel: Double + - type: NameModifier + baseName: suit storage unit + - uid: 16531 + components: + - type: Transform + pos: -8.5,3.5 + parent: 8364 +- proto: SuitStorageWarden + entities: + - uid: 10069 + components: + - type: MetaData + name: suit storage unit (Warden) + - type: Transform + pos: 0.5,35.5 + parent: 8364 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14563 + moles: + - 1.4778061 + - 5.559366 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: Label + currentLabel: Warden + - type: NameModifier + baseName: suit storage unit - proto: SurveillanceCameraCommand entities: - uid: 296 @@ -154168,11 +154981,6 @@ entities: - type: Transform pos: 71.5,-29.5 parent: 8364 - - uid: 5493 - components: - - type: Transform - pos: 69.5,-26.5 - parent: 8364 - uid: 5494 components: - type: Transform @@ -154438,6 +155246,11 @@ entities: - type: Transform pos: 25.5,32.5 parent: 8364 + - uid: 9589 + components: + - type: Transform + pos: 21.5,36.5 + parent: 8364 - uid: 10561 components: - type: Transform @@ -154473,16 +155286,6 @@ entities: - type: Transform pos: 13.5,30.5 parent: 8364 - - uid: 11598 - components: - - type: Transform - pos: 15.5,30.5 - parent: 8364 - - uid: 11611 - components: - - type: Transform - pos: 12.5,34.5 - parent: 8364 - uid: 11612 components: - type: Transform @@ -155077,16 +155880,6 @@ entities: - type: Transform pos: -29.5,-15.5 parent: 8364 - - uid: 17837 - components: - - type: Transform - pos: 37.5,-35.5 - parent: 8364 - - uid: 18061 - components: - - type: Transform - pos: -1.5,-66.5 - parent: 8364 - uid: 18317 components: - type: Transform @@ -156191,7 +156984,17 @@ entities: - type: Transform pos: -4.5,40.5 parent: 8364 - - uid: 9239 + - uid: 9566 + components: + - type: Transform + pos: 24.5,37.5 + parent: 8364 + - uid: 9998 + components: + - type: Transform + pos: 23.5,37.5 + parent: 8364 + - uid: 10078 components: - type: Transform pos: 5.5,37.5 @@ -156206,6 +157009,11 @@ entities: - type: Transform pos: 47.5,-10.5 parent: 8364 + - uid: 11609 + components: + - type: Transform + pos: 22.5,37.5 + parent: 8364 - uid: 11640 components: - type: Transform @@ -156546,11 +157354,6 @@ entities: - type: Transform pos: 9.5,-24.5 parent: 8364 - - uid: 5773 - components: - - type: Transform - pos: -11.5,-21.5 - parent: 8364 - uid: 5789 components: - type: Transform @@ -157921,17 +158724,26 @@ entities: - type: DeviceLinkSource linkedPorts: 20192: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close 20193: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close 20194: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close - uid: 9807 components: - type: Transform @@ -157945,37 +158757,61 @@ entities: - type: DeviceLinkSource linkedPorts: 7213: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7162: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9935: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7307: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 10535: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 10536: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11325: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 10804: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 13893 components: - type: Transform @@ -157984,61 +158820,103 @@ entities: - type: DeviceLinkSource linkedPorts: 6232: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6231: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6230: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6229: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6228: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6227: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6226: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6233: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6234: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6235: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6236: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13812: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6120: - - Right: Reverse - - Left: Forward - - Middle: Off + - - Right + - Reverse + - - Left + - Forward + - - Middle + - Off 16588: - - Right: Reverse - - Left: Forward - - Middle: Off + - - Right + - Reverse + - - Left + - Forward + - - Middle + - Off - uid: 16780 components: - type: Transform @@ -158047,9 +158925,12 @@ entities: - type: DeviceLinkSource linkedPorts: 16779: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 20027 components: - type: Transform @@ -158058,21 +158939,33 @@ entities: - type: DeviceLinkSource linkedPorts: 11321: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 17202: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 8017: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3062: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 20049 components: - type: Transform @@ -158514,12 +159407,12 @@ entities: parent: 8364 - proto: VendingMachineSec entities: - - uid: 8777 + - uid: 10079 components: - type: Transform pos: 6.5,40.5 parent: 8364 - - uid: 9074 + - uid: 10080 components: - type: Transform pos: 6.5,38.5 @@ -177564,11 +178457,6 @@ entities: - type: Transform pos: 7.5,35.5 parent: 8364 - - uid: 9344 - components: - - type: Transform - pos: 6.5,35.5 - parent: 8364 - uid: 9407 components: - type: Transform @@ -177644,6 +178532,11 @@ entities: parent: 8364 - proto: WeaponLaserCarbinePractice entities: + - uid: 4645 + components: + - type: Transform + pos: 21.481674,35.209373 + parent: 8364 - uid: 8772 components: - type: Transform @@ -177654,7 +178547,7 @@ entities: - uid: 9375 components: - type: Transform - parent: 9373 + parent: 10023 - type: Physics canCollide: False - type: InsideEntityStorage @@ -177685,7 +178578,7 @@ entities: - uid: 9370 components: - type: Transform - parent: 9369 + parent: 10024 - type: Physics canCollide: False - type: InsideEntityStorage @@ -177923,9 +178816,11 @@ entities: - type: DeviceLinkSource linkedPorts: 8605: - - DoorStatus: Close + - - DoorStatus + - Close 8604: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 8609 components: - type: MetaData @@ -177938,9 +178833,11 @@ entities: - type: DeviceLinkSource linkedPorts: 8604: - - DoorStatus: Close + - - DoorStatus + - Close 8605: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9242 components: - type: MetaData @@ -177953,7 +178850,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12663: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9805 components: - type: MetaData @@ -178168,7 +179066,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9242: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 25744 components: - type: Transform @@ -178301,20 +179200,6 @@ entities: rot: 3.141592653589793 rad pos: 32.5,-19.5 parent: 8364 -- proto: WindoorSecurePlasma - entities: - - uid: 26255 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 5.5,37.5 - parent: 8364 - - type: DeviceLinkSink - invokeCounter: 1 - - type: DeviceLinkSource - linkedPorts: - 9517: - - DoorStatus: Close - proto: WindoorSecureScienceLocked entities: - uid: 2317 @@ -178415,9 +179300,11 @@ entities: - type: DeviceLinkSource linkedPorts: 8609: - - DoorStatus: Close + - - DoorStatus + - Close 8608: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 8605 components: - type: MetaData @@ -178431,9 +179318,11 @@ entities: - type: DeviceLinkSource linkedPorts: 8608: - - DoorStatus: Close + - - DoorStatus + - Close 8609: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 8624 components: - type: MetaData @@ -179880,7 +180769,7 @@ entities: - uid: 2220 components: - type: Transform - pos: 37.56429,-35.54103 + pos: 36.15077,-36.314537 parent: 8364 - uid: 5248 components: diff --git a/Resources/Maps/centcomm.yml b/Resources/Maps/centcomm.yml index 39ed39ed9e..6405c65923 100644 --- a/Resources/Maps/centcomm.yml +++ b/Resources/Maps/centcomm.yml @@ -1,10 +1,10 @@ meta: format: 7 category: Grid - engineVersion: 247.2.0 + engineVersion: 250.0.0 forkId: "" forkVersion: "" - time: 03/05/2025 09:01:26 + time: 04/24/2025 00:06:42 entityCount: 9680 maps: [] grids: @@ -21722,6 +21722,88 @@ entities: - type: Transform pos: 3.5,-12.5 parent: 1668 +- proto: ChemistryBottleEpinephrine + entities: + - uid: 6859 + components: + - type: Transform + parent: 6846 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 6860 + components: + - type: Transform + parent: 6846 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 6867 + components: + - type: Transform + parent: 6865 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 6871 + components: + - type: Transform + parent: 6865 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: ChemistryBottleOmnizine + entities: + - uid: 6862 + components: + - type: Transform + parent: 6846 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 6863 + components: + - type: Transform + parent: 6846 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 6866 + components: + - type: Transform + parent: 6865 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 6876 + components: + - type: Transform + parent: 6865 + - type: Physics + canCollide: False + - type: InsideEntityStorage +- proto: ChemistryBottleUnstableMutagen + entities: + - uid: 1035 + components: + - type: Transform + pos: 7.383148,-17.230762 + parent: 1668 + - uid: 1036 + components: + - type: Transform + pos: 7.6053705,-17.223818 + parent: 1668 + - uid: 1037 + components: + - type: Transform + pos: 7.5012035,-17.411318 + parent: 1668 + - uid: 1038 + components: + - type: Transform + pos: 7.7303705,-17.411318 + parent: 1668 - proto: ChemistryHotplate entities: - uid: 671 @@ -23874,36 +23956,34 @@ entities: - type: Transform pos: -12.5,5.5 parent: 1668 -- proto: DefaultStationBeacon +- proto: DefaultStationBeaconCentComm entities: - uid: 4656 components: - type: Transform pos: -0.5,3.5 parent: 1668 - - type: NavMapBeacon - text: CentComm +- proto: DefaultStationBeaconCentCommAfterhours + entities: - uid: 9452 components: - type: Transform pos: 22.5,-21.5 parent: 1668 - - type: NavMapBeacon - text: Afterhours - - uid: 9479 - components: - - type: Transform - pos: -0.5,-41.5 - parent: 1668 - - type: NavMapBeacon - text: Thunderdome +- proto: DefaultStationBeaconCentCommERT + entities: - uid: 9480 components: - type: Transform pos: -41.5,-7.5 parent: 1668 - - type: NavMapBeacon - text: ERT +- proto: DefaultStationBeaconCentCommThunderdome + entities: + - uid: 9479 + components: + - type: Transform + pos: -0.5,-41.5 + parent: 1668 - proto: DefibrillatorCabinetFilled entities: - uid: 511 @@ -26409,36 +26489,6 @@ entities: - type: Transform pos: 13.91264,32.80469 parent: 1668 -- proto: EpinephrineChemistryBottle - entities: - - uid: 6859 - components: - - type: Transform - parent: 6846 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 6860 - components: - - type: Transform - parent: 6846 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 6867 - components: - - type: Transform - parent: 6865 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 6871 - components: - - type: Transform - parent: 6865 - - type: Physics - canCollide: False - - type: InsideEntityStorage - proto: ERTEngineerPDA entities: - uid: 6784 @@ -43141,36 +43191,6 @@ entities: - type: Transform pos: -1.4979519,1.1034296 parent: 1668 -- proto: OmnizineChemistryBottle - entities: - - uid: 6862 - components: - - type: Transform - parent: 6846 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 6863 - components: - - type: Transform - parent: 6846 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 6866 - components: - - type: Transform - parent: 6865 - - type: Physics - canCollide: False - - type: InsideEntityStorage - - uid: 6876 - components: - - type: Transform - parent: 6865 - - type: Physics - canCollide: False - - type: InsideEntityStorage - proto: OreProcessor entities: - uid: 4080 @@ -53982,28 +54002,6 @@ entities: - Left: Reverse - Right: Forward - Middle: Off -- proto: UnstableMutagenChemistryBottle - entities: - - uid: 1035 - components: - - type: Transform - pos: 7.383148,-17.230762 - parent: 1668 - - uid: 1036 - components: - - type: Transform - pos: 7.6053705,-17.223818 - parent: 1668 - - uid: 1037 - components: - - type: Transform - pos: 7.5012035,-17.411318 - parent: 1668 - - uid: 1038 - components: - - type: Transform - pos: 7.7303705,-17.411318 - parent: 1668 - proto: UraniumReinforcedWindowDirectional entities: - uid: 9601 diff --git a/Resources/Maps/convex.yml b/Resources/Maps/convex.yml index 17c7ed59a5..5c67cffad8 100644 --- a/Resources/Maps/convex.yml +++ b/Resources/Maps/convex.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 250.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 04/08/2025 17:45:29 - entityCount: 37729 + time: 04/19/2025 17:25:37 + entityCount: 37741 maps: - 353 grids: @@ -83,19 +83,19 @@ entities: version: 6 1,4: ind: 1,4 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAGAAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAACAAAAAACAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAGAAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAACAAAAAABAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 1,5: ind: 1,5 - tiles: AAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAACAAAAAADAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAAAAAAAAAAAAAAAAAgAAAAAACAAAAAAACAAAAAABCAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAACAAAAAADAgAAAAAACAAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAAACAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAACAAAAAABAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAAAAAAAAAAAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAABCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAACAAAAAACAgAAAAAACAAAAAABCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 1,6: ind: 1,6 - tiles: AAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACBQAAAAABBQAAAAADBQAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACBQAAAAADBQAAAAADBQAAAAACAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAwAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABBQAAAAACBQAAAAADBQAAAAACAwAAAAACAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAABAAAAAAABAAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACBQAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAADAwAAAAAB + tiles: AAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACBQAAAAACBQAAAAACBQAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBQAAAAACBQAAAAAABQAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABBQAAAAAABQAAAAADBQAAAAABAwAAAAADAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAABAAAAAAABAAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACBQAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAABAwAAAAAA version: 6 1,7: ind: 1,7 - tiles: AAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAIQAAAAADAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAABQAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAABAgAAAAAAIQAAAAABIQAAAAABAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAABAwAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBQAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAACBQAAAAABAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAIAAAAAAAAgAAAAAABgAAAAACBgAAAAACBgAAAAACAgAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABgAAAAABBgAAAAADBgAAAAADBgAAAAAABgAAAAADAgAAAAAAAgAAAAAAIAAAAAAAAwAAAAAAAwAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABgAAAAAABgAAAAAABgAAAAADBgAAAAACBgAAAAABBgAAAAAABgAAAAABBgAAAAABAgAAAAAAAgAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABgAAAAAABgAAAAADBgAAAAADAgAAAAAABgAAAAABBgAAAAABBgAAAAADBgAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA + tiles: AAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAADIQAAAAADIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAABQAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAAgAAAAAAIQAAAAACIQAAAAABAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAADAwAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABBQAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAACBQAAAAACAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAACAwAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAIAAAAAAAAgAAAAAABgAAAAADBgAAAAAABgAAAAADAgAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABgAAAAABBgAAAAAABgAAAAAABgAAAAADBgAAAAACAgAAAAAAAgAAAAAAIAAAAAAEAwAAAAACAwAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABgAAAAABBgAAAAADBgAAAAACBgAAAAADBgAAAAADBgAAAAADBgAAAAADBgAAAAADAgAAAAAAAgAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABgAAAAACBgAAAAABBgAAAAADAgAAAAAABgAAAAABBgAAAAACBgAAAAAABgAAAAADAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAA version: 6 1,8: ind: 1,8 @@ -107,35 +107,35 @@ entities: version: 6 10,2: ind: 10,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAQAAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAACAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAQAAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAA version: 6 10,3: ind: 10,3 - tiles: AwAAAAADAwAAAAADAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAA + tiles: AwAAAAABAwAAAAADAgAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAA version: 6 10,4: ind: 10,4 - tiles: AgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAwAAAAABAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAABwAAAAADBwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAABwAAAAACBwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAABwAAAAADBwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAACBwAAAAADAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAADBwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABwAAAAABBwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAADBwAAAAABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAABBwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAABwAAAAAABwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAABwAAAAADBwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAABwAAAAABBwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAABBwAAAAACAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAABwAAAAADBwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABwAAAAACBwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAADBwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAADBwAAAAABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 10,5: ind: 10,5 - tiles: AwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 10,6: ind: 10,6 - tiles: AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABCAAAAAAACAAAAAAACAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAACCAAAAAADCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAACCAAAAAACCAAAAAADCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAAACAAAAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAADCAAAAAADCAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAABCAAAAAABCAAAAAAACAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAACAAAAAACCAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 10,7: ind: 10,7 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 10,8: ind: 10,8 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 10,9: ind: 10,9 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAACAAAAAACCgAAAAAACAAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAACAAAAAADCgAAAAABCAAAAAABAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAACCAAAAAABAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAACAAAAAADCgAAAAABCAAAAAADAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAACAAAAAACCgAAAAABCAAAAAABAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 11,2: ind: 11,2 @@ -155,31 +155,31 @@ entities: version: 6 2,1: ind: 2,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAACAAAAAADCAAAAAABBQAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACAAAAAAACAAAAAACCQAAAAAACAAAAAACCAAAAAABCAAAAAABAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAABAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACQAAAAAAAgAAAAAACQAAAAAACQAAAAAACQAAAAAACAAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAABAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACAAAAAADCAAAAAACCQAAAAAACAAAAAADCAAAAAADCAAAAAADAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAACAAAAAABCAAAAAACBQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAABAAAAAAABAAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAACAAAAAABCAAAAAABBQAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACAAAAAACCAAAAAACCQAAAAAACAAAAAAACAAAAAAACAAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACQAAAAAAAgAAAAAACQAAAAAACQAAAAAACQAAAAAACAAAAAABAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAACAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAACAAAAAADCAAAAAABCQAAAAAACAAAAAAACAAAAAABCAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAACAAAAAABAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAACAAAAAABCAAAAAACBQAAAAABAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAABAAAAAAABAAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAA version: 6 2,2: ind: 2,2 - tiles: AQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAACAAAAAABCAAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAACAAAAAABCAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAACAAAAAADCAAAAAADCAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAACAAAAAABCAAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAACAAAAAACCAAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAACCAAAAAABCAAAAAABCAAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAACCAAAAAADCAAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAAACAAAAAABCAAAAAADCAAAAAADAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAD + tiles: AQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAACAAAAAAACAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAACAAAAAAACAAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAACAAAAAACCAAAAAACCAAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAACAAAAAADCAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAACAAAAAACCAAAAAACAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAADAwAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAAACAAAAAADCAAAAAADCAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAABCAAAAAAACAAAAAABCAAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAACCAAAAAABCAAAAAABAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAD version: 6 2,3: ind: 2,3 - tiles: AgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAADCAAAAAABCAAAAAAACAAAAAAAAgAAAAAACAAAAAAACAAAAAABCAAAAAADAgAAAAAACAAAAAABCgAAAAACAgAAAAAACAAAAAADCAAAAAACCAAAAAABCgAAAAACCAAAAAACCgAAAAAACAAAAAACCAAAAAADFAAAAAAACAAAAAADCAAAAAABCAAAAAAAAgAAAAAACAAAAAADCAAAAAABAgAAAAAACAAAAAADCgAAAAACCAAAAAACCAAAAAACCAAAAAABCAAAAAABCAAAAAADCAAAAAAAFAAAAAAACAAAAAACCAAAAAACCAAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAAACAAAAAADCAAAAAADCAAAAAADCAAAAAACCAAAAAADCAAAAAACCAAAAAAAFAAAAAAACAAAAAAACAAAAAAACAAAAAADAgAAAAAACAAAAAADCAAAAAADCAAAAAADCgAAAAABCAAAAAADCAAAAAABCAAAAAADCAAAAAACCAAAAAADCgAAAAAACAAAAAABAgAAAAAACAAAAAAACAAAAAADCAAAAAABAgAAAAAAAgAAAAAACAAAAAABCAAAAAACCAAAAAAACAAAAAACAgAAAAAACAAAAAADAgAAAAAACAAAAAAACAAAAAADCAAAAAADAgAAAAAACAAAAAADCAAAAAADCAAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAABCgAAAAAACAAAAAADAgAAAAAACwAAAAAAAgAAAAAACAAAAAAACgAAAAABCAAAAAABAgAAAAAACAAAAAADCAAAAAAACAAAAAADAgAAAAAACAAAAAADCAAAAAAACAAAAAACCAAAAAACCAAAAAADAgAAAAAACwAAAAABAgAAAAAACAAAAAAACAAAAAACCAAAAAABAgAAAAAACAAAAAABCAAAAAADCAAAAAACAgAAAAAACAAAAAAACAAAAAAACAAAAAACCgAAAAAACAAAAAACAgAAAAAACwAAAAADAgAAAAAACAAAAAACCgAAAAADCAAAAAAAAgAAAAAACAAAAAAACAAAAAACCAAAAAACAgAAAAAACAAAAAAACAAAAAABCAAAAAACCAAAAAADCAAAAAAAAgAAAAAACwAAAAABAgAAAAAACAAAAAABCAAAAAAACAAAAAABAgAAAAAACAAAAAAACAAAAAACCAAAAAADFAAAAAAACAAAAAAACAAAAAADCAAAAAAACgAAAAADCAAAAAADAgAAAAAACwAAAAAAAgAAAAAACAAAAAADCgAAAAABCAAAAAACAgAAAAAACAAAAAABCAAAAAABCAAAAAADFAAAAAAACAAAAAAACAAAAAADCAAAAAAACAAAAAABCAAAAAADAgAAAAAACwAAAAAAAgAAAAAACAAAAAAACAAAAAADCAAAAAADAgAAAAAACAAAAAACCAAAAAACCAAAAAADFAAAAAAACAAAAAADCAAAAAACCAAAAAAACgAAAAACCAAAAAACAgAAAAAACwAAAAAAAgAAAAAACAAAAAAACgAAAAACCAAAAAADAgAAAAAACAAAAAACCAAAAAAACAAAAAAAAgAAAAAACAAAAAADCgAAAAADCAAAAAADCAAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAADFAAAAAAACAAAAAADCAAAAAABCAAAAAADAgAAAAAAAgAAAAAACgAAAAADCAAAAAACCgAAAAADCAAAAAABCAAAAAABCAAAAAACCAAAAAADCAAAAAABCgAAAAACCAAAAAAAFAAAAAAACAAAAAACCAAAAAACCAAAAAAAAgAAAAAACAAAAAADCgAAAAACCAAAAAAACAAAAAADCgAAAAACCAAAAAAACgAAAAABCAAAAAADCgAAAAADCAAAAAABCAAAAAABFAAAAAAACAAAAAAACAAAAAADCAAAAAAAAgAAAAAACAAAAAADCAAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAACCAAAAAADCAAAAAADCAAAAAADAgAAAAAACAAAAAABCAAAAAADCAAAAAACAgAAAAAACAAAAAADCgAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAABCgAAAAAACAAAAAABCgAAAAAACAAAAAADCAAAAAABFAAAAAAACAAAAAAACAAAAAAACAAAAAADAgAAAAAACAAAAAADCAAAAAABAgAAAAAACAAAAAACCgAAAAACCAAAAAABCAAAAAAACAAAAAADCAAAAAACCAAAAAACCAAAAAABFAAAAAAACAAAAAACCAAAAAAACAAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAAACAAAAAAACAAAAAADCAAAAAADCAAAAAADCAAAAAACCAAAAAABCAAAAAABCAAAAAAAFAAAAAAACAAAAAADCAAAAAACCAAAAAABAgAAAAAACAAAAAABCAAAAAAACAAAAAABCgAAAAADCAAAAAAACAAAAAACCAAAAAACCAAAAAAACAAAAAAACgAAAAACCAAAAAABAgAAAAAACAAAAAAACAAAAAAACAAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAACCAAAAAABCAAAAAACAgAAAAAACAAAAAADAgAAAAAACAAAAAAACAAAAAACCAAAAAADAgAAAAAACAAAAAADCAAAAAABCAAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAADCgAAAAACCAAAAAABAgAAAAAACwAAAAACAgAAAAAACAAAAAADCgAAAAABCAAAAAACAgAAAAAACAAAAAADCAAAAAACCAAAAAABAgAAAAAACAAAAAABCAAAAAACCAAAAAAACAAAAAABCAAAAAABAgAAAAAACwAAAAABAgAAAAAACAAAAAADCAAAAAAACAAAAAACAgAAAAAACAAAAAABCAAAAAAACAAAAAADAgAAAAAACAAAAAACCAAAAAADCAAAAAABCgAAAAADCAAAAAADAgAAAAAACwAAAAACAgAAAAAACAAAAAAACgAAAAACCAAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAADAgAAAAAACAAAAAACCAAAAAAACAAAAAABCAAAAAAACAAAAAADAgAAAAAACwAAAAAAAgAAAAAACAAAAAAACAAAAAADCAAAAAADAgAAAAAACAAAAAADCAAAAAABCAAAAAACFAAAAAAACAAAAAADCAAAAAADCAAAAAADCgAAAAACCAAAAAADAgAAAAAACwAAAAAAAgAAAAAACAAAAAACCgAAAAACCAAAAAACAgAAAAAACAAAAAAACAAAAAACCAAAAAADFAAAAAAACAAAAAACCAAAAAABCAAAAAACCAAAAAACCAAAAAABAgAAAAAACwAAAAADAgAAAAAACAAAAAAACAAAAAACCAAAAAABAgAAAAAACAAAAAADCAAAAAADCAAAAAACFAAAAAAACAAAAAABCAAAAAADCAAAAAADCgAAAAAACAAAAAADAgAAAAAACwAAAAABAgAAAAAACAAAAAADCgAAAAAACAAAAAADAgAAAAAACAAAAAABCAAAAAABCAAAAAABAgAAAAAACAAAAAADCgAAAAAACAAAAAAACAAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAACCAAAAAADFAAAAAAACAAAAAADCAAAAAAACAAAAAABAgAAAAAAAgAAAAAACgAAAAABCAAAAAABCgAAAAACCAAAAAACCAAAAAADCAAAAAADCAAAAAABCAAAAAABCgAAAAACCAAAAAACFAAAAAAACAAAAAAACAAAAAABCAAAAAADAgAAAAAACAAAAAADCgAAAAADCAAAAAABCAAAAAADCgAAAAABCAAAAAABCgAAAAAACAAAAAAACgAAAAAACAAAAAACCAAAAAABFAAAAAAACAAAAAAACAAAAAAACAAAAAAAAgAAAAAACAAAAAAACAAAAAAC version: 6 2,4: ind: 2,4 - tiles: CAAAAAACCAAAAAABCAAAAAABCAAAAAAACAAAAAADCAAAAAABCAAAAAADCAAAAAAACAAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAADAgAAAAAACAAAAAABCgAAAAADAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAACCgAAAAAADAAAAAABDAAAAAAADAAAAAACDAAAAAADAgAAAAAABwAAAAABBwAAAAADBwAAAAABBwAAAAABAgAAAAAACAAAAAAACAAAAAADCAAAAAADAgAAAAAACAAAAAACCAAAAAABDAAAAAACDAAAAAAADAAAAAAADAAAAAACBwAAAAAABwAAAAAABwAAAAACBwAAAAACBwAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAABDQAAAAAADAAAAAABDAAAAAABAgAAAAAABwAAAAAABwAAAAABBwAAAAACBwAAAAACAgAAAAAACAAAAAACCAAAAAACCAAAAAAAAgAAAAAACAAAAAABCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAACAAAAAADCAAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAAABwAAAAAABwAAAAACBwAAAAACBwAAAAADBwAAAAADBwAAAAACBwAAAAADBwAAAAADCAAAAAABAgAAAAAACAAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAACCAAAAAADBwAAAAABBwAAAAADBwAAAAACBwAAAAABBwAAAAAABwAAAAAABwAAAAADBwAAAAADBwAAAAACAgAAAAAACAAAAAAACAAAAAAACAAAAAABAgAAAAAACAAAAAADCAAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAACCAAAAAADBwAAAAADBwAAAAACBwAAAAACBwAAAAADAgAAAAAACAAAAAAACAAAAAACCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABCAAAAAABBwAAAAADBwAAAAAABwAAAAAABwAAAAAACAAAAAABCAAAAAACCAAAAAADCAAAAAACAgAAAAAACAAAAAADCAAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAAACAAAAAABBwAAAAACBwAAAAAABwAAAAADBwAAAAABAgAAAAAACAAAAAACCAAAAAACCAAAAAADCAAAAAABCAAAAAACCAAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAABCAAAAAADBwAAAAADBwAAAAABBwAAAAACBwAAAAADAgAAAAAACAAAAAACCAAAAAAACAAAAAAAAgAAAAAACAAAAAABCAAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAADCAAAAAACBwAAAAACBwAAAAAABwAAAAACBwAAAAACAgAAAAAACAAAAAADCAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAA + tiles: CAAAAAACCAAAAAABCAAAAAADCAAAAAABCAAAAAABCAAAAAABCAAAAAAACAAAAAADCAAAAAACAgAAAAAACAAAAAACCAAAAAACCAAAAAAAAgAAAAAACAAAAAABCgAAAAACAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAABCgAAAAADDAAAAAADDAAAAAACDAAAAAABDAAAAAABAgAAAAAABwAAAAABBwAAAAABBwAAAAAABwAAAAACAgAAAAAACAAAAAABCAAAAAABCAAAAAAAAgAAAAAACAAAAAADCAAAAAABDAAAAAADDAAAAAACDAAAAAACDAAAAAABBwAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAADAgAAAAAACAAAAAAACAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAADAAAAAABDQAAAAAADAAAAAAADAAAAAACAgAAAAAABwAAAAADBwAAAAABBwAAAAAABwAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAABAgAAAAAACAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAACAAAAAAACAAAAAADCAAAAAABCAAAAAABCAAAAAADCAAAAAADBwAAAAAABwAAAAADBwAAAAADBwAAAAACBwAAAAAABwAAAAABBwAAAAADBwAAAAABCAAAAAABAgAAAAAACAAAAAADCAAAAAABCAAAAAAACAAAAAABCAAAAAAACAAAAAACBwAAAAACBwAAAAABBwAAAAACBwAAAAABBwAAAAABBwAAAAACBwAAAAAABwAAAAAABwAAAAACAgAAAAAACAAAAAABCAAAAAAACAAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAAACAAAAAAACAAAAAACCAAAAAACCAAAAAABBwAAAAABBwAAAAAABwAAAAACBwAAAAABAgAAAAAACAAAAAACCAAAAAADCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADCAAAAAABBwAAAAADBwAAAAACBwAAAAACBwAAAAACCAAAAAAACAAAAAACCAAAAAABCAAAAAACAgAAAAAACAAAAAAACAAAAAABAwAAAAAAAwAAAAABAwAAAAABAwAAAAACCAAAAAADBwAAAAABBwAAAAABBwAAAAADBwAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAAACAAAAAABCAAAAAAACAAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAACCAAAAAADBwAAAAABBwAAAAAABwAAAAACBwAAAAABAgAAAAAACAAAAAACCAAAAAACCAAAAAADAgAAAAAACAAAAAACCAAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAACCAAAAAACBwAAAAADBwAAAAADBwAAAAABBwAAAAADAgAAAAAACAAAAAADCAAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 2,5: ind: 2,5 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAAABQAAAAADBQAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABBQAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAABAwAAAAABBAAAAAAABAAAAAAABAAAAAAAAwAAAAABBQAAAAADAwAAAAADBQAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAADBQAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAADBQAAAAACAwAAAAADBQAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAABBQAAAAADBAAAAAAABAAAAAAAAgAAAAAAAwAAAAADBQAAAAAAAwAAAAACBQAAAAACAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAABBAAAAAAABAAAAAAAAgAAAAAAAwAAAAADBQAAAAADAwAAAAAABQAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAACBQAAAAAAAwAAAAABBQAAAAABAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAABQAAAAADBAAAAAAABAAAAAAABAAAAAAAAwAAAAACBQAAAAACAwAAAAABBQAAAAACAwAAAAABAwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAwAAAAAAAwAAAAABBAAAAAAABAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAADAwAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAwAAAAADBQAAAAACBQAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACBQAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACBAAAAAAABAAAAAAABAAAAAAAAwAAAAAABQAAAAABAwAAAAABBQAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAACBQAAAAABBAAAAAAABAAAAAAAAgAAAAAAAwAAAAADBQAAAAABAwAAAAAABQAAAAABAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACBQAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAABBQAAAAACAwAAAAADBQAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAADBAAAAAAABAAAAAAAAgAAAAAAAwAAAAAABQAAAAAAAwAAAAADBQAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAAABQAAAAACAwAAAAADBQAAAAACAwAAAAADAwAAAAADAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAACBQAAAAAABAAAAAAABAAAAAAABAAAAAAAAwAAAAADBQAAAAACAwAAAAADBQAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAADAwAAAAABBAAAAAAABAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAB version: 6 2,6: ind: 2,6 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAABCwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAAACwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAgAAAAAACAAAAAAACAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAACAAAAAAACAAAAAAACAAAAAABCAAAAAAACAAAAAADCAAAAAACCAAAAAADCAAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAAACAAAAAADAgAAAAAACAAAAAAACAAAAAABCAAAAAADCAAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAACAAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAACCAAAAAABAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAACAAAAAACCAAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAABAgAAAAAACAAAAAABCAAAAAAACAAAAAAACAAAAAABCAAAAAADAwAAAAAAAwAAAAACAwAAAAADCAAAAAADCAAAAAABCAAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAACAAAAAABCAAAAAACCAAAAAABCAAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAACAAAAAACCAAAAAAAAwAAAAADAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABBQAAAAADAwAAAAADAgAAAAAAAwAAAAABAgAAAAAACgAAAAAACgAAAAAACgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAABAgAAAAAACgAAAAABCgAAAAADAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAACCwAAAAABAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAACCwAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAACAAAAAACCAAAAAACCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAACAAAAAAACAAAAAACCAAAAAABCAAAAAADCAAAAAACCAAAAAABCAAAAAAACAAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAACCAAAAAABAgAAAAAACAAAAAAACAAAAAABCAAAAAAACAAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAACAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAABCAAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAACAAAAAABCAAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAACAgAAAAAACAAAAAADCAAAAAADCAAAAAAACAAAAAACCAAAAAACAwAAAAADAwAAAAABAwAAAAACCAAAAAACCAAAAAADCAAAAAACAwAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAABCAAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAgAAAAAACAAAAAACCAAAAAACAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAABQAAAAADAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAACgAAAAACCgAAAAABCgAAAAADAgAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAACgAAAAACCgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAA version: 6 2,7: ind: 2,7 - tiles: AwAAAAACBQAAAAACBQAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAAABQAAAAADBQAAAAADBQAAAAACAwAAAAACBQAAAAABBQAAAAABBQAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAABQAAAAABAwAAAAADBQAAAAADAgAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAACCAAAAAAACgAAAAABCgAAAAAACgAAAAABCAAAAAAACAAAAAABCAAAAAAAAwAAAAABBQAAAAACAwAAAAADBQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACgAAAAAACgAAAAADCgAAAAADCAAAAAACAgAAAAAAAgAAAAAAAwAAAAADBQAAAAAAAwAAAAABAgAAAAAAAwAAAAADAgAAAAAACwAAAAACCwAAAAACAgAAAAAACAAAAAABCgAAAAADCgAAAAAACgAAAAADCAAAAAABAgAAAAAACwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAgAAAAAACwAAAAACCwAAAAACAgAAAAAACAAAAAACCgAAAAADCgAAAAABCgAAAAABCAAAAAABAgAAAAAACwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFgAAAAAEAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABBwAAAAADAgAAAAAABwAAAAADBwAAAAACFgAAAAAABwAAAAABAgAAAAAABwAAAAAAAgAAAAAACwAAAAABCwAAAAABCwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAADAgAAAAAAAgAAAAAABwAAAAADBwAAAAADBwAAAAADAgAAAAAACwAAAAAACwAAAAAACwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAABAgAAAAAABwAAAAADBwAAAAACBwAAAAAABwAAAAACBwAAAAACAgAAAAAACwAAAAAACwAAAAAACwAAAAADAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAFgAAAAADBwAAAAABBwAAAAABAgAAAAAABwAAAAABAgAAAAAABwAAAAAAAgAAAAAAAgAAAAAACwAAAAADCwAAAAACAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAABwAAAAABBwAAAAADBwAAAAACBwAAAAACBwAAAAABBwAAAAADBwAAAAAAFgAAAAAABwAAAAADAwAAAAADCwAAAAABCwAAAAABAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAADBQAAAAACBQAAAAABAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAADBQAAAAACBQAAAAADBQAAAAACAwAAAAAABQAAAAADBQAAAAABBQAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAgAAAAAABQAAAAACAwAAAAACBQAAAAABAgAAAAAAAgAAAAAACAAAAAABCAAAAAACCAAAAAABCAAAAAACCgAAAAACCgAAAAAACgAAAAABCAAAAAAACAAAAAADCAAAAAABAwAAAAACBQAAAAACAwAAAAABBQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCgAAAAAACgAAAAACCgAAAAADCAAAAAADAgAAAAAAAgAAAAAAAwAAAAADBQAAAAADAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAACwAAAAACCwAAAAADAgAAAAAACAAAAAAACgAAAAADCgAAAAABCgAAAAADCAAAAAACAgAAAAAACwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAACwAAAAAACwAAAAACAgAAAAAACAAAAAACCgAAAAACCgAAAAACCgAAAAADCAAAAAABAgAAAAAACwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFgAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACBwAAAAAAAgAAAAAABwAAAAADBwAAAAAAFgAAAAACBwAAAAADAgAAAAAABwAAAAAAAgAAAAAACwAAAAACCwAAAAABCwAAAAABAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAABBwAAAAADAgAAAAAACwAAAAAACwAAAAABCwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAAAAgAAAAAABwAAAAACBwAAAAADBwAAAAACBwAAAAAABwAAAAACAgAAAAAACwAAAAAACwAAAAADCwAAAAADAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAFgAAAAAGBwAAAAAABwAAAAAAAgAAAAAABwAAAAABAgAAAAAABwAAAAAAAgAAAAAAAgAAAAAACwAAAAABCwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAABwAAAAADBwAAAAABBwAAAAADBwAAAAACBwAAAAADBwAAAAABBwAAAAAAFgAAAAABBwAAAAACAwAAAAABCwAAAAAACwAAAAABAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 2,8: ind: 2,8 @@ -195,43 +195,43 @@ entities: version: 6 3,1: ind: 3,1 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACBAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAAABQAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAABBQAAAAACAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAADAwAAAAABAwAAAAABBAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABBAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADBAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADBQAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAAABQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAACAwAAAAACAwAAAAADBAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACBAAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 3,10: ind: 3,10 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 3,2: ind: 3,2 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAwAAAAACAwAAAAADBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAwAAAAADAwAAAAAABAAAAAAACQAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAwAAAAACAwAAAAACBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAwAAAAADAwAAAAACCAAAAAABCAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAACBAAAAAAACQAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAgAAAAAACAAAAAABBAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAACAAAAAADBAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAADAgAAAAAACAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAwAAAAAAAwAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAwAAAAAAAwAAAAACBAAAAAAACQAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAwAAAAADAwAAAAACBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAwAAAAAAAwAAAAADCAAAAAACCAAAAAACCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAwAAAAADAwAAAAABBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAABAAAAAAACQAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADBAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAACAgAAAAAACAAAAAADBAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAACAAAAAADBAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAgAAAAAACAAAAAACBAAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAA version: 6 3,3: ind: 3,3 - tiles: CAAAAAABCAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAACAAAAAAACAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAAABwAAAAADBwAAAAACBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAACCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAACBwAAAAABBwAAAAAABwAAAAADAgAAAAAADAAAAAAADAAAAAADAgAAAAAAAgAAAAAACAAAAAAACAAAAAACCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAADBwAAAAAABwAAAAADBwAAAAACDAAAAAABDAAAAAAADAAAAAACAgAAAAAABwAAAAACCAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAABBwAAAAAABwAAAAADBwAAAAADAgAAAAAADAAAAAAADAAAAAABAgAAAAAABwAAAAAACAAAAAABCAAAAAABCAAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADCAAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAACCAAAAAACAgAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAAACAAAAAABCAAAAAADCAAAAAAAAgAAAAAABwAAAAAACAAAAAACCAAAAAADCAAAAAACCAAAAAADCAAAAAADCAAAAAACAgAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAADCAAAAAACCAAAAAABCAAAAAADAgAAAAAAAwAAAAACCAAAAAADCAAAAAADCAAAAAADCAAAAAAACAAAAAAACAAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAADCAAAAAAACAAAAAACCAAAAAADCAAAAAABAgAAAAAAAwAAAAAACAAAAAAACAAAAAADCAAAAAACCAAAAAACCAAAAAADCAAAAAACAgAAAAAACAAAAAABCAAAAAAACAAAAAADCAAAAAACCAAAAAACCAAAAAABCAAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAADCAAAAAABCAAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAACCAAAAAABCAAAAAADCAAAAAABAgAAAAAACAAAAAACCAAAAAAACAAAAAABCAAAAAABCAAAAAADCAAAAAAAAgAAAAAACAAAAAAACAAAAAADCAAAAAABCAAAAAABCAAAAAADCAAAAAAACAAAAAACCAAAAAACAgAAAAAACgAAAAADCAAAAAADCAAAAAAACAAAAAACCAAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAACgAAAAACAgAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAACAgAAAAAACgAAAAACCgAAAAABCgAAAAADCgAAAAACCgAAAAABCgAAAAAACgAAAAABBQAAAAADAgAAAAAACgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAACCAAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAACAwAAAAAB + tiles: CAAAAAABCAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAAABwAAAAAABwAAAAACBwAAAAAAAgAAAAAADAAAAAAADAAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAABCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAADBwAAAAAABwAAAAABBwAAAAABDAAAAAABDAAAAAABDAAAAAAAAgAAAAAABwAAAAAACAAAAAACCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAACBwAAAAADBwAAAAACBwAAAAABAgAAAAAADAAAAAAADAAAAAABAgAAAAAABwAAAAADCAAAAAAACAAAAAABCAAAAAACAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABCAAAAAAACAAAAAACCAAAAAACCAAAAAACCAAAAAABCAAAAAABAgAAAAAACAAAAAAACAAAAAACCAAAAAAACAAAAAABCAAAAAAACAAAAAADCAAAAAADAgAAAAAABwAAAAACCAAAAAABCAAAAAABCAAAAAACCAAAAAADCAAAAAACCAAAAAADAgAAAAAACAAAAAABCAAAAAACCAAAAAAACAAAAAAACAAAAAAACAAAAAACCAAAAAACAgAAAAAAAwAAAAAACAAAAAAACAAAAAABCAAAAAADCAAAAAACCAAAAAACCAAAAAABAgAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAADCAAAAAAACAAAAAAACAAAAAACAgAAAAAAAwAAAAACCAAAAAACCAAAAAABCAAAAAABCAAAAAAACAAAAAADCAAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAABCAAAAAADCAAAAAADCAAAAAADCAAAAAABAgAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAABCAAAAAACCAAAAAABCAAAAAABCAAAAAAACAAAAAAACAAAAAACCAAAAAAACAAAAAAACAAAAAADCAAAAAADCAAAAAABCAAAAAACAgAAAAAACAAAAAACCAAAAAABCAAAAAAACAAAAAABCAAAAAACCAAAAAAAAgAAAAAACAAAAAAACAAAAAADCAAAAAAACAAAAAACCAAAAAAACAAAAAAACAAAAAABCAAAAAACAgAAAAAACgAAAAADCAAAAAACCAAAAAACCAAAAAADCAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAACgAAAAADAgAAAAAAAgAAAAAACAAAAAAACAAAAAACCAAAAAADAgAAAAAACgAAAAABCgAAAAADCgAAAAADCgAAAAAACgAAAAAACgAAAAABCgAAAAACBQAAAAACAgAAAAAACgAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAA version: 6 3,4: ind: 3,4 - tiles: CAAAAAADCAAAAAAACgAAAAADCgAAAAADBQAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAwAAAAACAwAAAAADCgAAAAADCAAAAAACCgAAAAACCgAAAAACBQAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAAACAAAAAACCAAAAAACCAAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAABAgAAAAAACAAAAAAACAAAAAAACAAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAADCAAAAAABCAAAAAABCAAAAAABAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAABCAAAAAABCAAAAAACCAAAAAABCAAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAACAgAAAAAACAAAAAACCAAAAAAACAAAAAAACAAAAAABAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAADAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAACCAAAAAAACAAAAAACAgAAAAAACAAAAAADCAAAAAABCAAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAACCAAAAAABCQAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAACAAAAAABCgAAAAACCgAAAAADCAAAAAADCAAAAAAAAgAAAAAACAAAAAACCAAAAAACCAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAgAAAAAACAAAAAADCAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAA + tiles: CAAAAAAACAAAAAACCgAAAAADCgAAAAABBQAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAABCgAAAAABCAAAAAACCgAAAAACCgAAAAACBQAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAADCAAAAAACCAAAAAADCAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAAAgAAAAAACAAAAAAACAAAAAADCAAAAAADAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAABCAAAAAADCAAAAAABCAAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAACCAAAAAAACAAAAAADCAAAAAAACAAAAAABAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADAgAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAABAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAADCAAAAAABCAAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAADCAAAAAABCQAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAwAAAAACAgAAAAAACAAAAAAACgAAAAADCgAAAAAACAAAAAABCAAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAA version: 6 3,5: ind: 3,5 - tiles: AwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAgAAAAAACAAAAAABCAAAAAADCAAAAAABCAAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAACAAAAAAACAAAAAACCAAAAAADCAAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAABCAAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAACAAAAAAACAAAAAABCAAAAAAACAAAAAACCAAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAABAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAADCAAAAAACCAAAAAADCAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAACAAAAAADCAAAAAABCAAAAAAACAAAAAADCAAAAAABAwAAAAADAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAFAAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAACAAAAAABCAAAAAAACAAAAAADCAAAAAABCAAAAAAABQAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAACFAAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAACCAAAAAABAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAADFAAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABFAAAAAAACAAAAAAACAAAAAADCAAAAAAACAAAAAACCAAAAAADAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAACAwAAAAACAwAAAAABFAAAAAAACAAAAAABCAAAAAACCAAAAAACCAAAAAADCAAAAAADBQAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAFAAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAADCAAAAAADBQAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAwAAAAABBQAAAAADAwAAAAACBQAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAADBQAAAAABAwAAAAABBQAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAwAAAAACBQAAAAADAwAAAAADBQAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAAA + tiles: AwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAgAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABAgAAAAAACAAAAAACCAAAAAABCAAAAAADCAAAAAACAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAABCAAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAAACAAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAAACAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAACCAAAAAADCAAAAAABAwAAAAABAwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABFAAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAACAAAAAACCAAAAAADCAAAAAACCAAAAAAACAAAAAABBQAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAADFAAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAACAAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAABAwAAAAACAwAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAFAAAAAAACAAAAAADCAAAAAABCAAAAAABCAAAAAACCAAAAAADAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABFAAAAAAACAAAAAADCAAAAAABCAAAAAAACAAAAAACCAAAAAABBQAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABFAAAAAAACAAAAAAACAAAAAAACAAAAAADCAAAAAABCAAAAAADBQAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAAABQAAAAABAwAAAAABBQAAAAACAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAABBQAAAAACAwAAAAABBQAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAwAAAAACBQAAAAABAwAAAAACBQAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAABAwAAAAABFAAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAAA version: 6 3,6: ind: 3,6 - tiles: AwAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABFAAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABBQAAAAADBQAAAAADBQAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAABFAAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAABAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAEAAAAAADEAAAAAABEAAAAAADEAAAAAAAEAAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAAEAAAAAAAEQAAAAAAEAAAAAAAEQAAAAAAEAAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACFAAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAEAAAAAADEQAAAAAAEAAAAAACEQAAAAABEAAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAFAAAAAAAAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAEAAAAAABEQAAAAAAEAAAAAABEQAAAAACEAAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAEAAAAAACEAAAAAAAEAAAAAADEAAAAAABEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAEAAAAAADEAAAAAADEAAAAAAAEAAAAAADEAAAAAAACAAAAAABCAAAAAADCAAAAAACCAAAAAADCAAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAACAAAAAABCAAAAAABCAAAAAADAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAAACAAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAACCgAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAFAAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAABBQAAAAADBQAAAAABBQAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAABFAAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAEAAAAAADEAAAAAABEAAAAAACEAAAAAAAEAAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAEAAAAAADEQAAAAACEAAAAAAAEQAAAAABEAAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAFAAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAEAAAAAADEQAAAAABEAAAAAADEQAAAAADEAAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAACFAAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAEAAAAAABEQAAAAAAEAAAAAADEQAAAAABEAAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAEAAAAAABEAAAAAAAEAAAAAADEAAAAAADEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAEAAAAAADEAAAAAACEAAAAAADEAAAAAACEAAAAAABCAAAAAACCAAAAAACCAAAAAADCAAAAAADCAAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAADCAAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAwAAAAACCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAADCgAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 3,7: ind: 3,7 - tiles: AwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAAAFAAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACFAAAAAAAAwAAAAABAwAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAADFAAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAACwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAEAAAAAADEAAAAAADEAAAAAADEAAAAAABEAAAAAAAEAAAAAABEAAAAAACCwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAEAAAAAABEAAAAAABEAAAAAADEAAAAAABEAAAAAADEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAACHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAABwAAAAABAgAAAAAAEAAAAAAAAgAAAAAAEAAAAAADAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAABwAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAEAAAAAACAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAAACwAAAAABCwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAACCwAAAAACCwAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAABCwAAAAACCwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAACwAAAAADCwAAAAACCwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAACwAAAAAACwAAAAAACwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAA + tiles: AwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAADFAAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAAAFAAAAAAAAwAAAAABAwAAAAACCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACFAAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAACwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAEAAAAAABEAAAAAACEAAAAAADEAAAAAACEAAAAAACEAAAAAABEAAAAAADCwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAEAAAAAAAEAAAAAADEAAAAAABEAAAAAADEAAAAAACEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAACHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAABwAAAAABAgAAAAAAEAAAAAAAAgAAAAAAEAAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAABwAAAAACAgAAAAAAEAAAAAACAgAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAABCwAAAAABCwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAADCwAAAAABCwAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACwAAAAADCwAAAAABCwAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAACwAAAAAACwAAAAADCwAAAAADAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAACwAAAAACCwAAAAADCwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAA version: 6 3,8: ind: 3,8 - tiles: AAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAIgAAAAAAIgAAAAADIgAAAAABAgAAAAAAIgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAABIgAAAAAAAgAAAAAAIgAAAAADAgAAAAAAAgAAAAAAIgAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAAAAgAAAAAAIgAAAAABIgAAAAADIgAAAAADIgAAAAAAAgAAAAAAIgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAABAgAAAAAAAgAAAAAAIgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAIgAAAAADIgAAAAACAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAIgAAAAABAgAAAAAAIgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAACIgAAAAACIgAAAAADIgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAACIgAAAAAAIgAAAAACIgAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAA + tiles: AAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAIgAAAAACIgAAAAABIgAAAAADAgAAAAAAIgAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAAAIgAAAAABAgAAAAAAIgAAAAABAgAAAAAAAgAAAAAAIgAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAABAgAAAAAAIgAAAAABIgAAAAABIgAAAAACIgAAAAADAgAAAAAAIgAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAAAAgAAAAAAAgAAAAAAIgAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAIgAAAAABIgAAAAACAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAIgAAAAAAAgAAAAAAIgAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAAAIgAAAAABIgAAAAACIgAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIgAAAAAAIgAAAAAAIgAAAAADIgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAA version: 6 3,9: ind: 3,9 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAIwAAAAAAEwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIwAAAAABHgAAAAAAIwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAEwAAAAACIwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAHgAAAAAAIwAAAAAAHgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAADCgAAAAADFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAEwAAAAAECgAAAAABAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAAACgAAAAAAAgAAAAAAEwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAACgAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAACCgAAAAACAwAAAAAAEwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEwAAAAAEAgAAAAAAAwAAAAAD + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAABIwAAAAADEwAAAAAEAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAIwAAAAAAHgAAAAAAIwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAEwAAAAACIwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAHgAAAAAAIwAAAAABHgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAADCgAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAEwAAAAAACgAAAAADAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAADCgAAAAABAgAAAAAAEwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAACgAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAADCgAAAAADAwAAAAADEwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEwAAAAADAgAAAAAAAwAAAAAD version: 6 4,0: ind: 4,0 @@ -239,35 +239,35 @@ entities: version: 6 4,1: ind: 4,1 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 4,10: ind: 4,10 - tiles: AwAAAAADEwAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAACJAAAAAAAAgAAAAAAJAAAAAACJAAAAAADAgAAAAAAJAAAAAAAAwAAAAADAwAAAAAAAwAAAAABFgAAAAAFBwAAAAABAgAAAAAAAgAAAAAAFgAAAAABAgAAAAAAJAAAAAADAgAAAAAAJAAAAAABJAAAAAABJAAAAAACJAAAAAACJAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFgAAAAAFBwAAAAACFgAAAAAFAgAAAAAAJAAAAAADJAAAAAACJAAAAAABJAAAAAABJAAAAAACJAAAAAABJAAAAAACAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABwAAAAADFgAAAAACFgAAAAAEBwAAAAABFgAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AwAAAAABEwAAAAABAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAACJAAAAAADAgAAAAAAJAAAAAABJAAAAAADAgAAAAAAJAAAAAACAwAAAAACAwAAAAADAwAAAAABFgAAAAAGBwAAAAADAgAAAAAAAgAAAAAAFgAAAAAFAgAAAAAAJAAAAAACAgAAAAAAJAAAAAADJAAAAAACJAAAAAAAJAAAAAAAJAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFgAAAAADBwAAAAADFgAAAAAFAgAAAAAAJAAAAAABJAAAAAADJAAAAAAAJAAAAAABJAAAAAAAJAAAAAABJAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAABwAAAAABFgAAAAAEFgAAAAAABwAAAAAAFgAAAAAGAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 4,2: ind: 4,2 - tiles: AgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAADBwAAAAACBwAAAAADBwAAAAADBwAAAAAD + tiles: AgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAAABwAAAAABBwAAAAAABwAAAAACBwAAAAAD version: 6 4,3: ind: 4,3 - tiles: AgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAACBwAAAAAABwAAAAACAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAABBwAAAAAABwAAAAABBwAAAAACBwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAgAAAAAABwAAAAACBwAAAAADAwAAAAACAwAAAAADAwAAAAABAgAAAAAABwAAAAAABwAAAAADBwAAAAADBwAAAAADBwAAAAACBwAAAAAABwAAAAABBwAAAAADBwAAAAAABwAAAAACBwAAAAABBwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAABwAAAAADBwAAAAADBwAAAAABBwAAAAABBwAAAAAABwAAAAABBwAAAAAABwAAAAADBwAAAAABBwAAAAAABwAAAAABBwAAAAACAwAAAAABAwAAAAABAwAAAAACAgAAAAAABwAAAAACBwAAAAADBwAAAAABBwAAAAABBwAAAAACBwAAAAABBwAAAAADBwAAAAAABwAAAAAABwAAAAABBwAAAAAABwAAAAADAwAAAAADAwAAAAACAwAAAAABAgAAAAAABwAAAAADBwAAAAADBwAAAAACBwAAAAADBwAAAAAABwAAAAADBwAAAAABBwAAAAABBwAAAAABBwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAABwAAAAAABwAAAAADBwAAAAAABwAAAAADBwAAAAACBwAAAAADBwAAAAABBwAAAAAABwAAAAAABwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAABwAAAAACBwAAAAACBwAAAAACBwAAAAACBwAAAAAABwAAAAACBwAAAAACBwAAAAACBwAAAAACBwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAABwAAAAABBwAAAAABBwAAAAACBwAAAAABBwAAAAADBwAAAAABBwAAAAADBwAAAAABBwAAAAAABwAAAAAAHwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAABwAAAAADBwAAAAAAAgAAAAAABwAAAAABBwAAAAADBwAAAAADBwAAAAAABwAAAAADBwAAAAADBwAAAAADHwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAABwAAAAADBwAAAAAABwAAAAABBwAAAAAABwAAAAACBwAAAAACBwAAAAADBwAAAAACBwAAAAACBwAAAAABHwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAAABwAAAAABBwAAAAADBwAAAAADBwAAAAADBwAAAAAAHwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAABwAAAAADBwAAAAADBwAAAAADBwAAAAABBwAAAAABBwAAAAADBwAAAAACBwAAAAABBwAAAAAABwAAAAACAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAABwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAwAAAAACFAAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAB + tiles: AgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAADBwAAAAABBwAAAAACBwAAAAAABwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAADBwAAAAACBwAAAAAABwAAAAADBwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAABwAAAAABBwAAAAACAwAAAAACAwAAAAABAwAAAAACAgAAAAAABwAAAAABBwAAAAADBwAAAAACBwAAAAADBwAAAAAABwAAAAADBwAAAAACBwAAAAACBwAAAAABBwAAAAACBwAAAAADBwAAAAACAwAAAAACAwAAAAACAwAAAAACAgAAAAAABwAAAAADBwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAADBwAAAAACBwAAAAABBwAAAAACBwAAAAADBwAAAAABBwAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAABwAAAAACBwAAAAAABwAAAAABBwAAAAABBwAAAAACBwAAAAACBwAAAAADBwAAAAADBwAAAAABBwAAAAADBwAAAAAABwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAABwAAAAABBwAAAAAABwAAAAACBwAAAAACBwAAAAACBwAAAAABBwAAAAAABwAAAAABBwAAAAAABwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAADAgAAAAAABwAAAAADBwAAAAAABwAAAAACBwAAAAACBwAAAAACBwAAAAABBwAAAAADBwAAAAACBwAAAAABBwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAgAAAAAABwAAAAADBwAAAAADBwAAAAABBwAAAAACBwAAAAAABwAAAAAABwAAAAADBwAAAAADBwAAAAAABwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAABwAAAAABBwAAAAAABwAAAAADBwAAAAACBwAAAAADBwAAAAADBwAAAAABBwAAAAAABwAAAAAABwAAAAAAHwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAABwAAAAABBwAAAAACAgAAAAAABwAAAAACBwAAAAAABwAAAAADBwAAAAADBwAAAAAABwAAAAABBwAAAAAAHwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAABwAAAAADBwAAAAABBwAAAAABBwAAAAABBwAAAAACBwAAAAABBwAAAAABBwAAAAABBwAAAAADBwAAAAACHwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAgAAAAAABwAAAAACBwAAAAADBwAAAAADBwAAAAABBwAAAAABBwAAAAABBwAAAAAABwAAAAABBwAAAAADBwAAAAAAHwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAABwAAAAACBwAAAAABBwAAAAACBwAAAAACBwAAAAADBwAAAAACBwAAAAABBwAAAAABBwAAAAACBwAAAAADAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAABwAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACFAAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAAA version: 6 4,4: ind: 4,4 - tiles: AwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABFAAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAACFAAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAABBwAAAAAABwAAAAABAgAAAAAACAAAAAADCAAAAAACCAAAAAABCAAAAAADCAAAAAADAgAAAAAACwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAAABwAAAAABBwAAAAACBwAAAAADCAAAAAACCAAAAAABCAAAAAADCAAAAAACCAAAAAACAgAAAAAACwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAACBwAAAAABBwAAAAACAgAAAAAACAAAAAADCAAAAAACCAAAAAACCAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAAABwAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAADCAAAAAABCAAAAAADCAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAAACAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAABAgAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAACCAAAAAADCAAAAAAACAAAAAADCAAAAAADAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAACAAAAAAACAAAAAADCAAAAAADAgAAAAAACAAAAAADCAAAAAACCAAAAAACCAAAAAABCAAAAAAACAAAAAABCAAAAAAACAAAAAACAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAACgAAAAAACAAAAAABCAAAAAACCAAAAAAACAAAAAACCAAAAAABCAAAAAACCAAAAAAACAAAAAADCAAAAAADCAAAAAABCAAAAAACAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAACAAAAAADCAAAAAABCAAAAAAAAgAAAAAACAAAAAAACAAAAAABCAAAAAADCAAAAAABCAAAAAABCAAAAAADCAAAAAACCAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAACAAAAAAACAAAAAADAgAAAAAACAAAAAADCAAAAAABCAAAAAACCAAAAAADCAAAAAACCAAAAAADCAAAAAACCAAAAAADAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAADAgAAAAAACAAAAAADCAAAAAACCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAACFAAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAFAAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAADBwAAAAAABwAAAAABAgAAAAAACAAAAAADCAAAAAADCAAAAAABCAAAAAACCAAAAAADAgAAAAAACwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAAABwAAAAAABwAAAAADBwAAAAABCAAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAADAgAAAAAACwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAABBwAAAAABBwAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAABCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAABBwAAAAABAgAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAABCAAAAAADCAAAAAACCAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAACCAAAAAABCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAACCAAAAAADAgAAAAAACAAAAAACCAAAAAACCAAAAAADCAAAAAABCAAAAAACCAAAAAABCAAAAAAACAAAAAABAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAACAAAAAACCAAAAAADCAAAAAADAgAAAAAACAAAAAADCAAAAAAACAAAAAADCAAAAAABCAAAAAADCAAAAAACCAAAAAACCAAAAAADAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAACgAAAAADCAAAAAAACAAAAAABCAAAAAADCAAAAAABCAAAAAABCAAAAAACCAAAAAAACAAAAAACCAAAAAAACAAAAAAACAAAAAACAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAACAAAAAADCAAAAAAACAAAAAADAgAAAAAACAAAAAACCAAAAAAACAAAAAABCAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAABAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAACAAAAAABCAAAAAADAgAAAAAACAAAAAAACAAAAAABCAAAAAAACAAAAAAACAAAAAADCAAAAAADCAAAAAADCAAAAAABAgAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAACAgAAAAAACAAAAAAACAAAAAACCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 4,5: ind: 4,5 - tiles: AgAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBQAAAAAAAwAAAAACAwAAAAADBQAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABBQAAAAADAwAAAAACAwAAAAABBQAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADBQAAAAAAAwAAAAABAwAAAAACBQAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAABCAAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAEAAAAAACAgAAAAAAAgAAAAAAEQAAAAADEQAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAEAAAAAABEAAAAAABEAAAAAADEAAAAAABAgAAAAAAEAAAAAADEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAABEAAAAAAAEAAAAAABEAAAAAABAgAAAAAAEAAAAAABEAAAAAABEAAAAAAAEAAAAAACAgAAAAAAEAAAAAADEAAAAAAAEAAAAAABEAAAAAABEAAAAAACEAAAAAAAEAAAAAACEAAAAAABEAAAAAACEAAAAAACAgAAAAAAEAAAAAADEAAAAAAAEAAAAAACEAAAAAADAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAADEAAAAAACEAAAAAADEAAAAAAAEAAAAAADEAAAAAABEAAAAAACEAAAAAAAAgAAAAAAEAAAAAACEAAAAAABEAAAAAAAEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAACEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAABEAAAAAAAEAAAAAAAAgAAAAAAEQAAAAABEQAAAAABEQAAAAACEAAAAAAAEQAAAAACEQAAAAAAEAAAAAACEQAAAAACEQAAAAABEQAAAAADAgAAAAAAEAAAAAABEAAAAAADEAAAAAADEAAAAAADAgAAAAAAEQAAAAAAEQAAAAAAEQAAAAABEAAAAAADEQAAAAABEQAAAAABEAAAAAAAEQAAAAABEQAAAAADEQAAAAAD + tiles: AgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBQAAAAABAwAAAAACAwAAAAABBQAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACBQAAAAADAwAAAAABAwAAAAADBQAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAABQAAAAACAwAAAAACAwAAAAABBQAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAAACAAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAEQAAAAACEQAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAAAEAAAAAABEAAAAAADAgAAAAAAEAAAAAADEAAAAAADEAAAAAACEAAAAAAAEAAAAAACEAAAAAABEAAAAAABEAAAAAABEAAAAAAAEAAAAAACAgAAAAAAEAAAAAADEAAAAAAAEAAAAAACEAAAAAACAgAAAAAAEAAAAAADEAAAAAAAEAAAAAACEAAAAAADEAAAAAAAEAAAAAADEAAAAAACEAAAAAABEAAAAAACEAAAAAADAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAgAAAAAAEAAAAAADEAAAAAACEAAAAAACEAAAAAABEAAAAAABEAAAAAADEAAAAAADEAAAAAAAEAAAAAAAEAAAAAAAAgAAAAAAEAAAAAAAEAAAAAACEAAAAAADEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAACEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAABEAAAAAAAEAAAAAABAgAAAAAAEQAAAAADEQAAAAAAEQAAAAABEAAAAAACEQAAAAAAEQAAAAABEAAAAAADEQAAAAADEQAAAAADEQAAAAAAAgAAAAAAEAAAAAADEAAAAAADEAAAAAACEAAAAAADAgAAAAAAEQAAAAABEQAAAAAAEQAAAAAAEAAAAAADEQAAAAAAEQAAAAABEAAAAAAAEQAAAAABEQAAAAACEQAAAAAD version: 6 4,6: ind: 4,6 - tiles: AgAAAAAAEAAAAAADEAAAAAADEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAABEAAAAAACEAAAAAACEAAAAAADEAAAAAAAEAAAAAACEAAAAAABEAAAAAACEAAAAAAAEAAAAAABAgAAAAAAEAAAAAADEAAAAAADEAAAAAADEAAAAAAAAgAAAAAAEAAAAAABEAAAAAACEQAAAAAAEQAAAAACEQAAAAABEQAAAAABEQAAAAADEQAAAAADEAAAAAADEAAAAAACAgAAAAAAEAAAAAACEAAAAAAAEAAAAAADEAAAAAAAEAAAAAACEAAAAAACEAAAAAACEAAAAAACEAAAAAAAEAAAAAACEAAAAAABEAAAAAACEAAAAAABEAAAAAAAEAAAAAABEAAAAAABEAAAAAACEAAAAAACEAAAAAAAEAAAAAADAgAAAAAAEQAAAAAAEQAAAAADEQAAAAAAEAAAAAADEQAAAAABEQAAAAABEAAAAAADEQAAAAAAEQAAAAACEQAAAAACAgAAAAAAEAAAAAADEAAAAAADEAAAAAAAEAAAAAABAgAAAAAAEQAAAAADEQAAAAADEQAAAAACEAAAAAACEQAAAAADEQAAAAACEAAAAAACEQAAAAAAEQAAAAABEQAAAAABAgAAAAAAEAAAAAAAEAAAAAADEAAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAACEAAAAAABEAAAAAABEQAAAAADAgAAAAAAEAAAAAADEAAAAAADEAAAAAABEAAAAAABEAAAAAAAEAAAAAABEAAAAAADEAAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAACEAAAAAADEAAAAAADEQAAAAAAAgAAAAAAEAAAAAADEAAAAAACEAAAAAACEAAAAAACEAAAAAABEAAAAAABEAAAAAADEAAAAAADEAAAAAADAgAAAAAAEAAAAAACEAAAAAAAEAAAAAACEAAAAAAAEQAAAAACAgAAAAAAEAAAAAADEAAAAAADEAAAAAABEAAAAAABEAAAAAABEAAAAAAAEAAAAAADEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAAAEAAAAAACEAAAAAACEAAAAAAAEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAACwAAAAACCwAAAAACCwAAAAAACwAAAAADCwAAAAADCwAAAAABCwAAAAABCwAAAAAACwAAAAACCwAAAAACCwAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AgAAAAAAEAAAAAABEAAAAAADEAAAAAACEAAAAAADEAAAAAABEAAAAAAAEAAAAAACEAAAAAACEAAAAAAAEAAAAAADEAAAAAACEAAAAAABEAAAAAADEAAAAAABEAAAAAACAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAADEAAAAAACAgAAAAAAEAAAAAAAEAAAAAADEQAAAAADEQAAAAADEQAAAAACEQAAAAAAEQAAAAACEQAAAAADEAAAAAABEAAAAAADAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAACEAAAAAAAEAAAAAADEAAAAAADEAAAAAABEAAAAAABEAAAAAACEAAAAAABEAAAAAAAEAAAAAADEAAAAAABEAAAAAAAEAAAAAACEAAAAAADEAAAAAADEAAAAAACEAAAAAABEAAAAAABAgAAAAAAEQAAAAABEQAAAAAAEQAAAAACEAAAAAACEQAAAAABEQAAAAACEAAAAAAAEQAAAAABEQAAAAADEQAAAAABAgAAAAAAEAAAAAADEAAAAAABEAAAAAADEAAAAAABAgAAAAAAEQAAAAAAEQAAAAADEQAAAAACEAAAAAABEQAAAAACEQAAAAADEAAAAAADEQAAAAADEQAAAAACEQAAAAADAgAAAAAAEAAAAAABEAAAAAADEAAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAACEAAAAAABEAAAAAADEQAAAAAAAgAAAAAAEAAAAAABEAAAAAADEAAAAAACEAAAAAADEAAAAAADEAAAAAADEAAAAAACEAAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAAAEAAAAAABEAAAAAAAEQAAAAABAgAAAAAAEAAAAAADEAAAAAABEAAAAAABEAAAAAABEAAAAAADEAAAAAAAEAAAAAABEAAAAAADEAAAAAADAgAAAAAAEAAAAAAAEAAAAAABEAAAAAABEAAAAAADEQAAAAADAgAAAAAAEAAAAAAAEAAAAAACEAAAAAACEAAAAAAAEAAAAAACEAAAAAACEAAAAAAAEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAADEAAAAAAAEAAAAAADEAAAAAADEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAgAAAAAACwAAAAACCwAAAAADCwAAAAAACwAAAAABCwAAAAACCwAAAAADCwAAAAABCwAAAAABCwAAAAACCwAAAAACCwAAAAACAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 4,7: ind: 4,7 - tiles: AwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAABEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAwAAAAADEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAABBQAAAAADBQAAAAAABQAAAAADAwAAAAABAgAAAAAAAwAAAAABEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAAEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAwAAAAADEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAwAAAAABBQAAAAACBQAAAAACBQAAAAAAAwAAAAACAgAAAAAAAwAAAAABEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 4,8: ind: 4,8 @@ -275,7 +275,7 @@ entities: version: 6 4,9: ind: 4,9 - tiles: BAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAADJAAAAAADJAAAAAADJAAAAAACJAAAAAAAJAAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAABJAAAAAABAgAAAAAAAgAAAAAAAgAAAAAA + tiles: BAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAADJAAAAAAAJAAAAAACJAAAAAABJAAAAAAAJAAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAAAJAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 5,0: ind: 5,0 @@ -283,43 +283,43 @@ entities: version: 6 5,1: ind: 5,1 - tiles: AwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACFAAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAFAAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAABAQAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAFAAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAAAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAwAAAAACAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAQAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAAAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAB + tiles: AwAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABFAAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAFAAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAABAQAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAADFAAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAADAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAQAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAAAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAC version: 6 5,10: ind: 5,10 - tiles: JAAAAAADJAAAAAAAJAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAADAgAAAAAAJAAAAAACAgAAAAAAJAAAAAACJAAAAAACAgAAAAAAAgAAAAAAJQAAAAABJQAAAAACJQAAAAAAJQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAAAJAAAAAAAJAAAAAACAgAAAAAAJAAAAAACAgAAAAAAJQAAAAADJQAAAAACAgAAAAAAJQAAAAABJQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJQAAAAACJQAAAAAAAgAAAAAAJQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAJQAAAAADAgAAAAAAAgAAAAAAJQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAJQAAAAADJQAAAAABAgAAAAAAJQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAJgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAEwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAJgAAAAAAAgAAAAAAJgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAJgAAAAAAJgAAAAAAAgAAAAAAJgAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA + tiles: JAAAAAACJAAAAAABJAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAABAgAAAAAAJAAAAAABAgAAAAAAJAAAAAADJAAAAAAAAgAAAAAAAgAAAAAAJQAAAAACJQAAAAACJQAAAAABJQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAAAJAAAAAAAJAAAAAAAAgAAAAAAJAAAAAADAgAAAAAAJQAAAAAAJQAAAAADAgAAAAAAJQAAAAAAJQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJQAAAAADJQAAAAACAgAAAAAAJQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAJQAAAAADAgAAAAAAAgAAAAAAJQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAJQAAAAACJQAAAAACAgAAAAAAJQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAJgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAJgAAAAAAAgAAAAAAJgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAJgAAAAAAJgAAAAAAAgAAAAAAJgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAA version: 6 5,2: ind: 5,2 - tiles: AAAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAACCAAAAAADCAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAADCAAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAAACAAAAAABCAAAAAABCAAAAAAACAAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAACAgAAAAAACAAAAAABCAAAAAADCAAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAAABwAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAC + tiles: AAAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAACCAAAAAABCAAAAAACCAAAAAABCAAAAAACAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAACCAAAAAAACAAAAAABCAAAAAABCAAAAAABCAAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAAACAAAAAAACAAAAAADCAAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAACAgAAAAAACAAAAAADCAAAAAADCAAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAADBwAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAAB version: 6 5,3: ind: 5,3 - tiles: BwAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAADBwAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAADBwAAAAACAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAADBwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAABwAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABBwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAABwAAAAADBwAAAAACBwAAAAACBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAABwAAAAABBwAAAAABBwAAAAADBwAAAAABBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAABwAAAAABBwAAAAAABwAAAAADBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAgAAAAAABwAAAAABBwAAAAABBwAAAAAABwAAAAADAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAgAAAAAABwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAACBwAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAABwAAAAACAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAA + tiles: BwAAAAADAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAADBwAAAAACAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAACBwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAAABwAAAAADAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAABwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADBwAAAAADAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAABwAAAAADBwAAAAAABwAAAAABBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAACBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAABwAAAAABBwAAAAADBwAAAAADBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAABwAAAAAABwAAAAABBwAAAAAABwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAgAAAAAABwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAAABwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAADAgAAAAAABwAAAAADAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAA version: 6 5,4: ind: 5,4 - tiles: AwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAACwAAAAABCwAAAAABCwAAAAAACwAAAAAACwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAABAgAAAAAACwAAAAADCwAAAAAACwAAAAAACwAAAAAACwAAAAABAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAgAAAAAACAAAAAACCAAAAAADCgAAAAACCgAAAAADCgAAAAADCAAAAAABCAAAAAACAgAAAAAACAAAAAABCAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAACAAAAAABCAAAAAACCAAAAAADCAAAAAACCAAAAAABCAAAAAABCAAAAAACCAAAAAADCAAAAAAACAAAAAADAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAABBwAAAAADCAAAAAACCAAAAAACCAAAAAACCAAAAAAACAAAAAACCAAAAAADCAAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAABwAAAAACBwAAAAACBwAAAAACCAAAAAADCAAAAAABCAAAAAACCAAAAAADCAAAAAADCAAAAAADCAAAAAACAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAABwAAAAABBwAAAAADCgAAAAACCgAAAAABCgAAAAAACgAAAAAACAAAAAACCgAAAAABCgAAAAABCgAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAgAAAAAABwAAAAACBwAAAAABBwAAAAAACAAAAAADCAAAAAADCAAAAAAACAAAAAACCAAAAAABCAAAAAADCAAAAAABAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAABwAAAAABBwAAAAAABwAAAAACCAAAAAAACAAAAAACCAAAAAABCAAAAAADCAAAAAACCAAAAAACCAAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAACAAAAAAACAAAAAADCAAAAAAACAAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAADCAAAAAADCAAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAACCAAAAAAACAAAAAABCgAAAAADCgAAAAAACgAAAAADCAAAAAABCAAAAAABAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAACwAAAAAACwAAAAADCwAAAAACCwAAAAABCwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAgAAAAAACwAAAAABCwAAAAADCwAAAAAACwAAAAACCwAAAAABAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAACAgAAAAAACAAAAAADCAAAAAACCgAAAAACCgAAAAACCgAAAAABCAAAAAAACAAAAAADAgAAAAAACAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAACAAAAAADCAAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAABwAAAAACBwAAAAABBwAAAAAACAAAAAAACAAAAAAACAAAAAACCAAAAAACCAAAAAADCAAAAAACCAAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAgAAAAAABwAAAAAABwAAAAADBwAAAAABCAAAAAACCAAAAAABCAAAAAADCAAAAAADCAAAAAAACAAAAAADCAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAABwAAAAAABwAAAAACCgAAAAABCgAAAAACCgAAAAADCgAAAAAACAAAAAACCgAAAAAACgAAAAACCgAAAAADAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAABwAAAAAABwAAAAABBwAAAAAACAAAAAACCAAAAAADCAAAAAABCAAAAAAACAAAAAADCAAAAAADCAAAAAABAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAgAAAAAABwAAAAAABwAAAAADBwAAAAACCAAAAAACCAAAAAAACAAAAAABCAAAAAADCAAAAAADCAAAAAACCAAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAgAAAAAACAAAAAADCAAAAAAACAAAAAAACAAAAAADCAAAAAADCAAAAAAACAAAAAAACAAAAAADCAAAAAABCAAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAABCAAAAAACCAAAAAACCgAAAAADCgAAAAACCgAAAAAACAAAAAAACAAAAAADAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAA version: 6 5,5: ind: 5,5 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAABAgAAAAAACAAAAAAACAAAAAAACAAAAAADCAAAAAACAgAAAAAACAAAAAABCAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAAAEAAAAAADEAAAAAACAgAAAAAACAAAAAABCAAAAAACCAAAAAADCAAAAAACCAAAAAABCAAAAAABCAAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAADEAAAAAADEAAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAABCAAAAAABAgAAAAAACAAAAAABCAAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAACEAAAAAADEAAAAAABAgAAAAAACAAAAAADCAAAAAACCAAAAAACCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAADEAAAAAADEAAAAAADCAAAAAABCAAAAAAACAAAAAABCAAAAAADCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAABEAAAAAAAEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAACEAAAAAADEAAAAAABAgAAAAAACAAAAAACCAAAAAABCAAAAAACCAAAAAAAAgAAAAAACAAAAAADCAAAAAACCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAAAEAAAAAACEAAAAAACAgAAAAAACAAAAAACCAAAAAAACAAAAAACCAAAAAACCAAAAAABCAAAAAAACAAAAAACCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAABEAAAAAADEAAAAAACAgAAAAAACAAAAAADCAAAAAACCAAAAAAACAAAAAAAAgAAAAAACAAAAAADCAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAABEAAAAAAAEAAAAAACAgAAAAAACAAAAAABCAAAAAAACAAAAAACCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAABEAAAAAACEAAAAAACCAAAAAAACAAAAAADCAAAAAADCAAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAAAEAAAAAADEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 5,6: ind: 5,6 - tiles: EAAAAAADEAAAAAAAEAAAAAADEAAAAAAAEAAAAAACEAAAAAAAEAAAAAAAEAAAAAABEAAAAAACEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAEAAAAAAAEAAAAAACEAAAAAABEAAAAAAAAgAAAAAAEAAAAAACEAAAAAACEAAAAAACEAAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAADFQAAAAAAEAAAAAABEAAAAAAAEAAAAAAAEAAAAAACAgAAAAAAAgAAAAAAEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACFQAAAAAAAgAAAAAAEAAAAAACEAAAAAACEAAAAAAAAgAAAAAAEAAAAAABEAAAAAADEAAAAAADEAAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAwAAAAABFQAAAAAAAgAAAAAAEAAAAAACEAAAAAABEAAAAAACAgAAAAAAEAAAAAAAEAAAAAABEAAAAAABEAAAAAABEAAAAAACAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAAAFQAAAAAAAgAAAAAAEAAAAAABEAAAAAADEAAAAAACAgAAAAAAEAAAAAACEAAAAAADEAAAAAABEAAAAAADEAAAAAAAAwAAAAADAwAAAAADAwAAAAADFQAAAAAAAwAAAAADFQAAAAAAEAAAAAADEAAAAAACEAAAAAABEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAACEAAAAAACAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADFQAAAAAAEAAAAAAAEAAAAAABEAAAAAAAEAAAAAABAgAAAAAAEAAAAAABEAAAAAABEAAAAAADEAAAAAABEAAAAAACAgAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAACFQAAAAAAEAAAAAADEAAAAAAAEAAAAAACEAAAAAADAgAAAAAAEAAAAAADEAAAAAADEAAAAAAAEAAAAAACEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAEAAAAAAAEAAAAAACEAAAAAABEAAAAAADEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAABEAAAAAACEAAAAAADEAAAAAAAEAAAAAABEAAAAAADEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAADAwAAAAABAwAAAAAAEAAAAAABEAAAAAACEAAAAAABEAAAAAABEAAAAAACEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAABEAAAAAADEAAAAAADEAAAAAABEAAAAAACEAAAAAABEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAEAAAAAADEAAAAAACEAAAAAACEAAAAAACEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: EAAAAAABEAAAAAACEAAAAAABEAAAAAAAEAAAAAADEAAAAAACEAAAAAAAEAAAAAAAEAAAAAADEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAEAAAAAABEAAAAAACEAAAAAADEAAAAAABAgAAAAAAEAAAAAABEAAAAAACEAAAAAACEAAAAAADAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAADFQAAAAAAEAAAAAADEAAAAAABEAAAAAABEAAAAAAAAgAAAAAAAgAAAAAAEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAAAFQAAAAAAAgAAAAAAEAAAAAADEAAAAAACEAAAAAACAgAAAAAAEAAAAAABEAAAAAAAEAAAAAADEAAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAAAFQAAAAAAAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAACAgAAAAAAEAAAAAABEAAAAAABEAAAAAABEAAAAAACEAAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAFQAAAAAAAgAAAAAAEAAAAAAAEAAAAAADEAAAAAABAgAAAAAAEAAAAAAAEAAAAAADEAAAAAADEAAAAAACEAAAAAABAwAAAAADAwAAAAABAwAAAAAAFQAAAAAAAwAAAAAAFQAAAAAAEAAAAAAAEAAAAAAAEAAAAAABEAAAAAACEAAAAAAAEAAAAAABEAAAAAADEAAAAAABEAAAAAADAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAADFQAAAAAAEAAAAAABEAAAAAACEAAAAAAAEAAAAAAAAgAAAAAAEAAAAAABEAAAAAACEAAAAAADEAAAAAAAEAAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACFQAAAAAAEAAAAAADEAAAAAABEAAAAAAAEAAAAAABAgAAAAAAEAAAAAABEAAAAAACEAAAAAADEAAAAAAAEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAEAAAAAADEAAAAAACEAAAAAACEAAAAAADEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAABEAAAAAADEAAAAAACEAAAAAABEAAAAAACEAAAAAABEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADEAAAAAABEAAAAAABEAAAAAAAEAAAAAAAEAAAAAABEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAEAAAAAABEAAAAAAAEAAAAAABEAAAAAAAEAAAAAACEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAAEAAAAAACEAAAAAACEAAAAAAAEAAAAAADEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 5,7: ind: 5,7 - tiles: AwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAADFAAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAACCAAAAAAACAAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAACFAAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAACCAAAAAAACAAAAAACCAAAAAACCAAAAAAACAAAAAADCAAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAABFAAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAADAgAAAAAACAAAAAABCAAAAAACCAAAAAAACAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADCAAAAAACCAAAAAAACAAAAAADCAAAAAAACAAAAAAACAAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAADCAAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAAACAAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAwAAAAADCAAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAABCAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAwAAAAADFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAABBQAAAAACBQAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACBQAAAAADBQAAAAADHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAA + tiles: AwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAACAAAAAACCAAAAAADCAAAAAAACAAAAAADCAAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABFAAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAAACAAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAACCAAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAAAFAAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAACAgAAAAAACAAAAAACCAAAAAABCAAAAAADCAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADCAAAAAADCAAAAAACCAAAAAACCAAAAAAACAAAAAAACAAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAACCAAAAAABAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAADCAAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAADCAAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAABCAAAAAACAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAABFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAABQAAAAADBQAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBQAAAAAABQAAAAABHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAD version: 6 5,8: ind: 5,8 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAFAAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAFAAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAFAAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAD + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAFAAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAFAAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAFAAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAA version: 6 5,9: ind: 5,9 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAAAJAAAAAACAgAAAAAAJAAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAADAgAAAAAAJAAAAAACJAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAB + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAADHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAADJAAAAAACAgAAAAAAJAAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAJAAAAAAAAgAAAAAAJAAAAAAAJAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAC version: 6 6,0: ind: 6,0 @@ -327,147 +327,147 @@ entities: version: 6 6,1: ind: 6,1 - tiles: AgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAACAAAAAABAgAAAAAACAAAAAADAwAAAAACAwAAAAACAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAACAAAAAADCAAAAAABAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAACAAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAADCAAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAACAAAAAADCAAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAACAAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAFAAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAADAwAAAAACFAAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAD + tiles: AgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAABAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAACAAAAAADAgAAAAAACAAAAAACAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAACAAAAAABCAAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAACAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAABCAAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAACAAAAAABCAAAAAABAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAACAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAFAAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAFAAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAD version: 6 6,10: ind: 6,10 - tiles: CAAAAAABCAAAAAAACAAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAACAgAAAAAAAwAAAAADBQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAACCgAAAAADCgAAAAACCgAAAAAACAAAAAADCAAAAAABAgAAAAAAAwAAAAABBQAAAAACBQAAAAADBQAAAAAABQAAAAACBQAAAAADBQAAAAADBQAAAAAACAAAAAABCAAAAAACCgAAAAABCQAAAAAACgAAAAADCAAAAAAACAAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAgAAAAAACgAAAAABCgAAAAABCgAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFgAAAAAFBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBwAAAAADAgAAAAAAFgAAAAAGBwAAAAACBwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAABAgAAAAAAAwAAAAABAgAAAAAAEwAAAAAEAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFgAAAAABBwAAAAADBwAAAAAAFgAAAAAEBwAAAAADBwAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: CAAAAAACCAAAAAAACAAAAAAACAAAAAAACAAAAAAACAAAAAABCAAAAAABAgAAAAAAAwAAAAACBQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAABCgAAAAABCgAAAAADCgAAAAADCAAAAAAACAAAAAABAgAAAAAAAwAAAAACBQAAAAABBQAAAAADBQAAAAADBQAAAAAABQAAAAAABQAAAAACBQAAAAACCAAAAAACCAAAAAAACgAAAAAACQAAAAAACgAAAAAACAAAAAACCAAAAAADAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAgAAAAAACgAAAAACCgAAAAADCgAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFgAAAAAGBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBwAAAAADAgAAAAAAFgAAAAAGBwAAAAABBwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAABwAAAAADBwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAEwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFgAAAAAGBwAAAAACBwAAAAABFgAAAAAEBwAAAAADBwAAAAADAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 6,2: ind: 6,2 - tiles: AwAAAAACAwAAAAACAgAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAABwAAAAADBwAAAAABBwAAAAACBwAAAAAABwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAACCAAAAAACCAAAAAACAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAABwAAAAABBwAAAAACBwAAAAACBwAAAAACBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAACCAAAAAAACAAAAAABCAAAAAAAAwAAAAABAwAAAAACBwAAAAABBwAAAAABBwAAAAADBwAAAAACBwAAAAAABwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAACCAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAABwAAAAAABwAAAAACBwAAAAABBwAAAAADBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAACAAAAAADCAAAAAACAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAACAAAAAACCAAAAAABCAAAAAABCAAAAAABCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAABAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAABwAAAAABBwAAAAACBwAAAAABBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAAABwAAAAACBwAAAAABBwAAAAADBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAACBwAAAAADBwAAAAABBwAAAAACBwAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAACBwAAAAACBwAAAAADBwAAAAABBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAACAwAAAAAAAgAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAABwAAAAABBwAAAAABBwAAAAAABwAAAAABBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAABAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAABwAAAAACBwAAAAAABwAAAAADBwAAAAACBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAADCAAAAAADCAAAAAABAwAAAAACAwAAAAACBwAAAAABBwAAAAACBwAAAAACBwAAAAABBwAAAAACBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAACCAAAAAAACAAAAAABAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAABwAAAAACBwAAAAACBwAAAAAABwAAAAADBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAACAAAAAAACAAAAAACAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAABCAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAADAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAwAAAAACAwAAAAADAwAAAAADBwAAAAADBwAAAAACBwAAAAABBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABBwAAAAADBwAAAAAABwAAAAAABwAAAAADBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAACBwAAAAABBwAAAAAABwAAAAAABwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 6,3: ind: 6,3 - tiles: AwAAAAABAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAABBwAAAAAABwAAAAACBwAAAAACBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAABFAAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAACFAAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAADFAAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAABwAAAAADBwAAAAAAFgAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAAgAAAAAAGAAAAAAAGQAAAAAAGQAAAAAAGQAAAAAAGAAAAAAAAgAAAAAABwAAAAAABwAAAAADAgAAAAAAAgAAAAAAFwAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAFwAAAAAAAgAAAAAAGAAAAAAAGQAAAAAAGQAAAAAAGQAAAAAAGAAAAAAAAgAAAAAABwAAAAACGgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAFwAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAAgAAAAAABwAAAAADGgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAACBwAAAAABBwAAAAADBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAADBwAAAAACBwAAAAAABwAAAAABBwAAAAADBwAAAAADBwAAAAADBwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAADBwAAAAACBwAAAAAABwAAAAACBwAAAAACBwAAAAAABwAAAAAABwAAAAADAwAAAAABAwAAAAAB + tiles: AwAAAAAAAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABBwAAAAAABwAAAAABBwAAAAACBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAADFAAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAACFAAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAFAAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAABwAAAAACBwAAAAADFgAAAAAEAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAAgAAAAAAGAAAAAAAGQAAAAAAGQAAAAAAGQAAAAAAGAAAAAAAAgAAAAAABwAAAAABBwAAAAABAgAAAAAAAgAAAAAAFwAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAFwAAAAAAAgAAAAAAGAAAAAAAGQAAAAAAGQAAAAAAGQAAAAAAGAAAAAAAAgAAAAAABwAAAAABGgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAFwAAAAAAAgAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAGAAAAAAAAgAAAAAABwAAAAADGgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAFwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAACBwAAAAAABwAAAAACBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAABBwAAAAAABwAAAAACBwAAAAABBwAAAAACBwAAAAAABwAAAAADBwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAABwAAAAAABwAAAAABBwAAAAABBwAAAAAABwAAAAADBwAAAAAABwAAAAAAAwAAAAABAwAAAAAB version: 6 6,4: ind: 6,4 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAABwAAAAAABwAAAAACBwAAAAADBwAAAAABBwAAAAABBwAAAAABBwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADBwAAAAACBwAAAAABBwAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAACBwAAAAACBwAAAAABBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAABwAAAAABBwAAAAADBwAAAAACBwAAAAACBwAAAAACBwAAAAACBwAAAAADBwAAAAABBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAABwAAAAACBwAAAAADBwAAAAADBwAAAAABBwAAAAACBwAAAAACBwAAAAADBwAAAAACBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAACBwAAAAADBwAAAAACBwAAAAAABwAAAAABBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAABFAAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAACFAAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAADFAAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAB + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADBwAAAAADBwAAAAAABwAAAAABBwAAAAAABwAAAAABBwAAAAACBwAAAAABAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAABwAAAAABBwAAAAACBwAAAAACBwAAAAAABwAAAAABBwAAAAAABwAAAAACBwAAAAACBwAAAAAABwAAAAACBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAACBwAAAAABBwAAAAABBwAAAAADBwAAAAACBwAAAAADBwAAAAADBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAABwAAAAABBwAAAAADBwAAAAACBwAAAAADBwAAAAACBwAAAAAABwAAAAAABwAAAAADBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAABwAAAAAABwAAAAADBwAAAAACBwAAAAADBwAAAAAABwAAAAACBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAACFAAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAACFAAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAAAFAAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAA version: 6 6,5: ind: 6,5 - tiles: AgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAGwAAAAABGwAAAAACGwAAAAADGwAAAAADGwAAAAACAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAGwAAAAABGwAAAAADGwAAAAAAGwAAAAADGwAAAAABAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAABAwAAAAABAgAAAAAAGwAAAAADGwAAAAACGwAAAAACGwAAAAACGwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAGwAAAAABGwAAAAAAGwAAAAACGwAAAAAAGwAAAAACAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAADGwAAAAACGwAAAAADGwAAAAAAGwAAAAAAGwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAACwAAAAADBwAAAAAABwAAAAACBwAAAAAAAgAAAAAAAwAAAAACFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAgAAAAAACwAAAAABCwAAAAAABwAAAAACBwAAAAAABwAAAAAAAgAAAAAAAwAAAAABFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAACwAAAAAACwAAAAACBwAAAAABBwAAAAAABwAAAAACAwAAAAACAwAAAAABFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAACwAAAAAACwAAAAADBwAAAAACBwAAAAABBwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAACwAAAAABCwAAAAABBwAAAAADBwAAAAADBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAA + tiles: AgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAGwAAAAACGwAAAAADGwAAAAACGwAAAAABGwAAAAABAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAGwAAAAABGwAAAAABGwAAAAACGwAAAAACGwAAAAABAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAABAgAAAAAAGwAAAAAAGwAAAAADGwAAAAACGwAAAAADGwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAGwAAAAACGwAAAAACGwAAAAADGwAAAAACGwAAAAACAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAGwAAAAADGwAAAAADGwAAAAADGwAAAAABGwAAAAACAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAACwAAAAADBwAAAAABBwAAAAABBwAAAAAAAgAAAAAAAwAAAAADFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAACwAAAAAACwAAAAAABwAAAAAABwAAAAACBwAAAAADAgAAAAAAAwAAAAADFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAACwAAAAAACwAAAAACBwAAAAADBwAAAAAABwAAAAAAAwAAAAACAwAAAAABFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAACwAAAAABCwAAAAAABwAAAAABBwAAAAABBwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAgAAAAAACwAAAAACCwAAAAABBwAAAAABBwAAAAACBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAA version: 6 6,6: ind: 6,6 - tiles: AwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAwAAAAABFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAACAwAAAAACAwAAAAAADwAAAAACDwAAAAAADwAAAAABDwAAAAABDwAAAAACDwAAAAACDwAAAAADDwAAAAACCwAAAAABCwAAAAAACwAAAAAACwAAAAABFQAAAAAAAwAAAAACAwAAAAACAwAAAAABDwAAAAABDwAAAAAADwAAAAACDwAAAAAADwAAAAABDwAAAAABDwAAAAAADwAAAAADCwAAAAABCwAAAAAACwAAAAADCwAAAAABFQAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAAACwAAAAAACwAAAAABCwAAAAACCwAAAAABFQAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACwAAAAACCwAAAAADCwAAAAABCwAAAAAAFQAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAABwAAAAADBwAAAAAABwAAAAACBwAAAAADBwAAAAAAAgAAAAAACwAAAAAACwAAAAADCwAAAAAACwAAAAADFQAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAABwAAAAADBwAAAAABBwAAAAACBwAAAAACBwAAAAAAAgAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAABwAAAAABBwAAAAAABwAAAAADBwAAAAABBwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAABwAAAAABBwAAAAABBwAAAAACBwAAAAACBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFQAAAAAAFQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAgAAAAAABwAAAAABBwAAAAADBwAAAAACBwAAAAACBwAAAAADBwAAAAACBwAAAAACAwAAAAABAgAAAAAAAwAAAAABHAAAAAAAHAAAAAABHAAAAAADHAAAAAADAwAAAAABBwAAAAACBwAAAAACBwAAAAABBwAAAAADBwAAAAACBwAAAAACBwAAAAAABwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAHAAAAAADHAAAAAABHAAAAAACHAAAAAACAwAAAAADBwAAAAAABwAAAAACBwAAAAADBwAAAAADBwAAAAABBwAAAAAABwAAAAABBwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACHAAAAAAAHAAAAAAAHAAAAAACHAAAAAABAwAAAAABBwAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAACBwAAAAADBwAAAAACBwAAAAACAgAAAAAAAwAAAAAAAwAAAAADHAAAAAABHAAAAAAAHAAAAAADHAAAAAACAwAAAAAAAwAAAAACBwAAAAABBwAAAAACBwAAAAABBwAAAAACBwAAAAACBwAAAAACBwAAAAACAgAAAAAAAgAAAAAAAwAAAAABHAAAAAABHAAAAAAAHAAAAAADHAAAAAABHAAAAAACAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAA + tiles: AwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAACFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAABAwAAAAAAAwAAAAADDwAAAAAADwAAAAABDwAAAAADDwAAAAACDwAAAAACDwAAAAACDwAAAAABDwAAAAACCwAAAAADCwAAAAADCwAAAAADCwAAAAACFQAAAAAAAwAAAAAAAwAAAAABAwAAAAABDwAAAAACDwAAAAABDwAAAAABDwAAAAADDwAAAAADDwAAAAADDwAAAAADDwAAAAACCwAAAAACCwAAAAACCwAAAAACCwAAAAAAFQAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAwAAAAAACwAAAAAACwAAAAADCwAAAAABCwAAAAACFQAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAgAAAAAAAgAAAAAACwAAAAABCwAAAAADCwAAAAAACwAAAAAAFQAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAACAgAAAAAABwAAAAACBwAAAAACBwAAAAABBwAAAAACBwAAAAAAAgAAAAAACwAAAAADCwAAAAACCwAAAAABCwAAAAADFQAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAACAgAAAAAABwAAAAAABwAAAAABBwAAAAADBwAAAAADBwAAAAABAgAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAgAAAAAABwAAAAACBwAAAAAABwAAAAABBwAAAAACBwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAgAAAAAABwAAAAAABwAAAAACBwAAAAACBwAAAAADBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFQAAAAAAFQAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAACAgAAAAAABwAAAAACBwAAAAABBwAAAAABBwAAAAADBwAAAAADBwAAAAABBwAAAAADAwAAAAADAgAAAAAAAwAAAAADHAAAAAABHAAAAAACHAAAAAACHAAAAAACAwAAAAAABwAAAAAABwAAAAABBwAAAAABBwAAAAADBwAAAAACBwAAAAAABwAAAAACBwAAAAABAwAAAAAAAgAAAAAAAwAAAAABHAAAAAAAHAAAAAABHAAAAAACHAAAAAAAAwAAAAADBwAAAAADBwAAAAAABwAAAAABBwAAAAABBwAAAAADBwAAAAABBwAAAAAABwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABHAAAAAACHAAAAAACHAAAAAACHAAAAAAAAwAAAAAABwAAAAADBwAAAAACBwAAAAABBwAAAAABBwAAAAAABwAAAAADBwAAAAAABwAAAAACAgAAAAAAAwAAAAABAwAAAAAAHAAAAAACHAAAAAAAHAAAAAABHAAAAAAAAwAAAAACAwAAAAADBwAAAAABBwAAAAABBwAAAAAABwAAAAADBwAAAAABBwAAAAABBwAAAAADAgAAAAAAAgAAAAAAAwAAAAABHAAAAAAAHAAAAAAAHAAAAAABHAAAAAACHAAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAAC version: 6 6,7: ind: 6,7 - tiles: CAAAAAABAgAAAAAAAwAAAAADHAAAAAACHAAAAAAAHAAAAAAAHAAAAAACHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAABHAAAAAAAHAAAAAABHAAAAAACHAAAAAABHAAAAAAACAAAAAADAgAAAAAAAwAAAAABHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAACHAAAAAADHAAAAAACHAAAAAADHAAAAAAAHAAAAAACHAAAAAABHAAAAAABHAAAAAACHAAAAAADCAAAAAABAgAAAAAAAwAAAAADAwAAAAACHAAAAAACHAAAAAACHAAAAAADHAAAAAACHAAAAAACHAAAAAADHAAAAAADHAAAAAAAHAAAAAACHAAAAAACHAAAAAADHAAAAAADCAAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAFAAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAAAFAAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABFAAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAABAgAAAAAACwAAAAADCwAAAAADCwAAAAADAgAAAAAAAwAAAAABBQAAAAACAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAABBQAAAAABAwAAAAACBQAAAAACBQAAAAABBQAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: CAAAAAACAgAAAAAAAwAAAAADHAAAAAACHAAAAAABHAAAAAACHAAAAAACHAAAAAADHAAAAAAAHAAAAAABHAAAAAABHAAAAAAAHAAAAAADHAAAAAABHAAAAAACHAAAAAAACAAAAAADAgAAAAAAAwAAAAACHAAAAAADHAAAAAADHAAAAAACHAAAAAABHAAAAAABHAAAAAABHAAAAAACHAAAAAAAHAAAAAAAHAAAAAABHAAAAAAAHAAAAAADHAAAAAAACAAAAAADAgAAAAAAAwAAAAAAAwAAAAACHAAAAAAAHAAAAAAAHAAAAAACHAAAAAABHAAAAAADHAAAAAACHAAAAAABHAAAAAABHAAAAAADHAAAAAABHAAAAAABHAAAAAACCAAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADFAAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACFAAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAABAwAAAAABFAAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAACwAAAAAACwAAAAAACwAAAAACAgAAAAAAAwAAAAABBQAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAABBQAAAAACAwAAAAADBQAAAAAABQAAAAAABQAAAAABAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 6,8: ind: 6,8 - tiles: AwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAACgAAAAACCgAAAAADAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAwAAAAACBQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAABBQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAwAAAAADAwAAAAABBQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAACgAAAAADCgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAA + tiles: AwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAACgAAAAACCgAAAAABAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAADBQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAAABQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAwAAAAACAwAAAAADBQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAACgAAAAAACgAAAAADAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAA version: 6 6,9: ind: 6,9 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABCgAAAAAACgAAAAADCgAAAAACAwAAAAADAwAAAAADAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAABCgAAAAACCgAAAAACCgAAAAAAAwAAAAABAwAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAADBQAAAAABAwAAAAABCgAAAAADCgAAAAADCgAAAAABAwAAAAACBQAAAAADAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAABBQAAAAACAwAAAAACCgAAAAABCgAAAAACCgAAAAAAAwAAAAADBQAAAAABAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAAABQAAAAAAAwAAAAADCgAAAAABCgAAAAABCgAAAAAAAwAAAAACBQAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAACCAAAAAAACAAAAAADCAAAAAACCAAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAACCAAAAAADCAAAAAACCAAAAAAACAAAAAACCAAAAAABCAAAAAACCAAAAAABAgAAAAAAAwAAAAABBQAAAAAABQAAAAACBQAAAAACBQAAAAADBQAAAAAABQAAAAABBQAAAAAD + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACCgAAAAADCgAAAAABCgAAAAABAwAAAAADAwAAAAABAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACCgAAAAABCgAAAAADCgAAAAACAwAAAAABAwAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAADBQAAAAACAwAAAAABCgAAAAAACgAAAAADCgAAAAAAAwAAAAABBQAAAAABAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAAABQAAAAAAAwAAAAABCgAAAAADCgAAAAACCgAAAAAAAwAAAAABBQAAAAAAAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAADBQAAAAACAwAAAAAACgAAAAABCgAAAAADCgAAAAAAAwAAAAACBQAAAAACAgAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAACCAAAAAABCAAAAAADCAAAAAADCAAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAwAAAAABCAAAAAACCAAAAAADCAAAAAACCAAAAAABCAAAAAAACAAAAAADCAAAAAADAgAAAAAAAwAAAAACBQAAAAABBQAAAAADBQAAAAABBQAAAAAABQAAAAAABQAAAAACBQAAAAAB version: 6 7,1: ind: 7,1 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAAAAAAAAAQAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAQAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAQAAAAAA version: 6 7,10: ind: 7,10 - tiles: BQAAAAABAwAAAAADAgAAAAAACAAAAAABCgAAAAAACQAAAAAACgAAAAACCAAAAAABCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAABQAAAAACAwAAAAAAAgAAAAAACAAAAAADCgAAAAABCgAAAAACCgAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAABAwAAAAADAgAAAAAACAAAAAACCAAAAAAACAAAAAACCAAAAAACCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAFgAAAAAABwAAAAACAgAAAAAABwAAAAAAAgAAAAAAHAAAAAABHAAAAAAAHAAAAAAAHAAAAAADAgAAAAAAHAAAAAABHAAAAAAAAgAAAAAAHAAAAAAAAgAAAAAAAAAAAAAABwAAAAADBwAAAAAAAgAAAAAAFgAAAAADFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAAgAAAAAAHAAAAAADAgAAAAAAAAAAAAAABwAAAAADAgAAAAAABwAAAAADBwAAAAAAFAAAAAAAAgAAAAAAHAAAAAAAHAAAAAACHAAAAAADHAAAAAACAgAAAAAAAgAAAAAAHAAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAFgAAAAABFgAAAAAFBwAAAAACFAAAAAAAHAAAAAABAgAAAAAAHAAAAAACAgAAAAAAAgAAAAAAHAAAAAABHAAAAAABAgAAAAAAHAAAAAABAgAAAAAAAAAAAAAABwAAAAAAFgAAAAAFBwAAAAABBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: BQAAAAADAwAAAAACAgAAAAAACAAAAAAACgAAAAACCQAAAAAACgAAAAADCAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAABQAAAAACAwAAAAABAgAAAAAACAAAAAABCgAAAAADCgAAAAAACgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAADAgAAAAAACAAAAAAACAAAAAAACAAAAAACCAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAACHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAFgAAAAAEBwAAAAABAgAAAAAABwAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAACAgAAAAAAHAAAAAACHAAAAAACAgAAAAAAHAAAAAADAgAAAAAAAAAAAAAABwAAAAABBwAAAAAAAgAAAAAAFgAAAAADFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAACAgAAAAAAHAAAAAACAgAAAAAAAAAAAAAABwAAAAADAgAAAAAABwAAAAABBwAAAAABFAAAAAAAAgAAAAAAHAAAAAADHAAAAAADHAAAAAADHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAFgAAAAAAFgAAAAAEBwAAAAABFAAAAAAAHAAAAAAAAgAAAAAAHAAAAAADAgAAAAAAAgAAAAAAHAAAAAADHAAAAAABAgAAAAAAHAAAAAACAgAAAAAAAAAAAAAABwAAAAACFgAAAAAGBwAAAAADBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAACAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 7,2: ind: 7,2 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAgAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAHQAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAADEAAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAADEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAAAEAAAAAAAEAAAAAABEAAAAAADEAAAAAACEAAAAAACEAAAAAAAAgAAAAAAAwAAAAADBQAAAAABAwAAAAABAgAAAAAAAwAAAAADAwAAAAAA + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAHQAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAADAgAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAEAAAAAABEAAAAAACEAAAAAAAEAAAAAAAEAAAAAADEAAAAAACEAAAAAABEAAAAAABAgAAAAAAAwAAAAACBQAAAAACAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAB version: 6 7,3: ind: 7,3 - tiles: AgAAAAAAEAAAAAABEAAAAAADEAAAAAAAEAAAAAADEAAAAAADEAAAAAADEAAAAAACEAAAAAABAgAAAAAAAwAAAAABBQAAAAAAAwAAAAABAgAAAAAAAwAAAAABBQAAAAAAAgAAAAAAEAAAAAAAEAAAAAABEAAAAAABEAAAAAADEAAAAAADEAAAAAACEAAAAAAAEAAAAAADAgAAAAAAAwAAAAAABQAAAAADAwAAAAABAgAAAAAAAwAAAAACBQAAAAABAgAAAAAAEAAAAAADEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAEAAAAAABEAAAAAADEAAAAAAAEAAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAwAAAAACBQAAAAABAgAAAAAAEAAAAAAAEAAAAAACEAAAAAABEAAAAAAAEAAAAAACEAAAAAABEAAAAAAAEAAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAEAAAAAADAgAAAAAAAgAAAAAAEAAAAAABEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAwAAAAADAwAAAAABBQAAAAACBQAAAAADBQAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACBwAAAAABBwAAAAABBwAAAAADBwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAABwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAADGgAAAAAAGgAAAAAABwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAABAwAAAAACAwAAAAABBwAAAAACBwAAAAADBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAwAAAAADBwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAFAAAAAAAFAAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAB + tiles: AgAAAAAAEAAAAAAAEAAAAAADEAAAAAADEAAAAAACEAAAAAACEAAAAAABEAAAAAADEAAAAAADAgAAAAAAAwAAAAADBQAAAAAAAwAAAAAAAgAAAAAAAwAAAAADBQAAAAACAgAAAAAAEAAAAAACEAAAAAABEAAAAAACEAAAAAADEAAAAAADEAAAAAAAEAAAAAABEAAAAAABAgAAAAAAAwAAAAADBQAAAAAAAwAAAAABAgAAAAAAAwAAAAADBQAAAAAAAgAAAAAAEAAAAAABEAAAAAACEAAAAAAAEAAAAAABEAAAAAABEAAAAAADEAAAAAABEAAAAAAAEAAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADBQAAAAABAgAAAAAAEAAAAAACEAAAAAAAEAAAAAABEAAAAAABEAAAAAABEAAAAAADEAAAAAABEAAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAEAAAAAADAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAABAwAAAAABBQAAAAAABQAAAAACBQAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADBwAAAAACBwAAAAACBwAAAAAABwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAABwAAAAABAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAADAwAAAAACGgAAAAAAGgAAAAAABwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAACBwAAAAADBwAAAAABBwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAAABwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAFAAAAAAAFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAB version: 6 7,4: ind: 7,4 - tiles: AwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAADFAAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAABFAAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAACFAAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAFAAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAAAFAAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAABAgAAAAAAAgAAAAAAAwAAAAAD + tiles: AwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAABFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAADFAAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADFAAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAABFAAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAFAAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAACFAAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAABEAAAAAACAgAAAAAAAgAAAAAAAwAAAAAA version: 6 7,5: ind: 7,5 - tiles: AwAAAAAAAwAAAAACAwAAAAACAgAAAAAAEAAAAAABEAAAAAACEAAAAAAAEAAAAAABEAAAAAAAEAAAAAADEAAAAAACEAAAAAADEAAAAAADEAAAAAADAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAEAAAAAABEQAAAAAAEQAAAAAAEQAAAAABEQAAAAABEAAAAAACEAAAAAADEAAAAAABEAAAAAAAEAAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAEAAAAAABEQAAAAABEQAAAAAAEQAAAAABEQAAAAAAEAAAAAADEAAAAAADEAAAAAACEAAAAAABEAAAAAADAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAgAAAAAAEAAAAAABEQAAAAACEQAAAAACEQAAAAABEQAAAAADEAAAAAAAEAAAAAACEAAAAAACEAAAAAADEAAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAEAAAAAACEQAAAAACEQAAAAAAEQAAAAACEQAAAAADEAAAAAAAEAAAAAACAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAADAgAAAAAAEAAAAAAAEQAAAAABEQAAAAABEQAAAAADEQAAAAACEAAAAAACEAAAAAACAgAAAAAAEAAAAAAAEAAAAAADAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAEAAAAAACEAAAAAADEAAAAAABEAAAAAABEAAAAAADEAAAAAACEAAAAAAAAgAAAAAAEAAAAAADEAAAAAADAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAACwAAAAABCwAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABCwAAAAABCwAAAAABAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADCwAAAAABCwAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACCwAAAAAACwAAAAADAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADCwAAAAAACwAAAAADAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAB + tiles: AwAAAAABAwAAAAACAwAAAAACAgAAAAAAEAAAAAADEAAAAAADEAAAAAAAEAAAAAAAEAAAAAADEAAAAAABEAAAAAAAEAAAAAABEAAAAAACEAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAEAAAAAADEQAAAAAAEQAAAAACEQAAAAACEQAAAAADEAAAAAADEAAAAAACEAAAAAACEAAAAAADEAAAAAABAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABAgAAAAAAEAAAAAAAEQAAAAAAEQAAAAABEQAAAAABEQAAAAACEAAAAAADEAAAAAADEAAAAAADEAAAAAABEAAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAADAgAAAAAAEAAAAAABEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAAAEAAAAAADEAAAAAADEAAAAAACEAAAAAADEAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAADAgAAAAAAEAAAAAACEQAAAAAAEQAAAAABEQAAAAADEQAAAAABEAAAAAADEAAAAAACAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAEAAAAAADEQAAAAADEQAAAAADEQAAAAADEQAAAAADEAAAAAADEAAAAAAAAgAAAAAAEAAAAAAAEAAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAABEAAAAAABEAAAAAAAEAAAAAACEAAAAAACAgAAAAAAEAAAAAAAEAAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABCwAAAAACCwAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAACwAAAAAACwAAAAADAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABCwAAAAACCwAAAAABAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABCwAAAAACCwAAAAADAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAACwAAAAABCwAAAAABAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAB version: 6 7,6: ind: 7,6 - tiles: AwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABDwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADDwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAADAgAAAAAAQQAAAAAAQQAAAAAAQQAAAAAAQQAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAACBwAAAAAAAwAAAAADHAAAAAADHAAAAAAAHAAAAAABHAAAAAACAwAAAAADAgAAAAAAQQAAAAAAQQAAAAAAQQAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAADBwAAAAADAwAAAAACHAAAAAAAHAAAAAABHAAAAAAAHAAAAAAAAwAAAAABAgAAAAAAQQAAAAAAQQAAAAAAQQAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAAABwAAAAAAAwAAAAAAHAAAAAAAHAAAAAAAHAAAAAABHAAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAHAAAAAACHAAAAAAAHAAAAAADHAAAAAAAAwAAAAAAAwAAAAADBwAAAAADBwAAAAAABwAAAAAABwAAAAACBwAAAAACBwAAAAAAAgAAAAAAAwAAAAACAwAAAAABHAAAAAAAHAAAAAABHAAAAAADHAAAAAADHAAAAAABAwAAAAAAAgAAAAAABwAAAAACPgAAAAAAPgAAAAAAPQAAAAAAPQAAAAAABwAAAAADAgAAAAAAAwAAAAAA + tiles: AwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADDwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACDwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAQAAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAQQAAAAAAQQAAAAAAQQAAAAAAQQAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAAABwAAAAABAwAAAAADHAAAAAAAHAAAAAADHAAAAAAAHAAAAAAAAwAAAAACAgAAAAAAQQAAAAAAQQAAAAAAQQAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAABBwAAAAAAAwAAAAADHAAAAAABHAAAAAADHAAAAAACHAAAAAADAwAAAAABAgAAAAAAQQAAAAAAQQAAAAAAQQAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAAABwAAAAAAAwAAAAAAHAAAAAABHAAAAAAAHAAAAAAAHAAAAAABAwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADHAAAAAADHAAAAAADHAAAAAADHAAAAAABAwAAAAACAwAAAAABBwAAAAADBwAAAAAABwAAAAACBwAAAAACBwAAAAADBwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAHAAAAAADHAAAAAAAHAAAAAABHAAAAAACHAAAAAACAwAAAAABAgAAAAAABwAAAAADPgAAAAAAPgAAAAAAPQAAAAAAPQAAAAAABwAAAAAAAgAAAAAAAwAAAAAA version: 6 7,7: ind: 7,7 - tiles: HAAAAAADHAAAAAACHAAAAAADHAAAAAADHAAAAAAAHAAAAAABAwAAAAADAgAAAAAABwAAAAACPgAAAAAAPgAAAAAAPQAAAAAAPQAAAAAABwAAAAADFAAAAAAAAwAAAAABHAAAAAABHAAAAAADHAAAAAADHAAAAAABHAAAAAACHAAAAAADAwAAAAADAgAAAAAABwAAAAADPgAAAAAAPgAAAAAAPQAAAAAAPQAAAAAABwAAAAADFAAAAAAAAwAAAAACHAAAAAADHAAAAAAAHAAAAAADHAAAAAADHAAAAAAAAwAAAAADAwAAAAACAgAAAAAABwAAAAABBwAAAAADBwAAAAADBwAAAAABBwAAAAABBwAAAAAAFAAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAACAgAAAAAAAwAAAAADFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAABFAAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAFAAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAABFAAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACBQAAAAABBQAAAAACBQAAAAADAwAAAAADAwAAAAACAwAAAAAABQAAAAACBQAAAAADAwAAAAABAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAABQAAAAADBQAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAACBQAAAAABBQAAAAADBQAAAAACAwAAAAAABQAAAAADBQAAAAABBQAAAAADAwAAAAABAgAAAAAAAwAAAAABBQAAAAAABQAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAAABQAAAAADBQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAAABQAAAAAABQAAAAAB + tiles: HAAAAAACHAAAAAAAHAAAAAABHAAAAAAAHAAAAAAAHAAAAAACAwAAAAADAgAAAAAABwAAAAABPgAAAAAAPgAAAAAAPQAAAAAAPQAAAAAABwAAAAABFAAAAAAAAwAAAAACHAAAAAADHAAAAAAAHAAAAAABHAAAAAABHAAAAAABHAAAAAADAwAAAAABAgAAAAAABwAAAAABPgAAAAAAPgAAAAAAPQAAAAAAPQAAAAAABwAAAAADFAAAAAAAAwAAAAAAHAAAAAADHAAAAAAAHAAAAAAAHAAAAAADHAAAAAADAwAAAAACAwAAAAABAgAAAAAABwAAAAAABwAAAAAABwAAAAAABwAAAAACBwAAAAABBwAAAAAAFAAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAAAAgAAAAAAAwAAAAADFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADFAAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAACFAAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAABFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAABBQAAAAAABQAAAAAABQAAAAAAAwAAAAABAwAAAAABAwAAAAABBQAAAAAABQAAAAACAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADBQAAAAACBQAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAADBQAAAAADBQAAAAACBQAAAAACAwAAAAADBQAAAAAABQAAAAAABQAAAAADAwAAAAACAgAAAAAAAwAAAAABBQAAAAAABQAAAAADAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAABBQAAAAACBQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABBQAAAAADBQAAAAAB version: 6 7,8: ind: 7,8 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAACBQAAAAAABQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAABQAAAAABBQAAAAACAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAACgAAAAACCgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAwAAAAACBQAAAAABAwAAAAADAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAwAAAAAABQAAAAACAwAAAAADAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACBQAAAAACAwAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAAAwAAAAADAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAwAAAAAABQAAAAABAwAAAAACAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAwAAAAADBQAAAAABBQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAACgAAAAABCgAAAAABAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAgAAAAAACAAAAAADCAAAAAACCAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAACAAAAAADCAAAAAACCAAAAAAC + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAAABQAAAAADBQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAwAAAAACBQAAAAAABQAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAACgAAAAABCgAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAwAAAAADBQAAAAADAwAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAwAAAAAABQAAAAAAAwAAAAADAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAACAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAABAwAAAAADBQAAAAACAwAAAAADAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAACBQAAAAAAAwAAAAABAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAADAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAwAAAAABBQAAAAAABQAAAAABAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAACgAAAAADCgAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAACAAAAAACCAAAAAACCAAAAAADAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAAD version: 6 7,9: ind: 7,9 - tiles: AQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAADAgAAAAAACAAAAAABCAAAAAACCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAgAAAAAACAAAAAADCAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAgAAAAAACAAAAAADCAAAAAAACAAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAAABQAAAAACAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACBQAAAAACBQAAAAADBQAAAAACAwAAAAADAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAADAwAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAACCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABQAAAAACAwAAAAADAgAAAAAACAAAAAACCgAAAAADCgAAAAAACgAAAAABCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAA + tiles: AQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAADAgAAAAAACAAAAAAACAAAAAABCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAACAgAAAAAACAAAAAACCAAAAAACCAAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAAABQAAAAADBQAAAAABAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAABQAAAAABBQAAAAABBQAAAAABAwAAAAADAwAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAABAgAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAABQAAAAAAAwAAAAABAgAAAAAACAAAAAAACgAAAAACCgAAAAABCgAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAA version: 6 8,2: ind: 8,2 - tiles: AQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAACCAAAAAADCAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABBQAAAAACAwAAAAAABQAAAAACAwAAAAABAgAAAAAAAwAAAAACAwAAAAADAgAAAAAACAAAAAADCAAAAAABCAAAAAAACAAAAAACCAAAAAADAgAAAAAAAgAAAAAAAwAAAAADBQAAAAACAwAAAAADBQAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAADAgAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAABCAAAAAACAgAAAAAAAwAAAAABAwAAAAACBQAAAAADAwAAAAACBQAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAACCAAAAAADCAAAAAACCAAAAAAAAgAAAAAA + tiles: AQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAABCAAAAAACCAAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABBQAAAAAAAwAAAAACBQAAAAACAwAAAAABAgAAAAAAAwAAAAADAwAAAAACAgAAAAAACAAAAAABCAAAAAADCAAAAAABCAAAAAABCAAAAAABAgAAAAAAAgAAAAAAAwAAAAADBQAAAAABAwAAAAAABQAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAgAAAAAACAAAAAAACAAAAAABCAAAAAACCAAAAAABCAAAAAACAgAAAAAAAwAAAAABAwAAAAACBQAAAAAAAwAAAAACBQAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAACCAAAAAAACAAAAAABCAAAAAADAgAAAAAA version: 6 8,3: ind: 8,3 - tiles: AwAAAAABAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAACAAAAAACCAAAAAADCAAAAAAACAAAAAAACAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABBQAAAAACAwAAAAAABQAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAABAgAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAABCAAAAAABAgAAAAAAAwAAAAABAwAAAAAABQAAAAAAAwAAAAABBQAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAABQAAAAABAwAAAAACBQAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAADFAAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAACFAAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAABFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAABFAAAAAAACAAAAAACCAAAAAADCAAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABFAAAAAAACAAAAAACCAAAAAAACAAAAAADCAAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACFAAAAAAACAAAAAAACAAAAAAACAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAABAwAAAAADAgAAAAAACAAAAAABAwAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAgAAAAAACAAAAAABFAAAAAAAAgAAAAAACAAAAAADCAAAAAACCAAAAAABCAAAAAAACAAAAAABCAAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAgAAAAAACAAAAAAAAwAAAAAAAgAAAAAACAAAAAADCgAAAAACCAAAAAAACAAAAAAACgAAAAABCAAAAAADAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAgAAAAAACAAAAAACCAAAAAAACAAAAAABCAAAAAAACAAAAAABAgAAAAAAAwAAAAAAAwAAAAAABQAAAAABAwAAAAAABQAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAgAAAAAACAAAAAABCAAAAAAACAAAAAABCAAAAAABCAAAAAAAAgAAAAAAAwAAAAACAwAAAAAABQAAAAAAAwAAAAADBQAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADBQAAAAAAAwAAAAABBQAAAAADAwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAwAAAAADFAAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAwAAAAACFAAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAAAFAAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAAAAwAAAAABFAAAAAAACAAAAAADCAAAAAADCAAAAAADAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAwAAAAACFAAAAAAACAAAAAADCAAAAAAACAAAAAACCAAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACFAAAAAAACAAAAAAACAAAAAAACAAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAAAAgAAAAAACAAAAAABAwAAAAAAAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAACAAAAAAAFAAAAAAAAgAAAAAACAAAAAADCAAAAAACCAAAAAAACAAAAAABCAAAAAABCAAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAACAAAAAAAAwAAAAACAgAAAAAACAAAAAAACgAAAAAACAAAAAAACAAAAAAACgAAAAADCAAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAA version: 6 8,4: ind: 8,4 - tiles: AwAAAAACAgAAAAAACAAAAAAACgAAAAAACAAAAAABCAAAAAACCgAAAAADCAAAAAADAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAACAwAAAAACAgAAAAAACAAAAAADCgAAAAAACAAAAAADCAAAAAADCgAAAAABCAAAAAACAgAAAAAAAwAAAAADAwAAAAABAwAAAAACAgAAAAAACAAAAAAACAAAAAAACAAAAAACAwAAAAABAgAAAAAACAAAAAABCAAAAAACCAAAAAACCAAAAAACCAAAAAACCAAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAACAAAAAAACAAAAAABCAAAAAABAwAAAAABAgAAAAAACAAAAAABCAAAAAACCAAAAAABCAAAAAABCAAAAAAACAAAAAAACAAAAAADAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAACAAAAAAACAAAAAABCAAAAAACCAAAAAABCAAAAAADCAAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAgAAAAAACAAAAAAACgAAAAABCAAAAAABCAAAAAAACgAAAAABCAAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAADCAAAAAABCAAAAAABCgAAAAADCAAAAAADCAAAAAABCgAAAAADCAAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAgAAAAAACAAAAAAACgAAAAACCAAAAAACCAAAAAABCgAAAAADCAAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAACAAAAAABCAAAAAAACAAAAAADCAAAAAACCAAAAAABCAAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAACAAAAAADCAAAAAABCAAAAAADCAAAAAAACAAAAAACCAAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAAAAgAAAAAACAAAAAACCgAAAAADCAAAAAADCAAAAAABCgAAAAACCAAAAAABAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAADCAAAAAACCAAAAAADAwAAAAABAgAAAAAACAAAAAACCgAAAAABCAAAAAACCAAAAAAACgAAAAADCAAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAgAAAAAACAAAAAAACAAAAAACCAAAAAADAwAAAAABAgAAAAAACAAAAAABCAAAAAADCAAAAAACCAAAAAADCAAAAAACCAAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAACAAAAAADCAAAAAADCAAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAACAAAAAACCAAAAAADCAAAAAADAwAAAAAAAgAAAAAACAAAAAAACAAAAAABCAAAAAACCAAAAAADCAAAAAADCAAAAAADCAAAAAACAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAACAAAAAABCAAAAAABCAAAAAAACAAAAAAACAAAAAADCAAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAgAAAAAACAAAAAACCgAAAAAACAAAAAABCAAAAAABCgAAAAAACAAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACCAAAAAACCAAAAAADCgAAAAAACAAAAAABCAAAAAACCgAAAAADCAAAAAADAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAACAAAAAABCgAAAAACCAAAAAAACAAAAAACCgAAAAAACAAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAACAAAAAACCAAAAAAACAAAAAADCAAAAAAACAAAAAAACAAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAgAAAAAACAAAAAADCAAAAAADCAAAAAACCAAAAAACCAAAAAABCAAAAAACAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 8,5: ind: 8,5 - tiles: AwAAAAABAwAAAAADAgAAAAAACwAAAAADCwAAAAABCwAAAAABCwAAAAABCwAAAAACCwAAAAABCwAAAAADCwAAAAABAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAACwAAAAABCwAAAAAACwAAAAACCwAAAAAACwAAAAABCwAAAAADCwAAAAADCwAAAAABAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAwAAAAABAwAAAAADAgAAAAAACwAAAAADCwAAAAACCwAAAAABCwAAAAABCwAAAAADCwAAAAADCwAAAAADCwAAAAABAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAgAAAAAACwAAAAADCwAAAAAACwAAAAABCwAAAAACCwAAAAADCwAAAAABCwAAAAAACwAAAAACAgAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAACCAAAAAACCAAAAAABCAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAABQAAAAADAwAAAAACAwAAAAADAgAAAAAACAAAAAACCAAAAAABDgAAAAADDgAAAAADDgAAAAAADgAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBQAAAAADAwAAAAADAwAAAAABAgAAAAAACAAAAAABCAAAAAADDgAAAAAACAAAAAAACAAAAAADCAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABBQAAAAAAAwAAAAADAwAAAAACCAAAAAADCAAAAAACCAAAAAAADgAAAAADCAAAAAACCgAAAAAACAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAACAAAAAADCAAAAAADDgAAAAABCAAAAAABCAAAAAABCAAAAAABCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAACAAAAAAACAAAAAADDgAAAAABDgAAAAACDgAAAAACDgAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACFAAAAAAAFAAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAACCAAAAAABCAAAAAAACAAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAD + tiles: AwAAAAADAwAAAAADAgAAAAAACwAAAAADCwAAAAAACwAAAAACCwAAAAACCwAAAAADCwAAAAADCwAAAAAACwAAAAABAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAACwAAAAABCwAAAAAACwAAAAAACwAAAAACCwAAAAACCwAAAAAACwAAAAABCwAAAAADAgAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAAwAAAAAAAwAAAAABAgAAAAAACwAAAAADCwAAAAACCwAAAAADCwAAAAAACwAAAAABCwAAAAAACwAAAAACCwAAAAACAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAACwAAAAADCwAAAAADCwAAAAAACwAAAAABCwAAAAAACwAAAAABCwAAAAACCwAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAgAAAAAACAAAAAADCAAAAAABCAAAAAADCAAAAAABCAAAAAAACAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAABQAAAAACAwAAAAADAwAAAAADAgAAAAAACAAAAAAACAAAAAACDgAAAAADDgAAAAADDgAAAAADDgAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAABQAAAAAAAwAAAAABAwAAAAACAgAAAAAACAAAAAABCAAAAAADDgAAAAACCAAAAAABCAAAAAACCAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBQAAAAADAwAAAAADAwAAAAACCAAAAAACCAAAAAADCAAAAAADDgAAAAACCAAAAAABCgAAAAACCAAAAAABCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABAgAAAAAACAAAAAADCAAAAAADDgAAAAABCAAAAAAACAAAAAADCAAAAAADCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAACAAAAAAACAAAAAACDgAAAAAADgAAAAAADgAAAAABDgAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADFAAAAAAAFAAAAAAAAgAAAAAACAAAAAADCAAAAAADCAAAAAAACAAAAAABCAAAAAACCAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAAA version: 6 8,6: ind: 8,6 - tiles: AwAAAAADAwAAAAAAFAAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAACFAAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACFAAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAACAAAAAADAwAAAAABAwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAACAAAAAAACAAAAAACAwAAAAABAwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAgAAAAAACAAAAAABCAAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAACAAAAAABCAAAAAACAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAgAAAAAACAAAAAADCAAAAAABAwAAAAADAwAAAAADAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAACAAAAAADCAAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAACAAAAAABAwAAAAADAwAAAAAAFAAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAACAAAAAACCAAAAAACAwAAAAACAwAAAAABFAAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADFAAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAACAAAAAACCAAAAAADAwAAAAAAAwAAAAACFAAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABFAAAAAAAAwAAAAABBQAAAAAAAwAAAAADBQAAAAACAwAAAAACAgAAAAAACAAAAAACCAAAAAACAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADBQAAAAACAwAAAAABBQAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAACAwAAAAAAFAAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAADFAAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABFAAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAgAAAAAACAAAAAABAwAAAAADAwAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAACAAAAAAACAAAAAADAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAADAgAAAAAACAAAAAADCAAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAACAAAAAACCAAAAAADAwAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAACAAAAAAACAAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAACAAAAAABCAAAAAABAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAACAAAAAAAAwAAAAADAwAAAAADFAAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAABAwAAAAACAwAAAAAAFAAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAADFAAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAgAAAAAACAAAAAABCAAAAAAAAwAAAAABAwAAAAAAFAAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAABFAAAAAAAAwAAAAADBQAAAAADAwAAAAAABQAAAAACAwAAAAACAgAAAAAACAAAAAACCAAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAABQAAAAACAwAAAAAABQAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAA version: 6 8,7: ind: 8,7 - tiles: AwAAAAAAAwAAAAACCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACBQAAAAACAwAAAAABBQAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAwAAAAADAwAAAAABFAAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAADAwAAAAABFAAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAADFAAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAACgAAAAADCAAAAAAACAAAAAAACAAAAAACCgAAAAABAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBQAAAAADAwAAAAADAgAAAAAACgAAAAADCAAAAAAACAAAAAAACAAAAAABCgAAAAABAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBQAAAAACAwAAAAADAgAAAAAACgAAAAACCAAAAAAACAAAAAADCAAAAAABCgAAAAADAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBQAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAwAAAAADAwAAAAADAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBQAAAAADAwAAAAAAAwAAAAAAAwAAAAAABQAAAAAAAwAAAAACBQAAAAACAwAAAAABBQAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAACAwAAAAADAgAAAAAAAwAAAAAABQAAAAADAwAAAAADBQAAAAABAwAAAAABBQAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAA + tiles: AwAAAAABAwAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACBQAAAAACAwAAAAAABQAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAADFAAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAACFAAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAFAAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAACgAAAAADCAAAAAABCAAAAAACCAAAAAAACgAAAAACAgAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBQAAAAACAwAAAAADAgAAAAAACgAAAAABCAAAAAADCAAAAAABCAAAAAAACgAAAAADAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABQAAAAABAwAAAAACAgAAAAAACgAAAAAACAAAAAACCAAAAAACCAAAAAABCgAAAAADAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBQAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBQAAAAAAAwAAAAABAwAAAAAAAwAAAAABBQAAAAACAwAAAAABBQAAAAAAAwAAAAAABQAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABQAAAAADAwAAAAADAgAAAAAAAwAAAAAABQAAAAACAwAAAAABBQAAAAACAwAAAAADBQAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAC version: 6 8,8: ind: 8,8 - tiles: BQAAAAABAwAAAAADAgAAAAAAAwAAAAAABQAAAAABAwAAAAACBQAAAAACAwAAAAADBQAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABBQAAAAAABQAAAAADBQAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAADBQAAAAABBQAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACQAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAABBQAAAAAAAwAAAAAABQAAAAAABQAAAAADAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAAABQAAAAADAwAAAAABBQAAAAACBQAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADBQAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAABAwAAAAACBQAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAABQAAAAABAwAAAAAABQAAAAABBQAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAADAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAABBwAAAAAABwAAAAABBwAAAAACBwAAAAADAwAAAAAAAgAAAAAA + tiles: BQAAAAABAwAAAAADAgAAAAAAAwAAAAAABQAAAAADAwAAAAACBQAAAAAAAwAAAAACBQAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAABBQAAAAACBQAAAAADBQAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAABAwAAAAAABQAAAAADBQAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACQAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAACBQAAAAACAwAAAAAABQAAAAACBQAAAAACAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABAAAAAAABAAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAADBQAAAAAAAwAAAAABBQAAAAACBQAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADBQAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACBQAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAABQAAAAADAwAAAAABBQAAAAAABQAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAACBwAAAAACBwAAAAADBwAAAAADBwAAAAAAAwAAAAADAgAAAAAA version: 6 8,9: ind: 8,9 - tiles: CAAAAAADAgAAAAAACAAAAAACCAAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAAABwAAAAAABwAAAAAABwAAAAABBwAAAAADBwAAAAABAwAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAABBwAAAAABBwAAAAACBwAAAAAABwAAAAACBwAAAAABAgAAAAAACAAAAAADAgAAAAAACAAAAAADCAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAACCAAAAAADAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAACCAAAAAAACAAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAAACAAAAAABCAAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAABCAAAAAAACAAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: CAAAAAACAgAAAAAACAAAAAADCAAAAAABCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAADBwAAAAAABwAAAAADBwAAAAAABwAAAAACBwAAAAADAwAAAAACCAAAAAACCAAAAAADCAAAAAADCAAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAABBwAAAAACBwAAAAADBwAAAAABBwAAAAAABwAAAAABAgAAAAAACAAAAAACAgAAAAAACAAAAAACCAAAAAABCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAABCAAAAAADCAAAAAABAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAABCAAAAAACCAAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAAACAAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAADCAAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 9,2: ind: 9,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAPwAAAAAAAgAAAAAAQAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 9,3: ind: 9,3 - tiles: AwAAAAADAwAAAAABAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAABQAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAABQAAAAACAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAABAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAACAAAAAACCAAAAAADCAAAAAACCAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAAACAAAAAABCAAAAAADCAAAAAADCAAAAAADCAAAAAACCAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAACAAAAAAACAAAAAABCAAAAAADCAAAAAAACAAAAAACCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAADCAAAAAAACAAAAAABCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: AwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAABBQAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAACBQAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAABAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAgAAAAAACAAAAAAACAAAAAADCAAAAAADCAAAAAABCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAAACAAAAAADCAAAAAAACAAAAAABCAAAAAAACAAAAAACCAAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAACAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAACAAAAAADCAAAAAABCAAAAAADCAAAAAACCAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAgAAAAAACAAAAAAACAAAAAAACAAAAAACCAAAAAAACAAAAAADCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAA version: 6 9,4: ind: 9,4 - tiles: CAAAAAADCAAAAAACAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAADCAAAAAAACAAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAACAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAACAwAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAADAwAAAAACAgAAAAAACAAAAAAACAAAAAABCAAAAAABCAAAAAACAgAAAAAAAgAAAAAABwAAAAABBwAAAAACBwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAACAgAAAAAACAAAAAABCAAAAAAACAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAACAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAABCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAAB + tiles: CAAAAAACCAAAAAADAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAADCAAAAAACCAAAAAABCAAAAAADCAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAABAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAADCAAAAAADAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABBwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAACAAAAAACCAAAAAABCAAAAAABCAAAAAACAgAAAAAAAgAAAAAABwAAAAACBwAAAAABBwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAACAAAAAACCAAAAAADCAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAACAgAAAAAACAAAAAABCAAAAAABCAAAAAACCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAACAAAAAAACAAAAAADCAAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAACAAAAAACCAAAAAAACAAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAABwAAAAAABwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADBwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAABwAAAAACBwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAAB version: 6 9,5: ind: 9,5 - tiles: HQAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAACHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA + tiles: HQAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAACAwAAAAACHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAADAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAACAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAA version: 6 9,6: ind: 9,6 - tiles: AwAAAAABAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAABFAAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAwAAAAACFAAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAwAAAAADFAAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAACAAAAAABCAAAAAABAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAACAAAAAAACAAAAAADAgAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAAAAgAAAAAACAAAAAACCAAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAADAgAAAAAACAAAAAACCAAAAAABAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAgAAAAAACAAAAAADCAAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAACCAAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAACAwAAAAACCAAAAAABCAAAAAACCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAABCAAAAAACCAAAAAADCAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAAACAAAAAADCAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAABAgAAAAAAAgAAAAAA + tiles: AwAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAwAAAAABFAAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAAAFAAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACFAAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAACAAAAAAACAAAAAADAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAwAAAAABAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAACAwAAAAABAgAAAAAACAAAAAACCAAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAADAwAAAAACAgAAAAAACAAAAAAACAAAAAACAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAwAAAAACAgAAAAAACAAAAAABCAAAAAADAgAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAACAAAAAABCAAAAAACAgAAAAAAAwAAAAADAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAACCAAAAAABCAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAABCAAAAAADCAAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAACAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAABAwAAAAACCAAAAAAACAAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAADAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACAwAAAAACCAAAAAADCAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAACAwAAAAAAAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAA version: 6 9,7: ind: 9,7 - tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAADAwAAAAADAwAAAAABAwAAAAACAwAAAAABAwAAAAACAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAADAwAAAAACAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAAgAAAAAABwAAAAABBwAAAAAABwAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAwAAAAADAwAAAAADBwAAAAAABwAAAAAABwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAwAAAAABAwAAAAACBwAAAAABBwAAAAAABwAAAAACAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAABBwAAAAABBwAAAAABBwAAAAACAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADBwAAAAAABwAAAAAABwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAABBwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAAABwAAAAACBwAAAAAABwAAAAABAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAABAwAAAAAC + tiles: AgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAACAwAAAAAAAwAAAAAAAwAAAAADAwAAAAACAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAAAAwAAAAACAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAAgAAAAAABwAAAAAABwAAAAADBwAAAAABAgAAAAAAAwAAAAADAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAwAAAAAAAwAAAAABBwAAAAACBwAAAAACBwAAAAACAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABBwAAAAAABwAAAAADBwAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAACAwAAAAAABwAAAAABBwAAAAAABwAAAAAAAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADBwAAAAAABwAAAAACBwAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAgAAAAAAAwAAAAABAwAAAAADAwAAAAACBwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAADBwAAAAABBwAAAAAABwAAAAACAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAACAgAAAAAAAwAAAAAAAwAAAAACAwAAAAAB version: 6 9,8: ind: 9,8 - tiles: BwAAAAAABwAAAAADBwAAAAABAgAAAAAAAwAAAAACAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAADAgAAAAAAAwAAAAADAwAAAAADAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAwAAAAACAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAABwAAAAADBwAAAAACAgAAAAAABwAAAAADBwAAAAAAAgAAAAAAHQAAAAAAHQAAAAAAAwAAAAACAwAAAAABAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAABwAAAAAABwAAAAADAgAAAAAABwAAAAABBwAAAAACAgAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAgAAAAAABwAAAAACBwAAAAABAgAAAAAABwAAAAADBwAAAAABAgAAAAAAHQAAAAAAHQAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAABwAAAAADAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAwAAAAABAwAAAAACAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAwAAAAABBwAAAAADBwAAAAADBwAAAAAABwAAAAAABwAAAAACBwAAAAACBwAAAAABBwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAAAAwAAAAAAAwAAAAABAwAAAAABBwAAAAAABwAAAAACBwAAAAACBwAAAAACBwAAAAACBwAAAAACBwAAAAACBwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAADAwAAAAABAwAAAAACBwAAAAABBwAAAAADBwAAAAABBwAAAAADBwAAAAABBwAAAAACBwAAAAAABwAAAAABAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAABwAAAAABAgAAAAAAAgAAAAAABwAAAAACAgAAAAAAAgAAAAAABwAAAAACFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAAAAgAAAAAABwAAAAAABwAAAAADAgAAAAAABwAAAAAABwAAAAAAAgAAAAAABwAAAAACBwAAAAABAwAAAAABAwAAAAACAwAAAAACAgAAAAAACAAAAAAACAAAAAADCAAAAAADAgAAAAAABwAAAAACBwAAAAAAAgAAAAAABwAAAAADBwAAAAAAAgAAAAAABwAAAAADBwAAAAABAwAAAAACAwAAAAABAwAAAAACAgAAAAAACAAAAAACCAAAAAAACAAAAAADAgAAAAAABwAAAAAABwAAAAABAgAAAAAABwAAAAAABwAAAAAAAgAAAAAABwAAAAAABwAAAAAA + tiles: BwAAAAABBwAAAAACBwAAAAADAgAAAAAAAwAAAAACAwAAAAACAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAADAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAACAwAAAAABAwAAAAAAAwAAAAABAwAAAAACAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAADAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAABwAAAAACBwAAAAAAAgAAAAAABwAAAAAABwAAAAACAgAAAAAAHQAAAAAAHQAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAABwAAAAADBwAAAAADAgAAAAAABwAAAAABBwAAAAADAgAAAAAAHQAAAAAAHQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAgAAAAAABwAAAAACBwAAAAACAgAAAAAABwAAAAAABwAAAAADAgAAAAAAHQAAAAAAHQAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAACAgAAAAAABwAAAAACAgAAAAAAAgAAAAAABwAAAAAAAgAAAAAAAgAAAAAAHQAAAAAAAgAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAACAwAAAAADAwAAAAAABwAAAAADBwAAAAADBwAAAAABBwAAAAAABwAAAAAABwAAAAAABwAAAAADBwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAAAAwAAAAAAAwAAAAACBwAAAAADBwAAAAACBwAAAAADBwAAAAADBwAAAAADBwAAAAACBwAAAAACBwAAAAACAwAAAAADAwAAAAACAwAAAAABAwAAAAABAwAAAAADAwAAAAADAwAAAAADAwAAAAADBwAAAAACBwAAAAADBwAAAAADBwAAAAAABwAAAAADBwAAAAAABwAAAAADBwAAAAADAwAAAAADAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAACAAAAAADAgAAAAAAAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAABwAAAAADAgAAAAAAAgAAAAAABwAAAAADFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAACAAAAAABCAAAAAAACAAAAAADAgAAAAAABwAAAAABBwAAAAACAgAAAAAABwAAAAAABwAAAAADAgAAAAAABwAAAAADBwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAACAAAAAABCAAAAAADCAAAAAADAgAAAAAABwAAAAACBwAAAAADAgAAAAAABwAAAAACBwAAAAADAgAAAAAABwAAAAAABwAAAAAAAwAAAAACAwAAAAADAwAAAAACAgAAAAAACAAAAAADCAAAAAAACAAAAAACAgAAAAAABwAAAAACBwAAAAACAgAAAAAABwAAAAACBwAAAAACAgAAAAAABwAAAAACBwAAAAAC version: 6 9,9: ind: 9,9 - tiles: AwAAAAABAwAAAAADAwAAAAAAAgAAAAAAAgAAAAAACAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAwAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAwAAAAADAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAABAwAAAAADAwAAAAACAwAAAAABAwAAAAADAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAACAwAAAAACAwAAAAACAgAAAAAAAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAwAAAAACAwAAAAADAwAAAAADAgAAAAAAAgAAAAAAAwAAAAADAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAABAgAAAAAAAwAAAAAAAwAAAAACAwAAAAACAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAAAAAAAAAwAAAAAAAwAAAAABAwAAAAAAAwAAAAAAAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAABAwAAAAACAgAAAAAAAwAAAAADAwAAAAADAwAAAAABAgAAAAAAAQAAAAAAAwAAAAACAwAAAAADAwAAAAADAwAAAAAAAwAAAAADAwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AwAAAAAAAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAACAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAAAAwAAAAACAwAAAAABAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAwAAAAAAAwAAAAABAwAAAAADAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAwAAAAAAAwAAAAACAwAAAAABAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAABAwAAAAACAgAAAAAAAwAAAAACAwAAAAAAAwAAAAABAwAAAAABAwAAAAADAwAAAAAAAwAAAAACAgAAAAAAAgAAAAAAAwAAAAACAwAAAAABAgAAAAAAAwAAAAABAwAAAAAAAwAAAAACAgAAAAAAAwAAAAADAwAAAAABAwAAAAAAAgAAAAAAAwAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAwAAAAABAwAAAAADAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAABAwAAAAABAwAAAAADAgAAAAAAAwAAAAACAwAAAAADAwAAAAAAAgAAAAAAAAAAAAAAAwAAAAADAwAAAAAAAwAAAAACAwAAAAABAwAAAAAAAwAAAAAAAgAAAAAAAwAAAAAAAwAAAAADAwAAAAAAAgAAAAAAAwAAAAABAwAAAAAAAwAAAAABAgAAAAAAAQAAAAAAAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAABAwAAAAAAAgAAAAAAAwAAAAACAwAAAAADAwAAAAABAgAAAAAAAwAAAAAAAwAAAAABAwAAAAABAgAAAAAAAAAAAAAAAgAAAAAAAwAAAAADAwAAAAADAwAAAAADAgAAAAAAAwAAAAADAgAAAAAAAwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 0,6: ind: 0,6 @@ -666,8 +666,6 @@ entities: 2907: 52,86 2996: 40,110 2998: 38,110 - 4132: 51,82 - 4133: 52,82 4134: 47,82 4136: 48,82 8325: 59,76 @@ -735,6 +733,8 @@ entities: 14565: 93,97 14566: 98,90 14567: 100,90 + 14835: 50,82 + 14836: 51,82 - node: zIndex: 1 color: '#FFFFFFFF' @@ -875,8 +875,6 @@ entities: 14777: 37,82 14778: 39,82 14779: 38,86 - 14780: 49,80 - 14781: 50,80 14782: 44,48 14783: 44,50 14817: 94,24 @@ -1235,10 +1233,7 @@ entities: 3591: 134,46 4037: 48,81 4039: 48,83 - 4043: 51,81 - 4044: 52,81 4047: 51,83 - 4048: 52,83 4049: 47,81 4051: 47,83 10272: 132,127 @@ -1278,6 +1273,9 @@ entities: 14568: 99,90 14569: 61,90 14776: 38,82 + 14837: 50,83 + 14838: 50,81 + 14839: 51,81 - node: zIndex: 1 color: '#FFFFFFFF' @@ -3735,10 +3733,8 @@ entities: 11505: 56,77 11507: 56,71 11508: 55,68 - 11509: 50,80 11510: 47,82 11511: 50,83 - 11512: 51,82 11513: 52,89 11514: 53,91 11515: 51,91 @@ -4091,6 +4087,11 @@ entities: 13840: 53,99 13841: 47,102 14639: 30,103 + 14840: 48,80 + 14842: 50,84 + 14843: 53,84 + 14844: 51,82 + 14845: 52,80 - node: cleanable: True color: '#FFFFFFFF' @@ -4352,6 +4353,7 @@ entities: 13833: 48,103 13834: 52,103 13835: 51,99 + 14841: 53,81 - node: cleanable: True color: '#C6FF91FF' @@ -5935,8 +5937,6 @@ entities: 2715: 48,86 2732: 47,80 2733: 48,80 - 2734: 49,80 - 2735: 50,80 2736: 51,80 2737: 52,80 2773: 38,82 @@ -5946,6 +5946,8 @@ entities: 2785: 39,86 3020: 39,104 3045: 123,67 + 14833: 49,80 + 14834: 50,80 - node: zIndex: 1 color: '#D381C996' @@ -14312,7 +14314,7 @@ entities: 1: 2036 16,31: 0: 7 - 5: 60928 + 2: 60928 13,33: 1: 30583 13,34: @@ -14329,32 +14331,32 @@ entities: 1: 61437 15,34: 0: 4371 - 2: 52224 - 3: 8 + 3: 52224 + 4: 8 15,35: 0: 8977 - 2: 12 - 3: 34816 + 3: 12 + 4: 34816 15,33: 0: 8742 - 3: 34816 + 4: 34816 15,36: 0: 17954 - 3: 8 + 4: 8 16,32: - 4: 30464 - 5: 14 + 5: 30464 + 2: 14 16,33: - 4: 7 - 3: 13056 + 5: 7 + 4: 13056 0: 34816 16,34: - 3: 3 - 2: 4352 + 4: 3 + 3: 4352 0: 52360 16,35: - 2: 1 - 3: 13056 + 3: 1 + 4: 13056 0: 34956 13,36: 1: 32624 @@ -14373,13 +14375,13 @@ entities: 1: 8739 0: 2184 16,36: - 3: 30467 + 4: 30467 0: 8 16,37: - 3: 60935 + 4: 60935 16,38: 0: 3840 - 3: 14 + 4: 14 16,39: 1: 47295 17,2: @@ -14656,9 +14658,9 @@ entities: 1: 13107 0: 34944 20,32: - 3: 65504 + 4: 65504 20,33: - 3: 239 + 4: 239 1: 61440 20,34: 1: 65535 @@ -14973,7 +14975,7 @@ entities: 1: 49073 21,32: 1: 34952 - 3: 4352 + 4: 4352 0: 8736 22,32: 1: 48059 @@ -14994,7 +14996,7 @@ entities: 24,31: 1: 53503 21,33: - 3: 1 + 4: 1 1: 64136 0: 34 21,34: @@ -15330,59 +15332,59 @@ entities: 24,35: 1: 1638 25,32: - 3: 4592 + 4: 4592 0: 58880 25,33: - 3: 4369 + 4: 4369 0: 25828 25,34: - 3: 6007 + 4: 6007 0: 24576 25,35: - 3: 4369 + 4: 4369 0: 58596 25,36: - 3: 241 + 4: 241 0: 6 1: 28672 26,32: - 3: 35056 + 4: 35056 0: 29952 26,33: 0: 4593 26,35: 0: 29169 - 3: 32768 + 4: 32768 26,34: 0: 4465 - 3: 2184 + 4: 2184 26,36: 0: 5 - 3: 248 + 4: 248 1: 61440 27,32: - 3: 13296 + 4: 13296 0: 50176 27,33: 0: 4592 27,34: - 3: 819 + 4: 819 0: 4288 27,35: 0: 49393 - 3: 12288 + 4: 12288 27,36: - 3: 243 + 4: 243 0: 4 1: 61440 28,32: - 3: 240 + 4: 240 0: 64768 28,33: 0: 54773 28,34: 0: 53521 - 3: 3276 + 4: 3276 28,35: 0: 62965 24,37: @@ -15400,7 +15402,7 @@ entities: 27,38: 1: 65423 28,36: - 3: 240 + 4: 240 1: 56320 0: 13 28,37: @@ -15651,7 +15653,7 @@ entities: 1: 28927 29,32: 1: 1092 - 3: 4368 + 4: 4368 30,29: 1: 65527 30,30: @@ -15677,16 +15679,16 @@ entities: 32,31: 1: 49075 29,33: - 3: 4369 + 4: 4369 1: 52428 29,34: - 3: 4369 + 4: 4369 1: 52428 29,35: - 3: 4369 + 4: 4369 1: 3276 29,36: - 3: 17 + 4: 17 1: 25668 30,34: 1: 61423 @@ -16164,6 +16166,21 @@ entities: - 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: @@ -16209,21 +16226,6 @@ entities: - 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: 235 moles: @@ -20632,7 +20634,8 @@ entities: - type: DeviceLinkSource linkedPorts: 192: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 192 components: - type: Transform @@ -20643,7 +20646,8 @@ entities: - type: DeviceLinkSource linkedPorts: 179: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalEngineeringLocked entities: - uid: 15025 @@ -20656,7 +20660,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15394: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 15026 components: - type: Transform @@ -20667,7 +20672,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15394: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 15027 components: - type: Transform @@ -20678,7 +20684,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15393: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 15028 components: - type: Transform @@ -20689,7 +20696,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15393: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 27046 components: - type: Transform @@ -20701,7 +20709,8 @@ entities: - type: DeviceLinkSource linkedPorts: 27316: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 27316 components: - type: Transform @@ -20713,7 +20722,8 @@ entities: - type: DeviceLinkSource linkedPorts: 27046: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 31149 components: - type: Transform @@ -20724,7 +20734,8 @@ entities: - type: DeviceLinkSource linkedPorts: 160: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 103 @@ -20829,7 +20840,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19497: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 19305 components: - type: Transform @@ -20850,7 +20862,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19497: - - DoorStatus: InputA + - - DoorStatus + - InputA - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 160 @@ -20863,7 +20876,8 @@ entities: - type: DeviceLinkSource linkedPorts: 31149: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 30873 components: - type: Transform @@ -20875,7 +20889,8 @@ entities: - type: DeviceLinkSource linkedPorts: 30874: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 30874 components: - type: Transform @@ -20887,7 +20902,8 @@ entities: - type: DeviceLinkSource linkedPorts: 30873: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 31756 components: - type: Transform @@ -20899,7 +20915,8 @@ entities: - type: DeviceLinkSource linkedPorts: 31759: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 31759 components: - type: Transform @@ -20911,7 +20928,8 @@ entities: - type: DeviceLinkSource linkedPorts: 31756: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 3 @@ -20924,7 +20942,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 147 components: - type: Transform @@ -20936,7 +20955,8 @@ entities: - type: DeviceLinkSource linkedPorts: 207: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 908 components: - type: Transform @@ -20948,7 +20968,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1075 components: - type: Transform @@ -20960,7 +20981,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5486: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23361 components: - type: Transform @@ -20970,7 +20992,8 @@ entities: - type: DeviceLinkSource linkedPorts: 35643: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 28729 components: - type: Transform @@ -20982,7 +21005,8 @@ entities: - type: DeviceLinkSource linkedPorts: 131: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 29210 components: - type: Transform @@ -20994,7 +21018,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29209: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 30453 components: - type: Transform @@ -21004,7 +21029,8 @@ entities: - type: DeviceLinkSource linkedPorts: 35643: - - DoorStatus: InputB + - - DoorStatus + - InputB - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 1811 @@ -21137,7 +21163,8 @@ entities: - type: DeviceLinkSource linkedPorts: 908: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 131 components: - type: Transform @@ -21149,7 +21176,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28729: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 207 components: - type: Transform @@ -21161,7 +21189,8 @@ entities: - type: DeviceLinkSource linkedPorts: 147: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5486 components: - type: Transform @@ -21173,7 +21202,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1075: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 29209 components: - type: Transform @@ -21185,7 +21215,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29210: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockFreezer entities: - uid: 34516 @@ -23495,7 +23526,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22926 components: - type: MetaData @@ -27682,7 +27714,7 @@ entities: parent: 1 - proto: BannerSecurity entities: - - uid: 23131 + - uid: 2489 components: - type: Transform pos: 143.5,58.5 @@ -29414,8 +29446,7 @@ entities: - uid: 23138 components: - type: Transform - rot: -18.84955592153876 rad - pos: 142.52057,52.14776 + pos: 142.5432,51.54286 parent: 1 - proto: BoxInflatable entities: @@ -29510,7 +29541,7 @@ entities: - uid: 33873 components: - type: Transform - pos: 59.343575,57.763638 + pos: 59.350124,57.59677 parent: 1 - proto: BriefcaseBrownFilled entities: @@ -29535,6 +29566,13 @@ entities: rot: 1.5707963267948966 rad pos: 125.5,72.5 parent: 1 + - type: DeviceLinkSource + linkedPorts: + 22833: + - - Start + - Close + - - Timer + - Open - uid: 22838 components: - type: MetaData @@ -29543,6 +29581,13 @@ entities: rot: 1.5707963267948966 rad pos: 125.5,69.5 parent: 1 + - type: DeviceLinkSource + linkedPorts: + 22834: + - - Start + - Close + - - Timer + - Open - uid: 22839 components: - type: MetaData @@ -29551,6 +29596,13 @@ entities: rot: 1.5707963267948966 rad pos: 125.5,66.5 parent: 1 + - type: DeviceLinkSource + linkedPorts: + 22835: + - - Start + - Close + - - Timer + - Open - uid: 22840 components: - type: MetaData @@ -29559,6 +29611,13 @@ entities: rot: 1.5707963267948966 rad pos: 125.5,63.5 parent: 1 + - type: DeviceLinkSource + linkedPorts: + 22836: + - - Start + - Close + - - Timer + - Open - proto: BrokenBottle entities: - uid: 33540 @@ -98633,6 +98692,21 @@ entities: rot: -1.5707963267948966 rad pos: 132.5,86.5 parent: 1 + - uid: 37738 + components: + - type: Transform + pos: 104.5,169.5 + parent: 1 + - uid: 37739 + components: + - type: Transform + pos: 103.5,169.5 + parent: 1 + - uid: 37740 + components: + - type: Transform + pos: 102.5,169.5 + parent: 1 - proto: Chair entities: - uid: 107 @@ -98723,6 +98797,12 @@ entities: - type: Transform pos: 97.5,45.5 parent: 1 + - uid: 4199 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 144.5,55.5 + parent: 1 - uid: 4373 components: - type: Transform @@ -98871,6 +98951,12 @@ entities: - type: Transform pos: 108.5,72.5 parent: 1 + - uid: 10317 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 143.5,55.5 + parent: 1 - uid: 10336 components: - type: Transform @@ -99613,24 +99699,6 @@ entities: rot: 3.141592653589793 rad pos: 131.5,54.5 parent: 1 - - uid: 23139 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 144.5,55.5 - parent: 1 - - uid: 23140 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 143.5,55.5 - parent: 1 - - uid: 23141 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 142.5,55.5 - parent: 1 - uid: 23355 components: - type: Transform @@ -101311,6 +101379,12 @@ entities: rot: 1.5707963267948966 rad pos: 49.5,92.5 parent: 1 + - uid: 20450 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 52.5,82.5 + parent: 1 - uid: 20476 components: - type: Transform @@ -101659,6 +101733,12 @@ entities: rot: 3.141592653589793 rad pos: 117.5,51.5 parent: 1 + - uid: 37730 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 66.5,82.5 + parent: 1 - proto: ChairPilotSeat entities: - uid: 29520 @@ -102023,6 +102103,11 @@ entities: - type: Transform pos: 167.68417,134.58716 parent: 1 + - uid: 37736 + components: + - type: Transform + pos: 122.56481,63.605835 + parent: 1 - proto: CheapRollerBed entities: - uid: 28659 @@ -102342,6 +102427,11 @@ entities: - type: Transform pos: 26.243996,99.750244 parent: 1 + - uid: 23131 + components: + - type: Transform + pos: 122.64815,63.40792 + parent: 1 - uid: 23777 components: - type: Transform @@ -103066,11 +103156,6 @@ entities: - type: Transform pos: 38.5,82.5 parent: 1 - - uid: 10318 - components: - - type: Transform - pos: 49.5,80.5 - parent: 1 - uid: 20853 components: - type: Transform @@ -103081,11 +103166,6 @@ entities: - type: Transform pos: 30.5,103.5 parent: 1 - - uid: 20969 - components: - - type: Transform - pos: 50.5,80.5 - parent: 1 - proto: ClosetL3SecurityFilled entities: - uid: 22689 @@ -103620,11 +103700,16 @@ entities: - type: Transform pos: 39.5,82.5 parent: 1 - - uid: 4199 + - uid: 13672 components: - type: Transform pos: 91.5,121.5 parent: 1 + - uid: 13711 + components: + - type: Transform + pos: 92.5,121.5 + parent: 1 - uid: 14255 components: - type: Transform @@ -103650,11 +103735,6 @@ entities: - type: Transform pos: 112.5,147.5 parent: 1 - - uid: 16592 - components: - - type: Transform - pos: 92.5,121.5 - parent: 1 - uid: 18909 components: - type: Transform @@ -104582,12 +104662,6 @@ entities: rot: 3.141592653589793 rad pos: 131.5,144.5 parent: 1 - - uid: 28127 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 96.5,121.5 - parent: 1 - uid: 32984 components: - type: Transform @@ -104605,7 +104679,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19682: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - uid: 19687 components: - type: Transform @@ -104615,7 +104690,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19683: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 3199 @@ -104779,6 +104855,45 @@ entities: rot: -1.5707963267948966 rad pos: 158.5,104.5 parent: 1 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 16162 + components: + - type: Transform + pos: 100.5,125.5 + parent: 1 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 26639 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 65.5,82.5 + parent: 1 +- proto: ComputerCargoOrdersScience + entities: + - uid: 26641 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,82.5 + parent: 1 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 23846 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 142.5,52.5 + parent: 1 +- proto: ComputerCargoOrdersService + entities: + - uid: 22728 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 111.5,96.5 + parent: 1 - proto: ComputerComms entities: - uid: 9635 @@ -104861,18 +104976,18 @@ entities: rot: -1.5707963267948966 rad pos: 144.5,73.5 parent: 1 - - uid: 22871 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 142.5,54.5 - parent: 1 - uid: 22872 components: - type: Transform rot: 3.141592653589793 rad pos: 128.5,68.5 parent: 1 + - uid: 26655 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 141.5,51.5 + parent: 1 - uid: 37452 components: - type: Transform @@ -104897,6 +105012,13 @@ entities: rot: -1.5707963267948966 rad pos: 90.5,86.5 parent: 1 +- proto: ComputerFundingAllocation + entities: + - uid: 22731 + components: + - type: Transform + pos: 58.5,57.5 + parent: 1 - proto: ComputerId entities: - uid: 9629 @@ -104980,17 +105102,18 @@ entities: - type: Transform pos: 116.5,125.5 parent: 1 - - uid: 16162 - components: - - type: Transform - pos: 99.5,125.5 - parent: 1 - uid: 16165 components: - type: Transform rot: 3.141592653589793 rad pos: 111.5,147.5 parent: 1 + - uid: 20437 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 96.5,121.5 + parent: 1 - uid: 31757 components: - type: Transform @@ -105134,11 +105257,6 @@ entities: rot: 3.141592653589793 rad pos: 129.5,131.5 parent: 1 - - uid: 16163 - components: - - type: Transform - pos: 100.5,125.5 - parent: 1 - uid: 31154 components: - type: Transform @@ -105730,16 +105848,16 @@ entities: parent: 1 - proto: CrateArtifactContainer entities: - - uid: 10760 - components: - - type: Transform - pos: 51.5,81.5 - parent: 1 - uid: 20490 components: - type: Transform pos: 48.5,82.5 parent: 1 + - uid: 23141 + components: + - type: Transform + pos: 50.5,81.5 + parent: 1 - proto: CrateCoffin entities: - uid: 27063 @@ -105875,6 +105993,41 @@ entities: - type: Transform pos: 155.5,93.5 parent: 1 +- proto: CrateLockBoxEngineering + entities: + - uid: 16592 + components: + - type: Transform + pos: 99.5,125.5 + parent: 1 +- proto: CrateLockBoxMedical + entities: + - uid: 37731 + components: + - type: Transform + pos: 89.5,85.5 + parent: 1 +- proto: CrateLockBoxScience + entities: + - uid: 20440 + components: + - type: Transform + pos: 50.5,82.5 + parent: 1 +- proto: CrateLockBoxSecurity + entities: + - uid: 37732 + components: + - type: Transform + pos: 152.5,55.5 + parent: 1 +- proto: CrateLockBoxService + entities: + - uid: 32257 + components: + - type: Transform + pos: 110.5,90.5 + parent: 1 - proto: CrateMedicalSurgery entities: - uid: 36639 @@ -119823,7 +119976,7 @@ entities: desc: It's just some soda water... you think that it is, at least. name: dr. breen's private reserve - type: Transform - pos: 122.5,63.5 + pos: 122.418976,63.53292 parent: 1 - proto: DrinkSyndicatebomb entities: @@ -121721,11 +121874,6 @@ entities: - type: Transform pos: 140.5,106.5 parent: 1 - - uid: 10317 - components: - - type: Transform - pos: 53.5,80.5 - parent: 1 - uid: 13616 components: - type: Transform @@ -121748,10 +121896,10 @@ entities: - type: Transform pos: 53.5,55.5 parent: 1 - - uid: 21004 + - uid: 37741 components: - type: Transform - pos: 46.5,91.5 + pos: 49.5,88.5 parent: 1 - proto: FireAlarm entities: @@ -187914,6 +188062,11 @@ entities: - type: Physics canCollide: True - type: ActionsContainer + - uid: 20969 + components: + - type: Transform + pos: 53.5,81.5 + parent: 1 - uid: 23071 components: - type: Transform @@ -188229,7 +188382,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23360: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonMedical entities: - uid: 17751 @@ -188242,9 +188396,11 @@ entities: - type: DeviceLinkSource linkedPorts: 17696: - - Pressed: Toggle + - - Pressed + - Toggle 17697: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockerAtmosphericsFilled entities: - uid: 15991 @@ -188802,9 +188958,11 @@ entities: - type: DeviceLinkSource linkedPorts: 15025: - - Output: DoorBolt + - - Output + - DoorBolt 15026: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -188820,9 +188978,11 @@ entities: - type: DeviceLinkSource linkedPorts: 15027: - - Output: DoorBolt + - - Output + - DoorBolt 15028: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -188849,9 +189009,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19494: - - Output: DoorBolt + - - Output + - DoorBolt 6971: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -188938,11 +189100,6 @@ entities: rot: -1.5707963267948966 rad pos: 46.5,110.5 parent: 1 - - uid: 20456 - components: - - type: Transform - pos: 53.5,81.5 - parent: 1 - uid: 28152 components: - type: Transform @@ -188976,6 +189133,13 @@ entities: - type: Transform pos: 113.5,42.5 parent: 1 +- proto: MachineMaterialSilo + entities: + - uid: 21004 + components: + - type: Transform + pos: 46.5,91.5 + parent: 1 - proto: MagazinePistolSubMachineGunTopMounted entities: - uid: 28294 @@ -189533,15 +189697,14 @@ entities: - uid: 13656 components: - type: Transform - rot: -25.132741228718352 rad - pos: 58.557903,57.64333 + pos: 56.412624,52.536133 parent: 1 - proto: MaterialDurathread entities: - uid: 13655 components: - type: Transform - pos: 56.09103,52.62849 + pos: 60.620956,57.067383 parent: 1 - proto: MatterBinStockPart entities: @@ -190493,6 +190656,12 @@ entities: parent: 1 - proto: PaperBin10 entities: + - uid: 10318 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 52.5,80.5 + parent: 1 - uid: 19387 components: - type: Transform @@ -190739,11 +190908,6 @@ entities: parent: 1 - proto: Pen entities: - - uid: 13711 - components: - - type: Transform - pos: 56.62228,52.62849 - parent: 1 - uid: 13721 components: - type: Transform @@ -190929,7 +191093,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9257: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9257 components: - type: Transform @@ -190940,7 +191105,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3974: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9413 components: - type: Transform @@ -190952,7 +191118,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15703: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15703 components: - type: Transform @@ -190963,7 +191130,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9413: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: PlasticFlapsAirtightClear entities: - uid: 19301 @@ -191823,6 +191991,12 @@ entities: - type: Transform pos: 148.5,47.5 parent: 1 + - uid: 37737 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 135.5,112.5 + parent: 1 - proto: PosterLegitWorkForAFuture entities: - uid: 13682 @@ -192146,13 +192320,6 @@ entities: - type: Transform pos: 145.5,106.5 parent: 1 -- proto: PottedPlant23 - entities: - - uid: 26655 - components: - - type: Transform - pos: 111.5,96.5 - parent: 1 - proto: PottedPlant24 entities: - uid: 2633 @@ -192644,12 +192811,6 @@ entities: rot: 3.141592653589793 rad pos: 106.5,66.5 parent: 1 - - uid: 2489 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 99.5,75.5 - parent: 1 - uid: 2721 components: - type: Transform @@ -192692,12 +192853,6 @@ entities: rot: -1.5707963267948966 rad pos: 49.5,88.5 parent: 1 - - uid: 4342 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 113.5,75.5 - parent: 1 - uid: 4401 components: - type: Transform @@ -193749,6 +193904,11 @@ entities: - type: Transform pos: 98.5,88.5 parent: 1 + - uid: 22871 + components: + - type: Transform + pos: 106.5,99.5 + parent: 1 - uid: 22880 components: - type: Transform @@ -193925,6 +194085,18 @@ entities: rot: -1.5707963267948966 rad pos: 149.5,69.5 parent: 1 + - uid: 23139 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 99.5,73.5 + parent: 1 + - uid: 23140 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 113.5,73.5 + parent: 1 - uid: 23143 components: - type: Transform @@ -193948,12 +194120,6 @@ entities: rot: -1.5707963267948966 rad pos: 150.5,51.5 parent: 1 - - uid: 23846 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 108.5,96.5 - parent: 1 - uid: 24697 components: - type: Transform @@ -194018,12 +194184,6 @@ entities: rot: 1.5707963267948966 rad pos: 63.5,53.5 parent: 1 - - uid: 26473 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 103.5,102.5 - parent: 1 - uid: 26474 components: - type: Transform @@ -194081,18 +194241,6 @@ entities: rot: -1.5707963267948966 rad pos: 114.5,79.5 parent: 1 - - uid: 26500 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 98.5,84.5 - parent: 1 - - uid: 26501 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 114.5,84.5 - parent: 1 - uid: 26505 components: - type: Transform @@ -194760,6 +194908,18 @@ entities: rot: 1.5707963267948966 rad pos: 82.5,57.5 parent: 1 + - uid: 37734 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 104.5,102.5 + parent: 1 + - uid: 37735 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 112.5,96.5 + parent: 1 - proto: PoweredlightGreen entities: - uid: 18066 @@ -195835,6 +195995,12 @@ entities: - type: Transform pos: 135.5,48.5 parent: 1 + - uid: 23142 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 142.5,51.5 + parent: 1 - uid: 23144 components: - type: Transform @@ -196623,10 +196789,10 @@ entities: - type: Transform pos: 47.5,81.5 parent: 1 - - uid: 20440 + - uid: 22730 components: - type: Transform - pos: 51.5,82.5 + pos: 51.5,83.5 parent: 1 - proto: RandomBoard entities: @@ -202874,13 +203040,17 @@ entities: - type: DeviceLinkSource linkedPorts: 15032: - - Pressed: Toggle + - - Pressed + - Toggle 15031: - - Pressed: Toggle + - - Pressed + - Toggle 15030: - - Pressed: Toggle + - - Pressed + - Toggle 15029: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15981 components: - type: MetaData @@ -202892,15 +203062,20 @@ entities: - type: DeviceLinkSource linkedPorts: 4387: - - Pressed: Toggle + - - Pressed + - Toggle 15979: - - Pressed: Toggle + - - Pressed + - Toggle 15978: - - Pressed: Toggle + - - Pressed + - Toggle 15967: - - Pressed: Toggle + - - Pressed + - Toggle 15969: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 19536 components: - type: MetaData @@ -202912,13 +203087,17 @@ entities: - type: DeviceLinkSource linkedPorts: 19532: - - Pressed: Toggle + - - Pressed + - Toggle 19533: - - Pressed: Toggle + - - Pressed + - Toggle 19529: - - Pressed: Toggle + - - Pressed + - Toggle 19534: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 36775 components: - type: MetaData @@ -202930,17 +203109,23 @@ entities: - type: DeviceLinkSource linkedPorts: 3878: - - Pressed: Toggle + - - Pressed + - Toggle 3642: - - Pressed: Toggle + - - Pressed + - Toggle 15764: - - Pressed: Toggle + - - Pressed + - Toggle 1820: - - Pressed: Toggle + - - Pressed + - Toggle 3358: - - Pressed: Toggle + - - Pressed + - Toggle 30218: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 2684 @@ -202954,9 +203139,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19622: - - Pressed: Toggle + - - Pressed + - Toggle 37576: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2955 components: - type: MetaData @@ -202976,9 +203163,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4548: - - Pressed: Toggle + - - Pressed + - Toggle 8674: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8668 components: - type: MetaData @@ -202989,11 +203178,14 @@ entities: - type: DeviceLinkSource linkedPorts: 1418: - - Pressed: Toggle + - - Pressed + - Toggle 1509: - - Pressed: Toggle + - - Pressed + - Toggle 1510: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13829 components: - type: MetaData @@ -203005,17 +203197,23 @@ entities: - type: DeviceLinkSource linkedPorts: 2496: - - Pressed: Toggle + - - Pressed + - Toggle 37324: - - Pressed: Toggle + - - Pressed + - Toggle 37328: - - Pressed: Toggle + - - Pressed + - Toggle 37327: - - Pressed: Toggle + - - Pressed + - Toggle 37326: - - Pressed: Toggle + - - Pressed + - Toggle 37325: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14998 components: - type: MetaData @@ -203027,17 +203225,23 @@ entities: - type: DeviceLinkSource linkedPorts: 14092: - - Pressed: Toggle + - - Pressed + - Toggle 14093: - - Pressed: Toggle + - - Pressed + - Toggle 14094: - - Pressed: Toggle + - - Pressed + - Toggle 14097: - - Pressed: Toggle + - - Pressed + - Toggle 14096: - - Pressed: Toggle + - - Pressed + - Toggle 14095: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15035 components: - type: MetaData @@ -203049,17 +203253,23 @@ entities: - type: DeviceLinkSource linkedPorts: 14055: - - Pressed: Toggle + - - Pressed + - Toggle 14087: - - Pressed: Toggle + - - Pressed + - Toggle 14088: - - Pressed: Toggle + - - Pressed + - Toggle 14089: - - Pressed: Toggle + - - Pressed + - Toggle 14090: - - Pressed: Toggle + - - Pressed + - Toggle 14091: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15037 components: - type: MetaData @@ -203071,11 +203281,14 @@ entities: - type: DeviceLinkSource linkedPorts: 14100: - - Pressed: Toggle + - - Pressed + - Toggle 14099: - - Pressed: Toggle + - - Pressed + - Toggle 14098: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15038 components: - type: MetaData @@ -203087,11 +203300,14 @@ entities: - type: DeviceLinkSource linkedPorts: 14101: - - Pressed: Toggle + - - Pressed + - Toggle 14102: - - Pressed: Toggle + - - Pressed + - Toggle 37310: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 16002 components: - type: MetaData @@ -203103,13 +203319,17 @@ entities: - type: DeviceLinkSource linkedPorts: 9428: - - Pressed: Toggle + - - Pressed + - Toggle 17671: - - Pressed: Toggle + - - Pressed + - Toggle 3205: - - Pressed: Toggle + - - Pressed + - Toggle 846: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 19535 components: - type: MetaData @@ -203121,9 +203341,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19530: - - Pressed: Toggle + - - Pressed + - Toggle 19531: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 19676 components: - type: MetaData @@ -203134,13 +203356,17 @@ entities: - type: DeviceLinkSource linkedPorts: 19670: - - Pressed: Toggle + - - Pressed + - Toggle 19673: - - Pressed: Toggle + - - Pressed + - Toggle 19671: - - Pressed: Toggle + - - Pressed + - Toggle 19672: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 19677 components: - type: MetaData @@ -203152,13 +203378,17 @@ entities: - type: DeviceLinkSource linkedPorts: 19666: - - Pressed: Toggle + - - Pressed + - Toggle 19667: - - Pressed: Toggle + - - Pressed + - Toggle 19668: - - Pressed: Toggle + - - Pressed + - Toggle 19669: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 19902 components: - type: MetaData @@ -203170,15 +203400,20 @@ entities: - type: DeviceLinkSource linkedPorts: 37413: - - Pressed: Toggle + - - Pressed + - Toggle 37414: - - Pressed: Toggle + - - Pressed + - Toggle 37415: - - Pressed: Toggle + - - Pressed + - Toggle 37416: - - Pressed: Toggle + - - Pressed + - Toggle 37417: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 20904 components: - type: MetaData @@ -203190,11 +203425,14 @@ entities: - type: DeviceLinkSource linkedPorts: 20901: - - Pressed: Toggle + - - Pressed + - Toggle 20902: - - Pressed: Toggle + - - Pressed + - Toggle 20903: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 22948 components: - type: MetaData @@ -203205,9 +203443,11 @@ entities: - type: DeviceLinkSource linkedPorts: 22702: - - Pressed: Toggle + - - Pressed + - Toggle 22701: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23230 components: - type: MetaData @@ -203218,9 +203458,11 @@ entities: - type: DeviceLinkSource linkedPorts: 35988: - - Pressed: Toggle + - - Pressed + - Toggle 35992: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24763 components: - type: MetaData @@ -203232,11 +203474,14 @@ entities: - type: DeviceLinkSource linkedPorts: 2351: - - Pressed: Toggle + - - Pressed + - Toggle 24728: - - Pressed: Toggle + - - Pressed + - Toggle 24726: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24764 components: - type: MetaData @@ -203249,9 +203494,11 @@ entities: - type: DeviceLinkSource linkedPorts: 23281: - - Pressed: Toggle + - - Pressed + - Toggle 23279: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 27275 components: - type: MetaData @@ -203262,7 +203509,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23097: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 29060 components: - type: MetaData @@ -203273,9 +203521,11 @@ entities: - type: DeviceLinkSource linkedPorts: 13770: - - Pressed: Toggle + - - Pressed + - Toggle 4274: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 29091 components: - type: MetaData @@ -203287,13 +203537,17 @@ entities: - type: DeviceLinkSource linkedPorts: 29081: - - Pressed: Toggle + - - Pressed + - Toggle 29082: - - Pressed: Toggle + - - Pressed + - Toggle 27415: - - Pressed: Toggle + - - Pressed + - Toggle 29083: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 29591 components: - type: MetaData @@ -203305,9 +203559,11 @@ entities: - type: DeviceLinkSource linkedPorts: 29601: - - Pressed: Toggle + - - Pressed + - Toggle 29603: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 29752 components: - type: Transform @@ -203317,7 +203573,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29743: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 29753 components: - type: Transform @@ -203327,7 +203584,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29744: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 29754 components: - type: Transform @@ -203337,7 +203595,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29745: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 29756 components: - type: Transform @@ -203346,7 +203605,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29741: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 29757 components: - type: Transform @@ -203355,7 +203615,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29742: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 31970 components: - type: MetaData @@ -203367,9 +203628,11 @@ entities: - type: DeviceLinkSource linkedPorts: 17696: - - Pressed: Toggle + - - Pressed + - Toggle 17697: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 33808 components: - type: MetaData @@ -203380,7 +203643,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1420: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 33909 components: - type: MetaData @@ -203392,9 +203656,11 @@ entities: - type: DeviceLinkSource linkedPorts: 25486: - - Pressed: Toggle + - - Pressed + - Toggle 27753: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 34637 components: - type: Transform @@ -203404,7 +203670,8 @@ entities: - type: DeviceLinkSource linkedPorts: 34635: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 34937 components: - type: MetaData @@ -203416,7 +203683,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28156: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 34939 components: - type: MetaData @@ -203428,7 +203696,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28155: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 34992 components: - type: MetaData @@ -203440,7 +203709,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28154: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 34993 components: - type: MetaData @@ -203452,7 +203722,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28151: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 35585 components: - type: MetaData @@ -203464,13 +203735,17 @@ entities: - type: DeviceLinkSource linkedPorts: 30721: - - Pressed: Toggle + - - Pressed + - Toggle 29313: - - Pressed: Toggle + - - Pressed + - Toggle 25194: - - Pressed: Toggle + - - Pressed + - Toggle 546: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 36167 components: - type: MetaData @@ -203482,11 +203757,14 @@ entities: - type: DeviceLinkSource linkedPorts: 34039: - - Pressed: Toggle + - - Pressed + - Toggle 34040: - - Pressed: Toggle + - - Pressed + - Toggle 35198: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 36815 components: - type: MetaData @@ -203498,7 +203776,8 @@ entities: - type: DeviceLinkSource linkedPorts: 36824: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 36825 components: - type: Transform @@ -203508,9 +203787,11 @@ entities: - type: DeviceLinkSource linkedPorts: 36813: - - Pressed: Toggle + - - Pressed + - Toggle 36826: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 36835 components: - type: Transform @@ -203520,7 +203801,8 @@ entities: - type: DeviceLinkSource linkedPorts: 36834: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 36838 components: - type: MetaData @@ -203531,7 +203813,8 @@ entities: - type: DeviceLinkSource linkedPorts: 36837: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 36841 components: - type: Transform @@ -203541,7 +203824,8 @@ entities: - type: DeviceLinkSource linkedPorts: 36839: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 36843 components: - type: Transform @@ -203550,9 +203834,11 @@ entities: - type: DeviceLinkSource linkedPorts: 36845: - - Pressed: Toggle + - - Pressed + - Toggle 36844: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 36848 components: - type: MetaData @@ -203564,9 +203850,11 @@ entities: - type: DeviceLinkSource linkedPorts: 36846: - - Pressed: Toggle + - - Pressed + - Toggle 36847: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 37303 components: - type: MetaData @@ -203577,11 +203865,14 @@ entities: - type: DeviceLinkSource linkedPorts: 37302: - - Pressed: Toggle + - - Pressed + - Toggle 37301: - - Pressed: Toggle + - - Pressed + - Toggle 37300: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 37304 components: - type: MetaData @@ -203593,11 +203884,14 @@ entities: - type: DeviceLinkSource linkedPorts: 37299: - - Pressed: Toggle + - - Pressed + - Toggle 37298: - - Pressed: Toggle + - - Pressed + - Toggle 37297: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 37367 components: - type: MetaData @@ -203609,7 +203903,8 @@ entities: - type: DeviceLinkSource linkedPorts: 37366: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 37370 components: - type: MetaData @@ -203621,13 +203916,17 @@ entities: - type: DeviceLinkSource linkedPorts: 28645: - - Pressed: Open + - - Pressed + - Open 28644: - - Pressed: Open + - - Pressed + - Open 22854: - - Pressed: Open + - - Pressed + - Open 22853: - - Pressed: Open + - - Pressed + - Open - uid: 37410 components: - type: MetaData @@ -203638,35 +203937,50 @@ entities: - type: DeviceLinkSource linkedPorts: 37408: - - Pressed: Toggle + - - Pressed + - Toggle 37407: - - Pressed: Toggle + - - Pressed + - Toggle 37406: - - Pressed: Toggle + - - Pressed + - Toggle 37405: - - Pressed: Toggle + - - Pressed + - Toggle 37404: - - Pressed: Toggle + - - Pressed + - Toggle 37403: - - Pressed: Toggle + - - Pressed + - Toggle 37402: - - Pressed: Toggle + - - Pressed + - Toggle 37401: - - Pressed: Toggle + - - Pressed + - Toggle 37400: - - Pressed: Toggle + - - Pressed + - Toggle 37399: - - Pressed: Toggle + - - Pressed + - Toggle 37398: - - Pressed: Toggle + - - Pressed + - Toggle 37397: - - Pressed: Toggle + - - Pressed + - Toggle 37396: - - Pressed: Toggle + - - Pressed + - Toggle 37395: - - Pressed: Toggle + - - Pressed + - Toggle 37394: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 37425 components: - type: MetaData @@ -203678,13 +203992,17 @@ entities: - type: DeviceLinkSource linkedPorts: 37418: - - Pressed: Toggle + - - Pressed + - Toggle 37419: - - Pressed: Toggle + - - Pressed + - Toggle 37420: - - Pressed: Toggle + - - Pressed + - Toggle 37421: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 37565 components: - type: MetaData @@ -203695,11 +204013,14 @@ entities: - type: DeviceLinkSource linkedPorts: 37560: - - Pressed: Toggle + - - Pressed + - Toggle 37561: - - Pressed: Toggle + - - Pressed + - Toggle 37562: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignAnomaly entities: - uid: 5304 @@ -209212,8 +209533,7 @@ entities: - uid: 23130 components: - type: Transform - rot: -18.84955592153876 rad - pos: 142.42798,52.68017 + pos: 142.42955,54.096626 parent: 1 - proto: SubstationBasic entities: @@ -212203,6 +212523,12 @@ entities: - type: Transform pos: 144.5,93.5 parent: 1 + - uid: 10760 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,81.5 + parent: 1 - uid: 11105 components: - type: Transform @@ -212256,6 +212582,12 @@ entities: - type: Transform pos: 118.5,125.5 parent: 1 + - uid: 16163 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 142.5,54.5 + parent: 1 - uid: 16199 components: - type: Transform @@ -212362,6 +212694,12 @@ entities: - type: Transform pos: 27.5,99.5 parent: 1 + - uid: 20456 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 53.5,80.5 + parent: 1 - uid: 20461 components: - type: Transform @@ -212491,18 +212829,6 @@ entities: rot: -1.5707963267948966 rad pos: 123.5,56.5 parent: 1 - - uid: 22730 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 142.5,51.5 - parent: 1 - - uid: 22731 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 142.5,52.5 - parent: 1 - uid: 22732 components: - type: Transform @@ -212645,6 +212971,24 @@ entities: rot: 1.5707963267948966 rad pos: 101.5,92.5 parent: 1 + - uid: 26473 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 113.5,96.5 + parent: 1 + - uid: 26500 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 112.5,104.5 + parent: 1 + - uid: 26501 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 110.5,99.5 + parent: 1 - uid: 26526 components: - type: Transform @@ -212654,32 +212998,19 @@ entities: - uid: 26575 components: - type: Transform - pos: 113.5,96.5 + rot: 3.141592653589793 rad + pos: 112.5,96.5 parent: 1 - uid: 26576 components: - type: Transform - pos: 112.5,96.5 + rot: 3.141592653589793 rad + pos: 111.5,99.5 parent: 1 - uid: 26590 components: - type: Transform rot: 3.141592653589793 rad - pos: 112.5,104.5 - parent: 1 - - uid: 26639 - components: - - type: Transform - pos: 111.5,99.5 - parent: 1 - - uid: 26640 - components: - - type: Transform - pos: 110.5,99.5 - parent: 1 - - uid: 26641 - components: - - type: Transform pos: 107.5,99.5 parent: 1 - uid: 26683 @@ -212733,6 +213064,12 @@ entities: rot: -1.5707963267948966 rad pos: 63.5,82.5 parent: 1 + - uid: 28127 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 52.5,80.5 + parent: 1 - uid: 28284 components: - type: Transform @@ -212867,11 +213204,6 @@ entities: - type: Transform pos: 143.5,133.5 parent: 1 - - uid: 32257 - components: - - type: Transform - pos: 65.5,82.5 - parent: 1 - uid: 33282 components: - type: Transform @@ -214782,12 +215114,6 @@ entities: rot: 3.141592653589793 rad pos: 60.5,57.5 parent: 1 - - uid: 13672 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 58.5,57.5 - parent: 1 - uid: 13673 components: - type: Transform @@ -216035,33 +216361,54 @@ entities: - type: DeviceLinkSource linkedPorts: 19283: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19277: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19278: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19282: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19279: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19280: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19281: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 19299 components: - type: Transform @@ -216070,33 +216417,54 @@ entities: - type: DeviceLinkSource linkedPorts: 19290: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19289: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19288: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19287: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19286: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19285: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19284: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 19300 components: - type: Transform @@ -216105,61 +216473,103 @@ entities: - type: DeviceLinkSource linkedPorts: 19297: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19296: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19295: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19294: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19293: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19292: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19291: - - Left: Forward - - Right: Off - - Middle: Off + - - Left + - Forward + - - Right + - Off + - - Middle + - Off 36554: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 36553: - - Left: Forward - - Middle: Off - - Right: Off + - - Left + - Forward + - - Middle + - Off + - - Right + - Off 36555: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 36556: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 36557: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 32974: - - Left: Off - - Right: Reverse - - Middle: Off + - - Left + - Off + - - Right + - Reverse + - - Middle + - Off 32972: - - Right: Reverse - - Middle: Off - - Left: Off + - - Right + - Reverse + - - Middle + - Off + - - Left + - Off - uid: 19320 components: - type: Transform @@ -216168,17 +216578,26 @@ entities: - type: DeviceLinkSource linkedPorts: 19319: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19315: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19317: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 19426 components: - type: Transform @@ -216187,29 +216606,47 @@ entities: - type: DeviceLinkSource linkedPorts: 1438: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 20335: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22735: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 23947: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 26175: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 29397: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 21674 components: - type: Transform @@ -216218,25 +216655,40 @@ entities: - type: DeviceLinkSource linkedPorts: 16220: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 16219: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 16221: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 16227: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 16222: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 25722 components: - type: Transform @@ -216245,37 +216697,61 @@ entities: - type: DeviceLinkSource linkedPorts: 22742: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5888: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5034: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4529: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22792: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22793: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22802: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22804: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 34318 components: - type: Transform @@ -216284,41 +216760,68 @@ entities: - type: DeviceLinkSource linkedPorts: 34312: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34309: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34310: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34323: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34324: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34325: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34326: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close 34327: - - Left: Open - - Right: Close - - Middle: Close + - - Left + - Open + - - Right + - Close + - - Middle + - Close 34329: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 34319 components: - type: Transform @@ -216327,33 +216830,54 @@ entities: - type: DeviceLinkSource linkedPorts: 34320: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 34311: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34313: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34314: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34315: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34330: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34316: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - proto: UnfinishedMachineFrame entities: - uid: 5580 @@ -216367,11 +216891,6 @@ entities: - type: Transform pos: 32.5,109.5 parent: 1 - - uid: 20437 - components: - - type: Transform - pos: 53.5,82.5 - parent: 1 - uid: 23486 components: - type: Transform @@ -216529,16 +217048,16 @@ entities: - type: Transform pos: 46.5,48.5 parent: 1 + - uid: 4342 + components: + - type: Transform + pos: 149.5,55.5 + parent: 1 - uid: 9663 components: - type: Transform pos: 79.5,82.5 parent: 1 - - uid: 23142 - components: - - type: Transform - pos: 142.5,58.5 - parent: 1 - uid: 23791 components: - type: Transform @@ -216848,10 +217367,10 @@ entities: parent: 1 - proto: VendingMachineVendomat entities: - - uid: 20450 + - uid: 26640 components: - type: Transform - pos: 47.5,80.5 + pos: 46.5,81.5 parent: 1 - uid: 33894 components: @@ -239116,12 +239635,6 @@ entities: rot: -1.5707963267948966 rad pos: 122.5,56.5 parent: 1 - - uid: 22728 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 142.5,51.5 - parent: 1 - uid: 22737 components: - type: Transform @@ -239160,6 +239673,12 @@ entities: - type: Transform pos: 131.5,61.5 parent: 1 + - uid: 37733 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 142.5,54.5 + parent: 1 - proto: WeaponDisabler entities: - uid: 22693 @@ -239510,7 +240029,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13667: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 20914 components: - type: Transform @@ -239776,7 +240296,8 @@ entities: - type: DeviceLinkSource linkedPorts: 26866: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22782 components: - type: Transform @@ -239881,7 +240402,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13668: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureJanitorLocked entities: - uid: 30036 @@ -239974,7 +240496,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20807: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20807 components: - type: Transform @@ -239986,7 +240509,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20806: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20810 components: - type: Transform @@ -239998,7 +240522,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20813: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20811 components: - type: Transform @@ -240010,7 +240535,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20812: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20812 components: - type: Transform @@ -240022,7 +240548,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20811: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20813 components: - type: Transform @@ -240034,7 +240561,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20810: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20856 components: - type: Transform @@ -240167,7 +240695,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12420: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: Window entities: - uid: 362 diff --git a/Resources/Maps/elkridge.yml b/Resources/Maps/elkridge.yml index 36c40683fc..c70d34dd3d 100644 --- a/Resources/Maps/elkridge.yml +++ b/Resources/Maps/elkridge.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 250.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 04/05/2025 06:30:11 - entityCount: 17446 + time: 04/19/2025 08:48:01 + entityCount: 17540 maps: - 1 grids: @@ -28,6 +28,7 @@ tilemap: 10: FloorMining 9: FloorMiningDark 11: FloorRGlass + 16: FloorReinforced 98: FloorSteel 99: FloorSteelCheckerDark 100: FloorSteelCheckerLight @@ -67,55 +68,55 @@ entities: chunks: 0,0: ind: 0,0 - tiles: BwAAAAAFIAAAAAABfgAAAAAAfgAAAAACfgAAAAACIAAAAAABIAAAAAACIAAAAAAAYwAAAAAAYwAAAAABYwAAAAAAYwAAAAABYwAAAAABYwAAAAAAYwAAAAADIAAAAAADfgAAAAAAIAAAAAAABwAAAAADfgAAAAAAfgAAAAADIAAAAAACIAAAAAACIAAAAAADYwAAAAADYwAAAAAAYwAAAAABYwAAAAAAYwAAAAAAYwAAAAACYwAAAAABIAAAAAADIAAAAAABIAAAAAACIAAAAAAAIAAAAAADIAAAAAAAIAAAAAACIAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAABfgAAAAACfgAAAAADBwAAAAACfgAAAAABfgAAAAABIAAAAAADIAAAAAACAQAAAAAAggAAAAAAZAAAAAAAZAAAAAADZAAAAAABggAAAAAAYgAAAAADYgAAAAACggAAAAAABwAAAAACfgAAAAAAfgAAAAACfgAAAAADfgAAAAABggAAAAAAAQAAAAAAggAAAAAAggAAAAAAZAAAAAACZAAAAAAAZAAAAAADggAAAAAAYgAAAAADcAAAAAAAcAAAAAAAfgAAAAAAfgAAAAADfgAAAAABBwAAAAAAfgAAAAACfgAAAAADIAAAAAADIAAAAAAAggAAAAAAZAAAAAACZAAAAAABZAAAAAACAQAAAAAAYgAAAAACcAAAAAAAcAAAAAAAfgAAAAAABwAAAAADfgAAAAABfgAAAAADfgAAAAADfgAAAAADIAAAAAAAIAAAAAADggAAAAAAZAAAAAADZAAAAAAAZAAAAAABggAAAAAAYgAAAAACcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADcAAAAAAAcAAAAAAAFwAAAAAARgAAAAAARgAAAAAALAAAAAAALAAAAAAAAQAAAAAAIAAAAAAAIAAAAAACggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAggAAAAAAYgAAAAAAcAAAAAAAcAAAAAAAFwAAAAAARgAAAAAARgAAAAAALAAAAAAALAAAAAAAggAAAAAAIAAAAAACIAAAAAABggAAAAAAJAAAAAACIAAAAAAAJAAAAAACAQAAAAAAYgAAAAABYgAAAAADYgAAAAAAFwAAAAAARgAAAAAARgAAAAAALAAAAAAALAAAAAAAggAAAAAAIAAAAAACIAAAAAAAggAAAAAAJAAAAAAAJAAAAAADJAAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAABBgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAADggAAAAAAggAAAAAAAQAAAAAAYgAAAAAAYgAAAAACYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABCwAAAAABYgAAAAADggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADCwAAAAADYgAAAAAB + tiles: BwAAAAAEIAAAAAABfgAAAAADfgAAAAAAfgAAAAAAIAAAAAAAIAAAAAACIAAAAAADYwAAAAABYwAAAAAAYwAAAAACYwAAAAADYwAAAAABYwAAAAADYwAAAAACIAAAAAABfgAAAAAAIAAAAAAABwAAAAADfgAAAAADfgAAAAACIAAAAAABIAAAAAAAIAAAAAADYwAAAAADYwAAAAABYwAAAAADYwAAAAAAYwAAAAADYwAAAAACYwAAAAAAIAAAAAACIAAAAAACIAAAAAADIAAAAAADIAAAAAAAIAAAAAACIAAAAAADIAAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAACfgAAAAAAfgAAAAABBwAAAAADfgAAAAAAfgAAAAAAIAAAAAABIAAAAAABAQAAAAAAggAAAAAAZAAAAAABZAAAAAACZAAAAAAAggAAAAAAYgAAAAABYgAAAAADggAAAAAABwAAAAABfgAAAAADfgAAAAABfgAAAAABfgAAAAABggAAAAAAAQAAAAAAggAAAAAAggAAAAAAZAAAAAAAZAAAAAAAZAAAAAABggAAAAAAYgAAAAABcAAAAAAAcAAAAAAAfgAAAAADfgAAAAABfgAAAAABBwAAAAAFfgAAAAAAfgAAAAACIAAAAAADIAAAAAADggAAAAAAZAAAAAADZAAAAAABZAAAAAAAAQAAAAAAYgAAAAACcAAAAAAAcAAAAAAAfgAAAAACBwAAAAAAfgAAAAAAfgAAAAACfgAAAAAAfgAAAAAAIAAAAAABIAAAAAABggAAAAAAZAAAAAADZAAAAAACZAAAAAAAggAAAAAAYgAAAAACcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABcAAAAAAAcAAAAAAAFwAAAAAARgAAAAAARgAAAAAALAAAAAAALAAAAAAAAQAAAAAAIAAAAAABIAAAAAABggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAggAAAAAAYgAAAAAAcAAAAAAAcAAAAAAAFwAAAAAARgAAAAAARgAAAAAALAAAAAAALAAAAAAAggAAAAAAIAAAAAACIAAAAAADggAAAAAAJAAAAAADIAAAAAACJAAAAAAAAQAAAAAAYgAAAAABYgAAAAABYgAAAAAAFwAAAAAARgAAAAAARgAAAAAALAAAAAAALAAAAAAAggAAAAAAIAAAAAABIAAAAAABggAAAAAAJAAAAAACJAAAAAABJAAAAAACggAAAAAAYgAAAAADYgAAAAACYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAADYgAAAAABBgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAACYgAAAAABYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABCwAAAAACYgAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACCwAAAAACYgAAAAAA version: 6 -1,0: ind: -1,0 - tiles: YgAAAAACYgAAAAABAQAAAAAAYgAAAAADYgAAAAADYgAAAAADYgAAAAAAYgAAAAABYgAAAAAAIAAAAAABAQAAAAAAIAAAAAADCwAAAAADIAAAAAADfgAAAAABfgAAAAACYgAAAAABYgAAAAACAQAAAAAAYgAAAAAAYgAAAAAACwAAAAAACwAAAAADCwAAAAACYgAAAAACIAAAAAADAQAAAAAAIAAAAAACCwAAAAADIAAAAAABfgAAAAACfgAAAAACAQAAAAAAAQAAAAAAggAAAAAAYgAAAAABYgAAAAACYgAAAAABYgAAAAACYgAAAAACYgAAAAADIAAAAAADggAAAAAAIAAAAAABIAAAAAADIAAAAAABIAAAAAACIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAADIAAAAAABggAAAAAAIAAAAAADIAAAAAADIAAAAAACBwAAAAAEfgAAAAADAQAAAAAAggAAAAAABgAAAAAAAQAAAAAAggAAAAAAAQAAAAAAYgAAAAAAYgAAAAAAYgAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAfgAAAAACfgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAAAIAAAAAABggAAAAAAfgAAAAADBwAAAAAFggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAYgAAAAADggAAAAAAIAAAAAABIAAAAAADIAAAAAABggAAAAAAfgAAAAADfgAAAAADIAAAAAACIAAAAAADIAAAAAACIAAAAAABggAAAAAAAQAAAAAAYgAAAAABYgAAAAADYgAAAAACggAAAAAAIAAAAAABIAAAAAACIAAAAAABggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAABIAAAAAABggAAAAAAAQAAAAAAYgAAAAAAYgAAAAACYgAAAAADggAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAAAggAAAAAAFwAAAAAAggAAAAAAIAAAAAAAIAAAAAAAIAAAAAACggAAAAAAAQAAAAAAYgAAAAACYgAAAAAAYgAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAADIAAAAAAAggAAAAAAFwAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAAAYgAAAAABYgAAAAACggAAAAAAIAAAAAACIAAAAAABIAAAAAACIAAAAAAAggAAAAAAFwAAAAAAIAAAAAADIAAAAAACIAAAAAACIAAAAAACggAAAAAAAQAAAAAAYgAAAAACYgAAAAADYgAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAACIAAAAAABggAAAAAAggAAAAAAYgAAAAACYgAAAAADYgAAAAACYgAAAAACYgAAAAACYgAAAAAAYgAAAAABggAAAAAAggAAAAAAggAAAAAAIAAAAAADcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAYgAAAAACYgAAAAADYgAAAAAAYgAAAAADYgAAAAABYgAAAAACYgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAYgAAAAAAYgAAAAACYgAAAAABYgAAAAAACwAAAAADYgAAAAADYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACCwAAAAADYgAAAAADYgAAAAABggAAAAAAggAAAAAAggAAAAAA + tiles: YgAAAAAAYgAAAAACAQAAAAAAYgAAAAACYgAAAAAAYgAAAAADYgAAAAACYgAAAAACYgAAAAABIAAAAAABAQAAAAAAIAAAAAAACwAAAAAAIAAAAAACfgAAAAABfgAAAAAAYgAAAAABYgAAAAABAQAAAAAAYgAAAAACYgAAAAADCwAAAAABCwAAAAABCwAAAAABYgAAAAADIAAAAAABAQAAAAAAIAAAAAACCwAAAAAAIAAAAAAAfgAAAAADfgAAAAACAQAAAAAAAQAAAAAAggAAAAAAYgAAAAACYgAAAAACYgAAAAACYgAAAAACYgAAAAACYgAAAAADIAAAAAABggAAAAAAIAAAAAAAIAAAAAABIAAAAAABIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACYgAAAAACIAAAAAABggAAAAAAIAAAAAADIAAAAAABIAAAAAABBwAAAAABfgAAAAACAQAAAAAAggAAAAAABgAAAAADAQAAAAAAggAAAAAAAQAAAAAAYgAAAAADYgAAAAABYgAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAfgAAAAABfgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAADIAAAAAABggAAAAAAfgAAAAADBwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAADggAAAAAAIAAAAAADIAAAAAACIAAAAAABggAAAAAAfgAAAAAAfgAAAAADIAAAAAAAIAAAAAADIAAAAAACIAAAAAACggAAAAAAAQAAAAAAYgAAAAABYgAAAAABYgAAAAADggAAAAAAIAAAAAACIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAAAIAAAAAADIAAAAAAAggAAAAAAAQAAAAAAYgAAAAAAYgAAAAADYgAAAAADggAAAAAAIAAAAAAAIAAAAAABIAAAAAABIAAAAAABggAAAAAAFwAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAAAggAAAAAAAQAAAAAAYgAAAAABYgAAAAADYgAAAAABggAAAAAAIAAAAAABIAAAAAACIAAAAAADIAAAAAAAggAAAAAAFwAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAADYgAAAAABYgAAAAADggAAAAAAIAAAAAADIAAAAAACIAAAAAACIAAAAAADggAAAAAAFwAAAAAAIAAAAAACIAAAAAACIAAAAAAAIAAAAAACggAAAAAAAQAAAAAAYgAAAAACYgAAAAACYgAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAADIAAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAABYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAADYgAAAAADggAAAAAAggAAAAAAggAAAAAAIAAAAAACcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAYgAAAAADYgAAAAACYgAAAAADYgAAAAAAYgAAAAABYgAAAAADYgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAYgAAAAACYgAAAAABYgAAAAACYgAAAAABCwAAAAABYgAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAABCwAAAAABYgAAAAADYgAAAAABggAAAAAAggAAAAAAggAAAAAA version: 6 0,-1: ind: 0,-1 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAADIAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAACYgAAAAACYgAAAAAAYgAAAAADYgAAAAADYgAAAAAAYgAAAAACYgAAAAABYgAAAAACYgAAAAADYgAAAAADAQAAAAAAYgAAAAABYgAAAAACYgAAAAACYgAAAAAAYgAAAAADYgAAAAABYgAAAAAAYgAAAAABYgAAAAAAYgAAAAABYgAAAAABYgAAAAADYgAAAAABYgAAAAAAYgAAAAACAQAAAAAAYgAAAAABYgAAAAADYgAAAAADYgAAAAACYgAAAAADYgAAAAABYgAAAAABYgAAAAACYgAAAAABYgAAAAAAYgAAAAABYgAAAAAAYgAAAAADYgAAAAABYgAAAAADAQAAAAAAYgAAAAACYgAAAAADYgAAAAAAYgAAAAABggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAAAIAAAAAADggAAAAAAIAAAAAADIAAAAAADIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAADIAAAAAABAQAAAAAAIAAAAAABIAAAAAABIAAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAABIAAAAAABIAAAAAABIAAAAAADggAAAAAAIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYwAAAAAAYwAAAAABYwAAAAABYwAAAAACggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAIAAAAAADIAAAAAABIAAAAAAAIAAAAAADIAAAAAABIAAAAAAAIAAAAAAAIAAAAAAAYwAAAAADYwAAAAADYwAAAAABYwAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAAAIAAAAAAAIAAAAAACIAAAAAADIAAAAAACIAAAAAAAYwAAAAAAYwAAAAABYwAAAAACYwAAAAAAYwAAAAAAYwAAAAACYwAAAAACIAAAAAADfgAAAAACIAAAAAABfgAAAAABfgAAAAAABwAAAAAFIAAAAAACIAAAAAABIAAAAAACYwAAAAACYwAAAAACYwAAAAABYwAAAAABYwAAAAAAYwAAAAACYwAAAAADIAAAAAAC + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAACIAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAACYgAAAAAAYgAAAAADYgAAAAABYgAAAAADYgAAAAAAYgAAAAADYgAAAAACYgAAAAACYgAAAAACYgAAAAACAQAAAAAAYgAAAAABYgAAAAABYgAAAAACYgAAAAABYgAAAAACYgAAAAACYgAAAAACYgAAAAAAYgAAAAACYgAAAAADYgAAAAABYgAAAAAAYgAAAAAAYgAAAAABYgAAAAAAAQAAAAAAYgAAAAABYgAAAAACYgAAAAACYgAAAAACYgAAAAACYgAAAAACYgAAAAAAYgAAAAADYgAAAAAAYgAAAAACYgAAAAACYgAAAAABYgAAAAACYgAAAAACYgAAAAAAAQAAAAAAYgAAAAAAYgAAAAABYgAAAAADYgAAAAACggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAABIAAAAAADggAAAAAAIAAAAAAAIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAABIAAAAAADAQAAAAAAIAAAAAAAIAAAAAABIAAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAAAIAAAAAACIAAAAAACIAAAAAACggAAAAAAIAAAAAABIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYwAAAAACYwAAAAADYwAAAAACYwAAAAABggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAACIAAAAAAAIAAAAAACIAAAAAAAIAAAAAADYwAAAAABYwAAAAABYwAAAAADYwAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAADYwAAAAADYwAAAAAAYwAAAAAAYwAAAAADYwAAAAADYwAAAAAAYwAAAAADIAAAAAACfgAAAAAAIAAAAAACfgAAAAAAfgAAAAABBwAAAAACIAAAAAAAIAAAAAAAIAAAAAAAYwAAAAAAYwAAAAADYwAAAAAAYwAAAAABYwAAAAADYwAAAAAAYwAAAAACIAAAAAAD version: 6 -1,-1: ind: -1,-1 - tiles: YgAAAAAAYgAAAAABYgAAAAAAYgAAAAAAYgAAAAACggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAABAQAAAAAAYgAAAAACYgAAAAADYgAAAAADYgAAAAABYgAAAAACYgAAAAAAYgAAAAAAYgAAAAADAQAAAAAAYgAAAAACIAAAAAAAggAAAAAAYgAAAAADYgAAAAADYgAAAAABAQAAAAAAYgAAAAABYgAAAAACYgAAAAADYgAAAAAAYgAAAAACYgAAAAADYgAAAAACYgAAAAACAQAAAAAAYgAAAAAAIAAAAAABAQAAAAAAYgAAAAACYgAAAAAAYgAAAAABAQAAAAAAYgAAAAADYgAAAAACYgAAAAAAYgAAAAACYgAAAAAAYgAAAAAAYgAAAAACYgAAAAADAQAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAACYgAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAYgAAAAACYgAAAAACYgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAADwAAAAAAIAAAAAAAIAAAAAAAggAAAAAAAgAAAAAAggAAAAAAYgAAAAAAYgAAAAABYgAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAABggAAAAAAAgAAAAAAggAAAAAADQAAAAAAYgAAAAADYgAAAAABAQAAAAAAggAAAAAAfgAAAAAABwAAAAAGfgAAAAAAAQAAAAAAIAAAAAAAIAAAAAADIAAAAAABIAAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAACAQAAAAAAggAAAAAABwAAAAACfgAAAAAAfgAAAAABIAAAAAADIAAAAAAAIAAAAAAAIAAAAAACIAAAAAAAggAAAAAAAgAAAAAAggAAAAAAYgAAAAABYgAAAAADYgAAAAADggAAAAAAggAAAAAAfgAAAAABfgAAAAABBwAAAAADIAAAAAADIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAYgAAAAABYgAAAAADYgAAAAABggAAAAAAAwAAAAADfgAAAAABfgAAAAAAfgAAAAABIAAAAAADIAAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAYgAAAAAAYgAAAAABYgAAAAADggAAAAAAggAAAAAAfgAAAAADfgAAAAACBwAAAAAAIAAAAAACIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAAAIAAAAAACggAAAAAAIAAAAAADIAAAAAADIAAAAAACIAAAAAABIAAAAAACAQAAAAAAAQAAAAAAggAAAAAAYgAAAAAAYgAAAAACYgAAAAADYgAAAAABYgAAAAACYgAAAAAAIAAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAABIAAAAAADIAAAAAAAYgAAAAAAYgAAAAADAQAAAAAAYgAAAAADYgAAAAACCwAAAAACCwAAAAACCwAAAAABYgAAAAAAIAAAAAACAQAAAAAAIAAAAAABCwAAAAADIAAAAAABfgAAAAAAfgAAAAAA + tiles: YgAAAAAAYgAAAAAAYgAAAAADYgAAAAADYgAAAAACggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAABYgAAAAADAQAAAAAAYgAAAAADYgAAAAACYgAAAAAAYgAAAAADYgAAAAABYgAAAAAAYgAAAAAAYgAAAAADAQAAAAAAYgAAAAAAIAAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAAAAQAAAAAAYgAAAAADYgAAAAAAYgAAAAADYgAAAAADYgAAAAAAYgAAAAACYgAAAAABYgAAAAAAAQAAAAAAYgAAAAAAIAAAAAACAQAAAAAAYgAAAAABYgAAAAACYgAAAAAAAQAAAAAAYgAAAAACYgAAAAADYgAAAAACYgAAAAADYgAAAAADYgAAAAACYgAAAAADYgAAAAADAQAAAAAAYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAADYgAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAYgAAAAACYgAAAAADYgAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAADwAAAAAAIAAAAAACIAAAAAACggAAAAAAAgAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAACggAAAAAAAgAAAAAAggAAAAAADQAAAAACYgAAAAAAYgAAAAAAAQAAAAAAggAAAAAAfgAAAAABBwAAAAAAfgAAAAACAQAAAAAAIAAAAAADIAAAAAABIAAAAAACIAAAAAADggAAAAAAAgAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAABAQAAAAAAggAAAAAABwAAAAACfgAAAAAAfgAAAAACIAAAAAAAIAAAAAAAIAAAAAABIAAAAAABIAAAAAABggAAAAAAAgAAAAAAggAAAAAAYgAAAAACYgAAAAADYgAAAAADggAAAAAAggAAAAAAfgAAAAABfgAAAAAABwAAAAABIAAAAAACIAAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAABggAAAAAAAwAAAAADfgAAAAAAfgAAAAAAfgAAAAABIAAAAAAAIAAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAACggAAAAAAggAAAAAAfgAAAAACfgAAAAAABwAAAAAGIAAAAAADIAAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAABIAAAAAACggAAAAAAIAAAAAADIAAAAAABIAAAAAADIAAAAAAAIAAAAAADAQAAAAAAAQAAAAAAggAAAAAAYgAAAAAAYgAAAAADYgAAAAABYgAAAAABYgAAAAAAYgAAAAAAIAAAAAACggAAAAAAIAAAAAACIAAAAAABIAAAAAADIAAAAAACIAAAAAAAYgAAAAABYgAAAAABAQAAAAAAYgAAAAACYgAAAAABCwAAAAACCwAAAAABCwAAAAADYgAAAAAAIAAAAAADAQAAAAAAIAAAAAABCwAAAAACIAAAAAABfgAAAAAAfgAAAAAD version: 6 1,0: ind: 1,0 - tiles: IAAAAAACYgAAAAAAYgAAAAAAYgAAAAADYgAAAAADYgAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAAAYgAAAAADYgAAAAADYgAAAAACYgAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAIAAAAAACYgAAAAADYgAAAAAAYgAAAAABYgAAAAABYgAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABAAAAAACBAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAAAAQAAAAAABAAAAAADBAAAAAACYgAAAAAAcAAAAAAAggAAAAAAYgAAAAACYgAAAAADYgAAAAACggAAAAAABAAAAAAABAAAAAADBAAAAAABIAAAAAACBAAAAAACBAAAAAACggAAAAAABAAAAAACCwAAAAACYgAAAAABcAAAAAAAggAAAAAAYgAAAAAACwAAAAACYgAAAAADAQAAAAAABAAAAAADBAAAAAAABAAAAAADIAAAAAAAIAAAAAACIAAAAAAAggAAAAAABAAAAAACCwAAAAABYgAAAAADcAAAAAAAggAAAAAAYgAAAAADCwAAAAACYgAAAAADAQAAAAAABAAAAAAABAAAAAABBAAAAAADBAAAAAACBAAAAAAABAAAAAADggAAAAAABAAAAAACBAAAAAACYgAAAAADYgAAAAAAIAAAAAAAYgAAAAACCwAAAAAAYgAAAAAAAQAAAAAABAAAAAADBAAAAAADBAAAAAACBAAAAAACBAAAAAAABAAAAAABAQAAAAAABAAAAAACCwAAAAABYgAAAAAAYgAAAAAAIAAAAAAAYgAAAAABYgAAAAAAYgAAAAAAggAAAAAABAAAAAADBAAAAAACBAAAAAADBAAAAAAABAAAAAAABAAAAAABAQAAAAAABAAAAAADCwAAAAAAYgAAAAACggAAAAAAggAAAAAAYgAAAAABYgAAAAACYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAABYgAAAAAAggAAAAAAAQAAAAAAYgAAAAADYgAAAAABYgAAAAACYgAAAAADIAAAAAADIAAAAAACIAAAAAADBAAAAAACBAAAAAADBAAAAAADggAAAAAAAQAAAAAAAQAAAAAAYgAAAAACggAAAAAAAQAAAAAAYgAAAAABYgAAAAABYgAAAAAAYgAAAAACIAAAAAABIAAAAAADBAAAAAABBAAAAAADBAAAAAADBAAAAAADggAAAAAABAAAAAACBAAAAAACggAAAAAAggAAAAAAAQAAAAAAYgAAAAACYgAAAAADYgAAAAACYgAAAAABIAAAAAAAIAAAAAAABAAAAAAABAAAAAABBAAAAAACBAAAAAACggAAAAAABAAAAAAABAAAAAABYgAAAAADAQAAAAAAYgAAAAABYgAAAAAAYgAAAAACYgAAAAAAYgAAAAAAggAAAAAAggAAAAAABAAAAAABBAAAAAADBAAAAAADBAAAAAACAQAAAAAABAAAAAADBAAAAAAAYgAAAAACAQAAAAAAYgAAAAACYgAAAAABYgAAAAACYgAAAAAAYgAAAAADAQAAAAAABAAAAAACBAAAAAABBAAAAAAABAAAAAABBAAAAAABggAAAAAABAAAAAABBAAAAAABYgAAAAACAQAAAAAAYgAAAAACYgAAAAAAYgAAAAADYgAAAAABYgAAAAADggAAAAAABAAAAAAABAAAAAADBAAAAAACBAAAAAAABAAAAAABIAAAAAACBAAAAAAABAAAAAAA + tiles: IAAAAAADYgAAAAACYgAAAAAAYgAAAAABYgAAAAAAYgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAABYgAAAAACYgAAAAABYgAAAAABYgAAAAABYgAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAIAAAAAAAYgAAAAADYgAAAAADYgAAAAADYgAAAAACYgAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABAAAAAADBAAAAAABggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAADAQAAAAAABAAAAAAABAAAAAACYgAAAAABcAAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAACggAAAAAABAAAAAABBAAAAAADBAAAAAACIAAAAAADBAAAAAACBAAAAAAAggAAAAAABAAAAAADCwAAAAAAYgAAAAACcAAAAAAAggAAAAAAYgAAAAAACwAAAAADYgAAAAACAQAAAAAABAAAAAACBAAAAAABBAAAAAACIAAAAAAAIAAAAAABIAAAAAADggAAAAAABAAAAAABCwAAAAABYgAAAAABcAAAAAAAggAAAAAAYgAAAAAACwAAAAABYgAAAAADAQAAAAAABAAAAAAABAAAAAADBAAAAAACBAAAAAACBAAAAAADBAAAAAADggAAAAAABAAAAAADBAAAAAACYgAAAAAAYgAAAAADIAAAAAAAYgAAAAADCwAAAAACYgAAAAAAAQAAAAAABAAAAAAABAAAAAADBAAAAAADBAAAAAACBAAAAAAABAAAAAABAQAAAAAABAAAAAABCwAAAAADYgAAAAADYgAAAAADIAAAAAADYgAAAAACYgAAAAADYgAAAAACggAAAAAABAAAAAABBAAAAAAABAAAAAABBAAAAAABBAAAAAAABAAAAAABAQAAAAAABAAAAAADCwAAAAACYgAAAAACggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAACYgAAAAAAggAAAAAAAQAAAAAAYgAAAAABYgAAAAACYgAAAAADYgAAAAABIAAAAAADIAAAAAACIAAAAAACBAAAAAACBAAAAAABBAAAAAAAggAAAAAAAQAAAAAAAQAAAAAAYgAAAAACggAAAAAAAQAAAAAAYgAAAAAAYgAAAAABYgAAAAAAYgAAAAADIAAAAAADIAAAAAADBAAAAAADBAAAAAACBAAAAAAABAAAAAADggAAAAAABAAAAAACBAAAAAABggAAAAAAggAAAAAAAQAAAAAAYgAAAAACYgAAAAAAYgAAAAADYgAAAAADIAAAAAADIAAAAAABBAAAAAABBAAAAAAABAAAAAADBAAAAAABggAAAAAABAAAAAACBAAAAAABYgAAAAABAQAAAAAAYgAAAAADYgAAAAADYgAAAAADYgAAAAACYgAAAAADggAAAAAAggAAAAAABAAAAAACBAAAAAACBAAAAAACBAAAAAAAAQAAAAAABAAAAAADBAAAAAABYgAAAAABAQAAAAAAYgAAAAADYgAAAAACYgAAAAACYgAAAAAAYgAAAAADAQAAAAAABAAAAAABBAAAAAABBAAAAAACBAAAAAADBAAAAAADggAAAAAABAAAAAAABAAAAAADYgAAAAAAAQAAAAAAYgAAAAACYgAAAAABYgAAAAADYgAAAAABYgAAAAADggAAAAAABAAAAAACBAAAAAAABAAAAAACBAAAAAAABAAAAAAAIAAAAAAABAAAAAADBAAAAAAB version: 6 1,-1: ind: 1,-1 - tiles: ggAAAAAAggAAAAAADwAAAAAAcAAAAAAAcAAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAADAQAAAAAAggAAAAAAcAAAAAAAIAAAAAAAYgAAAAABAQAAAAAAIAAAAAACIAAAAAACIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAABAQAAAAAAcAAAAAAAIAAAAAABYgAAAAAAAQAAAAAAIAAAAAAAIAAAAAACIAAAAAADIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAIAAAAAACggAAAAAAcAAAAAAAggAAAAAAYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAIAAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAACIAAAAAAAIAAAAAADIAAAAAACggAAAAAAIAAAAAABIAAAAAACggAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAAAIAAAAAACIAAAAAABIAAAAAACggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAABIAAAAAADIAAAAAABIAAAAAACggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABgAAAAAAAQAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAADggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAACYgAAAAAAYgAAAAAAYgAAAAADYgAAAAADYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAggAAAAAAIAAAAAADYgAAAAABYgAAAAADYgAAAAAAYgAAAAACYgAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA + tiles: ggAAAAAAggAAAAAADwAAAAAAcAAAAAAAcAAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAADAQAAAAAAggAAAAAAcAAAAAAAIAAAAAAAYgAAAAABAQAAAAAAIAAAAAACIAAAAAABIAAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAACAQAAAAAAcAAAAAAAIAAAAAAAYgAAAAADAQAAAAAAIAAAAAABIAAAAAADIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAIAAAAAACggAAAAAAcAAAAAAAggAAAAAAYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAACggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAIAAAAAADggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAADIAAAAAABIAAAAAADIAAAAAACggAAAAAAIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAACIAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAADIAAAAAADIAAAAAADIAAAAAABggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABgAAAAABAQAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAADggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAABYgAAAAACYgAAAAAAYgAAAAABYgAAAAAAYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAggAAAAAAIAAAAAABYgAAAAACYgAAAAACYgAAAAACYgAAAAAAYgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA version: 6 -1,1: ind: -1,1 - tiles: AQAAAAAAIAAAAAADIAAAAAACAQAAAAAAYgAAAAACYgAAAAABYgAAAAACAQAAAAAAYgAAAAADYgAAAAAAYgAAAAAAYgAAAAADYgAAAAADYgAAAAABAQAAAAAAAQAAAAAAAQAAAAAAIAAAAAACIAAAAAADAQAAAAAAYgAAAAADYgAAAAABYgAAAAACAQAAAAAAYgAAAAACYgAAAAADYgAAAAABYgAAAAAAYgAAAAABYgAAAAABAQAAAAAAAQAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAACggAAAAAAYgAAAAACYgAAAAACYgAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAACggAAAAAAggAAAAAAYgAAAAADYgAAAAADYgAAAAACYgAAAAAAYgAAAAABYgAAAAABggAAAAAAYgAAAAAAYgAAAAACYgAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAAAggAAAAAAAQAAAAAAYgAAAAABYgAAAAADYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAACggAAAAAAYgAAAAABYgAAAAACYgAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAABggAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAACYgAAAAACYgAAAAACYgAAAAADggAAAAAAYgAAAAADYgAAAAAAYgAAAAACggAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAAAggAAAAAAYgAAAAAAYgAAAAADYgAAAAABAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAACAQAAAAAAYgAAAAADYgAAAAADYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABggAAAAAAYgAAAAABYgAAAAADYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACYgAAAAACAQAAAAAAIAAAAAACIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAYgAAAAADYgAAAAADYgAAAAABggAAAAAAIAAAAAAAIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAYgAAAAAAYgAAAAABYgAAAAABIAAAAAACIAAAAAADIAAAAAACIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAADYgAAAAAAYgAAAAAAIAAAAAAAIAAAAAACIAAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAABYgAAAAADYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA + tiles: AQAAAAAAIAAAAAADIAAAAAACAQAAAAAAYgAAAAADYgAAAAACYgAAAAAAAQAAAAAAYgAAAAADYgAAAAABYgAAAAADYgAAAAABYgAAAAADYgAAAAABAQAAAAAAAQAAAAAAAQAAAAAAIAAAAAACIAAAAAAAAQAAAAAAYgAAAAADYgAAAAACYgAAAAADAQAAAAAAYgAAAAADYgAAAAABYgAAAAADYgAAAAAAYgAAAAADYgAAAAADAQAAAAAAAQAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAAAggAAAAAAYgAAAAADYgAAAAADYgAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAABggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAABggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAYgAAAAADYgAAAAAAYgAAAAADYgAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAACggAAAAAAIAAAAAACIAAAAAACIAAAAAAAggAAAAAAAQAAAAAAYgAAAAABYgAAAAAAYgAAAAACYgAAAAACYgAAAAADYgAAAAAAggAAAAAAYgAAAAACYgAAAAABYgAAAAABggAAAAAAIAAAAAACIAAAAAAAIAAAAAACggAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAAAYgAAAAADYgAAAAABYgAAAAABggAAAAAAYgAAAAACYgAAAAABYgAAAAABggAAAAAAIAAAAAABIAAAAAACIAAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAABAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAAAAQAAAAAAYgAAAAADYgAAAAADYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADggAAAAAAYgAAAAABYgAAAAABYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAABYgAAAAACAQAAAAAAIAAAAAACIAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAYgAAAAAAYgAAAAABYgAAAAABggAAAAAAIAAAAAADIAAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAYgAAAAAAYgAAAAAAYgAAAAACIAAAAAAAIAAAAAACIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAACYgAAAAAAYgAAAAADIAAAAAAAIAAAAAABIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAADYgAAAAABYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA version: 6 0,1: ind: 0,1 - tiles: AQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAAACwAAAAACYgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAABYgAAAAACYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAfgAAAAADfgAAAAAABwAAAAAAIAAAAAACIAAAAAABggAAAAAAYgAAAAACYgAAAAABAQAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAAAIAAAAAADIAAAAAAAggAAAAAABwAAAAAFfgAAAAABfgAAAAAAIAAAAAACIAAAAAACAQAAAAAAYgAAAAADYgAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAAAggAAAAAAfgAAAAAAfgAAAAADfgAAAAAAIAAAAAAAIAAAAAACggAAAAAAYgAAAAACYgAAAAACAQAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAADIAAAAAABggAAAAAAfgAAAAACfgAAAAABfgAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAAAYgAAAAADYgAAAAADYgAAAAAAAQAAAAAAIAAAAAADIAAAAAACIAAAAAACIAAAAAABIAAAAAACIAAAAAABAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAYgAAAAACYgAAAAABYgAAAAABYgAAAAABIAAAAAABIAAAAAACIAAAAAABIAAAAAACIAAAAAACIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAADYgAAAAAAYgAAAAADYgAAAAABggAAAAAAIAAAAAAAIAAAAAADIAAAAAADAQAAAAAAAQAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAADYgAAAAACYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAADYgAAAAADYgAAAAAAIAAAAAACIAAAAAADIAAAAAADYgAAAAADAQAAAAAAAQAAAAAAYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAADYgAAAAABIAAAAAADYgAAAAACYgAAAAACYgAAAAABAQAAAAAADQAAAAAAYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAAAYgAAAAADIAAAAAABYgAAAAADYgAAAAABYgAAAAAAAQAAAAAAAQAAAAAAYgAAAAADggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAABYgAAAAABggAAAAAAYgAAAAABYgAAAAACYgAAAAADAQAAAAAAAQAAAAAAYgAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADAQAAAAAAAQAAAAAAYgAAAAAA + tiles: AQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAABCwAAAAADYgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAAAYgAAAAADYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAfgAAAAAAfgAAAAADBwAAAAAGIAAAAAACIAAAAAACggAAAAAAYgAAAAADYgAAAAADAQAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAACIAAAAAAAIAAAAAAAggAAAAAABwAAAAADfgAAAAACfgAAAAACIAAAAAADIAAAAAADAQAAAAAAYgAAAAADYgAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAAAggAAAAAAfgAAAAABfgAAAAACfgAAAAABIAAAAAACIAAAAAAAggAAAAAAYgAAAAAAYgAAAAACAQAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAABIAAAAAABIAAAAAACggAAAAAAfgAAAAABfgAAAAACfgAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAADYgAAAAADYgAAAAADYgAAAAAAAQAAAAAAIAAAAAAAIAAAAAACIAAAAAAAIAAAAAAAIAAAAAADIAAAAAACAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAYgAAAAACYgAAAAABYgAAAAACYgAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAABIAAAAAABIAAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAACYgAAAAACYgAAAAABYgAAAAACggAAAAAAIAAAAAABIAAAAAACIAAAAAABAQAAAAAAAQAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAABYgAAAAADYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAACYgAAAAAAIAAAAAABIAAAAAABIAAAAAAAYgAAAAACAQAAAAAAAQAAAAAAYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAADYgAAAAACYgAAAAABIAAAAAACYgAAAAACYgAAAAACYgAAAAACAQAAAAAADQAAAAAAYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAADYgAAAAAAYgAAAAABIAAAAAABYgAAAAAAYgAAAAADYgAAAAADAQAAAAAAAQAAAAAAYgAAAAACggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACYgAAAAAAYgAAAAAAggAAAAAAYgAAAAACYgAAAAACYgAAAAAAAQAAAAAAAQAAAAAAYgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABAQAAAAAAAQAAAAAAYgAAAAAC version: 6 2,-1: ind: 2,-1 - tiles: ggAAAAAAcAAAAAAAAQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAABwAAAAAAfgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAADggAAAAAAfgAAAAADBwAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAABgAAAAACAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAABggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABgAAAAADAQAAAAAAggAAAAAAggAAAAAABgAAAAADcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAADwAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAABAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAABcAAAAAAAIAAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAABgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAIAAAAAACcAAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAACggAAAAAABQAAAAAAIAAAAAACIAAAAAACBQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAAAggAAAAAABwAAAAAAggAAAAAAAQAAAAAAggAAAAAABQAAAAAAIAAAAAAAIAAAAAADBQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAfgAAAAAABwAAAAACDQAAAAAB + tiles: ggAAAAAAcAAAAAAAAQAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAABwAAAAAGfgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAABggAAAAAAfgAAAAAABwAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAABgAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAACggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAABgAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAABgAAAAACcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAADwAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAACAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAACcAAAAAAAIAAAAAABAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAABgAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADggAAAAAAggAAAAAAIAAAAAADcAAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAAAggAAAAAABQAAAAAAIAAAAAAAIAAAAAACBQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAABggAAAAAABwAAAAAGggAAAAAAAQAAAAAAggAAAAAABQAAAAAAIAAAAAADIAAAAAADBQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAfgAAAAADBwAAAAAEDQAAAAAC version: 6 2,0: ind: 2,0 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAABfgAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAABggAAAAAAIAAAAAABIAAAAAABIAAAAAADIAAAAAACIAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAAAQAAAAAAIAAAAAADIAAAAAADIAAAAAADIAAAAAAAIAAAAAACggAAAAAAAQAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACggAAAAAAIAAAAAAAIAAAAAABIAAAAAABIAAAAAABIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAABAAAAAACBAAAAAAABAAAAAAABAAAAAAABAAAAAADBAAAAAACBAAAAAAABAAAAAACIAAAAAABIAAAAAABIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAACBAAAAAABBAAAAAACBAAAAAABBAAAAAABBAAAAAAABAAAAAAAIAAAAAACIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAAABAAAAAACBAAAAAAABAAAAAACBAAAAAAABAAAAAADBAAAAAABIAAAAAADIAAAAAACIAAAAAABggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAABBAAAAAACBAAAAAABBAAAAAACBAAAAAABggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAABAAAAAADBAAAAAADBAAAAAADBAAAAAADBAAAAAAABAAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAAggAAAAAABAAAAAABBAAAAAADBAAAAAADBAAAAAACBAAAAAACggAAAAAAIAAAAAABIAAAAAAAIAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABAAAAAABAQAAAAAABAAAAAACBAAAAAABBAAAAAABBAAAAAACBAAAAAABAQAAAAAAIAAAAAADIAAAAAAAIAAAAAADIAAAAAADAQAAAAAABgAAAAADggAAAAAAggAAAAAABAAAAAACggAAAAAABAAAAAABBAAAAAABBAAAAAAABAAAAAAABAAAAAABggAAAAAAIAAAAAACIAAAAAACIAAAAAACIAAAAAACggAAAAAAAQAAAAAAggAAAAAAggAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAACfgAAAAACggAAAAAAAQAAAAAAggAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAAggAAAAAAIAAAAAAAIAAAAAACIAAAAAAAIAAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAAAQAAAAAAIAAAAAAAIAAAAAAAIAAAAAACIAAAAAADIAAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAABggAAAAAAIAAAAAADIAAAAAADIAAAAAACIAAAAAACIAAAAAABggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAAABAAAAAABBAAAAAACBAAAAAABBAAAAAACBAAAAAADIAAAAAADIAAAAAABIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAABBAAAAAACBAAAAAABBAAAAAADBAAAAAABBAAAAAACBAAAAAAABAAAAAACIAAAAAACIAAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAABBAAAAAACBAAAAAADBAAAAAABBAAAAAACBAAAAAAABAAAAAAAIAAAAAACIAAAAAADIAAAAAABggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAADBAAAAAADBAAAAAACBAAAAAACBAAAAAABggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAABAAAAAADBAAAAAABBAAAAAACBAAAAAADBAAAAAABBAAAAAABggAAAAAAIAAAAAAAIAAAAAACIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAABggAAAAAABAAAAAADBAAAAAABBAAAAAADBAAAAAABBAAAAAADggAAAAAAIAAAAAACIAAAAAADIAAAAAABggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABAAAAAACAQAAAAAABAAAAAADBAAAAAABBAAAAAADBAAAAAADBAAAAAABAQAAAAAAIAAAAAADIAAAAAABIAAAAAABIAAAAAAAAQAAAAAABgAAAAADggAAAAAAggAAAAAABAAAAAABggAAAAAABAAAAAABBAAAAAACBAAAAAACBAAAAAADBAAAAAABggAAAAAAIAAAAAAAIAAAAAADIAAAAAAAIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAA version: 6 1,-2: ind: 1,-2 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAADwAAAAAAcAAAAAAAcAAAAAAADwAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAADwAAAAAAcAAAAAAAcAAAAAAADwAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAcAAAAAAAcAAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAADwAAAAAAcAAAAAAAcAAAAAAADwAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAADwAAAAAAcAAAAAAAcAAAAAAADwAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAcAAAAAAAcAAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA version: 6 2,-2: ind: 2,-2 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAIAAAAAACIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAABgAAAAADAQAAAAAAIAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABgAAAAAAIAAAAAAAggAAAAAAIAAAAAADAQAAAAAAggAAAAAAAQAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAACBgAAAAADAQAAAAAAAQAAAAAAIAAAAAACAQAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAAAAQAAAAAAAQAAAAAAIAAAAAAAggAAAAAAIAAAAAACAQAAAAAABgAAAAAAAQAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAABIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAADggAAAAAABwAAAAAGfgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAABgAAAAADAQAAAAAAIAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAABAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAABgAAAAABIAAAAAACggAAAAAAIAAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAABBgAAAAABAQAAAAAAAQAAAAAAIAAAAAABAQAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAACAQAAAAAAAQAAAAAAIAAAAAAAggAAAAAAIAAAAAAAAQAAAAAABgAAAAAAAQAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAACIAAAAAAAIAAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAACggAAAAAABwAAAAAGfgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA version: 6 0,-2: ind: 0,-2 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAADggAAAAAAggAAAAAAIAAAAAAAIAAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAIAAAAAACDwAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAIAAAAAACDwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAADBwAAAAABBwAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAACfgAAAAABBwAAAAAFggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAABggAAAAAAggAAAAAABgAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAAAIAAAAAADBwAAAAADfgAAAAADfgAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAAAIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAABIAAAAAACfgAAAAABBwAAAAAGfgAAAAABggAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAADAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAAAIAAAAAAAIAAAAAABBwAAAAACfgAAAAACBwAAAAABggAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAfgAAAAAABwAAAAACfgAAAAACggAAAAAAggAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAIAAAAAAADwAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAADwAAAAAAIAAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAADBwAAAAAGBwAAAAAEggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAADfgAAAAACBwAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAAAggAAAAAAggAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAABIAAAAAADBwAAAAADfgAAAAADfgAAAAACggAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAABIAAAAAADfgAAAAABBwAAAAAGfgAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAADAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAABIAAAAAAABwAAAAAAfgAAAAABBwAAAAABggAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACggAAAAAAfgAAAAABBwAAAAACfgAAAAABggAAAAAAggAAAAAA version: 6 3,-2: ind: 3,-2 @@ -123,31 +124,31 @@ entities: version: 6 3,-1: ind: 3,-1 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAABwAAAAAAggAAAAAADQAAAAABggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAAGggAAAAAAggAAAAAABwAAAAAEBwAAAAAGggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAABwAAAAAFfgAAAAACggAAAAAABwAAAAACggAAAAAAAAAAAAAAAgAAAAAAAgAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAABwAAAAAGggAAAAAADQAAAAABggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAAFggAAAAAAggAAAAAABwAAAAABBwAAAAAFggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAABwAAAAADfgAAAAADggAAAAAABwAAAAADggAAAAAAAAAAAAAAAgAAAAAAAgAAAAAA version: 6 -1,-2: ind: -1,-2 - tiles: AQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAAAAQAAAAAAYgAAAAABYgAAAAADYgAAAAADYgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAAACwAAAAABYgAAAAADggAAAAAAIAAAAAAAIAAAAAABIAAAAAAAggAAAAAAYgAAAAADYgAAAAADYgAAAAABYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAABggAAAAAAIAAAAAABIAAAAAACIAAAAAADIAAAAAACYgAAAAABYgAAAAACYgAAAAACYgAAAAABggAAAAAAIAAAAAADIAAAAAAAIAAAAAACggAAAAAAYgAAAAADYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAYgAAAAACYgAAAAABIAAAAAADIAAAAAABIAAAAAAAIAAAAAACggAAAAAAYgAAAAACYgAAAAABggAAAAAAIAAAAAADIAAAAAADIAAAAAABAQAAAAAAYgAAAAADYgAAAAABYgAAAAABYgAAAAAAIAAAAAACIAAAAAABIAAAAAAAIAAAAAACggAAAAAACwAAAAAAYgAAAAACggAAAAAAIAAAAAAAIAAAAAABIAAAAAACggAAAAAAYgAAAAAAYgAAAAACYgAAAAAAYgAAAAACIAAAAAAAIAAAAAABIAAAAAABIAAAAAABggAAAAAAYgAAAAACYgAAAAACggAAAAAAIAAAAAACIAAAAAAAIAAAAAABIAAAAAADYgAAAAACYgAAAAAAYgAAAAAAYgAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAACggAAAAAAYgAAAAACYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAABggAAAAAAYgAAAAAAYgAAAAACggAAAAAAIAAAAAAAIAAAAAACIAAAAAAAggAAAAAAYgAAAAABYgAAAAABggAAAAAAIAAAAAAAIAAAAAADIAAAAAAAIAAAAAACIAAAAAADggAAAAAACwAAAAACYgAAAAADggAAAAAAIAAAAAACIAAAAAADIAAAAAACAQAAAAAAYgAAAAADYgAAAAACAQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAADAQAAAAAAYgAAAAABYgAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAADggAAAAAAYgAAAAADYgAAAAACggAAAAAAIAAAAAACIAAAAAADIAAAAAADIAAAAAAAIAAAAAADggAAAAAAYgAAAAACYgAAAAADggAAAAAAIAAAAAACIAAAAAABggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAACYgAAAAADYgAAAAADIAAAAAABIAAAAAACIAAAAAADIAAAAAACIAAAAAAAIAAAAAAAYgAAAAABYgAAAAAAYgAAAAADYgAAAAADYgAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAAAYgAAAAABIAAAAAABIAAAAAABIAAAAAACIAAAAAADIAAAAAAAIAAAAAADYgAAAAAAYgAAAAAAYgAAAAADYgAAAAACYgAAAAADggAAAAAAYgAAAAADYgAAAAADYgAAAAAAYgAAAAAAIAAAAAACIAAAAAADIAAAAAAAIAAAAAAAggAAAAAAIAAAAAAC + tiles: AQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAADAQAAAAAAYgAAAAAAYgAAAAAAYgAAAAABYgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAACCwAAAAAAYgAAAAACggAAAAAAIAAAAAAAIAAAAAACIAAAAAAAggAAAAAAYgAAAAACYgAAAAABYgAAAAAAYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAACggAAAAAAIAAAAAACIAAAAAABIAAAAAACIAAAAAADYgAAAAABYgAAAAABYgAAAAADYgAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAAAggAAAAAAYgAAAAADYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAAAYgAAAAABYgAAAAABIAAAAAACIAAAAAABIAAAAAACIAAAAAAAggAAAAAAYgAAAAAAYgAAAAADggAAAAAAIAAAAAADIAAAAAACIAAAAAABAQAAAAAAYgAAAAABYgAAAAACYgAAAAADYgAAAAACIAAAAAAAIAAAAAAAIAAAAAACIAAAAAACggAAAAAACwAAAAAAYgAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAADggAAAAAAYgAAAAADYgAAAAABYgAAAAAAYgAAAAACIAAAAAACIAAAAAAAIAAAAAABIAAAAAADggAAAAAAYgAAAAAAYgAAAAACggAAAAAAIAAAAAADIAAAAAAAIAAAAAACIAAAAAABYgAAAAADYgAAAAAAYgAAAAABYgAAAAABggAAAAAAIAAAAAADIAAAAAABIAAAAAAAggAAAAAAYgAAAAACYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAABggAAAAAAYgAAAAAAYgAAAAACggAAAAAAIAAAAAABIAAAAAADIAAAAAAAggAAAAAAYgAAAAACYgAAAAADggAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAADIAAAAAADggAAAAAACwAAAAAAYgAAAAACggAAAAAAIAAAAAACIAAAAAAAIAAAAAADAQAAAAAAYgAAAAADYgAAAAABAQAAAAAAIAAAAAAAIAAAAAABIAAAAAACIAAAAAADIAAAAAACAQAAAAAAYgAAAAACYgAAAAACggAAAAAAIAAAAAABIAAAAAACIAAAAAABggAAAAAAYgAAAAACYgAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAAAIAAAAAABIAAAAAAAggAAAAAAYgAAAAABYgAAAAACggAAAAAAIAAAAAADIAAAAAABggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAADYgAAAAADYgAAAAAAIAAAAAAAIAAAAAADIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAADYgAAAAADYgAAAAABYgAAAAADYgAAAAACYgAAAAABggAAAAAAYgAAAAADYgAAAAAAYgAAAAACYgAAAAABIAAAAAACIAAAAAADIAAAAAABIAAAAAADIAAAAAADIAAAAAAAYgAAAAACYgAAAAADYgAAAAACYgAAAAABYgAAAAACggAAAAAAYgAAAAADYgAAAAABYgAAAAAAYgAAAAABIAAAAAADIAAAAAADIAAAAAADIAAAAAACggAAAAAAIAAAAAAD version: 6 -2,-2: ind: -2,-2 - tiles: YgAAAAACYgAAAAADggAAAAAADwAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAACIAAAAAABggAAAAAAYgAAAAABYgAAAAADggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAADggAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAACYgAAAAACYgAAAAAAYgAAAAADYgAAAAABggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACCwAAAAADYgAAAAADYgAAAAADYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAAAYgAAAAAAYgAAAAABYgAAAAACYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAIAAAAAABIAAAAAADIAAAAAACAQAAAAAAfgAAAAACBwAAAAAGfgAAAAADggAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAAAIAAAAAADggAAAAAABwAAAAACfgAAAAADfgAAAAABggAAAAAAYgAAAAADggAAAAAAIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAAAfgAAAAACBwAAAAAAggAAAAAAYgAAAAABAQAAAAAAIAAAAAACIAAAAAADAQAAAAAAggAAAAAAggAAAAAAfgAAAAABfgAAAAADBwAAAAADfgAAAAACIAAAAAACIAAAAAABIAAAAAACIAAAAAACggAAAAAAYgAAAAADggAAAAAAIAAAAAACIAAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAABfgAAAAAAfgAAAAAABwAAAAAFIAAAAAAAIAAAAAADIAAAAAABIAAAAAACAQAAAAAAYgAAAAAAggAAAAAADwAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAfgAAAAADBwAAAAABfgAAAAABfgAAAAADIAAAAAACIAAAAAABIAAAAAACIAAAAAAAAQAAAAAAYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAfgAAAAABfgAAAAABBwAAAAAEfgAAAAACIAAAAAAAIAAAAAAAIAAAAAADIAAAAAACggAAAAAAYgAAAAADAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAADBwAAAAABfgAAAAABfgAAAAABIAAAAAAAIAAAAAAAIAAAAAADIAAAAAACggAAAAAAYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAACYgAAAAADggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAYgAAAAADYgAAAAACYgAAAAACYgAAAAABYgAAAAAAYgAAAAABYgAAAAAAYgAAAAADYgAAAAABYgAAAAACYgAAAAADYgAAAAAA + tiles: YgAAAAACYgAAAAADggAAAAAADwAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAADIAAAAAABggAAAAAAYgAAAAADYgAAAAABggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACggAAAAAADwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAAAYgAAAAADYgAAAAACYgAAAAAAYgAAAAABggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADCwAAAAACYgAAAAABYgAAAAABYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAYgAAAAACYgAAAAADYgAAAAABYgAAAAACYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAIAAAAAAAIAAAAAAAIAAAAAACAQAAAAAAfgAAAAAABwAAAAAEfgAAAAAAggAAAAAAYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAAAggAAAAAABwAAAAABfgAAAAACfgAAAAADggAAAAAAYgAAAAACggAAAAAAIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAABfgAAAAAABwAAAAACggAAAAAAYgAAAAACAQAAAAAAIAAAAAAAIAAAAAABAQAAAAAAggAAAAAAggAAAAAAfgAAAAADfgAAAAABBwAAAAACfgAAAAAAIAAAAAAAIAAAAAADIAAAAAACIAAAAAABggAAAAAAYgAAAAACggAAAAAAIAAAAAACIAAAAAACggAAAAAAggAAAAAAggAAAAAABwAAAAAEfgAAAAAAfgAAAAABBwAAAAAEIAAAAAADIAAAAAACIAAAAAACIAAAAAACAQAAAAAAYgAAAAABggAAAAAADwAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAfgAAAAAABwAAAAAFfgAAAAACfgAAAAABIAAAAAABIAAAAAADIAAAAAADIAAAAAABAQAAAAAAYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAfgAAAAABfgAAAAADBwAAAAADfgAAAAACIAAAAAACIAAAAAAAIAAAAAADIAAAAAACggAAAAAAYgAAAAACAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAADBwAAAAACfgAAAAABfgAAAAAAIAAAAAAAIAAAAAADIAAAAAAAIAAAAAACggAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAABYgAAAAADggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAYgAAAAADYgAAAAAAYgAAAAADYgAAAAAAYgAAAAABYgAAAAAAYgAAAAABYgAAAAACYgAAAAAAYgAAAAAAYgAAAAADYgAAAAAB version: 6 -2,-1: ind: -2,-1 - tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAYgAAAAAAYgAAAAACYgAAAAAAYgAAAAADYgAAAAADYgAAAAACYgAAAAADYgAAAAADYgAAAAACYgAAAAAAYgAAAAABYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAABggAAAAAAIAAAAAABIAAAAAABIAAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAACggAAAAAAIAAAAAAAIAAAAAAAIAAAAAABIAAAAAAAIAAAAAACIAAAAAABIAAAAAACIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAACIAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACggAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAABIAAAAAACAQAAAAAAIAAAAAABIAAAAAAAIAAAAAABAQAAAAAAYgAAAAACYgAAAAABggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAACIAAAAAADggAAAAAAIAAAAAAAIAAAAAABIAAAAAAAggAAAAAAYgAAAAADYgAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAADIAAAAAACIAAAAAADIAAAAAAAAQAAAAAAIAAAAAADIAAAAAACIAAAAAABAQAAAAAAYgAAAAADYgAAAAACAQAAAAAAggAAAAAAcAAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAACIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAABAQAAAAAAggAAAAAAcAAAAAAAIAAAAAACIAAAAAACIAAAAAACIAAAAAADIAAAAAADIAAAAAABggAAAAAAIAAAAAACIAAAAAADIAAAAAACggAAAAAAYgAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAAAIAAAAAABggAAAAAAYgAAAAABYgAAAAADggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAABwAAAAAEfgAAAAADIAAAAAAAIAAAAAADIAAAAAABggAAAAAAYgAAAAADYgAAAAABggAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAggAAAAAAfgAAAAACBwAAAAAAIAAAAAABIAAAAAABIAAAAAAAggAAAAAAYgAAAAABYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAggAAAAAAfgAAAAACfgAAAAACIAAAAAADIAAAAAABIAAAAAABggAAAAAAYgAAAAABYgAAAAABggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACYgAAAAADYgAAAAADYgAAAAACYgAAAAACYgAAAAAB + tiles: AQAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAYgAAAAADYgAAAAABYgAAAAAAYgAAAAABYgAAAAAAYgAAAAAAYgAAAAADYgAAAAACYgAAAAAAYgAAAAACYgAAAAAAYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAABgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAADggAAAAAAIAAAAAACIAAAAAAAIAAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACggAAAAAAIAAAAAACIAAAAAABIAAAAAAAIAAAAAABIAAAAAACIAAAAAABIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAACIAAAAAABggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAADggAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAADIAAAAAADAQAAAAAAIAAAAAADIAAAAAAAIAAAAAABAQAAAAAAYgAAAAAAYgAAAAACggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAADIAAAAAACIAAAAAACggAAAAAAIAAAAAACIAAAAAAAIAAAAAABggAAAAAAYgAAAAABYgAAAAABggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAACIAAAAAABIAAAAAADIAAAAAAAAQAAAAAAIAAAAAACIAAAAAABIAAAAAACAQAAAAAAYgAAAAACYgAAAAACAQAAAAAAggAAAAAAcAAAAAAAIAAAAAAAIAAAAAADIAAAAAAAIAAAAAABIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAAQAAAAAAggAAAAAAcAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAADIAAAAAABIAAAAAABggAAAAAAIAAAAAAAIAAAAAABIAAAAAAAggAAAAAAYgAAAAACYgAAAAADggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAAAggAAAAAAYgAAAAABYgAAAAADggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAABwAAAAACfgAAAAABIAAAAAADIAAAAAABIAAAAAAAggAAAAAAYgAAAAACYgAAAAACggAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAggAAAAAAfgAAAAAABwAAAAAGIAAAAAACIAAAAAAAIAAAAAADggAAAAAAYgAAAAACYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAggAAAAAAfgAAAAACfgAAAAABIAAAAAABIAAAAAACIAAAAAAAggAAAAAAYgAAAAAAYgAAAAABggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAACYgAAAAABYgAAAAACYgAAAAADYgAAAAADYgAAAAAA version: 6 -2,0: ind: -2,0 - tiles: AgAAAAAAAAAAAAAAAgAAAAAAggAAAAAABwAAAAAEfgAAAAABBwAAAAABfgAAAAADggAAAAAAYgAAAAABYgAAAAABYgAAAAACYgAAAAADYgAAAAADYgAAAAADYgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAABwAAAAADBwAAAAABfgAAAAABBwAAAAADggAAAAAAYgAAAAACYgAAAAAAYgAAAAACYgAAAAACYgAAAAADYgAAAAADYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAZAAAAAABZAAAAAAAZAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAABIAAAAAACBgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAAAAgAAAAAAggAAAAAADQAAAAACggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAACIAAAAAABIAAAAAAAIAAAAAACggAAAAAAIAAAAAABIAAAAAABIAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAADQAAAAACggAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAADIAAAAAADIAAAAAACggAAAAAAIAAAAAABIAAAAAADIAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAACIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAADIAAAAAADIAAAAAABIAAAAAADIAAAAAABIAAAAAADggAAAAAAIAAAAAABIAAAAAACIAAAAAAB + tiles: AgAAAAAAAAAAAAAAAgAAAAAAggAAAAAABwAAAAAAfgAAAAAABwAAAAACfgAAAAADggAAAAAAYgAAAAAAYgAAAAAAYgAAAAADYgAAAAACYgAAAAABYgAAAAADYgAAAAADAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAABwAAAAAFBwAAAAAGfgAAAAABBwAAAAACggAAAAAAYgAAAAACYgAAAAACYgAAAAAAYgAAAAACYgAAAAAAYgAAAAABYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAZAAAAAAAZAAAAAAAZAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAABgAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAAAIAAAAAADBgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAACIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABAgAAAAAAggAAAAAADQAAAAACggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAADIAAAAAAAIAAAAAAAIAAAAAACggAAAAAAIAAAAAABIAAAAAACIAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAADQAAAAACggAAAAAAIAAAAAABIAAAAAADIAAAAAABIAAAAAACIAAAAAABIAAAAAABggAAAAAAIAAAAAACIAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAADIAAAAAADIAAAAAACIAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAIAAAAAABIAAAAAACIAAAAAAAIAAAAAAAIAAAAAABIAAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAAC version: 6 1,1: ind: 1,1 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAABAAAAAABBAAAAAADBAAAAAABBAAAAAAABAAAAAACggAAAAAABAAAAAAABAAAAAABAQAAAAAABgAAAAADggAAAAAAIAAAAAAAIAAAAAADIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAABggAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAADIAAAAAACggAAAAAABAAAAAACBAAAAAADBAAAAAADBAAAAAADBAAAAAAABAAAAAAABAAAAAADBAAAAAADggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAADIAAAAAAAAQAAAAAABAAAAAABBAAAAAADBAAAAAADBAAAAAACBAAAAAABBAAAAAADBAAAAAACBAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAABBAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAAABAAAAAADBAAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAAAIAAAAAACIAAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAADBAAAAAAABAAAAAAAAQAAAAAABAAAAAAABAAAAAACBAAAAAAAggAAAAAAIAAAAAACIAAAAAADIAAAAAACIAAAAAADggAAAAAAAQAAAAAAggAAAAAABAAAAAAABAAAAAAABAAAAAADBAAAAAADggAAAAAABAAAAAABBAAAAAACBAAAAAACggAAAAAAIAAAAAACIAAAAAACIAAAAAACIAAAAAACAQAAAAAABgAAAAACggAAAAAABAAAAAABBAAAAAAABAAAAAADBAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAADIAAAAAADIAAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAABBwAAAAAEggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAADBAAAAAACIAAAAAACIAAAAAACIAAAAAAAggAAAAAABgAAAAABAQAAAAAAggAAAAAABwAAAAABBwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAABgAAAAACAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAABAAAAAABBAAAAAABBAAAAAABBAAAAAABBAAAAAABggAAAAAABAAAAAADBAAAAAAAAQAAAAAABgAAAAADggAAAAAAIAAAAAAAIAAAAAACIAAAAAACIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAADggAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAACIAAAAAADIAAAAAADggAAAAAABAAAAAAABAAAAAADBAAAAAAABAAAAAADBAAAAAADBAAAAAACBAAAAAACBAAAAAABggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAADIAAAAAACAQAAAAAABAAAAAABBAAAAAACBAAAAAADBAAAAAABBAAAAAABBAAAAAAABAAAAAACBAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAABBAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAABBAAAAAABBAAAAAABggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAACggAAAAAAggAAAAAAggAAAAAABAAAAAADBAAAAAABBAAAAAADBAAAAAACAQAAAAAABAAAAAADBAAAAAADBAAAAAAAggAAAAAAIAAAAAACIAAAAAADIAAAAAACIAAAAAAAggAAAAAAAQAAAAAAggAAAAAABAAAAAABBAAAAAAABAAAAAADBAAAAAACggAAAAAABAAAAAACBAAAAAADBAAAAAADggAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAABAQAAAAAABgAAAAADggAAAAAABAAAAAABBAAAAAAABAAAAAACBAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAADBAAAAAAAIAAAAAABIAAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAACBwAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAAABAAAAAACIAAAAAABIAAAAAABIAAAAAADggAAAAAABgAAAAACAQAAAAAAggAAAAAABwAAAAACBwAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAABgAAAAACAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAA version: 6 0,-3: ind: 0,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAYwAAAAABYwAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAAAYwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAIAAAAAABIAAAAAABIAAAAAABIAAAAAABIAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAAAIAAAAAADIAAAAAACIAAAAAABggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAIAAAAAADIAAAAAACIAAAAAADIAAAAAAAIAAAAAACggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAfgAAAAABfgAAAAAAfgAAAAABfgAAAAADBwAAAAAGggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAgAAAAAABwAAAAAFBwAAAAAAfgAAAAACBwAAAAAFfgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAABfgAAAAACBwAAAAABfgAAAAADfgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAYwAAAAADYwAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYwAAAAACYwAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAIAAAAAADIAAAAAACIAAAAAAAIAAAAAACIAAAAAABggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAAAIAAAAAACIAAAAAACggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAIAAAAAAAIAAAAAACIAAAAAADIAAAAAADIAAAAAADggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAfgAAAAACfgAAAAABfgAAAAABfgAAAAACBwAAAAABggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAgAAAAAABwAAAAAABwAAAAAGfgAAAAAABwAAAAAAfgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAADfgAAAAABBwAAAAAEfgAAAAACfgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA version: 6 1,-3: ind: 1,-3 @@ -155,23 +156,23 @@ entities: version: 6 -1,-3: ind: -1,-3 - tiles: ggAAAAAAggAAAAAACAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAACAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAACAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAACAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAAQAAAAAABgAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYwAAAAABYwAAAAACYwAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYwAAAAABYwAAAAACYwAAAAAAggAAAAAAYwAAAAACggAAAAAAggAAAAAAggAAAAAAfgAAAAADfgAAAAADfgAAAAABggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYwAAAAADggAAAAAAggAAAAAAggAAAAAABwAAAAABfgAAAAAABwAAAAADggAAAAAAggAAAAAABgAAAAACBgAAAAACggAAAAAAYgAAAAAAYgAAAAADYgAAAAAAggAAAAAAIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAADYgAAAAABAQAAAAAAIAAAAAABIAAAAAAAIAAAAAAAggAAAAAABwAAAAABBwAAAAADfgAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAACggAAAAAAIAAAAAADIAAAAAAAIAAAAAACggAAAAAAfgAAAAAAfgAAAAACBwAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADggAAAAAAIAAAAAADIAAAAAADIAAAAAADggAAAAAAYgAAAAADYgAAAAADYgAAAAADggAAAAAAIAAAAAADIAAAAAAAIAAAAAACggAAAAAABwAAAAAGIAAAAAACIAAAAAABggAAAAAAIAAAAAABIAAAAAAAIAAAAAABAQAAAAAAYgAAAAABYgAAAAACYgAAAAABAQAAAAAAIAAAAAACIAAAAAACIAAAAAACAQAAAAAAfgAAAAADIAAAAAACIAAAAAACggAAAAAAIAAAAAACIAAAAAADIAAAAAADggAAAAAAYgAAAAADYgAAAAABYgAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAADggAAAAAAfgAAAAAD + tiles: ggAAAAAAggAAAAAACAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAACAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAACAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAACAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAAQAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYwAAAAAAYwAAAAAAYwAAAAACggAAAAAAggAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYwAAAAABYwAAAAABYwAAAAABggAAAAAAYwAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAADfgAAAAACfgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYwAAAAABggAAAAAAggAAAAAAggAAAAAABwAAAAABfgAAAAACBwAAAAABggAAAAAAggAAAAAABgAAAAAABgAAAAABggAAAAAAYgAAAAADYgAAAAAAYgAAAAAAggAAAAAAIAAAAAACggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAADYgAAAAABAQAAAAAAIAAAAAAAIAAAAAABIAAAAAACggAAAAAABwAAAAAGBwAAAAAFfgAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAAAggAAAAAAfgAAAAACfgAAAAABBwAAAAABggAAAAAAYgAAAAABYgAAAAADYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAADggAAAAAAIAAAAAADIAAAAAADIAAAAAAAggAAAAAAYgAAAAABYgAAAAACYgAAAAABggAAAAAAIAAAAAADIAAAAAACIAAAAAABggAAAAAABwAAAAAFIAAAAAAAIAAAAAADggAAAAAAIAAAAAABIAAAAAABIAAAAAACAQAAAAAAYgAAAAADYgAAAAACYgAAAAADAQAAAAAAIAAAAAACIAAAAAABIAAAAAADAQAAAAAAfgAAAAADIAAAAAACIAAAAAABggAAAAAAIAAAAAADIAAAAAAAIAAAAAADggAAAAAAYgAAAAABYgAAAAAAYgAAAAADggAAAAAAIAAAAAAAIAAAAAACIAAAAAADggAAAAAAfgAAAAAD version: 6 -2,-3: ind: -2,-3 - tiles: ggAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAABAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAADfgAAAAABggAAAAAAfgAAAAADfgAAAAABggAAAAAABwAAAAAAfgAAAAABggAAAAAAIAAAAAACIAAAAAABIAAAAAACIAAAAAADIAAAAAACIAAAAAAAggAAAAAAfgAAAAABBwAAAAAFAQAAAAAAfgAAAAACBwAAAAADAQAAAAAAfgAAAAADBwAAAAAGggAAAAAAIAAAAAADIAAAAAACIAAAAAADIAAAAAACIAAAAAADIAAAAAAAggAAAAAABwAAAAAFfgAAAAAAggAAAAAABwAAAAABfgAAAAADggAAAAAABwAAAAAAfgAAAAADggAAAAAAIAAAAAADIAAAAAABIAAAAAABIAAAAAADIAAAAAACIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAACfgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAADYgAAAAADYgAAAAABYgAAAAADYgAAAAADYgAAAAACYgAAAAACYgAAAAADYgAAAAABYgAAAAACAQAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAADCwAAAAABCwAAAAACYgAAAAABYgAAAAACYgAAAAAAYgAAAAABYgAAAAAAYgAAAAAAYgAAAAACYgAAAAABAQAAAAAAAQAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAABYgAAAAACYgAAAAACYgAAAAAAYgAAAAACYgAAAAABYgAAAAABYgAAAAACYgAAAAAAYgAAAAAAYgAAAAABAQAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAACggAAAAAAggAAAAAAIAAAAAACYgAAAAABYgAAAAACggAAAAAAfgAAAAACfgAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAABIAAAAAABggAAAAAAYgAAAAADYgAAAAACggAAAAAAIAAAAAAAIAAAAAADYgAAAAADYgAAAAADAQAAAAAABwAAAAACfgAAAAADAQAAAAAAIAAAAAAAIAAAAAAAIAAAAAADIAAAAAABggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAACYgAAAAABYgAAAAADggAAAAAAfgAAAAADBwAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAACIAAAAAADggAAAAAAYgAAAAAAYgAAAAADggAAAAAAIAAAAAACIAAAAAADAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAABggAAAAAAYgAAAAAAYgAAAAADggAAAAAAIAAAAAACIAAAAAAD + tiles: ggAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAACfgAAAAABggAAAAAAfgAAAAACfgAAAAACggAAAAAABwAAAAAAfgAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAACIAAAAAAAIAAAAAAAIAAAAAAAggAAAAAAfgAAAAABBwAAAAADAQAAAAAAfgAAAAACBwAAAAAGAQAAAAAAfgAAAAAABwAAAAAGggAAAAAAIAAAAAADIAAAAAABIAAAAAACIAAAAAAAIAAAAAAAIAAAAAADggAAAAAABwAAAAABfgAAAAAAggAAAAAABwAAAAAAfgAAAAADggAAAAAABwAAAAABfgAAAAACggAAAAAAIAAAAAABIAAAAAAAIAAAAAACIAAAAAAAIAAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAAAfgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAABYgAAAAABYgAAAAADYgAAAAAAYgAAAAADYgAAAAABYgAAAAABYgAAAAACYgAAAAAAYgAAAAADYgAAAAAAYgAAAAADAQAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAACYgAAAAABCwAAAAACCwAAAAABYgAAAAACYgAAAAAAYgAAAAABYgAAAAAAYgAAAAADYgAAAAADYgAAAAAAYgAAAAAAAQAAAAAAAQAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAADYgAAAAADYgAAAAABYgAAAAABYgAAAAACYgAAAAADYgAAAAACYgAAAAABYgAAAAADYgAAAAADYgAAAAADAQAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAAAggAAAAAAggAAAAAAIAAAAAABYgAAAAACYgAAAAAAggAAAAAAfgAAAAABfgAAAAACggAAAAAAIAAAAAABIAAAAAAAIAAAAAABIAAAAAADggAAAAAAYgAAAAABYgAAAAAAggAAAAAAIAAAAAAAIAAAAAACYgAAAAAAYgAAAAABAQAAAAAABwAAAAADfgAAAAACAQAAAAAAIAAAAAAAIAAAAAABIAAAAAADIAAAAAACggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAADYgAAAAADYgAAAAAAggAAAAAAfgAAAAADBwAAAAADggAAAAAAIAAAAAACIAAAAAAAIAAAAAACIAAAAAADggAAAAAAYgAAAAACYgAAAAABggAAAAAAIAAAAAADIAAAAAADAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAACIAAAAAAAggAAAAAAYgAAAAADYgAAAAAAggAAAAAAIAAAAAAAIAAAAAAB version: 6 -3,-1: ind: -3,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAADIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAIAAAAAABIAAAAAACIAAAAAADIAAAAAADIAAAAAACIAAAAAACIAAAAAADIAAAAAABIAAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAADIAAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAADIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAADIAAAAAADIAAAAAACIAAAAAADIAAAAAAAIAAAAAADIAAAAAABIAAAAAABIAAAAAACIAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAACIAAAAAADIAAAAAADIAAAAAABIAAAAAADIAAAAAACIAAAAAAAIAAAAAABIAAAAAADAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAABIAAAAAADIAAAAAADIAAAAAABIAAAAAABIAAAAAADIAAAAAAAIAAAAAABIAAAAAACAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAACIAAAAAACIAAAAAADIAAAAAACIAAAAAADIAAAAAACIAAAAAABIAAAAAAAIAAAAAACAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAADIAAAAAABIAAAAAABIAAAAAABIAAAAAACIAAAAAACIAAAAAAAIAAAAAADIAAAAAADAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAIAAAAAACIAAAAAABIAAAAAAAIAAAAAABIAAAAAADIAAAAAACIAAAAAAAIAAAAAABIAAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAAAIAAAAAABIAAAAAADIAAAAAACIAAAAAABIAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAAAIAAAAAADIAAAAAABIAAAAAACIAAAAAAAIAAAAAACIAAAAAAAIAAAAAAAIAAAAAABAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAACIAAAAAABIAAAAAACIAAAAAADIAAAAAAAIAAAAAADIAAAAAADIAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAADIAAAAAADIAAAAAADIAAAAAADIAAAAAADIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAADAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAADIAAAAAABIAAAAAADIAAAAAACIAAAAAAAIAAAAAADIAAAAAABAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAABIAAAAAADIAAAAAACIAAAAAABIAAAAAACIAAAAAAAIAAAAAAAIAAAAAADIAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -3,-2: ind: -3,-2 - tiles: YgAAAAABYgAAAAAAYgAAAAACAQAAAAAAYgAAAAAAYgAAAAADYgAAAAAAYgAAAAABYgAAAAACYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAYgAAAAABYgAAAAADYgAAAAADYgAAAAACYgAAAAABYgAAAAABAQAAAAAAYgAAAAAAYgAAAAACYgAAAAADYgAAAAABYgAAAAABYgAAAAABYgAAAAABYgAAAAADYgAAAAABYgAAAAADYgAAAAACYgAAAAADYgAAAAAAYgAAAAACYgAAAAAAAQAAAAAAYgAAAAADYgAAAAABYgAAAAABYgAAAAAAYgAAAAACYgAAAAACYgAAAAABYgAAAAAAYgAAAAADYgAAAAADYgAAAAACYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAwAAAAADAwAAAAAABwAAAAAEAwAAAAABAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAABfgAAAAACfgAAAAADBwAAAAACAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAACBwAAAAADBwAAAAAEfgAAAAABAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAADfgAAAAAAfgAAAAACBwAAAAABAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAACBwAAAAAFfgAAAAACfgAAAAABAwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAAAfgAAAAACBwAAAAAEfgAAAAAAAwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAADAwAAAAADAwAAAAACAwAAAAACAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAwAAAAAAAwAAAAACAwAAAAADggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA + tiles: YgAAAAACYgAAAAACYgAAAAAAAQAAAAAAYgAAAAABYgAAAAAAYgAAAAAAYgAAAAADYgAAAAAAYgAAAAADYgAAAAACYgAAAAABYgAAAAABYgAAAAABYgAAAAAAYgAAAAACYgAAAAAAYgAAAAABYgAAAAADAQAAAAAAYgAAAAABYgAAAAABYgAAAAAAYgAAAAACYgAAAAACYgAAAAADYgAAAAABYgAAAAACYgAAAAACYgAAAAAAYgAAAAACYgAAAAADYgAAAAAAYgAAAAABYgAAAAADAQAAAAAAYgAAAAADYgAAAAACYgAAAAAAYgAAAAACYgAAAAABYgAAAAADYgAAAAABYgAAAAABYgAAAAAAYgAAAAAAYgAAAAADYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAwAAAAADAwAAAAABBwAAAAAEAwAAAAABAwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAADfgAAAAACfgAAAAACBwAAAAABAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAACBwAAAAAFBwAAAAAFfgAAAAABAwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAACfgAAAAACfgAAAAABBwAAAAADAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAABBwAAAAADfgAAAAABfgAAAAACAwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAACfgAAAAAABwAAAAAFfgAAAAABAwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAwAAAAACAwAAAAADAwAAAAABAwAAAAAAAwAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAwAAAAACAwAAAAACAwAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA version: 6 -3,1: ind: -3,1 - tiles: AgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAACIAAAAAADIAAAAAAAIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAIAAAAAABcAAAAAAAggAAAAAABQAAAAAAIAAAAAACIAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAAIAAAAAAAcAAAAAAAggAAAAAABQAAAAAAIAAAAAAAIAAAAAADggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAAggAAAAAABQAAAAAAIAAAAAACBQAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAAIAAAAAADcAAAAAAAggAAAAAABQAAAAAAIAAAAAADIAAAAAACggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAABQAAAAAABQAAAAAABQAAAAAAIAAAAAABcAAAAAAAggAAAAAABQAAAAAAIAAAAAABIAAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAcAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAIAAAAAACYgAAAAADggAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAIAAAAAADIAAAAAACIAAAAAADIAAAAAABIAAAAAAAIAAAAAABIAAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAEAAAAAAAggAAAAAABQAAAAAAIAAAAAABIAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAEAAAAAAABQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAAggAAAAAABQAAAAAAIAAAAAABIAAAAAACggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAcAAAAAAABQAAAAAAAQAAAAAABQAAAAAAggAAAAAAggAAAAAABQAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAEAAAAAAABQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABQAAAAAAggAAAAAABQAAAAAAIAAAAAACIAAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAEAAAAAAAggAAAAAABQAAAAAAIAAAAAAAIAAAAAABggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAIAAAAAAAYgAAAAACggAAAAAA version: 6 2,-3: ind: 2,-3 @@ -187,15 +188,15 @@ entities: version: 6 -3,0: ind: -3,0 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAcAAAAAAAcAAAAAAAcAAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAADIAAAAAABIAAAAAABIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAIAAAAAACcAAAAAAAcAAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAABQAAAAAAIAAAAAABIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAADIAAAAAACIAAAAAADEAAAAAAAggAAAAAAggAAAAAAggAAAAAA version: 6 -2,1: ind: -2,1 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAABAQAAAAAAIAAAAAADIAAAAAAAIAAAAAAABgAAAAADggAAAAAAggAAAAAAcAAAAAAAggAAAAAAcAAAAAAAggAAAAAAcAAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAABAQAAAAAAIAAAAAABIAAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAcAAAAAAAggAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAADYgAAAAACggAAAAAAYgAAAAADYgAAAAABYgAAAAADYgAAAAADYgAAAAAAYgAAAAADYgAAAAACYgAAAAADAQAAAAAAYgAAAAAAYgAAAAACYgAAAAAAYgAAAAAAYgAAAAADYgAAAAADAQAAAAAAYgAAAAAAYgAAAAACYgAAAAADYgAAAAACYgAAAAAAYgAAAAABYgAAAAABYgAAAAAAAQAAAAAAYgAAAAADYgAAAAACYgAAAAACYgAAAAADYgAAAAADYgAAAAADggAAAAAAIAAAAAABIAAAAAACIAAAAAABIAAAAAACIAAAAAABIAAAAAACIAAAAAACIAAAAAACggAAAAAAYgAAAAAAYgAAAAACYgAAAAADYgAAAAAAYgAAAAADYgAAAAABggAAAAAAIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAACIAAAAAACggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAABfgAAAAADggAAAAAAIAAAAAABIAAAAAADIAAAAAADIAAAAAAAIAAAAAADggAAAAAAAQAAAAAAggAAAAAABgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAADBwAAAAABAQAAAAAAIAAAAAABIAAAAAAAIAAAAAAAIAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAADBwAAAAABggAAAAAAIAAAAAAAIAAAAAABIAAAAAAAIAAAAAABcAAAAAAAggAAAAAAIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAABgAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAADQAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAACggAAAAAAcAAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAAAAQAAAAAAIAAAAAADIAAAAAABIAAAAAABBgAAAAACggAAAAAAggAAAAAAcAAAAAAAggAAAAAAcAAAAAAAggAAAAAAcAAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAADAQAAAAAAIAAAAAACIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAcAAAAAAAggAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAADYgAAAAACggAAAAAAYgAAAAAAYgAAAAACYgAAAAADYgAAAAAAYgAAAAACYgAAAAAAYgAAAAABYgAAAAABAQAAAAAAYgAAAAABYgAAAAADYgAAAAABYgAAAAACYgAAAAACYgAAAAABAQAAAAAAYgAAAAABYgAAAAADYgAAAAADYgAAAAADYgAAAAAAYgAAAAACYgAAAAADYgAAAAADAQAAAAAAYgAAAAABYgAAAAACYgAAAAAAYgAAAAAAYgAAAAADYgAAAAABggAAAAAAIAAAAAADIAAAAAABIAAAAAAAIAAAAAADIAAAAAACIAAAAAADIAAAAAABIAAAAAABggAAAAAAYgAAAAABYgAAAAACYgAAAAACYgAAAAADYgAAAAABYgAAAAACggAAAAAAIAAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAADggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAAFfgAAAAACggAAAAAAIAAAAAABIAAAAAAAIAAAAAADIAAAAAABIAAAAAADggAAAAAAAQAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAACBwAAAAADAQAAAAAAIAAAAAACIAAAAAABIAAAAAACIAAAAAABIAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAACBwAAAAABggAAAAAAIAAAAAADIAAAAAACIAAAAAACIAAAAAABcAAAAAAAggAAAAAAIAAAAAABggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAADQAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAACggAAAAAAcAAAAAAAggAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAcAAAAAAAcAAAAAAAggAAAAAAggAAAAAAcAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA version: 6 -3,-3: ind: -3,-3 - tiles: AAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAACAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAABfgAAAAABBwAAAAADfgAAAAACBwAAAAADggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAADggAAAAAAggAAAAAABwAAAAACfgAAAAAAfgAAAAADfgAAAAADfgAAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAADIAAAAAABIAAAAAADIAAAAAADggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAAAIAAAAAAAIAAAAAABggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAADIAAAAAAAIAAAAAADggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAABggAAAAAAfgAAAAAAfgAAAAAABwAAAAAAIAAAAAACIAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAABfgAAAAAAfgAAAAABIAAAAAADIAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAJAAAAAACZAAAAAADZAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAJAAAAAABZAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAAAIAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAZAAAAAADZAAAAAAAZAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAABIAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAZAAAAAABZAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAAAIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAABggAAAAAAggAAAAAAggAAAAAA + tiles: AAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAADAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAABfgAAAAACBwAAAAADfgAAAAACBwAAAAAEggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAAAggAAAAAAggAAAAAABwAAAAACfgAAAAADfgAAAAACfgAAAAAAfgAAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAABgAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAABIAAAAAABIAAAAAADIAAAAAACIAAAAAADggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAAAIAAAAAADIAAAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAABIAAAAAAAIAAAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAADggAAAAAAfgAAAAABfgAAAAABBwAAAAAFIAAAAAAAIAAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAAGfgAAAAADfgAAAAAAIAAAAAAAIAAAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAJAAAAAACZAAAAAABZAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAJAAAAAABZAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAAAIAAAAAACggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAZAAAAAADZAAAAAAAZAAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAACIAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAZAAAAAADZAAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAACIAAAAAACIAAAAAACIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAggAAAAAAIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAA version: 6 -1,-4: ind: -1,-4 @@ -211,11 +212,11 @@ entities: version: 6 -4,-2: ind: -4,-2 - tiles: YgAAAAABDQAAAAABYgAAAAAAYgAAAAABYgAAAAABYgAAAAADYgAAAAACYgAAAAACYgAAAAABYgAAAAADYgAAAAACYgAAAAACYgAAAAADYgAAAAACYgAAAAABYgAAAAABggAAAAAAYgAAAAAADgAAAAADYgAAAAADYgAAAAADggAAAAAAYgAAAAADYgAAAAACYgAAAAAAYgAAAAACYgAAAAABYgAAAAACYgAAAAACYgAAAAABYgAAAAADYgAAAAAAYgAAAAACYgAAAAADggAAAAAAYgAAAAACYgAAAAADYgAAAAABYgAAAAAAYgAAAAABYgAAAAABYgAAAAACYgAAAAACYgAAAAACYgAAAAADYgAAAAADYgAAAAAAYgAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: YgAAAAACDQAAAAACYgAAAAAAYgAAAAABYgAAAAADYgAAAAACYgAAAAAAYgAAAAABYgAAAAAAYgAAAAACYgAAAAACYgAAAAABYgAAAAAAYgAAAAABYgAAAAADYgAAAAAAggAAAAAAYgAAAAABDgAAAAABYgAAAAACYgAAAAADggAAAAAAYgAAAAADYgAAAAACYgAAAAABYgAAAAADYgAAAAABYgAAAAABYgAAAAADYgAAAAAAYgAAAAACYgAAAAAAYgAAAAACYgAAAAABggAAAAAAYgAAAAADYgAAAAADYgAAAAACYgAAAAADYgAAAAADYgAAAAADYgAAAAADYgAAAAACYgAAAAACYgAAAAACYgAAAAAAYgAAAAABYgAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAADIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -5,-2: ind: -5,-2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAABggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAggAAAAAAAQAAAAAADQAAAAAADgAAAAADYgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAggAAAAAAYgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAQAAAAAAggAAAAAAAQAAAAAADQAAAAACDgAAAAABYgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADggAAAAAAYgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -5,-3: ind: -5,-3 @@ -223,27 +224,27 @@ entities: version: 6 -4,-3: ind: -4,-3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAADIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAA version: 6 -4,-1: ind: -4,-1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAIAAAAAADIAAAAAABIAAAAAABIAAAAAABIAAAAAABIAAAAAADIAAAAAADIAAAAAADAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAIAAAAAADIAAAAAAAIAAAAAACIAAAAAABIAAAAAACIAAAAAADIAAAAAAAIAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAACIAAAAAABAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAIAAAAAADIAAAAAADIAAAAAABIAAAAAAAIAAAAAABIAAAAAABIAAAAAADIAAAAAADAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAIAAAAAABIAAAAAADIAAAAAACIAAAAAAAIAAAAAACIAAAAAABIAAAAAADIAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 2,1: ind: 2,1 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAADBAAAAAACggAAAAAABAAAAAACBAAAAAACBAAAAAADBAAAAAAABAAAAAACBAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABAAAAAAABAAAAAAAAQAAAAAABAAAAAACBAAAAAADBAAAAAACBAAAAAADBAAAAAACBAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABAAAAAABBAAAAAADggAAAAAABAAAAAADBAAAAAABBAAAAAABBAAAAAADBAAAAAABBAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAAAIAAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAAFggAAAAAABwAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAABggAAAAAAggAAAAAAggAAAAAAfgAAAAADBwAAAAAEDQAAAAABAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAABggAAAAAABgAAAAADggAAAAAABwAAAAAGBwAAAAACfgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAfgAAAAACggAAAAAABwAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABAAAAAADBAAAAAAAggAAAAAABAAAAAAABAAAAAABBAAAAAABBAAAAAACBAAAAAACBAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABAAAAAAABAAAAAAAAQAAAAAABAAAAAAABAAAAAAABAAAAAACBAAAAAABBAAAAAAABAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABAAAAAACBAAAAAABggAAAAAABAAAAAAABAAAAAABBAAAAAAABAAAAAADBAAAAAABBAAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAIAAAAAABIAAAAAAAIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAABgAAAAADggAAAAAAggAAAAAAggAAAAAAIAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABwAAAAACggAAAAAABwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAABggAAAAAAggAAAAAAggAAAAAAfgAAAAAABwAAAAAADQAAAAABAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAfgAAAAAAggAAAAAABgAAAAABggAAAAAABwAAAAADBwAAAAADfgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAfgAAAAABggAAAAAABwAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAABgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAA version: 6 0,2: ind: 0,2 - tiles: ggAAAAAAggAAAAAABgAAAAAAAQAAAAAAYgAAAAAAYgAAAAABYgAAAAAAYgAAAAAAYgAAAAACYgAAAAAAYgAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAACYgAAAAAAYgAAAAADYgAAAAABYgAAAAABYgAAAAAAYgAAAAACAQAAAAAAAQAAAAAAYgAAAAAAfgAAAAABBwAAAAAEfgAAAAABggAAAAAAYgAAAAACYgAAAAADYgAAAAABYgAAAAADYgAAAAACYgAAAAADYgAAAAABYgAAAAAAYgAAAAABYgAAAAAAYgAAAAACYgAAAAACBwAAAAAFfgAAAAACBwAAAAAEggAAAAAAYgAAAAABYgAAAAADcAAAAAAAcAAAAAAAYgAAAAAAcAAAAAAAcAAAAAAAYgAAAAADYgAAAAADcAAAAAAAcAAAAAAAYgAAAAADggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAABcAAAAAAAcAAAAAAAYgAAAAABcAAAAAAAcAAAAAAAYgAAAAADYgAAAAABcAAAAAAAcAAAAAAAYgAAAAABIAAAAAACIAAAAAADIAAAAAAAggAAAAAAYgAAAAADYgAAAAACcAAAAAAAcAAAAAAAYgAAAAABcAAAAAAAcAAAAAAAYgAAAAADYgAAAAADcAAAAAAAcAAAAAAAYgAAAAADIAAAAAAAIAAAAAAAIAAAAAADggAAAAAAYgAAAAACYgAAAAABYgAAAAACYgAAAAACYgAAAAAAYgAAAAACYgAAAAADYgAAAAACYgAAAAAAYgAAAAABYgAAAAABYgAAAAABIAAAAAABIAAAAAABIAAAAAABAQAAAAAAAQAAAAAAYgAAAAADYgAAAAADYgAAAAAAYgAAAAADYgAAAAADYgAAAAAAYgAAAAACYgAAAAACYgAAAAABYgAAAAAAYgAAAAAAIAAAAAABIAAAAAADIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: ggAAAAAAggAAAAAABgAAAAACAQAAAAAAYgAAAAACYgAAAAAAYgAAAAAAYgAAAAADYgAAAAACYgAAAAABYgAAAAACggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACYgAAAAACYgAAAAAAYgAAAAAAYgAAAAACYgAAAAAAYgAAAAACYgAAAAACAQAAAAAAAQAAAAAAYgAAAAACfgAAAAADBwAAAAAEfgAAAAADggAAAAAAYgAAAAACYgAAAAADYgAAAAABYgAAAAAAYgAAAAACYgAAAAAAYgAAAAACYgAAAAABYgAAAAADYgAAAAAAYgAAAAADYgAAAAAABwAAAAAFfgAAAAACBwAAAAADggAAAAAAYgAAAAADYgAAAAACcAAAAAAAcAAAAAAAYgAAAAACcAAAAAAAcAAAAAAAYgAAAAADYgAAAAADcAAAAAAAcAAAAAAAYgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAAAcAAAAAAAcAAAAAAAYgAAAAADcAAAAAAAcAAAAAAAYgAAAAAAYgAAAAAAcAAAAAAAcAAAAAAAYgAAAAADIAAAAAABIAAAAAADIAAAAAABggAAAAAAYgAAAAABYgAAAAACcAAAAAAAcAAAAAAAYgAAAAAAcAAAAAAAcAAAAAAAYgAAAAABYgAAAAACcAAAAAAAcAAAAAAAYgAAAAABIAAAAAABIAAAAAACIAAAAAADggAAAAAAYgAAAAAAYgAAAAABYgAAAAABYgAAAAADYgAAAAAAYgAAAAABYgAAAAAAYgAAAAADYgAAAAADYgAAAAABYgAAAAAAYgAAAAADIAAAAAACIAAAAAADIAAAAAABAQAAAAAAAQAAAAAAYgAAAAADYgAAAAABYgAAAAAAYgAAAAAAYgAAAAACYgAAAAACYgAAAAACYgAAAAADYgAAAAACYgAAAAAAYgAAAAABIAAAAAAAIAAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 1,2: ind: 1,2 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAYgAAAAABggAAAAAAIAAAAAADDAAAAAACDAAAAAABIAAAAAABggAAAAAAggAAAAAAggAAAAAAAQAAAAAAZAAAAAAAZAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABggAAAAAAIAAAAAACDAAAAAACDAAAAAABIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAZAAAAAACZAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAYgAAAAACAQAAAAAAYgAAAAADYgAAAAAAYgAAAAAAYgAAAAACggAAAAAAAQAAAAAAggAAAAAAggAAAAAAZAAAAAAAZAAAAAADggAAAAAAggAAAAAAAAAAAAAAggAAAAAAYgAAAAADggAAAAAAYgAAAAAAYgAAAAACYgAAAAABYgAAAAADggAAAAAAAQAAAAAAggAAAAAAggAAAAAAZAAAAAACZAAAAAACggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAYgAAAAADAQAAAAAAYgAAAAACYgAAAAAAYgAAAAAAYgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAYgAAAAACggAAAAAAYgAAAAACYgAAAAAAYgAAAAADYgAAAAACIAAAAAAAIAAAAAABDwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAABYgAAAAACYgAAAAABIAAAAAABIAAAAAABDwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAYgAAAAABggAAAAAAIAAAAAABDAAAAAADDAAAAAADIAAAAAADggAAAAAAggAAAAAAggAAAAAAAQAAAAAAZAAAAAAAZAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADggAAAAAAIAAAAAAADAAAAAAADAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAZAAAAAACZAAAAAACggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAYgAAAAABAQAAAAAAYgAAAAADYgAAAAADYgAAAAAAYgAAAAACggAAAAAAAQAAAAAAggAAAAAAggAAAAAAZAAAAAAAZAAAAAABggAAAAAAggAAAAAAAAAAAAAAggAAAAAAYgAAAAADggAAAAAAYgAAAAABYgAAAAADYgAAAAACYgAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAZAAAAAADZAAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAYgAAAAACAQAAAAAAYgAAAAADYgAAAAAAYgAAAAACYgAAAAADggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAYgAAAAACggAAAAAAYgAAAAAAYgAAAAAAYgAAAAADYgAAAAABIAAAAAADIAAAAAADDwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAACYgAAAAADYgAAAAACIAAAAAAAIAAAAAADDwAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAggAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAA version: 6 -1,2: ind: -1,2 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABYgAAAAABYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAYgAAAAAAYgAAAAADYgAAAAACAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAACggAAAAAABgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAAAYgAAAAABYgAAAAACggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAACYgAAAAABYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAggAAAAAAAQAAAAAAYgAAAAABYgAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAAAYgAAAAADYgAAAAABIAAAAAAAggAAAAAABgAAAAADggAAAAAAAgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAACYgAAAAAAYgAAAAACIAAAAAACggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAAAYgAAAAAAYgAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAABIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAAAYgAAAAAAIAAAAAADggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAggAAAAAAAQAAAAAAYgAAAAAAYgAAAAAAIAAAAAACggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAABYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAABAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAADggAAAAAABgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAADggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAADYgAAAAAAYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAAAIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAggAAAAAAAQAAAAAAYgAAAAADYgAAAAABIAAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAACYgAAAAACIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAADIAAAAAADggAAAAAABgAAAAAAggAAAAAAAgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAAAYgAAAAABYgAAAAACIAAAAAADggAAAAAAAQAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAADYgAAAAABYgAAAAADIAAAAAACggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAADYgAAAAACYgAAAAADIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADYgAAAAAAIAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAggAAAAAAAQAAAAAAYgAAAAACYgAAAAADIAAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAYgAAAAADIAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAA version: 6 2,2: ind: 2,2 @@ -259,15 +260,15 @@ entities: version: 6 -2,2: ind: -2,2 - tiles: YgAAAAADggAAAAAAggAAAAAADgAAAAAEggAAAAAAggAAAAAAYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAADgAAAAACYgAAAAAAYgAAAAACYgAAAAADYgAAAAACYgAAAAAADQAAAAAAYgAAAAABYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAAAggAAAAAAIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAIAAAAAABIAAAAAACIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: YgAAAAACggAAAAAAggAAAAAADgAAAAACggAAAAAAggAAAAAAYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAADAQAAAAAAggAAAAAAggAAAAAAggAAAAAADgAAAAAEYgAAAAAAYgAAAAAAYgAAAAACYgAAAAAAYgAAAAABDQAAAAACYgAAAAABYgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAIAAAAAAAIAAAAAAAggAAAAAAIAAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAIAAAAAACIAAAAAABIAAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAAQAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -3,2: ind: -3,2 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAIAAAAAADDgAAAAAADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAIAAAAAACggAAAAAAYgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAIAAAAAADIAAAAAACIAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAIAAAAAADDgAAAAAEDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAIAAAAAABggAAAAAAYgAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAIAAAAAACIAAAAAAAIAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 -4,1: ind: -4,1 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA version: 6 3,-3: ind: 3,-3 @@ -275,7 +276,7 @@ entities: version: 6 -1,3: ind: -1,3 - tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAABDgAAAAAEYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAADQAAAAABYgAAAAADYgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAABYgAAAAAADgAAAAADggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAACYgAAAAADDQAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAADggAAAAAAYgAAAAAAggAAAAAAggAAAAAABgAAAAACggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAA + tiles: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAABDgAAAAAEYgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAADQAAAAABYgAAAAACYgAAAAACggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAYgAAAAAAYgAAAAADDgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAADYgAAAAADDQAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAYgAAAAACggAAAAAAYgAAAAAAggAAAAAAggAAAAAABgAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAABgAAAAABggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAAQAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAA version: 6 -2,3: ind: -2,3 @@ -287,7 +288,7 @@ entities: version: 6 3,0: ind: 3,0 - tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADQAAAAABggAAAAAAfgAAAAACBwAAAAACfgAAAAABggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAfgAAAAACBwAAAAADBwAAAAABggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAA + tiles: ggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAADQAAAAACggAAAAAAfgAAAAABBwAAAAAGfgAAAAADggAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAggAAAAAAggAAAAAAfgAAAAACBwAAAAABBwAAAAACggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAggAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAA version: 6 0,-4: ind: 0,-4 @@ -443,8 +444,6 @@ entities: 12555: 56,-22 12740: 15,25 12741: 12,23 - 13286: -40,22 - 13287: -40,18 - node: color: '#D4D4D496' id: BotGreyscale @@ -491,6 +490,8 @@ entities: 12558: 53,-18 12559: 56,-21 12623: 20,-25 + 13397: -41,14 + 13398: -40,14 - node: angle: 1.5707963267948966 rad color: '#D4D4D496' @@ -709,7 +710,8 @@ entities: 6281: -23,-34 6460: 4,21 11873: 21,-14 - 13274: -36,22 + 13405: -36,22 + 13416: -36,16 - node: color: '#DE3A3A96' id: BrickTileSteelCornerNe @@ -792,7 +794,6 @@ entities: 5337: -5,-41 6280: -26,-34 6461: 3,21 - 13259: -42,16 - node: color: '#DE3A3A96' id: BrickTileSteelCornerNw @@ -869,8 +870,7 @@ entities: 5338: -3,-42 6462: 4,19 11874: 21,-15 - 13262: -37,15 - 13275: -36,18 + 13404: -36,18 - node: color: '#DE3A3A96' id: BrickTileSteelCornerSe @@ -950,7 +950,6 @@ entities: 4026: -11,24 5339: -5,-42 6459: 3,19 - 13261: -42,15 - node: color: '#DE3A3A96' id: BrickTileSteelCornerSw @@ -1047,9 +1046,10 @@ entities: id: BrickTileSteelInnerNe decals: 5341: -4,-41 - 13267: -41,16 - 13280: -37,22 - 13281: -36,20 + 13408: -37,22 + 13409: -36,20 + 13420: -37,16 + 13434: -41,16 - node: color: '#DE3A3A96' id: BrickTileSteelInnerNe @@ -1111,9 +1111,8 @@ entities: id: BrickTileSteelInnerNw decals: 5340: -4,-41 - 13266: -41,16 - 13268: -37,16 - 13279: -37,20 + 13422: -37,16 + 13433: -41,16 - node: color: '#DE3A3A96' id: BrickTileSteelInnerNw @@ -1180,8 +1179,8 @@ entities: color: '#D4D4D496' id: BrickTileSteelInnerSe decals: - 13276: -37,18 - 13282: -36,20 + 13410: -37,18 + 13411: -36,20 - node: color: '#DE3A3A96' id: BrickTileSteelInnerSe @@ -1245,11 +1244,6 @@ entities: 12201: -19,16 12211: -14,11 12288: -19,19 - - node: - color: '#D4D4D496' - id: BrickTileSteelInnerSw - decals: - 13285: -37,20 - node: color: '#DE3A3A96' id: BrickTileSteelInnerSw @@ -1338,9 +1332,8 @@ entities: 11862: 20,-17 11863: 20,-18 11870: 20,-19 - 13260: -37,16 - 13283: -36,21 - 13284: -36,19 + 13406: -36,21 + 13407: -36,19 - node: color: '#DE3A3A96' id: BrickTileSteelLineE @@ -1497,10 +1490,10 @@ entities: 6283: -24,-34 11858: 19,-14 11872: 20,-14 - 13263: -40,16 - 13264: -39,16 - 13265: -38,16 - 13278: -38,20 + 13412: -42,16 + 13413: -40,16 + 13414: -39,16 + 13415: -38,16 - node: color: '#DE3A3A96' id: BrickTileSteelLineN @@ -1653,11 +1646,8 @@ entities: 5342: -4,-42 11868: 19,-15 11871: 20,-15 - 13255: -41,15 - 13256: -40,15 - 13257: -39,15 - 13258: -38,15 - 13277: -38,20 + 13417: -42,14 + 13418: -39,14 - node: color: '#DE3A3A96' id: BrickTileSteelLineS @@ -1768,15 +1758,11 @@ entities: 11855: 19,-17 11856: 19,-16 11869: 19,-19 - 13250: -41,18 - 13251: -41,19 - 13252: -41,20 - 13253: -41,21 - 13254: -41,22 - 13269: -37,18 - 13270: -37,19 - 13272: -37,21 - 13273: -37,22 + 13399: -37,22 + 13400: -37,21 + 13401: -37,20 + 13402: -37,19 + 13403: -37,18 - node: color: '#DE3A3A96' id: BrickTileSteelLineW @@ -3688,24 +3674,6 @@ entities: 13183: -25,33 13184: -24,33 13185: -26,32 - 13288: -45,19 - 13289: -41,22 - 13290: -40,21 - 13291: -41,19 - 13292: -40,18 - 13293: -42,16 - 13294: -41,14 - 13295: -40,15 - 13296: -39,16 - 13297: -38,14 - 13298: -36,15 - 13299: -37,16 - 13300: -37,18 - 13301: -38,20 - 13302: -37,22 - 13303: -36,21 - 13304: -37,19 - 13305: -36,18 13306: -34,21 13307: -33,19 13308: -34,24 @@ -3717,7 +3685,6 @@ entities: 13337: -35,12 13339: -34,14 13340: -32,17 - 13341: -31,15 13360: -28,-49 13361: -27,-50 13362: -23,-48 @@ -3727,6 +3694,21 @@ entities: 13379: -41,26 13380: -40,24 13381: -39,26 + 13438: -44,16 + 13439: -43,14 + 13440: -42,15 + 13441: -40,16 + 13442: -37,15 + 13443: -39,14 + 13444: -36,18 + 13445: -37,19 + 13446: -38,20 + 13447: -41,21 + 13448: -43,18 + 13449: -44,22 + 13450: -46,20 + 13451: -36,21 + 13452: -41,22 - node: cleanable: True angle: 1.5707963267948966 rad @@ -4636,16 +4618,6 @@ entities: 13192: -24,30 13193: -26,33 13194: -30,35 - 13316: -41,21 - 13317: -45,20 - 13318: -41,20 - 13319: -40,19 - 13320: -42,15 - 13321: -40,16 - 13322: -38,15 - 13323: -37,14 - 13324: -36,19 - 13325: -37,21 13326: -37,24 13327: -36,25 13328: -34,19 @@ -4660,6 +4632,20 @@ entities: 13368: -24,-50 13382: -41,24 13383: -38,24 + 13453: -45,18 + 13454: -44,20 + 13455: -42,18 + 13456: -39,16 + 13457: -38,15 + 13458: -42,14 + 13459: -43,15 + 13460: -41,19 + 13461: -36,15 + 13462: -40,18 + 13463: -46,21 + 13464: -40,22 + 13465: -37,21 + 13480: -37,17 - node: cleanable: True angle: 1.5707963267948966 rad @@ -5194,14 +5180,20 @@ entities: 13200: -25,32 13201: -27,32 13202: -35,34 - 13348: -36,20 - 13349: -41,15 - 13350: -40,22 - 13351: -37,15 13369: -27,-50 13370: -22,-49 13384: -39,24 13385: -38,26 + 13466: -42,22 + 13467: -44,22 + 13468: -42,16 + 13469: -44,14 + 13470: -44,16 + 13471: -41,14 + 13472: -38,14 + 13473: -36,15 + 13474: -36,19 + 13475: -37,20 - node: cleanable: True angle: 1.5707963267948966 rad @@ -5836,6 +5828,10 @@ entities: 13345: -33,23 13346: -32,25 13386: -40,26 + 13476: -46,19 + 13477: -38,16 + 13478: -37,18 + 13479: -41,17 - node: cleanable: True angle: 1.5707963267948966 rad @@ -7143,21 +7139,26 @@ entities: id: WarnCornerNE decals: 6417: 2,-21 + 13393: -46,19 - node: color: '#D4D4D496' id: WarnCornerNW decals: 6418: 0,-21 + 13391: -36,15 + 13392: -40,18 - node: color: '#D4D4D496' id: WarnCornerSE decals: 6419: 2,-27 + 13394: -46,21 - node: color: '#D4D4D496' id: WarnCornerSW decals: 6420: 0,-27 + 13395: -40,22 - node: color: '#D4D4D496' id: WarnCornerSmallGreyscaleNE @@ -7175,6 +7176,7 @@ entities: id: WarnCornerSmallGreyscaleNW decals: 12621: 54,-22 + 13428: -41,18 - node: color: '#D4D4D496' id: WarnCornerSmallGreyscaleSE @@ -7191,6 +7193,7 @@ entities: id: WarnCornerSmallGreyscaleSW decals: 12619: 54,-20 + 13427: -41,22 - node: color: '#D4D4D496' id: WarnCornerSmallNE @@ -7418,14 +7421,14 @@ entities: 13232: -33,29 13233: -33,26 13234: -37,23 - 13235: -37,17 - 13236: -41,17 13237: -33,18 13238: -33,22 13352: -27,-48 13353: -27,-51 13354: -23,-51 13355: -23,-48 + 13389: -41,17 + 13390: -37,17 - node: color: '#64646493' id: WarnLineGreyscaleE @@ -7527,6 +7530,8 @@ entities: id: WarnLineGreyscaleN decals: 12616: 53,-22 + 13423: -45,18 + 13424: -42,18 - node: color: '#DE3A3A96' id: WarnLineGreyscaleN @@ -7570,6 +7575,10 @@ entities: id: WarnLineGreyscaleS decals: 12618: 53,-20 + 13425: -45,22 + 13426: -42,22 + 13429: -37,15 + 13430: -38,15 - node: color: '#55DC0D93' id: WarnLineGreyscaleW @@ -7625,6 +7634,7 @@ entities: id: WarnLineGreyscaleW decals: 12615: 54,-21 + 13396: -43,15 - node: color: '#D4D4D496' id: WarnLineN @@ -7996,8 +8006,6 @@ entities: 13229: -20,56 13230: -33,26 13231: -33,29 - 13239: -41,17 - 13240: -37,17 13241: -37,23 13242: -33,18 13243: -33,22 @@ -8005,6 +8013,8 @@ entities: 13357: -27,-51 13358: -23,-51 13359: -23,-48 + 13387: -41,17 + 13388: -37,17 - node: color: '#D4D4D496' id: WarnLineW @@ -8573,6 +8583,9 @@ entities: 13212: -28,34 13217: -30,27 13220: -32,28 + 13435: -40,19 + 13436: -45,22 + 13437: -39,15 - node: cleanable: True angle: 1.5707963267948966 rad @@ -9321,7 +9334,7 @@ entities: 0: 65520 10,-9: 0: 17984 - 4: 1 + 6: 1 3: 2444 11,-7: 0: 65518 @@ -9579,7 +9592,7 @@ entities: 0: 25838 -8,3: 3: 17 - 0: 47308 + 0: 55500 -9,3: 0: 54374 -7,1: @@ -9685,7 +9698,7 @@ entities: 0: 4881 3: 8226 2: 8 - 5: 2048 + 4: 2048 4,-13: 0: 4369 3: 17508 @@ -9694,7 +9707,7 @@ entities: 0: 36096 5,-10: 2: 3 - 5: 768 + 4: 768 3: 32904 0: 2048 5,-9: @@ -9858,43 +9871,45 @@ entities: -10,-9: 0: 47803 -12,4: - 3: 1 - 0: 39170 + 0: 51201 -12,3: - 3: 15360 - 0: 32768 + 3: 12288 -13,4: - 3: 34944 - -12,5: - 0: 2456 + 3: 29081 + 0: 32768 -13,5: - 3: 34952 + 0: 136 + 3: 37233 -12,6: - 3: 3121 - 0: 130 + 0: 129 + 3: 3120 + -13,6: + 3: 4377 + -12,5: + 0: 2252 -11,4: - 0: 53004 + 0: 36623 -11,5: - 0: 4045 + 0: 3979 -11,6: 0: 2200 3: 256 -11,3: - 0: 56320 - 3: 268 + 0: 65291 -11,7: - 3: 12 + 3: 3136 + 0: 8 -10,4: - 0: 56719 + 0: 56591 -10,5: 0: 36317 -10,6: 0: 4095 -10,7: - 3: 52239 + 0: 13 + 3: 52992 -10,3: - 0: 64768 - 3: 15 + 0: 65293 -10,8: 3: 52292 -9,4: @@ -9904,7 +9919,7 @@ entities: -9,6: 0: 51709 -9,7: - 3: 17 + 3: 16 0: 60556 -9,8: 0: 3822 @@ -9927,17 +9942,17 @@ entities: 3: 4113 0: 256 2: 12 - 6: 3072 + 5: 3072 9,-9: 3: 1025 0: 2832 - 4: 12 + 6: 12 10,-11: 3: 295 0: 17920 10,-10: 2: 1 - 6: 256 + 5: 256 3: 18508 0: 1024 10,-12: @@ -9986,12 +10001,14 @@ entities: 3: 4096 9,-14: 3: 112 + -11,2: + 3: 19456 + -10,2: + 3: 36744 -10,0: 3: 34816 -10,1: 3: 34952 - -10,2: - 3: 2184 -8,8: 0: 53247 -7,4: @@ -10009,7 +10026,7 @@ entities: -6,6: 0: 3581 -6,7: - 0: 23887 + 0: 21839 -6,8: 0: 24669 -5,6: @@ -10377,6 +10394,22 @@ entities: 0: 26119 -10,9: 3: 136 + -14,4: + 3: 50252 + -14,3: + 3: 17604 + -14,5: + 3: 17604 + -14,6: + 3: 50252 + -14,7: + 3: 19524 + -13,7: + 3: 4369 + -13,3: + 3: 4369 + -13,8: + 3: 1 -4,13: 0: 61440 3: 64 @@ -10505,6 +10538,10 @@ entities: 3: 136 -18,-3: 3: 246 + -14,2: + 3: 18432 + -13,2: + 3: 4369 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -10566,21 +10603,6 @@ entities: - 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: @@ -10611,6 +10633,21 @@ entities: - 0 - 0 - 0 + - volume: 2500 + temperature: 293.15 + moles: + - 0 + - 6666.982 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 chunkSize: 4 - type: GasTileOverlay - type: RadiationGridResistance @@ -10669,13 +10706,6 @@ entities: - type: InstantAction originalIconColor: '#FFFFFFFF' container: 8057 - - uid: 3800 - components: - - type: Transform - parent: 3798 - - type: InstantAction - originalIconColor: '#FFFFFFFF' - container: 3798 - proto: AirAlarm entities: - uid: 488 @@ -11706,14 +11736,14 @@ entities: name: air alarm (Engineering Locker Room) - type: Transform rot: 1.5707963267948966 rad - pos: 25.5,-14.5 + pos: 22.5,-12.5 parent: 2 - type: DeviceList devices: + - 13803 - 9209 - 9168 - 9210 - - 13803 - uid: 13789 components: - type: MetaData @@ -12492,6 +12522,56 @@ entities: - 11224 - 16478 - 16479 + - uid: 17459 + components: + - type: MetaData + name: air alarm (AI Core) + - type: Transform + pos: -42.5,23.5 + parent: 2 + - type: DeviceList + devices: + - 17521 + - 17463 + - 17520 + - uid: 17460 + components: + - type: MetaData + name: air alarm (AI Upload) + - type: Transform + pos: -37.5,17.5 + parent: 2 + - type: DeviceList + devices: + - 17498 + - 17531 + - 17499 + - uid: 17461 + components: + - type: MetaData + name: air alarm (AI Entrance) + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,18.5 + parent: 2 + - type: DeviceList + devices: + - 17484 + - 17464 + - 17488 + - uid: 17462 + components: + - type: MetaData + name: air alarm (Camera Servers) + - type: Transform + rot: 3.141592653589793 rad + pos: -35.5,23.5 + parent: 2 + - type: DeviceList + devices: + - 17529 + - 17530 + - 17465 - proto: AirAlarmElectronics entities: - uid: 15137 @@ -12905,13 +12985,6 @@ entities: - type: Transform pos: -40.5,-10.5 parent: 2 - - uid: 17376 - components: - - type: MetaData - name: airlock (AI) - - type: Transform - pos: -36.5,17.5 - parent: 2 - proto: AirlockDetectiveLocked entities: - uid: 1948 @@ -13148,7 +13221,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5306: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5306 components: - type: Transform @@ -13159,7 +13233,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5137: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7076 components: - type: Transform @@ -13184,7 +13259,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1201: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1201 components: - type: Transform @@ -13195,7 +13271,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1196: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassCargoLocked entities: - uid: 6502 @@ -13219,7 +13296,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7671: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7671 components: - type: Transform @@ -13231,7 +13309,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7670: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 1184 @@ -13245,7 +13324,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5592: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1363 components: - type: Transform @@ -13257,7 +13337,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1364: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1364 components: - type: Transform @@ -13269,7 +13350,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1363: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2749 components: - type: Transform @@ -13280,7 +13362,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8435: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5592 components: - type: Transform @@ -13292,7 +13375,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1184: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7698 components: - type: Transform @@ -13304,7 +13388,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7784: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7784 components: - type: Transform @@ -13316,7 +13401,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7698: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8435 components: - type: Transform @@ -13328,7 +13414,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2749: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9751 components: - type: Transform @@ -13339,7 +13426,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12652: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12652 components: - type: Transform @@ -13350,7 +13438,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9751: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 6194 @@ -13363,7 +13452,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15710: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8145 components: - type: Transform @@ -13375,7 +13465,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8146: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8146 components: - type: Transform @@ -13387,7 +13478,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8145: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14221 components: - type: Transform @@ -13398,7 +13490,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14271: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14271 components: - type: Transform @@ -13409,7 +13502,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14221: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14715 components: - type: Transform @@ -13421,7 +13515,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14786: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14786 components: - type: Transform @@ -13433,7 +13528,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14715: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 7058 @@ -13585,7 +13681,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6194: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockFreezerHydroponicsLocked entities: - uid: 247 @@ -14258,7 +14355,7 @@ entities: pos: 47.5,5.5 parent: 2 - type: Door - secondsUntilStateChange: -409195.16 + secondsUntilStateChange: -418632.5 state: Opening - type: DeviceLinkSource lastSignals: @@ -14507,12 +14604,11 @@ entities: parent: 2 - proto: AirlockMaintTheatreLocked entities: - - uid: 254 + - uid: 303 components: - type: MetaData name: maintenance access (Theatre) - type: Transform - rot: -1.5707963267948966 rad pos: 6.5,11.5 parent: 2 - proto: AirlockMedicalGlassLocked @@ -14733,7 +14829,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9586: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9586 components: - type: MetaData @@ -14746,7 +14843,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7036: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11249 components: - type: MetaData @@ -14881,14 +14979,6 @@ entities: parent: 2 - proto: AirlockTheatreLocked entities: - - uid: 248 - components: - - type: MetaData - name: airlock (Theatre) - - type: Transform - rot: -1.5707963267948966 rad - pos: 6.5,4.5 - parent: 2 - uid: 249 components: - type: MetaData @@ -14897,6 +14987,13 @@ entities: rot: -1.5707963267948966 rad pos: 5.5,8.5 parent: 2 + - uid: 302 + components: + - type: MetaData + name: airlock (Theatre) + - type: Transform + pos: 6.5,4.5 + parent: 2 - proto: AirlockVirologyLocked entities: - uid: 3976 @@ -14912,7 +15009,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3977: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3977 components: - type: MetaData @@ -14926,7 +15024,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3976: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirSensor entities: - uid: 454 @@ -15929,6 +16028,38 @@ entities: - type: DeviceNetwork deviceLists: - 168 + - uid: 17463 + components: + - type: Transform + pos: -40.5,20.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17459 + - uid: 17464 + components: + - type: Transform + pos: -36.5,20.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17461 + - uid: 17465 + components: + - type: Transform + pos: -36.5,24.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17462 + - uid: 17531 + components: + - type: Transform + pos: -41.5,15.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17460 - proto: AltarSpawner entities: - uid: 3247 @@ -16219,20 +16350,13 @@ entities: rot: 3.141592653589793 rad pos: -15.5,10.5 parent: 2 - - uid: 5377 - components: - - type: MetaData - name: APC (AI) - - type: Transform - pos: -42.5,23.5 - parent: 2 - - uid: 5480 + - uid: 5371 components: - type: MetaData name: APC (AI Core) - type: Transform rot: -1.5707963267948966 rad - pos: -34.5,18.5 + pos: -43.5,21.5 parent: 2 - uid: 5484 components: @@ -16376,6 +16500,21 @@ entities: rot: -1.5707963267948966 rad pos: -15.5,19.5 parent: 2 + - uid: 6981 + components: + - type: MetaData + name: APC (AI Entrance) + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,19.5 + parent: 2 + - uid: 6985 + components: + - type: MetaData + name: APC (AI Upload) + - type: Transform + pos: -38.5,17.5 + parent: 2 - uid: 6999 components: - type: MetaData @@ -16544,14 +16683,6 @@ entities: rot: 3.141592653589793 rad pos: 21.5,30.5 parent: 2 - - uid: 9401 - components: - - type: MetaData - name: APC (Xenobiology) - - type: Transform - rot: -1.5707963267948966 rad - pos: -26.5,34.5 - parent: 2 - uid: 9632 components: - type: MetaData @@ -16811,6 +16942,11 @@ entities: - type: Transform pos: 35.473713,-3.596447 parent: 2 + - uid: 5521 + components: + - type: Transform + pos: -27.285604,33.997902 + parent: 2 - proto: AppraisalTool entities: - uid: 14317 @@ -16845,10 +16981,10 @@ entities: parent: 2 - proto: ArtistCircuitBoard entities: - - uid: 5505 + - uid: 5380 components: - type: Transform - pos: -41.61887,14.667942 + pos: -43.544327,16.64614 parent: 2 - proto: Ashtray entities: @@ -16884,10 +17020,10 @@ entities: parent: 2 - proto: AsimovCircuitBoard entities: - - uid: 8426 + - uid: 5102 components: - type: Transform - pos: -41.40012,14.542942 + pos: -42.6537,16.70864 parent: 2 - proto: AtmosDeviceFanDirectional entities: @@ -17821,6 +17957,18 @@ entities: rot: 3.141592653589793 rad pos: -42.5,-46.5 parent: 2 + - uid: 17253 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -32.5,15.5 + parent: 2 + - uid: 17540 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -33.5,17.5 + parent: 2 - proto: BarSign entities: - uid: 17 @@ -17857,20 +18005,26 @@ entities: - type: Transform pos: 27.824532,35.632626 parent: 2 -- proto: BaseComputer +- proto: BaseComputerAiAccess entities: - - uid: 5140 + - uid: 5445 components: - type: Transform rot: 1.5707963267948966 rad pos: -37.5,19.5 parent: 2 - - uid: 6702 + - uid: 7125 components: - type: Transform rot: 1.5707963267948966 rad pos: -37.5,18.5 parent: 2 + - uid: 17532 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -38.5,14.5 + parent: 2 - proto: BaseGasCondenser entities: - uid: 14575 @@ -18186,6 +18340,23 @@ entities: - type: Transform pos: -33.5,-53.5 parent: 2 +- proto: BlastDoorOpen + entities: + - uid: 3711 + components: + - type: Transform + pos: -38.5,20.5 + parent: 2 + - uid: 5397 + components: + - type: Transform + pos: -38.5,19.5 + parent: 2 + - uid: 6996 + components: + - type: Transform + pos: -38.5,21.5 + parent: 2 - proto: BlockGameArcade entities: - uid: 13997 @@ -18374,15 +18545,15 @@ entities: parent: 2 - proto: BorgCharger entities: - - uid: 5340 + - uid: 5530 components: - type: Transform - pos: -39.5,18.5 + pos: -40.5,14.5 parent: 2 - - uid: 6699 + - uid: 6753 components: - type: Transform - pos: -39.5,22.5 + pos: -39.5,14.5 parent: 2 - uid: 13527 components: @@ -18450,11 +18621,6 @@ entities: parent: 2 - proto: BoxFolderBlack entities: - - uid: 1247 - components: - - type: Transform - pos: -35.56182,22.582436 - parent: 2 - uid: 2035 components: - type: Transform @@ -18477,6 +18643,11 @@ entities: - type: Transform pos: -37.48572,-40.479095 parent: 2 + - uid: 5394 + components: + - type: Transform + pos: -35.594707,22.513885 + parent: 2 - uid: 10512 components: - type: Transform @@ -18725,9 +18896,12 @@ entities: - type: DeviceLinkSource linkedPorts: 1652: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 1959 components: - type: Transform @@ -18737,9 +18911,12 @@ entities: - type: DeviceLinkSource linkedPorts: 1929: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - proto: Brutepack1 entities: - uid: 17029 @@ -18811,17 +18988,11 @@ entities: - type: Transform pos: 21.5,-32.5 parent: 2 - - uid: 3822 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -42.5,17.5 - parent: 2 - - uid: 4263 + - uid: 3467 components: - type: Transform rot: -1.5707963267948966 rad - pos: -34.5,19.5 + pos: -43.5,19.5 parent: 2 - uid: 4323 components: @@ -19907,11 +20078,6 @@ entities: - type: Transform pos: 40.5,-7.5 parent: 2 - - uid: 1594 - components: - - type: Transform - pos: -44.5,19.5 - parent: 2 - uid: 1606 components: - type: Transform @@ -19972,11 +20138,6 @@ entities: - type: Transform pos: 22.5,-32.5 parent: 2 - - uid: 1730 - components: - - type: Transform - pos: -44.5,18.5 - parent: 2 - uid: 1736 components: - type: Transform @@ -21937,26 +22098,11 @@ entities: - type: Transform pos: -36.5,25.5 parent: 2 - - uid: 5407 - components: - - type: Transform - pos: -44.5,22.5 - parent: 2 - uid: 5413 components: - type: Transform pos: -41.5,25.5 parent: 2 - - uid: 5415 - components: - - type: Transform - pos: -43.5,20.5 - parent: 2 - - uid: 5418 - components: - - type: Transform - pos: -44.5,21.5 - parent: 2 - uid: 5449 components: - type: Transform @@ -22017,31 +22163,11 @@ entities: - type: Transform pos: 9.5,-27.5 parent: 2 - - uid: 5521 - components: - - type: Transform - pos: -36.5,19.5 - parent: 2 - uid: 5522 components: - type: Transform pos: 9.5,-26.5 parent: 2 - - uid: 5523 - components: - - type: Transform - pos: -34.5,18.5 - parent: 2 - - uid: 5524 - components: - - type: Transform - pos: -35.5,18.5 - parent: 2 - - uid: 5525 - components: - - type: Transform - pos: -36.5,18.5 - parent: 2 - uid: 5528 components: - type: Transform @@ -22082,16 +22208,6 @@ entities: - type: Transform pos: 13.5,-21.5 parent: 2 - - uid: 5553 - components: - - type: Transform - pos: -36.5,20.5 - parent: 2 - - uid: 5554 - components: - - type: Transform - pos: -36.5,21.5 - parent: 2 - uid: 5557 components: - type: Transform @@ -22957,6 +23073,11 @@ entities: - type: Transform pos: -21.5,33.5 parent: 2 + - uid: 6700 + components: + - type: Transform + pos: -36.5,20.5 + parent: 2 - uid: 6728 components: - type: Transform @@ -24277,16 +24398,21 @@ entities: - type: Transform pos: -2.5,20.5 parent: 2 - - uid: 8348 - components: - - type: Transform - pos: -40.5,18.5 - parent: 2 - uid: 8357 components: - type: Transform pos: 19.5,-13.5 parent: 2 + - uid: 8426 + components: + - type: Transform + pos: -44.5,21.5 + parent: 2 + - uid: 8429 + components: + - type: Transform + pos: -43.5,21.5 + parent: 2 - uid: 8434 components: - type: Transform @@ -24737,6 +24863,16 @@ entities: - type: Transform pos: -21.5,35.5 parent: 2 + - uid: 9073 + components: + - type: Transform + pos: -40.5,15.5 + parent: 2 + - uid: 9074 + components: + - type: Transform + pos: -36.5,19.5 + parent: 2 - uid: 9128 components: - type: Transform @@ -25562,6 +25698,16 @@ entities: - type: Transform pos: -11.5,23.5 parent: 2 + - uid: 9580 + components: + - type: Transform + pos: -35.5,19.5 + parent: 2 + - uid: 9591 + components: + - type: Transform + pos: -41.5,18.5 + parent: 2 - uid: 9642 components: - type: Transform @@ -27410,7 +27556,7 @@ entities: - uid: 10493 components: - type: Transform - pos: -38.5,15.5 + pos: -36.5,15.5 parent: 2 - uid: 10545 components: @@ -27497,21 +27643,11 @@ entities: - type: Transform pos: -27.5,19.5 parent: 2 - - uid: 11153 - components: - - type: Transform - pos: -40.5,15.5 - parent: 2 - uid: 11158 components: - type: Transform pos: -29.5,21.5 parent: 2 - - uid: 11179 - components: - - type: Transform - pos: -37.5,15.5 - parent: 2 - uid: 11194 components: - type: Transform @@ -27565,18 +27701,13 @@ entities: - uid: 11792 components: - type: Transform - pos: -43.5,22.5 + pos: -40.5,19.5 parent: 2 - uid: 11850 components: - type: Transform pos: -13.5,7.5 parent: 2 - - uid: 11882 - components: - - type: Transform - pos: -40.5,21.5 - parent: 2 - uid: 11929 components: - type: Transform @@ -28102,21 +28233,6 @@ entities: - type: Transform pos: -27.5,25.5 parent: 2 - - uid: 12765 - components: - - type: Transform - pos: -40.5,19.5 - parent: 2 - - uid: 12766 - components: - - type: Transform - pos: -43.5,18.5 - parent: 2 - - uid: 12781 - components: - - type: Transform - pos: -42.5,18.5 - parent: 2 - uid: 12859 components: - type: Transform @@ -28147,10 +28263,10 @@ entities: - type: Transform pos: -10.5,-43.5 parent: 2 - - uid: 13499 + - uid: 13449 components: - type: Transform - pos: -42.5,22.5 + pos: -42.5,15.5 parent: 2 - uid: 13520 components: @@ -28252,35 +28368,35 @@ entities: - type: Transform pos: -18.5,-42.5 parent: 2 - - uid: 13845 + - uid: 13874 components: - type: Transform - pos: -41.5,22.5 + pos: -40.5,21.5 parent: 2 - uid: 13883 components: - type: Transform - pos: -36.5,17.5 + pos: -36.5,21.5 parent: 2 - - uid: 13884 - components: - - type: Transform - pos: -40.5,16.5 - parent: 2 - - uid: 13898 - components: - - type: Transform - pos: -36.5,16.5 - parent: 2 - - uid: 13929 + - uid: 13886 components: - type: Transform pos: -39.5,15.5 parent: 2 - - uid: 13930 + - uid: 13898 components: - type: Transform - pos: -41.5,18.5 + pos: -42.5,18.5 + parent: 2 + - uid: 13921 + components: + - type: Transform + pos: -40.5,20.5 + parent: 2 + - uid: 13929 + components: + - type: Transform + pos: -36.5,22.5 parent: 2 - uid: 13940 components: @@ -28317,16 +28433,6 @@ entities: - type: Transform pos: -5.5,46.5 parent: 2 - - uid: 13959 - components: - - type: Transform - pos: -40.5,20.5 - parent: 2 - - uid: 13960 - components: - - type: Transform - pos: -40.5,22.5 - parent: 2 - uid: 14014 components: - type: Transform @@ -28337,6 +28443,11 @@ entities: - type: Transform pos: -12.5,-46.5 parent: 2 + - uid: 14204 + components: + - type: Transform + pos: -44.5,18.5 + parent: 2 - uid: 14228 components: - type: Transform @@ -28392,16 +28503,6 @@ entities: - type: Transform pos: -28.5,14.5 parent: 2 - - uid: 14359 - components: - - type: Transform - pos: -42.5,23.5 - parent: 2 - - uid: 14360 - components: - - type: Transform - pos: -36.5,15.5 - parent: 2 - uid: 14406 components: - type: Transform @@ -28532,6 +28633,11 @@ entities: - type: Transform pos: -14.5,-35.5 parent: 2 + - uid: 14774 + components: + - type: Transform + pos: -38.5,17.5 + parent: 2 - uid: 14825 components: - type: Transform @@ -29132,6 +29238,11 @@ entities: - type: Transform pos: -29.5,26.5 parent: 2 + - uid: 16388 + components: + - type: Transform + pos: -38.5,15.5 + parent: 2 - uid: 16396 components: - type: Transform @@ -29682,6 +29793,26 @@ entities: - type: Transform pos: -33.5,15.5 parent: 2 + - uid: 17296 + components: + - type: Transform + pos: -40.5,18.5 + parent: 2 + - uid: 17313 + components: + - type: Transform + pos: -34.5,19.5 + parent: 2 + - uid: 17315 + components: + - type: Transform + pos: -36.5,18.5 + parent: 2 + - uid: 17348 + components: + - type: Transform + pos: -44.5,19.5 + parent: 2 - uid: 17379 components: - type: Transform @@ -29732,6 +29863,26 @@ entities: - type: Transform pos: -19.5,58.5 parent: 2 + - uid: 17389 + components: + - type: Transform + pos: -43.5,18.5 + parent: 2 + - uid: 17394 + components: + - type: Transform + pos: -41.5,15.5 + parent: 2 + - uid: 17397 + components: + - type: Transform + pos: -37.5,15.5 + parent: 2 + - uid: 17402 + components: + - type: Transform + pos: -38.5,16.5 + parent: 2 - proto: CableApcStack entities: - uid: 7468 @@ -29817,6 +29968,16 @@ entities: - type: Transform pos: 14.5,-57.5 parent: 2 + - uid: 254 + components: + - type: Transform + pos: -36.5,16.5 + parent: 2 + - uid: 304 + components: + - type: Transform + pos: -37.5,14.5 + parent: 2 - uid: 323 components: - type: Transform @@ -31017,10 +31178,10 @@ entities: - type: Transform pos: 14.5,-51.5 parent: 2 - - uid: 4325 + - uid: 4299 components: - type: Transform - pos: -36.5,20.5 + pos: -35.5,20.5 parent: 2 - uid: 4351 components: @@ -31192,6 +31353,16 @@ entities: - type: Transform pos: 33.5,42.5 parent: 2 + - uid: 5348 + components: + - type: Transform + pos: -36.5,20.5 + parent: 2 + - uid: 5524 + components: + - type: Transform + pos: -36.5,18.5 + parent: 2 - uid: 5615 components: - type: Transform @@ -31585,7 +31756,7 @@ entities: - uid: 6336 components: - type: Transform - pos: -35.5,16.5 + pos: -36.5,15.5 parent: 2 - uid: 6356 components: @@ -31717,7 +31888,17 @@ entities: - type: Transform pos: 45.5,15.5 parent: 2 - - uid: 6703 + - uid: 6699 + components: + - type: Transform + pos: -36.5,14.5 + parent: 2 + - uid: 6715 + components: + - type: Transform + pos: -36.5,17.5 + parent: 2 + - uid: 6719 components: - type: Transform pos: -36.5,19.5 @@ -31747,16 +31928,6 @@ entities: - type: Transform pos: 9.5,-13.5 parent: 2 - - uid: 6753 - components: - - type: Transform - pos: -35.5,15.5 - parent: 2 - - uid: 6759 - components: - - type: Transform - pos: -35.5,20.5 - parent: 2 - uid: 6764 components: - type: Transform @@ -32027,11 +32198,6 @@ entities: - type: Transform pos: 10.5,-13.5 parent: 2 - - uid: 6985 - components: - - type: Transform - pos: -36.5,18.5 - parent: 2 - uid: 7178 components: - type: Transform @@ -32632,11 +32798,6 @@ entities: - type: Transform pos: 14.5,-53.5 parent: 2 - - uid: 8422 - components: - - type: Transform - pos: -36.5,16.5 - parent: 2 - uid: 8433 components: - type: Transform @@ -33372,11 +33533,6 @@ entities: - type: Transform pos: 17.5,23.5 parent: 2 - - uid: 9573 - components: - - type: Transform - pos: -36.5,17.5 - parent: 2 - uid: 9647 components: - type: Transform @@ -34718,6 +34874,11 @@ entities: - type: Transform pos: 30.5,-30.5 parent: 2 + - uid: 2234 + components: + - type: Transform + pos: -36.5,18.5 + parent: 2 - uid: 2250 components: - type: Transform @@ -34863,6 +35024,11 @@ entities: - type: Transform pos: 29.5,-24.5 parent: 2 + - uid: 2846 + components: + - type: Transform + pos: -44.5,21.5 + parent: 2 - uid: 2887 components: - type: Transform @@ -35103,6 +35269,11 @@ entities: - type: Transform pos: -21.5,-40.5 parent: 2 + - uid: 3421 + components: + - type: Transform + pos: -44.5,20.5 + parent: 2 - uid: 3447 components: - type: Transform @@ -35121,7 +35292,7 @@ entities: - uid: 3472 components: - type: Transform - pos: -38.5,21.5 + pos: -36.5,22.5 parent: 2 - uid: 3540 components: @@ -35188,36 +35359,56 @@ entities: - type: Transform pos: 45.5,17.5 parent: 2 - - uid: 3711 - components: - - type: Transform - pos: -40.5,20.5 - parent: 2 - uid: 3713 components: - type: Transform pos: -32.5,20.5 parent: 2 - - uid: 3734 - components: - - type: Transform - pos: -37.5,15.5 - parent: 2 - uid: 3740 components: - type: Transform pos: -27.5,34.5 parent: 2 - - uid: 3809 + - uid: 3795 components: - type: Transform - pos: -39.5,20.5 + pos: -40.5,17.5 + parent: 2 + - uid: 3796 + components: + - type: Transform + pos: -35.5,19.5 + parent: 2 + - uid: 3798 + components: + - type: Transform + pos: -38.5,17.5 + parent: 2 + - uid: 3800 + components: + - type: Transform + pos: -36.5,21.5 + parent: 2 + - uid: 3803 + components: + - type: Transform + pos: -36.5,20.5 + parent: 2 + - uid: 3807 + components: + - type: Transform + pos: -40.5,18.5 parent: 2 - uid: 3810 components: - type: Transform pos: 39.5,12.5 parent: 2 + - uid: 3822 + components: + - type: Transform + pos: -36.5,19.5 + parent: 2 - uid: 3828 components: - type: Transform @@ -35243,16 +35434,16 @@ entities: - type: Transform pos: -14.5,6.5 parent: 2 + - uid: 4220 + components: + - type: Transform + pos: -34.5,19.5 + parent: 2 - uid: 4294 components: - type: Transform pos: -24.5,-0.5 parent: 2 - - uid: 4298 - components: - - type: Transform - pos: -40.5,18.5 - parent: 2 - uid: 4304 components: - type: Transform @@ -35888,26 +36079,36 @@ entities: - type: Transform pos: -20.5,28.5 parent: 2 - - uid: 5333 - components: - - type: Transform - pos: -36.5,15.5 - parent: 2 - uid: 5336 components: - type: Transform - pos: -35.5,15.5 + pos: -37.5,16.5 + parent: 2 + - uid: 5345 + components: + - type: Transform + pos: -38.5,16.5 parent: 2 - uid: 5347 components: - type: Transform - pos: -40.5,15.5 + pos: -40.5,16.5 parent: 2 - uid: 5355 components: - type: Transform pos: -31.5,20.5 parent: 2 + - uid: 5356 + components: + - type: Transform + pos: -39.5,16.5 + parent: 2 + - uid: 5366 + components: + - type: Transform + pos: -44.5,18.5 + parent: 2 - uid: 5387 components: - type: Transform @@ -35918,15 +36119,10 @@ entities: - type: Transform pos: -32.5,21.5 parent: 2 - - uid: 5405 + - uid: 5410 components: - type: Transform - pos: -40.5,19.5 - parent: 2 - - uid: 5422 - components: - - type: Transform - pos: -40.5,21.5 + pos: -43.5,21.5 parent: 2 - uid: 5435 components: @@ -35938,50 +36134,10 @@ entities: - type: Transform pos: -32.5,32.5 parent: 2 - - uid: 5459 + - uid: 5515 components: - type: Transform - pos: -38.5,19.5 - parent: 2 - - uid: 5467 - components: - - type: Transform - pos: -38.5,20.5 - parent: 2 - - uid: 5519 - components: - - type: Transform - pos: -35.5,18.5 - parent: 2 - - uid: 5520 - components: - - type: Transform - pos: -34.5,18.5 - parent: 2 - - uid: 5526 - components: - - type: Transform - pos: -36.5,19.5 - parent: 2 - - uid: 5527 - components: - - type: Transform - pos: -36.5,17.5 - parent: 2 - - uid: 5529 - components: - - type: Transform - pos: -36.5,16.5 - parent: 2 - - uid: 5530 - components: - - type: Transform - pos: -36.5,18.5 - parent: 2 - - uid: 5540 - components: - - type: Transform - pos: -42.5,22.5 + pos: -42.5,18.5 parent: 2 - uid: 5545 components: @@ -37046,7 +37202,7 @@ entities: - uid: 6914 components: - type: Transform - pos: -36.5,20.5 + pos: -41.5,18.5 parent: 2 - uid: 6916 components: @@ -37108,16 +37264,31 @@ entities: - type: Transform pos: -24.5,14.5 parent: 2 - - uid: 6981 + - uid: 6984 components: - type: Transform - pos: -36.5,21.5 + pos: -43.5,18.5 + parent: 2 + - uid: 6987 + components: + - type: Transform + pos: -44.5,19.5 parent: 2 - uid: 6994 components: - type: Transform pos: -32.5,26.5 parent: 2 + - uid: 6995 + components: + - type: Transform + pos: -36.5,17.5 + parent: 2 + - uid: 6998 + components: + - type: Transform + pos: -36.5,16.5 + parent: 2 - uid: 7000 components: - type: Transform @@ -37138,16 +37309,6 @@ entities: - type: Transform pos: -32.5,29.5 parent: 2 - - uid: 7038 - components: - - type: Transform - pos: -40.5,22.5 - parent: 2 - - uid: 7125 - components: - - type: Transform - pos: -41.5,22.5 - parent: 2 - uid: 7322 components: - type: Transform @@ -38228,16 +38389,6 @@ entities: - type: Transform pos: -23.5,14.5 parent: 2 - - uid: 9591 - components: - - type: Transform - pos: -38.5,15.5 - parent: 2 - - uid: 9605 - components: - - type: Transform - pos: -40.5,17.5 - parent: 2 - uid: 9633 components: - type: Transform @@ -39953,11 +40104,6 @@ entities: - type: Transform pos: 25.5,-20.5 parent: 2 - - uid: 12783 - components: - - type: Transform - pos: -40.5,16.5 - parent: 2 - uid: 12809 components: - type: Transform @@ -40098,11 +40244,6 @@ entities: - type: Transform pos: 1.5,40.5 parent: 2 - - uid: 13874 - components: - - type: Transform - pos: -39.5,15.5 - parent: 2 - uid: 13948 components: - type: Transform @@ -40253,11 +40394,6 @@ entities: - type: Transform pos: -9.5,-36.5 parent: 2 - - uid: 14773 - components: - - type: Transform - pos: -36.5,22.5 - parent: 2 - uid: 14791 components: - type: Transform @@ -41193,10 +41329,15 @@ entities: - type: Transform pos: -31.5,-33.5 parent: 2 - - uid: 17282 + - uid: 17450 components: - type: Transform - pos: -42.5,23.5 + pos: -37.5,15.5 + parent: 2 + - uid: 17451 + components: + - type: Transform + pos: -37.5,14.5 parent: 2 - proto: CableMVStack entities: @@ -41247,6 +41388,11 @@ entities: rot: 3.141592653589793 rad pos: 39.5,-4.5 parent: 2 + - uid: 5451 + components: + - type: Transform + pos: -36.5,15.5 + parent: 2 - uid: 6114 components: - type: Transform @@ -41259,12 +41405,6 @@ entities: rot: 3.141592653589793 rad pos: 35.5,-12.5 parent: 2 - - uid: 6756 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -36.5,16.5 - parent: 2 - uid: 7435 components: - type: Transform @@ -42010,6 +42150,16 @@ entities: rot: 3.141592653589793 rad pos: 35.5,-10.5 parent: 2 + - uid: 2014 + components: + - type: Transform + pos: -40.5,21.5 + parent: 2 + - uid: 2051 + components: + - type: Transform + pos: -43.5,22.5 + parent: 2 - uid: 2100 components: - type: Transform @@ -42304,6 +42454,11 @@ entities: - type: Transform pos: -21.5,30.5 parent: 2 + - uid: 3724 + components: + - type: Transform + pos: -36.5,14.5 + parent: 2 - uid: 3764 components: - type: Transform @@ -42330,6 +42485,11 @@ entities: - type: Transform pos: 16.5,-51.5 parent: 2 + - uid: 4263 + components: + - type: Transform + pos: -37.5,20.5 + parent: 2 - uid: 4335 components: - type: Transform @@ -42396,31 +42556,21 @@ entities: - type: Transform pos: -33.5,15.5 parent: 2 - - uid: 5451 - components: - - type: Transform - pos: -35.5,15.5 - parent: 2 - uid: 5462 components: - type: Transform pos: -39.5,25.5 parent: 2 - - uid: 5463 + - uid: 5465 components: - type: Transform - pos: -35.5,16.5 + pos: -37.5,14.5 parent: 2 - uid: 5471 components: - type: Transform pos: -38.5,25.5 parent: 2 - - uid: 5475 - components: - - type: Transform - pos: -44.5,19.5 - parent: 2 - uid: 5477 components: - type: Transform @@ -42442,15 +42592,15 @@ entities: - type: Transform pos: -40.5,25.5 parent: 2 - - uid: 5493 + - uid: 5514 components: - type: Transform - pos: -44.5,20.5 + pos: -40.5,19.5 parent: 2 - - uid: 5507 + - uid: 5519 components: - type: Transform - pos: -44.5,21.5 + pos: -42.5,18.5 parent: 2 - uid: 5576 components: @@ -42508,6 +42658,16 @@ entities: - type: Transform pos: 43.5,-4.5 parent: 2 + - uid: 6759 + components: + - type: Transform + pos: -42.5,22.5 + parent: 2 + - uid: 6776 + components: + - type: Transform + pos: -43.5,18.5 + parent: 2 - uid: 6874 components: - type: Transform @@ -42645,6 +42805,11 @@ entities: - type: Transform pos: 32.5,-27.5 parent: 2 + - uid: 8348 + components: + - type: Transform + pos: -40.5,20.5 + parent: 2 - uid: 8352 components: - type: Transform @@ -45162,6 +45327,11 @@ entities: - type: Transform pos: 36.5,-16.5 parent: 2 + - uid: 16204 + components: + - type: Transform + pos: -29.5,15.5 + parent: 2 - uid: 16254 components: - type: Transform @@ -45621,6 +45791,12 @@ entities: rot: -1.5707963267948966 rad pos: -25.5,-49.5 parent: 2 + - uid: 5450 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-32.5 + parent: 2 - uid: 6036 components: - type: Transform @@ -45767,12 +45943,6 @@ entities: - type: Transform pos: -56.5,-29.5 parent: 2 - - uid: 14204 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -8.5,-32.5 - parent: 2 - uid: 14630 components: - type: Transform @@ -46132,6 +46302,12 @@ entities: rot: 3.141592653589793 rad pos: 27.911285,4.6227093 parent: 2 + - uid: 4298 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -36.782207,19.09201 + parent: 2 - uid: 4303 components: - type: Transform @@ -46158,17 +46334,11 @@ entities: - type: Transform pos: -10.926676,20.555073 parent: 2 - - uid: 5409 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -36.171196,22.144936 - parent: 2 - - uid: 5410 + - uid: 5419 components: - type: Transform rot: -1.5707963267948966 rad - pos: -36.62432,19.06681 + pos: -36.688457,22.27951 parent: 2 - uid: 5704 components: @@ -46434,18 +46604,6 @@ entities: rot: 3.141592653589793 rad pos: -0.5,9.5 parent: 2 - - uid: 304 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.6451235,8.667721 - parent: 2 - - uid: 305 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 7.7232485,8.198971 - parent: 2 - uid: 326 components: - type: Transform @@ -46503,11 +46661,22 @@ entities: rot: -1.5707963267948966 rad pos: -29.476917,-11.41918 parent: 2 + - uid: 5540 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 6.786752,10.540989 + parent: 2 - uid: 8193 components: - type: Transform pos: -50.475594,-29.46375 parent: 2 + - uid: 8420 + components: + - type: Transform + pos: 6.271127,10.431614 + parent: 2 - uid: 9383 components: - type: Transform @@ -47826,7 +47995,7 @@ entities: - uid: 17078 components: - type: Transform - pos: -30.50995,15.527845 + pos: -31.466911,15.535599 parent: 2 - proto: ClothingHandsTacticalMaidGloves entities: @@ -48449,10 +48618,10 @@ entities: parent: 2 - proto: CommandmentCircuitBoard entities: - - uid: 4702 + - uid: 9573 components: - type: Transform - pos: -39.27512,14.449192 + pos: -42.5912,14.708639 parent: 2 - proto: CommsComputerCircuitboard entities: @@ -48496,7 +48665,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12747: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 5067 @@ -48542,7 +48712,7 @@ entities: - type: Transform pos: -17.5,-32.5 parent: 2 - - uid: 5419 + - uid: 5442 components: - type: Transform rot: 1.5707963267948966 rad @@ -48627,6 +48797,45 @@ entities: - type: Transform pos: -35.5,-5.5 parent: 2 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 8421 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 26.5,-14.5 + parent: 2 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 9592 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 37.5,17.5 + parent: 2 +- proto: ComputerCargoOrdersScience + entities: + - uid: 5526 + components: + - type: Transform + pos: -19.5,21.5 + parent: 2 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 6757 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -8.5,-35.5 + parent: 2 +- proto: ComputerCargoOrdersService + entities: + - uid: 16200 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 7.5,3.5 + parent: 2 - proto: ComputerCargoShuttle entities: - uid: 6561 @@ -48735,6 +48944,14 @@ entities: rot: 3.141592653589793 rad pos: -17.5,-35.5 parent: 2 +- proto: ComputerFundingAllocation + entities: + - uid: 12981 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 10.5,-19.5 + parent: 2 - proto: ComputerId entities: - uid: 1774 @@ -49206,10 +49423,10 @@ entities: parent: 2 - proto: CorporateCircuitBoard entities: - - uid: 5469 + - uid: 4702 components: - type: Transform - pos: -41.509495,14.605442 + pos: -43.388077,16.42739 parent: 2 - proto: CottonSeeds entities: @@ -49220,10 +49437,10 @@ entities: parent: 2 - proto: CrateArtifactContainer entities: - - uid: 16483 + - uid: 5463 components: - type: Transform - pos: -18.5,15.5 + pos: -29.5,15.5 parent: 2 - proto: CrateContrabandStorageSecure entities: @@ -49526,12 +49743,40 @@ entities: - type: Transform pos: -11.5,-47.5 parent: 2 -- proto: CrateMaterialPlasma +- proto: CrateLockBoxEngineering entities: - - uid: 17271 + - uid: 17447 components: - type: Transform - pos: -36.5,14.5 + pos: 26.5,-13.5 + parent: 2 +- proto: CrateLockBoxMedical + entities: + - uid: 17445 + components: + - type: Transform + pos: 32.5,19.5 + parent: 2 +- proto: CrateLockBoxScience + entities: + - uid: 6755 + components: + - type: Transform + pos: -24.5,22.5 + parent: 2 +- proto: CrateLockBoxSecurity + entities: + - uid: 6758 + components: + - type: Transform + pos: -8.5,-34.5 + parent: 2 +- proto: CrateLockBoxService + entities: + - uid: 5547 + components: + - type: Transform + pos: 7.5,6.5 parent: 2 - proto: CrateMaterialRandom entities: @@ -49592,10 +49837,10 @@ entities: parent: 2 - proto: CrateServiceTheatre entities: - - uid: 302 + - uid: 5454 components: - type: Transform - pos: 7.5,5.5 + pos: 7.5,8.5 parent: 2 - proto: CrateTechBoardRandom entities: @@ -49842,24 +50087,31 @@ entities: parent: 2 - proto: DefaultStationBeaconAI entities: - - uid: 8429 - components: - - type: Transform - pos: -43.5,20.5 - parent: 2 -- proto: DefaultStationBeaconAICore - entities: - - uid: 3814 + - uid: 17537 components: - type: Transform pos: -36.5,20.5 parent: 2 -- proto: DefaultStationBeaconAIUpload +- proto: DefaultStationBeaconAICore entities: - - uid: 17401 + - uid: 17534 components: - type: Transform - pos: -38.5,15.5 + pos: -43.5,20.5 + parent: 2 +- proto: DefaultStationBeaconAIPower + entities: + - uid: 17536 + components: + - type: Transform + pos: -37.5,15.5 + parent: 2 +- proto: DefaultStationBeaconAIUpload + entities: + - uid: 17535 + components: + - type: Transform + pos: -42.5,15.5 parent: 2 - proto: DefaultStationBeaconAME entities: @@ -55632,12 +55884,6 @@ entities: rot: -1.5707963267948966 rad pos: 34.5,-32.5 parent: 2 - - uid: 5356 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,15.5 - parent: 2 - uid: 5998 components: - type: Transform @@ -56250,24 +56496,29 @@ entities: rot: 3.141592653589793 rad pos: 1.5,-7.5 parent: 2 - - uid: 17397 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -41.5,21.5 - parent: 2 - - uid: 17398 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -35.5,22.5 - parent: 2 - uid: 17399 components: - type: Transform rot: 3.141592653589793 rad pos: -31.5,32.5 parent: 2 + - uid: 17456 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -43.5,20.5 + parent: 2 + - uid: 17457 + components: + - type: Transform + pos: -39.5,16.5 + parent: 2 + - uid: 17458 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -35.5,19.5 + parent: 2 - proto: EmergencyRollerBed entities: - uid: 4100 @@ -56621,6 +56872,11 @@ entities: - type: Transform pos: -23.5,11.5 parent: 2 + - uid: 5529 + components: + - type: Transform + pos: -35.5,18.5 + parent: 2 - uid: 6020 components: - type: Transform @@ -56641,10 +56897,10 @@ entities: - type: Transform pos: 11.5,30.5 parent: 2 - - uid: 12981 + - uid: 16199 components: - type: Transform - pos: 10.5,-19.5 + pos: 11.5,-19.5 parent: 2 - uid: 16823 components: @@ -56710,11 +56966,6 @@ entities: - type: Transform pos: 2.5,-32.5 parent: 2 - - uid: 5412 - components: - - type: Transform - pos: -35.5,18.5 - parent: 2 - proto: FireAlarm entities: - uid: 8137 @@ -56902,10 +57153,10 @@ entities: - uid: 12553 components: - type: MetaData - name: fire alarm (Engineering Locker Room) + name: fire alarm (Engineeering Locker Room) - type: Transform rot: 1.5707963267948966 rad - pos: 25.5,-15.5 + pos: 22.5,-13.5 parent: 2 - type: DeviceList devices: @@ -58163,9 +58414,9 @@ entities: - type: DeviceNetwork deviceLists: - 13800 - - 12553 - - 8138 - 12810 + - 8138 + - 12553 - uid: 13809 components: - type: Transform @@ -59313,25 +59564,6 @@ entities: parent: 2 - proto: FlashlightLantern entities: - - uid: 3798 - components: - - type: Transform - pos: -39.402843,21.466948 - parent: 2 - - type: HandheldLight - toggleActionEntity: 3800 - - type: ContainerContainer - containers: - cell_slot: !type:ContainerSlot - showEnts: False - occludes: True - ent: null - actions: !type:Container - showEnts: False - occludes: True - ents: - - 3800 - - type: ActionsContainer - uid: 8499 components: - type: Transform @@ -59668,10 +59900,10 @@ entities: parent: 2 - proto: GameMasterCircuitBoard entities: - - uid: 5487 + - uid: 5392 components: - type: Transform - pos: -41.321995,14.449192 + pos: -42.513077,16.443014 parent: 2 - proto: GasAnalyzer entities: @@ -60161,14 +60393,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#98BF67FF' - - uid: 3675 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -28.5,19.5 - parent: 2 - - type: AtmosPipeColor - color: '#0055CCFF' - uid: 4260 components: - type: Transform @@ -62032,6 +62256,82 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 17466 + components: + - type: Transform + pos: -25.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17481 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -29.5,19.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17482 + components: + - type: Transform + pos: -29.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17489 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -37.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17490 + components: + - type: Transform + pos: -36.5,18.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17491 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -37.5,18.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17500 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -41.5,15.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17510 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -36.5,16.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17511 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -35.5,15.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17519 + components: + - type: Transform + pos: -39.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - proto: GasPipeBroken entities: - uid: 2699 @@ -62193,6 +62493,20 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' + - uid: 17483 + components: + - type: Transform + pos: -35.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17485 + components: + - type: Transform + pos: -36.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' - proto: GasPipeHalf entities: - uid: 9004 @@ -63196,14 +63510,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 2067 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -25.5,20.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - uid: 2242 components: - type: Transform @@ -73417,6 +73723,341 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' + - uid: 17467 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -26.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17468 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -27.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17469 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -28.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17470 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -29.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17471 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -30.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17472 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -31.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17473 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -32.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17474 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -33.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17475 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17476 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -34.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17477 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -33.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17478 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -32.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17479 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -31.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17480 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -30.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17486 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -35.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17487 + components: + - type: Transform + pos: -35.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17492 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -37.5,19.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17493 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -35.5,19.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17494 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -35.5,18.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17495 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -35.5,17.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17496 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -36.5,17.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17501 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -40.5,15.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17502 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -39.5,16.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17504 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -38.5,16.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17505 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -38.5,15.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17506 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -37.5,16.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17507 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -37.5,15.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17508 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -36.5,15.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17509 + components: + - type: Transform + pos: -35.5,16.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17512 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -39.5,16.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17513 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -40.5,18.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17514 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -40.5,17.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17515 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -39.5,17.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17516 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -39.5,18.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17517 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -39.5,19.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17518 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -39.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17522 + components: + - type: Transform + pos: -36.5,21.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17523 + components: + - type: Transform + pos: -36.5,22.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17524 + components: + - type: Transform + pos: -36.5,23.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17525 + components: + - type: Transform + pos: -36.5,24.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17526 + components: + - type: Transform + pos: -35.5,24.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17527 + components: + - type: Transform + pos: -35.5,23.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17528 + components: + - type: Transform + pos: -35.5,22.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - proto: GasPipeTJunction entities: - uid: 428 @@ -73763,6 +74404,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' + - uid: 5480 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -28.5,19.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 5481 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -25.5,20.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - uid: 5973 components: - type: Transform @@ -75201,6 +75858,22 @@ entities: parent: 2 - type: AtmosPipeColor color: '#CF5B6EFF' + - uid: 17497 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -40.5,16.5 + parent: 2 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17503 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -39.5,15.5 + parent: 2 + - type: AtmosPipeColor + color: '#990000FF' - proto: GasPort entities: - uid: 1710 @@ -76732,6 +77405,48 @@ entities: - 17020 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 17488 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -36.5,19.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17461 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17498 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -41.5,16.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17460 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17520 + components: + - type: Transform + pos: -40.5,19.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17459 + - type: AtmosPipeColor + color: '#0055CCFF' + - uid: 17530 + components: + - type: Transform + pos: -36.5,25.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17462 + - type: AtmosPipeColor + color: '#0055CCFF' - proto: GasVentPumpFreezer entities: - uid: 290 @@ -78027,6 +78742,49 @@ entities: - 17020 - type: AtmosPipeColor color: '#990000FF' + - uid: 17484 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -36.5,21.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17461 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17499 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -41.5,14.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17460 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17521 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -40.5,21.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17459 + - type: AtmosPipeColor + color: '#990000FF' + - uid: 17529 + components: + - type: Transform + pos: -35.5,25.5 + parent: 2 + - type: DeviceNetwork + deviceLists: + - 17462 + - type: AtmosPipeColor + color: '#990000FF' - proto: GasVentScrubberFreezer entities: - uid: 1430 @@ -78199,11 +78957,6 @@ entities: - type: Transform pos: -38.5,-46.5 parent: 2 - - uid: 17253 - components: - - type: Transform - pos: -31.5,15.5 - parent: 2 - proto: GlassBoxLaserFilled entities: - uid: 15420 @@ -78260,6 +79013,11 @@ entities: - type: Transform pos: 8.5,-59.5 parent: 2 + - uid: 305 + components: + - type: Transform + pos: -38.5,20.5 + parent: 2 - uid: 310 components: - type: Transform @@ -78794,6 +79552,11 @@ entities: rot: 1.5707963267948966 rad pos: 24.5,-40.5 parent: 2 + - uid: 2521 + components: + - type: Transform + pos: -38.5,19.5 + parent: 2 - uid: 2576 components: - type: Transform @@ -79191,10 +79954,10 @@ entities: - type: Transform pos: -56.5,-11.5 parent: 2 - - uid: 3812 + - uid: 3816 components: - type: Transform - pos: -47.5,19.5 + pos: -47.5,16.5 parent: 2 - uid: 3823 components: @@ -79455,6 +80218,11 @@ entities: rot: 3.141592653589793 rad pos: -58.5,-10.5 parent: 2 + - uid: 5213 + components: + - type: Transform + pos: -44.5,25.5 + parent: 2 - uid: 5286 components: - type: Transform @@ -79470,55 +80238,40 @@ entities: - type: Transform pos: 39.5,35.5 parent: 2 - - uid: 5349 - components: - - type: Transform - pos: -47.5,22.5 - parent: 2 - - uid: 5360 - components: - - type: Transform - pos: -44.5,15.5 - parent: 2 - - uid: 5366 - components: - - type: Transform - pos: -47.5,18.5 - parent: 2 - - uid: 5391 - components: - - type: Transform - pos: -47.5,21.5 - parent: 2 - - uid: 5450 - components: - - type: Transform - pos: -43.5,15.5 - parent: 2 - - uid: 5488 - components: - - type: Transform - pos: -43.5,25.5 - parent: 2 - - uid: 5506 - components: - - type: Transform - pos: -44.5,25.5 - parent: 2 - - uid: 5513 - components: - - type: Transform - pos: -42.5,20.5 - parent: 2 - - uid: 5543 + - uid: 5378 components: - type: Transform pos: -38.5,21.5 parent: 2 - - uid: 5552 + - uid: 5382 components: - type: Transform - pos: -38.5,19.5 + pos: -43.5,25.5 + parent: 2 + - uid: 5459 + components: + - type: Transform + pos: -41.5,20.5 + parent: 2 + - uid: 5469 + components: + - type: Transform + pos: -48.5,19.5 + parent: 2 + - uid: 5470 + components: + - type: Transform + pos: -43.5,12.5 + parent: 2 + - uid: 5505 + components: + - type: Transform + pos: -48.5,20.5 + parent: 2 + - uid: 5523 + components: + - type: Transform + pos: -42.5,12.5 parent: 2 - uid: 5568 components: @@ -79926,6 +80679,31 @@ entities: - type: Transform pos: 29.5,-11.5 parent: 2 + - uid: 6702 + components: + - type: Transform + pos: -41.5,19.5 + parent: 2 + - uid: 6703 + components: + - type: Transform + pos: -40.5,12.5 + parent: 2 + - uid: 6712 + components: + - type: Transform + pos: -40.5,28.5 + parent: 2 + - uid: 6713 + components: + - type: Transform + pos: -39.5,12.5 + parent: 2 + - uid: 6714 + components: + - type: Transform + pos: -39.5,28.5 + parent: 2 - uid: 6730 components: - type: Transform @@ -79942,6 +80720,11 @@ entities: - type: Transform pos: 58.5,-12.5 parent: 2 + - uid: 6947 + components: + - type: Transform + pos: -41.5,21.5 + parent: 2 - uid: 6990 components: - type: Transform @@ -79952,6 +80735,11 @@ entities: - type: Transform pos: -37.5,34.5 parent: 2 + - uid: 7037 + components: + - type: Transform + pos: -47.5,24.5 + parent: 2 - uid: 7101 components: - type: Transform @@ -81005,6 +81793,11 @@ entities: rot: 1.5707963267948966 rad pos: 8.5,-55.5 parent: 2 + - uid: 10774 + components: + - type: Transform + pos: -37.5,12.5 + parent: 2 - uid: 10797 components: - type: Transform @@ -81073,6 +81866,11 @@ entities: rot: 1.5707963267948966 rad pos: 24.5,-34.5 parent: 2 + - uid: 12781 + components: + - type: Transform + pos: -48.5,21.5 + parent: 2 - uid: 12839 components: - type: Transform @@ -81095,11 +81893,21 @@ entities: - type: Transform pos: 48.5,-12.5 parent: 2 + - uid: 13845 + components: + - type: Transform + pos: -36.5,12.5 + parent: 2 - uid: 13947 components: - type: Transform pos: 61.5,-15.5 parent: 2 + - uid: 13961 + components: + - type: Transform + pos: -37.5,28.5 + parent: 2 - uid: 13973 components: - type: Transform @@ -81726,10 +82534,10 @@ entities: - type: Transform pos: -33.5,6.5 parent: 2 - - uid: 17296 + - uid: 17390 components: - type: Transform - pos: -38.5,20.5 + pos: -36.5,28.5 parent: 2 - uid: 17400 components: @@ -82390,6 +83198,13 @@ entities: parent: 2 - proto: HighSecCommandLocked entities: + - uid: 3675 + components: + - type: MetaData + name: high security door (AI Core) + - type: Transform + pos: -36.5,17.5 + parent: 2 - uid: 4459 components: - type: MetaData @@ -82402,34 +83217,13 @@ entities: - type: Transform pos: 36.5,-2.5 parent: 2 - - uid: 13886 + - uid: 5418 components: - type: MetaData - name: high security door (AI) + name: high security door (AI Core) - type: Transform pos: -40.5,17.5 parent: 2 -- proto: HolopadAiCore - entities: - - uid: 3795 - components: - - type: Transform - pos: -36.5,20.5 - parent: 2 -- proto: HolopadAiMain - entities: - - uid: 5380 - components: - - type: Transform - pos: -41.5,20.5 - parent: 2 -- proto: HolopadAiUpload - entities: - - uid: 3796 - components: - - type: Transform - pos: -38.5,15.5 - parent: 2 - proto: HolopadCargoBay entities: - uid: 14790 @@ -83180,6 +83974,17 @@ entities: - type: Transform pos: -26.5,-4.5 parent: 2 + - uid: 17256 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -42.5,19.5 + parent: 2 + - uid: 17442 + components: + - type: Transform + pos: -42.5,21.5 + parent: 2 - proto: IntercomAssembly entities: - uid: 16722 @@ -83609,10 +84414,10 @@ entities: - type: InsideEntityStorage - proto: LiveLetLiveCircuitBoard entities: - - uid: 4301 + - uid: 5377 components: - type: Transform - pos: -40.696995,14.683567 + pos: -43.575577,14.771139 parent: 2 - proto: LockableButtonBar entities: @@ -83627,13 +84432,17 @@ entities: - type: DeviceLinkSource linkedPorts: 6001: - - Pressed: Toggle + - - Pressed + - Toggle 6000: - - Pressed: Toggle + - - Pressed + - Toggle 6002: - - Pressed: Toggle + - - Pressed + - Toggle 3436: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonCaptain entities: - uid: 13976 @@ -83646,17 +84455,23 @@ entities: - type: DeviceLinkSource linkedPorts: 4881: - - Pressed: Toggle + - - Pressed + - Toggle 996: - - Pressed: Toggle + - - Pressed + - Toggle 13978: - - Pressed: Toggle + - - Pressed + - Toggle 13977: - - Pressed: Toggle + - - Pressed + - Toggle 755: - - Pressed: Toggle + - - Pressed + - Toggle 11048: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonChiefEngineer entities: - uid: 16183 @@ -83670,13 +84485,17 @@ entities: - type: DeviceLinkSource linkedPorts: 8122: - - Pressed: Toggle + - - Pressed + - Toggle 7324: - - Pressed: Toggle + - - Pressed + - Toggle 4121: - - Pressed: Toggle + - - Pressed + - Toggle 8126: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonChiefMedicalOfficer entities: - uid: 16176 @@ -83688,9 +84507,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16173: - - Pressed: Toggle + - - Pressed + - Toggle 16174: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonCommand entities: - uid: 8657 @@ -83704,11 +84525,15 @@ entities: - type: DeviceLinkSource linkedPorts: 2840: - - Pressed: Toggle - - Pressed: DoorBolt + - - Pressed + - Toggle + - - Pressed + - DoorBolt 2466: - - Pressed: Toggle - - Pressed: DoorBolt + - - Pressed + - Toggle + - - Pressed + - DoorBolt - uid: 11097 components: - type: MetaData @@ -83719,29 +84544,41 @@ entities: - type: DeviceLinkSource linkedPorts: 4607: - - Pressed: Toggle + - - Pressed + - Toggle 11085: - - Pressed: Toggle + - - Pressed + - Toggle 11086: - - Pressed: Toggle + - - Pressed + - Toggle 11088: - - Pressed: Toggle + - - Pressed + - Toggle 11087: - - Pressed: Toggle + - - Pressed + - Toggle 11089: - - Pressed: Toggle + - - Pressed + - Toggle 11090: - - Pressed: Toggle + - - Pressed + - Toggle 11091: - - Pressed: Toggle + - - Pressed + - Toggle 11092: - - Pressed: Toggle + - - Pressed + - Toggle 11093: - - Pressed: Toggle + - - Pressed + - Toggle 11094: - - Pressed: Toggle + - - Pressed + - Toggle 15279: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonDetective entities: - uid: 13949 @@ -83755,7 +84592,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14003: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonEngineering entities: - uid: 2911 @@ -83768,7 +84606,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12655: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonExternal entities: - uid: 6221 @@ -83781,15 +84620,20 @@ entities: - type: DeviceLinkSource linkedPorts: 15146: - - Pressed: Toggle + - - Pressed + - Toggle 15144: - - Pressed: Toggle + - - Pressed + - Toggle 11050: - - Pressed: Toggle + - - Pressed + - Toggle 3058: - - Pressed: Toggle + - - Pressed + - Toggle 15143: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8194 components: - type: MetaData @@ -83801,15 +84645,20 @@ entities: - type: DeviceLinkSource linkedPorts: 15144: - - Pressed: Toggle + - - Pressed + - Toggle 15146: - - Pressed: Toggle + - - Pressed + - Toggle 11050: - - Pressed: Toggle + - - Pressed + - Toggle 3058: - - Pressed: Toggle + - - Pressed + - Toggle 15143: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonHeadOfPersonnel entities: - uid: 16196 @@ -83823,9 +84672,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16192: - - Pressed: Toggle + - - Pressed + - Toggle 3989: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonHeadOfSecurity entities: - uid: 16185 @@ -83839,9 +84690,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16186: - - Pressed: Toggle + - - Pressed + - Toggle 16187: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonKitchen entities: - uid: 4481 @@ -83854,13 +84707,17 @@ entities: - type: DeviceLinkSource linkedPorts: 16219: - - Pressed: Toggle + - - Pressed + - Toggle 16221: - - Pressed: Toggle + - - Pressed + - Toggle 14372: - - Pressed: Toggle + - - Pressed + - Toggle 16222: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonMedical entities: - uid: 9089 @@ -83874,9 +84731,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3915: - - Pressed: Open + - - Pressed + - Open 3916: - - Pressed: Open + - - Pressed + - Open - uid: 13575 components: - type: MetaData @@ -83888,9 +84747,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5080: - - Pressed: Toggle + - - Pressed + - Toggle 4706: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13768 components: - type: MetaData @@ -83901,9 +84762,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4706: - - Pressed: Toggle + - - Pressed + - Toggle 5080: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 16210 components: - type: MetaData @@ -83915,9 +84778,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16146: - - Pressed: Toggle + - - Pressed + - Toggle 16147: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonQuartermaster entities: - uid: 16161 @@ -83931,15 +84796,20 @@ entities: - type: DeviceLinkSource linkedPorts: 12813: - - Pressed: Toggle + - - Pressed + - Toggle 16159: - - Pressed: Toggle + - - Pressed + - Toggle 16157: - - Pressed: Toggle + - - Pressed + - Toggle 16156: - - Pressed: Toggle + - - Pressed + - Toggle 16155: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonResearchDirector entities: - uid: 11128 @@ -83951,11 +84821,14 @@ entities: - type: DeviceLinkSource linkedPorts: 14681: - - Pressed: Toggle + - - Pressed + - Toggle 15086: - - Pressed: Toggle + - - Pressed + - Toggle 11182: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonSecurity entities: - uid: 16002 @@ -83967,7 +84840,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15998: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 16003 components: - type: Transform @@ -83977,7 +84851,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15999: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockerAtmosphericsFilled entities: - uid: 2107 @@ -84324,11 +85199,6 @@ entities: - type: Transform pos: -20.5,21.5 parent: 2 - - uid: 7788 - components: - - type: Transform - pos: -19.5,21.5 - parent: 2 - proto: LockerSecurityFilled entities: - uid: 2020 @@ -84482,10 +85352,10 @@ entities: - type: Transform pos: 22.5,45.5 parent: 2 - - uid: 17445 + - uid: 13897 components: - type: Transform - pos: -48.5,22.5 + pos: -51.5,20.5 parent: 2 - proto: LootSpawnerIndustrialFluff entities: @@ -84504,16 +85374,21 @@ entities: - type: Transform pos: 30.5,-12.5 parent: 2 - - uid: 5382 - components: - - type: Transform - pos: -39.5,19.5 - parent: 2 - uid: 5460 components: - type: Transform pos: -35.5,26.5 parent: 2 + - uid: 5488 + components: + - type: Transform + pos: -52.5,24.5 + parent: 2 + - uid: 5506 + components: + - type: Transform + pos: -53.5,20.5 + parent: 2 - uid: 15602 components: - type: Transform @@ -84539,16 +85414,6 @@ entities: - type: Transform pos: -30.5,-19.5 parent: 2 - - uid: 17443 - components: - - type: Transform - pos: -50.5,21.5 - parent: 2 - - uid: 17444 - components: - - type: Transform - pos: -48.5,19.5 - parent: 2 - proto: LootSpawnerMedicalMinor entities: - uid: 3994 @@ -84586,11 +85451,6 @@ entities: - type: Transform pos: 33.5,19.5 parent: 2 - - uid: 10774 - components: - - type: Transform - pos: 37.5,17.5 - parent: 2 - proto: LootSpawnerScienceMinor entities: - uid: 8418 @@ -84637,11 +85497,6 @@ entities: parent: 2 - proto: LuxuryPen entities: - - uid: 16204 - components: - - type: Transform - pos: 11.323762,-19.48439 - parent: 2 - uid: 17028 components: - type: Transform @@ -84734,11 +85589,6 @@ entities: - type: Transform pos: 31.5,-17.5 parent: 2 - - uid: 3724 - components: - - type: Transform - pos: -37.5,21.5 - parent: 2 - uid: 5127 components: - type: Transform @@ -84749,6 +85599,11 @@ entities: - type: Transform pos: -26.5,17.5 parent: 2 + - uid: 5448 + components: + - type: Transform + pos: -37.5,21.5 + parent: 2 - uid: 6334 components: - type: Transform @@ -84861,6 +85716,13 @@ entities: - type: Transform pos: -31.5,34.5 parent: 2 +- proto: MachineMaterialSilo + entities: + - uid: 3541 + components: + - type: Transform + pos: -18.5,15.5 + parent: 2 - proto: MagazinePistolSubMachineGunTopMounted entities: - uid: 5644 @@ -85292,11 +86154,17 @@ entities: parent: 2 - proto: Mannequin entities: - - uid: 303 + - uid: 450 components: - type: Transform rot: -1.5707963267948966 rad - pos: 7.5,6.5 + pos: 7.5,5.5 + parent: 2 + - uid: 5455 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -0.5,8.5 parent: 2 - proto: MatchstickSpent entities: @@ -85684,10 +86552,10 @@ entities: parent: 2 - proto: NTDefaultCircuitBoard entities: - - uid: 5102 + - uid: 1594 components: - type: Transform - pos: -40.571995,14.605442 + pos: -43.450577,14.552389 parent: 2 - proto: NuclearBomb entities: @@ -85705,10 +86573,10 @@ entities: parent: 2 - proto: NutimovCircuitBoard entities: - - uid: 3816 + - uid: 1730 components: - type: Transform - pos: -40.446995,14.527317 + pos: -42.638077,14.786764 parent: 2 - proto: OperatingTable entities: @@ -85821,10 +86689,10 @@ entities: - type: Conveyed - proto: PaladinCircuitBoard entities: - - uid: 5099 + - uid: 5543 components: - type: Transform - pos: -39.61887,14.636692 + pos: -43.544327,16.52114 parent: 2 - proto: Paper entities: @@ -85843,16 +86711,6 @@ entities: - type: Transform pos: 5.6202555,26.75027 parent: 2 - - uid: 16200 - components: - - type: Transform - pos: 11.417512,-19.312515 - parent: 2 - - uid: 16201 - components: - - type: Transform - pos: 11.605012,-19.468765 - parent: 2 - uid: 16202 components: - type: Transform @@ -85909,11 +86767,6 @@ entities: parent: 2 - proto: PaperOffice entities: - - uid: 1169 - components: - - type: Transform - pos: -35.37432,21.801186 - parent: 2 - uid: 2036 components: - type: Transform @@ -85939,10 +86792,15 @@ entities: - type: Transform pos: -23.395178,-32.446205 parent: 2 - - uid: 5455 + - uid: 5405 components: - type: Transform - pos: -35.56182,21.59806 + pos: -35.235332,22.170135 + parent: 2 + - uid: 5407 + components: + - type: Transform + pos: -35.579082,21.888885 parent: 2 - uid: 14108 components: @@ -86074,10 +86932,10 @@ entities: - type: Transform pos: -22.952627,-32.406418 parent: 2 - - uid: 3538 + - uid: 5333 components: - type: Transform - pos: -35.49932,22.332436 + pos: -35.344707,21.638885 parent: 2 - uid: 9499 components: @@ -86316,10 +87174,10 @@ entities: parent: 2 - proto: PlayerStationAi entities: - - uid: 5514 + - uid: 5395 components: - type: Transform - pos: -43.5,20.5 + pos: -42.5,20.5 parent: 2 - proto: Plunger entities: @@ -86521,11 +87379,6 @@ entities: parent: 2 - proto: PortableGeneratorPacman entities: - - uid: 6988 - components: - - type: Transform - pos: -37.5,14.5 - parent: 2 - uid: 16285 components: - type: Transform @@ -86708,11 +87561,6 @@ entities: - type: Transform pos: -8.5,48.5 parent: 2 - - uid: 13562 - components: - - type: Transform - pos: -6.5,3.5 - parent: 2 - uid: 13774 components: - type: Transform @@ -87504,12 +88352,6 @@ entities: rot: -1.5707963267948966 rad pos: -21.5,-49.5 parent: 2 - - uid: 17392 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -44.5,20.5 - parent: 2 - uid: 17395 components: - type: Transform @@ -87520,6 +88362,12 @@ entities: - type: Transform pos: -40.5,26.5 parent: 2 + - uid: 17453 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -43.5,15.5 + parent: 2 - proto: PoweredLEDSmallLight entities: - uid: 8364 @@ -87569,12 +88417,6 @@ entities: rot: 3.141592653589793 rad pos: -20.5,19.5 parent: 2 - - uid: 17390 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -43.5,18.5 - parent: 2 - proto: Poweredlight entities: - uid: 140 @@ -88170,6 +89012,25 @@ entities: rot: 3.141592653589793 rad pos: -10.5,16.5 parent: 2 +- proto: PoweredlightBlue + entities: + - uid: 5360 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -45.5,20.5 + parent: 2 + - uid: 17454 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -41.5,18.5 + parent: 2 + - uid: 17455 + components: + - type: Transform + pos: -41.5,22.5 + parent: 2 - proto: PoweredlightEmpty entities: - uid: 5511 @@ -88179,6 +89040,12 @@ entities: parent: 2 - proto: PoweredlightLED entities: + - uid: 3722 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -38.5,14.5 + parent: 2 - uid: 12907 components: - type: Transform @@ -88322,23 +89189,7 @@ entities: - type: Transform pos: -24.5,22.5 parent: 2 - - uid: 17389 - components: - - type: Transform - pos: -41.5,22.5 - parent: 2 - - uid: 17391 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -41.5,18.5 - parent: 2 - - uid: 17393 - components: - - type: Transform - pos: -38.5,16.5 - parent: 2 - - uid: 17394 + - uid: 17452 components: - type: Transform rot: -1.5707963267948966 rad @@ -89020,11 +89871,6 @@ entities: - type: Transform pos: 35.5,-0.5 parent: 2 - - uid: 2846 - components: - - type: Transform - pos: -39.5,14.5 - parent: 2 - uid: 2992 components: - type: Transform @@ -89035,6 +89881,21 @@ entities: - type: Transform pos: -18.5,26.5 parent: 2 + - uid: 3511 + components: + - type: Transform + pos: -42.5,14.5 + parent: 2 + - uid: 3538 + components: + - type: Transform + pos: -42.5,16.5 + parent: 2 + - uid: 3545 + components: + - type: Transform + pos: -43.5,14.5 + parent: 2 - uid: 4708 components: - type: Transform @@ -89058,6 +89919,11 @@ entities: rot: -1.5707963267948966 rad pos: -13.5,5.5 parent: 2 + - uid: 5100 + components: + - type: Transform + pos: -43.5,16.5 + parent: 2 - uid: 5180 components: - type: Transform @@ -89151,11 +90017,6 @@ entities: rot: -1.5707963267948966 rad pos: 46.5,15.5 parent: 2 - - uid: 8406 - components: - - type: Transform - pos: -40.5,14.5 - parent: 2 - uid: 9059 components: - type: Transform @@ -89230,11 +90091,6 @@ entities: - type: Transform pos: 42.5,5.5 parent: 2 - - uid: 13961 - components: - - type: Transform - pos: -41.5,14.5 - parent: 2 - uid: 14824 components: - type: Transform @@ -89275,10 +90131,10 @@ entities: - type: Transform pos: -25.5,22.5 parent: 2 - - uid: 16388 + - uid: 16483 components: - type: Transform - pos: -24.5,22.5 + pos: -31.5,15.5 parent: 2 - uid: 16570 components: @@ -89774,10 +90630,10 @@ entities: parent: 2 - proto: RandomEngineerCorpseSpawner entities: - - uid: 17442 + - uid: 14360 components: - type: Transform - pos: -48.5,21.5 + pos: -52.5,21.5 parent: 2 - proto: RandomFoodSingle entities: @@ -91047,11 +91903,6 @@ entities: - type: Transform pos: 22.5,0.5 parent: 2 - - uid: 2521 - components: - - type: Transform - pos: -8.5,-35.5 - parent: 2 - uid: 13506 components: - type: Transform @@ -91079,11 +91930,6 @@ entities: - type: Transform pos: 22.5,-0.5 parent: 2 - - uid: 3421 - components: - - type: Transform - pos: -7.5,-35.5 - parent: 2 - uid: 13507 components: - type: Transform @@ -91266,6 +92112,16 @@ entities: - type: Transform pos: 35.5,-13.5 parent: 2 + - uid: 1169 + components: + - type: Transform + pos: -41.5,19.5 + parent: 2 + - uid: 1247 + components: + - type: Transform + pos: -38.5,21.5 + parent: 2 - uid: 1356 components: - type: Transform @@ -91731,6 +92587,16 @@ entities: - type: Transform pos: -33.5,6.5 parent: 2 + - uid: 5458 + components: + - type: Transform + pos: -41.5,21.5 + parent: 2 + - uid: 5479 + components: + - type: Transform + pos: -38.5,20.5 + parent: 2 - uid: 5502 components: - type: Transform @@ -91741,6 +92607,11 @@ entities: - type: Transform pos: -8.5,21.5 parent: 2 + - uid: 5552 + components: + - type: Transform + pos: -38.5,19.5 + parent: 2 - uid: 6258 components: - type: Transform @@ -91833,11 +92704,6 @@ entities: - type: Transform pos: -29.5,36.5 parent: 2 - - uid: 7037 - components: - - type: Transform - pos: -38.5,20.5 - parent: 2 - uid: 7042 components: - type: Transform @@ -92258,6 +93124,11 @@ entities: rot: 1.5707963267948966 rad pos: 24.5,-38.5 parent: 2 + - uid: 14773 + components: + - type: Transform + pos: -41.5,20.5 + parent: 2 - uid: 14828 components: - type: Transform @@ -92351,21 +93222,6 @@ entities: rot: 3.141592653589793 rad pos: -44.5,-39.5 parent: 2 - - uid: 17312 - components: - - type: Transform - pos: -38.5,21.5 - parent: 2 - - uid: 17316 - components: - - type: Transform - pos: -42.5,20.5 - parent: 2 - - uid: 17348 - components: - - type: Transform - pos: -38.5,19.5 - parent: 2 - proto: RemoteSignaller entities: - uid: 16085 @@ -92437,10 +93293,10 @@ entities: - type: InsideEntityStorage - proto: RobocopCircuitBoard entities: - - uid: 3818 + - uid: 5457 components: - type: Transform - pos: -39.49387,14.589817 + pos: -42.6537,16.568014 parent: 2 - proto: RollerBedSpawnFolded entities: @@ -92612,11 +93468,6 @@ entities: parent: 2 - proto: Screwdriver entities: - - uid: 5458 - components: - - type: Transform - pos: -39.4583,21.688087 - parent: 2 - uid: 15457 components: - type: Transform @@ -92741,7 +93592,7 @@ entities: - uid: 14395 components: - type: Transform - pos: -24.514385,22.612196 + pos: -30.013832,22.60418 parent: 2 - proto: SheetPlasteel entities: @@ -92980,18 +93831,6 @@ entities: - type: Transform pos: 35.5,6.5 parent: 2 - - uid: 3467 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -38.5,20.5 - parent: 2 - - uid: 3794 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -38.5,19.5 - parent: 2 - uid: 3989 components: - type: Transform @@ -93014,12 +93853,6 @@ entities: rot: -1.5707963267948966 rad pos: -29.5,-2.5 parent: 2 - - uid: 5442 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -38.5,21.5 - parent: 2 - uid: 7324 components: - type: Transform @@ -93231,7 +94064,7 @@ entities: - type: Transform pos: -9.5,30.5 parent: 2 - - uid: 3511 + - uid: 3809 components: - type: Transform pos: -39.5,17.5 @@ -93241,13 +94074,6 @@ entities: - type: Transform pos: -34.5,21.5 parent: 2 -- proto: SignAiUpload - entities: - - uid: 4220 - components: - - type: Transform - pos: -38.5,14.5 - parent: 2 - proto: SignalButtonDirectional entities: - uid: 841 @@ -93269,7 +94095,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12655: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2643 components: - type: MetaData @@ -93281,37 +94108,30 @@ entities: - type: DeviceLinkSource linkedPorts: 2600: - - Pressed: Toggle + - - Pressed + - Toggle 2360: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3473 components: - - type: Transform - rot: 3.141592653589793 rad - pos: -42.5,17.5 - parent: 2 - - type: DeviceLinkSource - linkedPorts: - 5442: - - Pressed: Toggle - 3467: - - Pressed: Toggle - 3794: - - Pressed: Toggle - - uid: 5378 - components: + - type: MetaData + name: signal button (Blast Doors) - type: Transform rot: -1.5707963267948966 rad - pos: -34.5,19.5 + pos: -43.5,19.5 parent: 2 - type: DeviceLinkSource linkedPorts: - 5442: - - Pressed: Toggle - 3467: - - Pressed: Toggle - 3794: - - Pressed: Toggle + 5397: + - - Pressed + - Toggle + 3711: + - - Pressed + - Toggle + 6996: + - - Pressed + - Toggle - uid: 6029 components: - type: MetaData @@ -93322,7 +94142,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7748: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7024 components: - type: MetaData @@ -93334,9 +94155,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5144: - - Pressed: Toggle + - - Pressed + - Toggle 16017: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9353 components: - type: MetaData @@ -93348,7 +94171,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8133: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9658 components: - type: MetaData @@ -93360,11 +94184,14 @@ entities: - type: DeviceLinkSource linkedPorts: 9655: - - Pressed: Toggle + - - Pressed + - Toggle 9651: - - Pressed: Toggle + - - Pressed + - Toggle 2332: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 10510 components: - type: MetaData @@ -93375,7 +94202,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9968: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11169 components: - type: MetaData @@ -93387,7 +94215,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14013: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11201 components: - type: MetaData @@ -93398,9 +94227,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1540: - - Pressed: Toggle + - - Pressed + - Toggle 11215: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11351 components: - type: MetaData @@ -93411,13 +94242,17 @@ entities: - type: DeviceLinkSource linkedPorts: 1443: - - Pressed: Toggle + - - Pressed + - Toggle 1515: - - Pressed: Toggle + - - Pressed + - Toggle 1513: - - Pressed: Toggle + - - Pressed + - Toggle 1514: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 12773 components: - type: MetaData @@ -93429,9 +94264,11 @@ entities: - type: DeviceLinkSource linkedPorts: 11249: - - Pressed: Toggle + - - Pressed + - Toggle 5141: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 12908 components: - type: MetaData @@ -93443,13 +94280,17 @@ entities: - type: DeviceLinkSource linkedPorts: 1514: - - Pressed: Toggle + - - Pressed + - Toggle 1513: - - Pressed: Toggle + - - Pressed + - Toggle 1515: - - Pressed: Toggle + - - Pressed + - Toggle 1443: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14428 components: - type: MetaData @@ -93460,9 +94301,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1186: - - Pressed: Toggle + - - Pressed + - Toggle 7942: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14431 components: - type: MetaData @@ -93473,9 +94316,11 @@ entities: - type: DeviceLinkSource linkedPorts: 2585: - - Pressed: Toggle + - - Pressed + - Toggle 2526: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14435 components: - type: MetaData @@ -93486,9 +94331,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3915: - - Pressed: Toggle + - - Pressed + - Toggle 3916: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14437 components: - type: MetaData @@ -93500,9 +94347,11 @@ entities: - type: DeviceLinkSource linkedPorts: 2589: - - Pressed: Toggle + - - Pressed + - Toggle 2588: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14446 components: - type: MetaData @@ -93514,9 +94363,11 @@ entities: - type: DeviceLinkSource linkedPorts: 15298: - - Pressed: Toggle + - - Pressed + - Toggle 15299: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14447 components: - type: MetaData @@ -93528,9 +94379,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1940: - - Pressed: Toggle + - - Pressed + - Toggle 1939: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14511 components: - type: MetaData @@ -93542,9 +94395,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4489: - - Pressed: Toggle + - - Pressed + - Toggle 4514: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14512 components: - type: MetaData @@ -93556,9 +94411,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4570: - - Pressed: Toggle + - - Pressed + - Toggle 4531: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15855 components: - type: MetaData @@ -93570,7 +94427,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15902: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15860 components: - type: MetaData @@ -93582,7 +94440,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15859: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15861 components: - type: MetaData @@ -93594,7 +94453,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6033: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 15865 components: - type: MetaData @@ -93606,7 +94466,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6303: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 15866 components: - type: MetaData @@ -93618,7 +94479,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15858: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15868 components: - type: MetaData @@ -93630,7 +94492,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15857: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15871 components: - type: MetaData @@ -93642,7 +94505,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15872: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15880 components: - type: MetaData @@ -93654,7 +94518,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15856: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15883 components: - type: MetaData @@ -93666,7 +94531,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15881: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15886 components: - type: MetaData @@ -93678,7 +94544,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15884: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15889 components: - type: MetaData @@ -93690,7 +94557,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15888: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15891 components: - type: MetaData @@ -93701,7 +94569,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15892: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15895 components: - type: MetaData @@ -93713,7 +94582,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3590: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 16553 components: - type: MetaData @@ -93725,7 +94595,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16579: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalSwitchDirectional entities: - uid: 9640 @@ -93738,35 +94609,55 @@ entities: - type: DeviceLinkSource linkedPorts: 4372: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3249: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 4573: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 5212: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 4212: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 5316: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 6388: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 4219: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 9508: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 5640: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off - uid: 13472 components: - type: Transform @@ -93776,11 +94667,15 @@ entities: - type: DeviceLinkSource linkedPorts: 14970: - - Off: Open - - On: Close + - - Off + - Open + - - On + - Close 1927: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 13480 components: - type: Transform @@ -93790,11 +94685,15 @@ entities: - type: DeviceLinkSource linkedPorts: 13703: - - Off: Open - - On: Close + - - Off + - Open + - - On + - Close 1928: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - proto: SignAnomaly entities: - uid: 16169 @@ -94930,21 +95829,11 @@ entities: parent: 2 - proto: SignSecureMed entities: - - uid: 2234 - components: - - type: Transform - pos: -41.5,17.5 - parent: 2 - uid: 4492 components: - type: Transform pos: -23.5,-10.5 parent: 2 - - uid: 5350 - components: - - type: Transform - pos: -35.5,17.5 - parent: 2 - uid: 12761 components: - type: Transform @@ -95307,12 +96196,10 @@ entities: parent: 2 - proto: SMESBasic entities: - - uid: 6754 + - uid: 6606 components: - - type: MetaData - name: SMES (AI Core) - type: Transform - pos: -35.5,16.5 + pos: -36.5,14.5 parent: 2 - uid: 7668 components: @@ -96028,11 +96915,6 @@ entities: parent: 2 - proto: SpacemenFigureSpawner entities: - - uid: 5486 - components: - - type: Transform - pos: -44.5,20.5 - parent: 2 - uid: 6935 components: - type: Transform @@ -96138,6 +97020,11 @@ entities: - type: Transform pos: 1.5,10.5 parent: 2 + - uid: 17538 + components: + - type: Transform + pos: -43.5,20.5 + parent: 2 - proto: SpaceVillainArcadeFilled entities: - uid: 13998 @@ -96312,15 +97199,15 @@ entities: parent: 2 - proto: SpawnPointBorg entities: - - uid: 17402 + - uid: 5493 components: - type: Transform - pos: -40.5,19.5 + pos: -40.5,15.5 parent: 2 - - uid: 17403 + - uid: 17443 components: - type: Transform - pos: -40.5,21.5 + pos: -39.5,15.5 parent: 2 - proto: SpawnPointBotanist entities: @@ -97181,11 +98068,11 @@ entities: parent: 2 - proto: StationAiUploadComputer entities: - - uid: 6758 + - uid: 5466 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -39.5,20.5 + rot: 1.5707963267948966 rad + pos: -43.5,15.5 parent: 2 - proto: StationAnchor entities: @@ -97196,10 +98083,10 @@ entities: parent: 2 - proto: StationEfficiencyCircuitBoard entities: - - uid: 5371 + - uid: 9075 components: - type: Transform - pos: -39.36887,14.511692 + pos: -43.5912,14.614889 parent: 2 - proto: StationMap entities: @@ -97294,29 +98181,17 @@ entities: rot: -1.5707963267948966 rad pos: 28.5,-12.5 parent: 2 - - uid: 2014 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -0.5,-18.5 - parent: 2 - uid: 2016 components: - type: Transform rot: 3.141592653589793 rad pos: 0.5,-18.5 parent: 2 - - uid: 9073 + - uid: 8415 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 26.5,-14.5 - parent: 2 - - uid: 9074 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 26.5,-13.5 + rot: 3.141592653589793 rad + pos: -0.5,-18.5 parent: 2 - proto: Stool entities: @@ -97537,13 +98412,6 @@ entities: - type: Transform pos: -11.5,32.5 parent: 2 - - uid: 6755 - components: - - type: MetaData - name: substation (AI Core) - - type: Transform - pos: -35.5,15.5 - parent: 2 - uid: 7212 components: - type: MetaData @@ -97565,6 +98433,11 @@ entities: - type: Transform pos: 46.5,-3.5 parent: 2 + - uid: 17260 + components: + - type: Transform + pos: -37.5,14.5 + parent: 2 - proto: SubstationMachineCircuitboard entities: - uid: 2293 @@ -97817,23 +98690,23 @@ entities: - SurveillanceCameraCommand nameSet: True id: C07 - Bridge Evac West - - uid: 3803 + - uid: 248 components: - type: MetaData - name: camera (B01 - AI) + name: camera (B02 - AI Core East) - type: Transform - rot: -1.5707963267948966 rad - pos: -44.5,20.5 + rot: 1.5707963267948966 rad + pos: -39.5,18.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraCommand nameSet: True - id: B01 - AI - - uid: 3807 + id: B02 - AI Core East + - uid: 6953 components: - type: MetaData - name: camera (B04 - AI Core) + name: camera (B04 - AI Entrance) - type: Transform rot: 3.141592653589793 rad pos: -35.5,22.5 @@ -97842,58 +98715,46 @@ entities: setupAvailableNetworks: - SurveillanceCameraCommand nameSet: True - id: B04 - AI Core - - uid: 5453 + id: B04 - AI Entrance + - uid: 8425 components: - type: MetaData - name: camera (B06 - AI Entrance) - - type: Transform - pos: -33.5,19.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: B06 - AI Entrance - - uid: 5454 - components: - - type: MetaData - name: camera (B05 - Camera Servers) - - type: Transform - rot: 1.5707963267948966 rad - pos: -35.5,24.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: B05 - Camera Servers - - uid: 5465 - components: - - type: MetaData - name: camera (B02 - AI Chamber) - - type: Transform - rot: 3.141592653589793 rad - pos: -40.5,22.5 - parent: 2 - - type: SurveillanceCamera - setupAvailableNetworks: - - SurveillanceCameraCommand - nameSet: True - id: B02 - AI Chamber - - uid: 5466 - components: - - type: MetaData - name: camera (B03 - AI Utility) + name: camera (B03 - AI Upload) - type: Transform rot: -1.5707963267948966 rad - pos: -41.5,16.5 + pos: -43.5,16.5 parent: 2 - type: SurveillanceCamera setupAvailableNetworks: - SurveillanceCameraCommand nameSet: True - id: B03 - AI Utility + id: B03 - AI Upload + - uid: 9401 + components: + - type: MetaData + name: camera (C21 - RD's Office) + - type: Transform + rot: -1.5707963267948966 rad + pos: -21.5,26.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: C21 - RD's Office + - uid: 11153 + components: + - type: MetaData + name: camera (B01 - AI Core West) + - type: Transform + rot: -1.5707963267948966 rad + pos: -45.5,20.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: B01 - AI Core West - uid: 14860 components: - type: MetaData @@ -98146,6 +99007,19 @@ entities: - SurveillanceCameraCommand nameSet: True id: C22 - RD's Bedroom + - uid: 17448 + components: + - type: MetaData + name: camera (B05 - Camera Servers) + - type: Transform + rot: 3.141592653589793 rad + pos: -35.5,26.5 + parent: 2 + - type: SurveillanceCamera + setupAvailableNetworks: + - SurveillanceCameraCommand + nameSet: True + id: B05 - Camera Servers - proto: SurveillanceCameraEngineering entities: - uid: 8941 @@ -99686,6 +100560,16 @@ entities: rot: 3.141592653589793 rad pos: 33.5,-22.5 parent: 2 + - uid: 7169 + components: + - type: Transform + pos: -35.5,22.5 + parent: 2 + - uid: 7788 + components: + - type: Transform + pos: -35.5,21.5 + parent: 2 - uid: 8134 components: - type: Transform @@ -100253,11 +101137,6 @@ entities: rot: -1.5707963267948966 rad pos: -15.5,8.5 parent: 2 - - uid: 6606 - components: - - type: Transform - pos: -35.5,21.5 - parent: 2 - uid: 6650 components: - type: Transform @@ -100268,11 +101147,6 @@ entities: - type: Transform pos: -1.5,22.5 parent: 2 - - uid: 6700 - components: - - type: Transform - pos: -35.5,22.5 - parent: 2 - uid: 6883 components: - type: Transform @@ -100311,11 +101185,6 @@ entities: rot: 1.5707963267948966 rad pos: -3.5,19.5 parent: 2 - - uid: 8421 - components: - - type: Transform - pos: -39.5,19.5 - parent: 2 - uid: 9217 components: - type: Transform @@ -100344,11 +101213,6 @@ entities: - type: Transform pos: -34.5,32.5 parent: 2 - - uid: 9594 - components: - - type: Transform - pos: -39.5,21.5 - parent: 2 - uid: 10885 components: - type: Transform @@ -100831,11 +101695,6 @@ entities: - type: Transform pos: 36.5,15.5 parent: 2 - - uid: 9075 - components: - - type: Transform - pos: 37.5,17.5 - parent: 2 - uid: 13519 components: - type: Transform @@ -101354,12 +102213,6 @@ entities: rot: 3.141592653589793 rad pos: 11.5,-17.5 parent: 2 - - uid: 16199 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: 11.5,-19.5 - parent: 2 - proto: TableWood entities: - uid: 228 @@ -101811,6 +102664,13 @@ entities: - type: Transform pos: -42.691574,-36.72419 parent: 2 +- proto: ToyAi + entities: + - uid: 17539 + components: + - type: Transform + pos: -33.676445,21.80497 + parent: 2 - proto: ToyFigurineCaptain entities: - uid: 15427 @@ -101954,17 +102814,26 @@ entities: - type: DeviceLinkSource linkedPorts: 4266: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4265: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4264: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 6529 components: - type: Transform @@ -101973,21 +102842,33 @@ entities: - type: DeviceLinkSource linkedPorts: 6524: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6523: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6522: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6521: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 6530 components: - type: Transform @@ -101996,21 +102877,33 @@ entities: - type: DeviceLinkSource linkedPorts: 6528: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6527: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6526: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6525: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 9351 components: - type: Transform @@ -102019,33 +102912,54 @@ entities: - type: DeviceLinkSource linkedPorts: 14116: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14113: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14114: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14118: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14117: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9349: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14115: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 15084 components: - type: Transform @@ -102054,21 +102968,33 @@ entities: - type: DeviceLinkSource linkedPorts: 4277: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2827: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4279: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14913: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - proto: UnfinishedMachineFrame entities: - uid: 3431 @@ -102205,11 +103131,6 @@ entities: parent: 2 - proto: VendingMachineCigs entities: - - uid: 450 - components: - - type: Transform - pos: 7.5,3.5 - parent: 2 - uid: 2141 components: - type: Transform @@ -102220,6 +103141,11 @@ entities: - type: Transform pos: -20.5,-6.5 parent: 2 + - uid: 13562 + components: + - type: Transform + pos: -6.5,3.5 + parent: 2 - proto: VendingMachineClothing entities: - uid: 4174 @@ -102387,7 +103313,7 @@ entities: parent: 2 - proto: VendingMachineSec entities: - - uid: 2051 + - uid: 9594 components: - type: Transform pos: -5.5,-20.5 @@ -103969,18 +104895,7 @@ entities: - uid: 3535 components: - type: Transform - pos: -47.5,17.5 - parent: 2 - - uid: 3541 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -29.5,15.5 - parent: 2 - - uid: 3545 - components: - - type: Transform - pos: -34.5,16.5 + pos: -42.5,21.5 parent: 2 - uid: 3550 components: @@ -104133,6 +105048,11 @@ entities: rot: 1.5707963267948966 rad pos: 29.5,17.5 parent: 2 + - uid: 3730 + components: + - type: Transform + pos: -45.5,15.5 + parent: 2 - uid: 3738 components: - type: Transform @@ -104208,6 +105128,16 @@ entities: - type: Transform pos: 23.5,17.5 parent: 2 + - uid: 3812 + components: + - type: Transform + pos: -46.5,20.5 + parent: 2 + - uid: 3818 + components: + - type: Transform + pos: -44.5,16.5 + parent: 2 - uid: 3821 components: - type: Transform @@ -104428,6 +105358,11 @@ entities: rot: -1.5707963267948966 rad pos: -15.5,-9.5 parent: 2 + - uid: 4325 + components: + - type: Transform + pos: -38.5,23.5 + parent: 2 - uid: 4330 components: - type: Transform @@ -104893,6 +105828,11 @@ entities: rot: 3.141592653589793 rad pos: -20.5,36.5 parent: 2 + - uid: 5099 + components: + - type: Transform + pos: -43.5,17.5 + parent: 2 - uid: 5124 components: - type: Transform @@ -104909,6 +105849,11 @@ entities: rot: 3.141592653589793 rad pos: -19.5,14.5 parent: 2 + - uid: 5140 + components: + - type: Transform + pos: -45.5,14.5 + parent: 2 - uid: 5148 components: - type: Transform @@ -104965,11 +105910,6 @@ entities: - type: Transform pos: -10.5,23.5 parent: 2 - - uid: 5213 - components: - - type: Transform - pos: -38.5,17.5 - parent: 2 - uid: 5214 components: - type: Transform @@ -105049,15 +105989,15 @@ entities: rot: 1.5707963267948966 rad pos: -25.5,26.5 parent: 2 - - uid: 5345 + - uid: 5340 components: - type: Transform - pos: -45.5,20.5 + pos: -38.5,13.5 parent: 2 - - uid: 5348 + - uid: 5350 components: - type: Transform - pos: -44.5,17.5 + pos: -45.5,18.5 parent: 2 - uid: 5351 components: @@ -105080,85 +106020,100 @@ entities: - type: Transform pos: -33.5,26.5 parent: 2 - - uid: 5392 + - uid: 5391 components: - type: Transform - pos: -45.5,25.5 - parent: 2 - - uid: 5394 - components: - - type: Transform - pos: -42.5,23.5 + pos: -45.5,13.5 parent: 2 - uid: 5403 components: - type: Transform pos: -22.5,31.5 parent: 2 - - uid: 5425 + - uid: 5409 components: - type: Transform - pos: -38.5,13.5 + pos: -42.5,17.5 + parent: 2 + - uid: 5415 + components: + - type: Transform + pos: -45.5,23.5 + parent: 2 + - uid: 5422 + components: + - type: Transform + pos: -48.5,22.5 parent: 2 - uid: 5432 components: - type: Transform pos: -35.5,27.5 parent: 2 - - uid: 5448 + - uid: 5434 components: - type: Transform - pos: -34.5,17.5 + pos: -41.5,23.5 parent: 2 - - uid: 5457 + - uid: 5467 components: - type: Transform - pos: -47.5,23.5 - parent: 2 - - uid: 5470 - components: - - type: Transform - pos: -46.5,24.5 + pos: -45.5,22.5 parent: 2 - uid: 5473 components: - type: Transform pos: 40.5,-7.5 parent: 2 - - uid: 5478 + - uid: 5486 components: - type: Transform - pos: -35.5,17.5 + pos: -46.5,23.5 parent: 2 - - uid: 5515 + - uid: 5487 components: - type: Transform - pos: -45.5,22.5 + pos: -45.5,25.5 + parent: 2 + - uid: 5510 + components: + - type: Transform + pos: -47.5,20.5 + parent: 2 + - uid: 5513 + components: + - type: Transform + pos: -41.5,12.5 parent: 2 - uid: 5518 components: - type: Transform pos: -34.5,23.5 parent: 2 + - uid: 5520 + components: + - type: Transform + pos: -35.5,28.5 + parent: 2 + - uid: 5527 + components: + - type: Transform + pos: -44.5,15.5 + parent: 2 - uid: 5533 components: - type: Transform pos: -42.5,26.5 parent: 2 - - uid: 5535 - components: - - type: Transform - pos: -46.5,23.5 - parent: 2 - uid: 5542 components: - type: Transform pos: -35.5,14.5 parent: 2 - - uid: 5547 + - uid: 5554 components: - type: Transform - pos: -45.5,21.5 + pos: -42.5,19.5 parent: 2 - uid: 5560 components: @@ -105428,35 +106383,25 @@ entities: rot: -1.5707963267948966 rad pos: -1.5,40.5 parent: 2 - - uid: 6712 - components: - - type: Transform - pos: -42.5,21.5 - parent: 2 - - uid: 6715 - components: - - type: Transform - pos: -43.5,21.5 - parent: 2 - uid: 6717 components: - type: Transform - pos: -42.5,14.5 - parent: 2 - - uid: 6719 - components: - - type: Transform - pos: -42.5,17.5 + pos: -40.5,23.5 parent: 2 - uid: 6736 components: - type: Transform pos: -16.5,25.5 parent: 2 - - uid: 6757 + - uid: 6754 components: - type: Transform - pos: -46.5,20.5 + pos: -43.5,19.5 + parent: 2 + - uid: 6756 + components: + - type: Transform + pos: -39.5,17.5 parent: 2 - uid: 6782 components: @@ -105481,7 +106426,7 @@ entities: - uid: 6836 components: - type: Transform - pos: -43.5,16.5 + pos: -38.5,12.5 parent: 2 - uid: 6838 components: @@ -105503,16 +106448,6 @@ entities: - type: Transform pos: -29.5,14.5 parent: 2 - - uid: 6947 - components: - - type: Transform - pos: -40.5,23.5 - parent: 2 - - uid: 6953 - components: - - type: Transform - pos: -46.5,19.5 - parent: 2 - uid: 6961 components: - type: Transform @@ -105528,41 +106463,26 @@ entities: - type: Transform pos: -41.5,27.5 parent: 2 - - uid: 6984 + - uid: 6988 components: - type: Transform - pos: -43.5,23.5 - parent: 2 - - uid: 6987 - components: - - type: Transform - pos: -42.5,19.5 - parent: 2 - - uid: 6995 - components: - - type: Transform - pos: -40.5,13.5 - parent: 2 - - uid: 6996 - components: - - type: Transform - pos: -45.5,16.5 + pos: -44.5,23.5 parent: 2 - uid: 6997 components: - type: Transform pos: -34.5,21.5 parent: 2 - - uid: 6998 - components: - - type: Transform - pos: -44.5,24.5 - parent: 2 - uid: 7033 components: - type: Transform pos: -42.5,24.5 parent: 2 + - uid: 7038 + components: + - type: Transform + pos: -44.5,13.5 + parent: 2 - uid: 7046 components: - type: Transform @@ -106300,10 +107220,10 @@ entities: - type: Transform pos: -37.5,23.5 parent: 2 - - uid: 8425 + - uid: 8422 components: - type: Transform - pos: -45.5,17.5 + pos: -43.5,13.5 parent: 2 - uid: 8430 components: @@ -106406,11 +107326,6 @@ entities: - type: Transform pos: -30.5,35.5 parent: 2 - - uid: 9580 - components: - - type: Transform - pos: -46.5,18.5 - parent: 2 - uid: 9582 components: - type: Transform @@ -106424,7 +107339,7 @@ entities: - uid: 9603 components: - type: Transform - pos: -42.5,13.5 + pos: -46.5,17.5 parent: 2 - uid: 9604 components: @@ -106524,6 +107439,11 @@ entities: - type: Transform pos: -30.5,16.5 parent: 2 + - uid: 11179 + components: + - type: Transform + pos: -47.5,19.5 + parent: 2 - uid: 11189 components: - type: Transform @@ -106616,6 +107536,11 @@ entities: - type: Transform pos: 23.5,-32.5 parent: 2 + - uid: 12783 + components: + - type: Transform + pos: -42.5,13.5 + parent: 2 - uid: 12926 components: - type: Transform @@ -106628,6 +107553,11 @@ entities: rot: 3.141592653589793 rad pos: -24.5,46.5 parent: 2 + - uid: 13499 + components: + - type: Transform + pos: -43.5,24.5 + parent: 2 - uid: 13545 components: - type: Transform @@ -106699,16 +107629,6 @@ entities: - type: Transform pos: -35.5,23.5 parent: 2 - - uid: 13894 - components: - - type: Transform - pos: -38.5,23.5 - parent: 2 - - uid: 13897 - components: - - type: Transform - pos: -43.5,19.5 - parent: 2 - uid: 13902 components: - type: Transform @@ -106732,7 +107652,7 @@ entities: - uid: 13913 components: - type: Transform - pos: -44.5,16.5 + pos: -45.5,17.5 parent: 2 - uid: 13918 components: @@ -106759,6 +107679,11 @@ entities: - type: Transform pos: -35.5,31.5 parent: 2 + - uid: 13930 + components: + - type: Transform + pos: -35.5,17.5 + parent: 2 - uid: 13954 components: - type: Transform @@ -106769,6 +107694,21 @@ entities: - type: Transform pos: -34.5,29.5 parent: 2 + - uid: 13959 + components: + - type: Transform + pos: -45.5,16.5 + parent: 2 + - uid: 13963 + components: + - type: Transform + pos: -47.5,17.5 + parent: 2 + - uid: 13965 + components: + - type: Transform + pos: -39.5,13.5 + parent: 2 - uid: 14010 components: - type: Transform @@ -106815,6 +107755,11 @@ entities: rot: 3.141592653589793 rad pos: -21.5,57.5 parent: 2 + - uid: 14359 + components: + - type: Transform + pos: -44.5,12.5 + parent: 2 - uid: 14394 components: - type: Transform @@ -106867,11 +107812,6 @@ entities: - type: Transform pos: -12.5,18.5 parent: 2 - - uid: 14774 - components: - - type: Transform - pos: -38.5,14.5 - parent: 2 - uid: 14797 components: - type: Transform @@ -107080,6 +108020,11 @@ entities: rot: 1.5707963267948966 rad pos: -18.5,11.5 parent: 2 + - uid: 16201 + components: + - type: Transform + pos: -30.5,15.5 + parent: 2 - uid: 16302 components: - type: Transform @@ -107198,6 +108143,11 @@ entities: - type: Transform pos: -34.5,18.5 parent: 2 + - uid: 17255 + components: + - type: Transform + pos: -46.5,21.5 + parent: 2 - uid: 17257 components: - type: Transform @@ -107223,15 +108173,20 @@ entities: - type: Transform pos: -41.5,26.5 parent: 2 + - uid: 17282 + components: + - type: Transform + pos: -40.5,13.5 + parent: 2 - uid: 17300 components: - type: Transform - pos: -44.5,23.5 + pos: -47.5,18.5 parent: 2 - - uid: 17313 + - uid: 17316 components: - type: Transform - pos: -41.5,17.5 + pos: -45.5,24.5 parent: 2 - uid: 17317 components: @@ -107253,10 +108208,30 @@ entities: - type: Transform pos: -28.5,-47.5 parent: 2 - - uid: 17375 + - uid: 17391 components: - type: Transform - pos: -45.5,24.5 + pos: -47.5,23.5 + parent: 2 + - uid: 17392 + components: + - type: Transform + pos: -41.5,28.5 + parent: 2 + - uid: 17398 + components: + - type: Transform + pos: -38.5,17.5 + parent: 2 + - uid: 17403 + components: + - type: Transform + pos: -43.5,21.5 + parent: 2 + - uid: 17444 + components: + - type: Transform + pos: -38.5,28.5 parent: 2 - proto: WallReinforcedRust entities: @@ -109191,16 +110166,10 @@ entities: - type: Transform pos: -25.5,27.5 parent: 2 - - uid: 3722 + - uid: 3734 components: - type: Transform - pos: -37.5,17.5 - parent: 2 - - uid: 3730 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -46.5,17.5 + pos: -44.5,17.5 parent: 2 - uid: 3736 components: @@ -109217,6 +110186,16 @@ entities: - type: Transform pos: -34.5,26.5 parent: 2 + - uid: 3794 + components: + - type: Transform + pos: -41.5,13.5 + parent: 2 + - uid: 3814 + components: + - type: Transform + pos: -46.5,18.5 + parent: 2 - uid: 3826 components: - type: Transform @@ -109550,11 +110529,6 @@ entities: - type: Transform pos: -20.5,46.5 parent: 2 - - uid: 4299 - components: - - type: Transform - pos: -46.5,16.5 - parent: 2 - uid: 4300 components: - type: Transform @@ -109988,11 +110962,6 @@ entities: - type: Transform pos: 49.5,-6.5 parent: 2 - - uid: 5100 - components: - - type: Transform - pos: -45.5,15.5 - parent: 2 - uid: 5105 components: - type: Transform @@ -110131,51 +111100,41 @@ entities: - type: Transform pos: -42.5,25.5 parent: 2 - - uid: 5395 + - uid: 5349 components: - type: Transform - pos: -42.5,15.5 + pos: -41.5,17.5 parent: 2 - - uid: 5397 + - uid: 5412 components: - type: Transform - pos: -38.5,22.5 + pos: -46.5,19.5 parent: 2 - - uid: 5434 + - uid: 5425 components: - type: Transform - pos: -43.5,24.5 + pos: -43.5,23.5 parent: 2 - - uid: 5445 + - uid: 5475 components: - type: Transform - pos: -39.5,13.5 + pos: -39.5,23.5 parent: 2 - - uid: 5456 + - uid: 5507 components: - type: Transform - pos: -39.5,17.5 - parent: 2 - - uid: 5479 - components: - - type: Transform - pos: -38.5,18.5 - parent: 2 - - uid: 5481 - components: - - type: Transform - pos: -47.5,20.5 - parent: 2 - - uid: 5510 - components: - - type: Transform - pos: -41.5,23.5 + pos: -47.5,21.5 parent: 2 - uid: 5516 components: - type: Transform pos: -34.5,22.5 parent: 2 + - uid: 5535 + components: + - type: Transform + pos: -44.5,14.5 + parent: 2 - uid: 5544 components: - type: Transform @@ -110240,21 +111199,11 @@ entities: - type: Transform pos: 44.5,-33.5 parent: 2 - - uid: 6714 - components: - - type: Transform - pos: -42.5,16.5 - parent: 2 - uid: 6729 components: - type: Transform pos: -25.5,24.5 parent: 2 - - uid: 6776 - components: - - type: Transform - pos: -41.5,13.5 - parent: 2 - uid: 6857 components: - type: Transform @@ -110343,11 +111292,6 @@ entities: - type: Transform pos: -18.5,-50.5 parent: 2 - - uid: 7169 - components: - - type: Transform - pos: -39.5,23.5 - parent: 2 - uid: 7180 components: - type: Transform @@ -110458,16 +111402,16 @@ entities: - type: Transform pos: -31.5,29.5 parent: 2 - - uid: 9592 - components: - - type: Transform - pos: -45.5,18.5 - parent: 2 - uid: 9601 components: - type: Transform pos: -24.5,29.5 parent: 2 + - uid: 9605 + components: + - type: Transform + pos: -34.5,16.5 + parent: 2 - uid: 9615 components: - type: Transform @@ -110573,6 +111517,11 @@ entities: - type: Transform pos: -5.5,-39.5 parent: 2 + - uid: 11882 + components: + - type: Transform + pos: -38.5,22.5 + parent: 2 - uid: 11892 components: - type: Transform @@ -110600,6 +111549,16 @@ entities: rot: 3.141592653589793 rad pos: 23.5,-16.5 parent: 2 + - uid: 12765 + components: + - type: Transform + pos: -34.5,17.5 + parent: 2 + - uid: 12766 + components: + - type: Transform + pos: -47.5,22.5 + parent: 2 - uid: 13279 components: - type: Transform @@ -110638,6 +111597,16 @@ entities: - type: Transform pos: 15.5,-23.5 parent: 2 + - uid: 13884 + components: + - type: Transform + pos: -37.5,13.5 + parent: 2 + - uid: 13894 + components: + - type: Transform + pos: -46.5,24.5 + parent: 2 - uid: 13911 components: - type: Transform @@ -110654,11 +111623,6 @@ entities: - type: Transform pos: -26.5,29.5 parent: 2 - - uid: 13921 - components: - - type: Transform - pos: -46.5,22.5 - parent: 2 - uid: 13923 components: - type: Transform @@ -110684,15 +111648,10 @@ entities: - type: Transform pos: -31.5,31.5 parent: 2 - - uid: 13963 + - uid: 13960 components: - type: Transform - pos: -45.5,19.5 - parent: 2 - - uid: 13965 - components: - - type: Transform - pos: -46.5,21.5 + pos: -46.5,22.5 parent: 2 - uid: 13979 components: @@ -111052,25 +112011,10 @@ entities: rot: 1.5707963267948966 rad pos: -44.5,-53.5 parent: 2 - - uid: 17255 - components: - - type: Transform - pos: -45.5,23.5 - parent: 2 - - uid: 17256 - components: - - type: Transform - pos: -43.5,17.5 - parent: 2 - - uid: 17260 - components: - - type: Transform - pos: -37.5,13.5 - parent: 2 - uid: 17262 components: - type: Transform - pos: -36.5,13.5 + pos: -42.5,23.5 parent: 2 - uid: 17265 components: @@ -111092,6 +112036,16 @@ entities: - type: Transform pos: -35.5,10.5 parent: 2 + - uid: 17271 + components: + - type: Transform + pos: -46.5,16.5 + parent: 2 + - uid: 17312 + components: + - type: Transform + pos: -38.5,18.5 + parent: 2 - uid: 17320 components: - type: Transform @@ -111103,6 +112057,26 @@ entities: rot: -1.5707963267948966 rad pos: -28.5,-48.5 parent: 2 + - uid: 17375 + components: + - type: Transform + pos: -48.5,18.5 + parent: 2 + - uid: 17376 + components: + - type: Transform + pos: -36.5,13.5 + parent: 2 + - uid: 17393 + components: + - type: Transform + pos: -44.5,24.5 + parent: 2 + - uid: 17401 + components: + - type: Transform + pos: -37.5,17.5 + parent: 2 - proto: WallSolid entities: - uid: 6 @@ -115846,6 +116820,33 @@ entities: - type: Transform pos: -11.489568,-33.27769 parent: 2 +- proto: WeaponTurretSyndicateBroken + entities: + - uid: 5456 + components: + - type: Transform + pos: -39.5,22.5 + parent: 2 + - uid: 5525 + components: + - type: Transform + pos: -45.5,21.5 + parent: 2 + - uid: 5553 + components: + - type: Transform + pos: -45.5,19.5 + parent: 2 + - uid: 8406 + components: + - type: Transform + pos: -39.5,18.5 + parent: 2 + - uid: 17449 + components: + - type: Transform + pos: -35.5,15.5 + parent: 2 - proto: Welder entities: - uid: 6643 @@ -116135,41 +117136,24 @@ entities: rot: -1.5707963267948966 rad pos: 27.5,-2.5 parent: 2 + - uid: 2067 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,15.5 + parent: 2 + - uid: 4301 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -43.5,20.5 + parent: 2 - uid: 5372 components: - type: Transform rot: -1.5707963267948966 rad pos: -39.5,25.5 parent: 2 - - uid: 6713 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -44.5,21.5 - parent: 2 - - uid: 8415 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -41.5,14.5 - parent: 2 - - uid: 8420 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -39.5,14.5 - parent: 2 - - uid: 13449 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -40.5,14.5 - parent: 2 - - uid: 17315 - components: - - type: Transform - pos: -44.5,19.5 - parent: 2 - proto: WindoorSecureEngineeringLocked entities: - uid: 1156 @@ -116969,6 +117953,18 @@ entities: rot: 3.141592653589793 rad pos: -3.5,-15.5 parent: 2 + - uid: 5453 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,16.5 + parent: 2 + - uid: 5478 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -41.5,14.5 + parent: 2 - uid: 5705 components: - type: Transform @@ -117218,4 +118214,9 @@ entities: - type: Transform pos: -26.609678,7.5555515 parent: 2 + - uid: 17533 + components: + - type: Transform + pos: -35.58506,21.417738 + parent: 2 ... diff --git a/Resources/Maps/fland.yml b/Resources/Maps/fland.yml index 43761ac5e3..5180e5bfbb 100644 --- a/Resources/Maps/fland.yml +++ b/Resources/Maps/fland.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 250.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/29/2025 03:57:17 - entityCount: 36017 + time: 04/19/2025 11:28:47 + entityCount: 36028 maps: - 1 grids: @@ -17877,7 +17877,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9359: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9357 components: - type: Transform @@ -17886,7 +17887,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9358: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9358 components: - type: Transform @@ -17895,7 +17897,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9357: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9359 components: - type: Transform @@ -17904,7 +17907,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9356: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9407 components: - type: Transform @@ -17923,7 +17927,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9410: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9410 components: - type: Transform @@ -17932,7 +17937,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9409: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9411 components: - type: Transform @@ -17941,7 +17947,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9412: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9412 components: - type: Transform @@ -17950,7 +17957,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9411: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9459 components: - type: Transform @@ -18168,7 +18176,8 @@ entities: - type: DeviceLinkSource linkedPorts: 31366: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 16663 components: - type: Transform @@ -18636,7 +18645,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12402: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12402 components: - type: Transform @@ -18648,7 +18658,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12401: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23029 components: - type: Transform @@ -18657,7 +18668,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23413: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23458 components: - type: Transform @@ -18668,7 +18680,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23457: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 2870 @@ -18748,7 +18761,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15609: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 15612 components: - type: Transform @@ -18759,7 +18773,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15610: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 33581 components: - type: Transform @@ -18792,7 +18807,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10120: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10120 components: - type: Transform @@ -18803,7 +18819,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10119: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 3715 @@ -18814,7 +18831,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3716: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3716 components: - type: Transform @@ -18823,7 +18841,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3715: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12403 components: - type: Transform @@ -18835,7 +18854,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12421: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12404 components: - type: Transform @@ -18847,7 +18867,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12395: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 12420 components: - type: Transform @@ -18859,7 +18880,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12400: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 12421 components: - type: Transform @@ -18871,7 +18893,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12403: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12503 components: - type: Transform @@ -18883,7 +18906,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12397: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 12504 components: - type: Transform @@ -18895,7 +18919,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12399: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 20640 components: - type: Transform @@ -18905,7 +18930,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20641: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20641 components: - type: Transform @@ -18915,7 +18941,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20640: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23413 components: - type: Transform @@ -18924,7 +18951,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23029: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23457 components: - type: Transform @@ -18935,7 +18963,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23458: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24737 components: - type: Transform @@ -18944,7 +18973,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24738: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24738 components: - type: Transform @@ -18953,7 +18983,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24737: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 26784 components: - type: Transform @@ -18962,7 +18993,8 @@ entities: - type: DeviceLinkSource linkedPorts: 26785: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 26785 components: - type: Transform @@ -18971,7 +19003,8 @@ entities: - type: DeviceLinkSource linkedPorts: 26784: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 27106 components: - type: Transform @@ -18980,7 +19013,8 @@ entities: - type: DeviceLinkSource linkedPorts: 27107: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 27107 components: - type: Transform @@ -18989,7 +19023,8 @@ entities: - type: DeviceLinkSource linkedPorts: 27106: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 33236 components: - type: Transform @@ -18998,7 +19033,8 @@ entities: - type: DeviceLinkSource linkedPorts: 33237: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 33237 components: - type: Transform @@ -19007,7 +19043,8 @@ entities: - type: DeviceLinkSource linkedPorts: 33236: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 2999 @@ -19020,7 +19057,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3000: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3000 components: - type: Transform @@ -19029,7 +19067,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2999: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3748 components: - type: Transform @@ -19038,7 +19077,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3743: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 3749 components: - type: Transform @@ -19047,7 +19087,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13618: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13618 components: - type: Transform @@ -19056,7 +19097,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3749: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19163 components: - type: Transform @@ -19067,9 +19109,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19166: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 19165: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19164 components: - type: Transform @@ -19080,9 +19124,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19166: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 19165: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19165 components: - type: Transform @@ -19093,9 +19139,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19164: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 19163: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19166 components: - type: Transform @@ -19106,9 +19154,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19164: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 19163: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 26786 components: - type: Transform @@ -19117,7 +19167,8 @@ entities: - type: DeviceLinkSource linkedPorts: 26787: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 26787 components: - type: Transform @@ -19126,7 +19177,8 @@ entities: - type: DeviceLinkSource linkedPorts: 26786: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 33238 components: - type: Transform @@ -19135,7 +19187,8 @@ entities: - type: DeviceLinkSource linkedPorts: 33239: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 33239 components: - type: Transform @@ -19144,7 +19197,8 @@ entities: - type: DeviceLinkSource linkedPorts: 33238: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 2869 @@ -19249,7 +19303,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3748: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 10108 components: - type: Transform @@ -19270,7 +19325,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12404: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 12397 @@ -19282,7 +19338,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12503: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 12399 @@ -19293,7 +19350,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12504: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 12400 @@ -19304,7 +19362,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12420: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 15609 @@ -19315,7 +19374,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15611: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 15610 @@ -19326,7 +19386,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15612: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 31366 @@ -19338,7 +19399,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16079: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - proto: AirlockExternalLocked @@ -19353,7 +19415,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3834: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3834 components: - type: Transform @@ -19362,7 +19425,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3833: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6538 components: - type: Transform @@ -19372,7 +19436,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6540: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6540 components: - type: Transform @@ -19382,7 +19447,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6538: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23125 components: - type: Transform @@ -19391,7 +19457,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23126: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23126 components: - type: Transform @@ -19400,7 +19467,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23125: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23127 components: - type: Transform @@ -19409,7 +19477,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23128: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23128 components: - type: Transform @@ -19418,7 +19487,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23127: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockFreezer entities: - uid: 30594 @@ -19518,7 +19588,7 @@ entities: pos: -15.5,-4.5 parent: 13329 - type: Door - secondsUntilStateChange: -11435.99 + secondsUntilStateChange: -12230.655 state: Opening - type: DeviceLinkSource lastSignals: @@ -29756,13 +29826,6 @@ entities: parent: 13329 - type: SpamEmitSound enabled: False - - uid: 1292 - components: - - type: Transform - pos: -21.5,22.5 - parent: 13329 - - type: SpamEmitSound - enabled: False - uid: 10343 components: - type: Transform @@ -29770,6 +29833,12 @@ entities: parent: 13329 - type: SpamEmitSound enabled: False + - uid: 18804 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -10.5,17.5 + parent: 13329 - uid: 29164 components: - type: Transform @@ -30818,9 +30887,12 @@ entities: - type: DeviceLinkSource linkedPorts: 9333: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 10578 components: - type: Transform @@ -30829,9 +30901,12 @@ entities: - type: DeviceLinkSource linkedPorts: 9336: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 10583 components: - type: Transform @@ -30840,9 +30915,12 @@ entities: - type: DeviceLinkSource linkedPorts: 9334: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 10586 components: - type: Transform @@ -30851,9 +30929,12 @@ entities: - type: DeviceLinkSource linkedPorts: 9335: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - proto: BrokenBottle entities: - uid: 18218 @@ -90501,6 +90582,12 @@ entities: - type: Transform pos: 83.5,-41.5 parent: 13329 + - uid: 36021 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -21.5,21.5 + parent: 13329 - proto: ChairOfficeLight entities: - uid: 15343 @@ -94959,7 +95046,7 @@ entities: - uid: 18480 components: - type: Transform - pos: 75.48135,-11.298034 + pos: 75.596245,-9.047987 parent: 13329 - proto: ClothingEyesBlindfold entities: @@ -97341,11 +97428,43 @@ entities: - type: Transform pos: 82.5,57.5 parent: 13329 +- proto: ComputerCargoOrdersEngineering + entities: - uid: 31626 components: - type: Transform rot: 1.5707963267948966 rad - pos: 59.5,49.5 + pos: 75.5,-11.5 + parent: 13329 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 18823 + components: + - type: Transform + pos: 6.5,68.5 + parent: 13329 +- proto: ComputerCargoOrdersScience + entities: + - uid: 36019 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 41.5,-27.5 + parent: 13329 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 18860 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 30.5,23.5 + parent: 13329 +- proto: ComputerCargoOrdersService + entities: + - uid: 1292 + components: + - type: Transform + pos: -21.5,22.5 parent: 13329 - proto: ComputerCargoShuttle entities: @@ -97606,6 +97725,14 @@ entities: rot: -1.5707963267948966 rad pos: 45.5,40.5 parent: 13329 +- proto: ComputerFundingAllocation + entities: + - uid: 10132 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 59.5,49.5 + parent: 13329 - proto: ComputerId entities: - uid: 30663 @@ -99092,6 +99219,46 @@ entities: - 0 - 0 - 0 +- proto: CrateLockBoxEngineering + entities: + - uid: 36027 + components: + - type: Transform + pos: 73.5,-12.5 + parent: 13329 +- proto: CrateLockBoxMedical + entities: + - uid: 36026 + components: + - type: Transform + pos: 11.5,61.5 + parent: 13329 +- proto: CrateLockBoxScience + entities: + - uid: 36025 + components: + - type: Transform + pos: 45.5,-27.5 + parent: 13329 +- proto: CrateLockBoxSecurity + entities: + - uid: 36024 + components: + - type: Transform + pos: 26.5,7.5 + parent: 13329 +- proto: CrateLockBoxService + entities: + - uid: 36022 + components: + - type: Transform + pos: -18.5,35.5 + parent: 13329 + - uid: 36023 + components: + - type: Transform + pos: -19.5,7.5 + parent: 13329 - proto: CrateMaterialSteel entities: - uid: 11674 @@ -116503,7 +116670,7 @@ entities: - uid: 10156 components: - type: Transform - pos: 30.550055,23.487902 + pos: 30.482075,22.65195 parent: 13329 - uid: 10548 components: @@ -163792,10 +163959,10 @@ entities: parent: 13329 - proto: Jukebox entities: - - uid: 32340 + - uid: 36020 components: - type: Transform - pos: -21.5,21.5 + pos: -10.5,16.5 parent: 13329 - proto: KitchenElectricGrill entities: @@ -164273,51 +164440,81 @@ entities: - type: DeviceLinkSource linkedPorts: 10681: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 10680: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 10679: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 10678: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 10685: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 10684: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 10683: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 10687: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 10686: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 26338: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 35939: - - Pressed: Open + - - Pressed + - Open 35970: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 35969: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 9361: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 10677: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 7239: - - Pressed: Open + - - Pressed + - Open - type: Label currentLabel: Open Armory - type: NameModifier @@ -164333,37 +164530,53 @@ entities: - type: DeviceLinkSource linkedPorts: 26338: - - Pressed: Close + - - Pressed + - Close 10681: - - Pressed: Close + - - Pressed + - Close 10680: - - Pressed: Close + - - Pressed + - Close 10679: - - Pressed: Close + - - Pressed + - Close 10678: - - Pressed: Close + - - Pressed + - Close 10685: - - Pressed: Close + - - Pressed + - Close 10684: - - Pressed: Close + - - Pressed + - Close 10683: - - Pressed: Close + - - Pressed + - Close 10687: - - Pressed: Close + - - Pressed + - Close 10686: - - Pressed: Close + - - Pressed + - Close 35970: - - Pressed: Close + - - Pressed + - Close 35969: - - Pressed: Close + - - Pressed + - Close 35939: - - Pressed: Close + - - Pressed + - Close 10677: - - Pressed: Close + - - Pressed + - Close 9361: - - Pressed: Close + - - Pressed + - Close 7239: - - Pressed: Close + - - Pressed + - Close - type: Label currentLabel: Close Armory - type: NameModifier @@ -166472,6 +166685,13 @@ entities: - type: Transform pos: 28.5,58.5 parent: 13329 +- proto: MachineMaterialSilo + entities: + - uid: 36028 + components: + - type: Transform + pos: 43.5,-27.5 + parent: 13329 - proto: MagazinePistol entities: - uid: 10651 @@ -167078,10 +167298,10 @@ entities: parent: 13329 - proto: MedicalTechFab entities: - - uid: 18823 + - uid: 32340 components: - type: Transform - pos: 6.5,68.5 + pos: 4.5,72.5 parent: 13329 - proto: MedkitAdvancedFilled entities: @@ -169009,7 +169229,8 @@ entities: - type: DeviceLinkSource linkedPorts: 32364: - - DoorStatus: Close + - - DoorStatus + - Close - proto: PlasmaWindoorSecureSecurityLocked entities: - uid: 32364 @@ -169023,7 +169244,8 @@ entities: - type: DeviceLinkSource linkedPorts: 26292: - - DoorStatus: Close + - - DoorStatus + - Close - proto: PlasticFlapsAirtightClear entities: - uid: 11498 @@ -169946,13 +170168,6 @@ entities: - type: Transform pos: 69.55452,-12.772156 parent: 13329 -- proto: PottedPlant15 - entities: - - uid: 18860 - components: - - type: Transform - pos: 5.5,72.5 - parent: 13329 - proto: PottedPlant16 entities: - uid: 6631 @@ -170514,6 +170729,11 @@ entities: - type: Transform pos: 58.5,55.5 parent: 13329 + - uid: 36018 + components: + - type: Transform + pos: 6.5,70.5 + parent: 13329 - proto: PottedPlantRandomPlastic entities: - uid: 32710 @@ -183627,9 +183847,11 @@ entities: - type: DeviceLinkSource linkedPorts: 9596: - - Pressed: Toggle + - - Pressed + - Toggle 9595: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 31585 components: - type: Transform @@ -184899,13 +185121,17 @@ entities: - type: DeviceLinkSource linkedPorts: 934: - - Pressed: Toggle + - - Pressed + - Toggle 935: - - Pressed: Toggle + - - Pressed + - Toggle 936: - - Pressed: Toggle + - - Pressed + - Toggle 937: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 939 components: - type: MetaData @@ -184916,15 +185142,20 @@ entities: - type: DeviceLinkSource linkedPorts: 933: - - Pressed: Toggle + - - Pressed + - Toggle 932: - - Pressed: Toggle + - - Pressed + - Toggle 931: - - Pressed: Toggle + - - Pressed + - Toggle 930: - - Pressed: Toggle + - - Pressed + - Toggle 929: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 940 components: - type: MetaData @@ -184935,17 +185166,23 @@ entities: - type: DeviceLinkSource linkedPorts: 921: - - Pressed: Toggle + - - Pressed + - Toggle 922: - - Pressed: Toggle + - - Pressed + - Toggle 923: - - Pressed: Toggle + - - Pressed + - Toggle 924: - - Pressed: Toggle + - - Pressed + - Toggle 925: - - Pressed: Toggle + - - Pressed + - Toggle 926: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1073 components: - type: MetaData @@ -184956,11 +185193,14 @@ entities: - type: DeviceLinkSource linkedPorts: 1072: - - Pressed: Toggle + - - Pressed + - Toggle 927: - - Pressed: Toggle + - - Pressed + - Toggle 928: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1317 components: - type: MetaData @@ -184971,17 +185211,23 @@ entities: - type: DeviceLinkSource linkedPorts: 1316: - - Pressed: Toggle + - - Pressed + - Toggle 1315: - - Pressed: Toggle + - - Pressed + - Toggle 1314: - - Pressed: Toggle + - - Pressed + - Toggle 1313: - - Pressed: Toggle + - - Pressed + - Toggle 1312: - - Pressed: Toggle + - - Pressed + - Toggle 1311: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1431 components: - type: MetaData @@ -184992,7 +185238,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1432: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4523 components: - type: Transform @@ -185001,15 +185248,20 @@ entities: - type: DeviceLinkSource linkedPorts: 4518: - - Pressed: Toggle + - - Pressed + - Toggle 4519: - - Pressed: Toggle + - - Pressed + - Toggle 4520: - - Pressed: Toggle + - - Pressed + - Toggle 4521: - - Pressed: Toggle + - - Pressed + - Toggle 4522: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4751 components: - type: Transform @@ -185018,11 +185270,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4748: - - Pressed: Toggle + - - Pressed + - Toggle 4749: - - Pressed: Toggle + - - Pressed + - Toggle 4750: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9777 components: - type: Transform @@ -185031,11 +185286,14 @@ entities: - type: DeviceLinkSource linkedPorts: 9774: - - Pressed: Toggle + - - Pressed + - Toggle 9775: - - Pressed: Toggle + - - Pressed + - Toggle 9776: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 10587 components: - type: MetaData @@ -185046,13 +185304,17 @@ entities: - type: DeviceLinkSource linkedPorts: 10588: - - Pressed: Toggle + - - Pressed + - Toggle 10589: - - Pressed: Toggle + - - Pressed + - Toggle 10590: - - Pressed: Toggle + - - Pressed + - Toggle 10591: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 10877 components: - type: Transform @@ -185061,11 +185323,14 @@ entities: - type: DeviceLinkSource linkedPorts: 10879: - - Pressed: Toggle + - - Pressed + - Toggle 10880: - - Pressed: Toggle + - - Pressed + - Toggle 10881: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 10878 components: - type: Transform @@ -185074,11 +185339,14 @@ entities: - type: DeviceLinkSource linkedPorts: 10884: - - Pressed: Toggle + - - Pressed + - Toggle 10883: - - Pressed: Toggle + - - Pressed + - Toggle 10882: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11543 components: - type: Transform @@ -185087,9 +185355,11 @@ entities: - type: DeviceLinkSource linkedPorts: 11541: - - Pressed: Toggle + - - Pressed + - Toggle 11542: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14608 components: - type: Transform @@ -185099,11 +185369,14 @@ entities: - type: DeviceLinkSource linkedPorts: 14607: - - Pressed: Toggle + - - Pressed + - Toggle 14606: - - Pressed: Toggle + - - Pressed + - Toggle 14605: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15306 components: - type: Transform @@ -185112,9 +185385,11 @@ entities: - type: DeviceLinkSource linkedPorts: 15304: - - Pressed: Toggle + - - Pressed + - Toggle 15305: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15398 components: - type: Transform @@ -185123,11 +185398,14 @@ entities: - type: DeviceLinkSource linkedPorts: 15301: - - Pressed: Toggle + - - Pressed + - Toggle 15302: - - Pressed: Toggle + - - Pressed + - Toggle 15303: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 20585 components: - type: Transform @@ -185136,7 +185414,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20588: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 20586 components: - type: Transform @@ -185145,11 +185424,14 @@ entities: - type: DeviceLinkSource linkedPorts: 20589: - - Pressed: Toggle + - - Pressed + - Toggle 20471: - - Pressed: Toggle + - - Pressed + - Toggle 20428: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24020 components: - type: Transform @@ -185158,9 +185440,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24022: - - Pressed: Toggle + - - Pressed + - Toggle 24021: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 25903 components: - type: Transform @@ -185169,7 +185453,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25901: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 25904 components: - type: Transform @@ -185178,7 +185463,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25902: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 26443 components: - type: Transform @@ -185187,7 +185473,8 @@ entities: - type: DeviceLinkSource linkedPorts: 26442: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 31488 components: - type: Transform @@ -185196,13 +185483,17 @@ entities: - type: DeviceLinkSource linkedPorts: 31484: - - Pressed: Toggle + - - Pressed + - Toggle 31485: - - Pressed: Toggle + - - Pressed + - Toggle 31486: - - Pressed: Toggle + - - Pressed + - Toggle 31487: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 31552 components: - type: Transform @@ -185211,9 +185502,11 @@ entities: - type: DeviceLinkSource linkedPorts: 31551: - - Pressed: Toggle + - - Pressed + - Toggle 31550: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 32703 components: - type: Transform @@ -185225,15 +185518,20 @@ entities: - type: DeviceLinkSource linkedPorts: 32702: - - Pressed: Toggle + - - Pressed + - Toggle 32381: - - Pressed: Toggle + - - Pressed + - Toggle 34226: - - Pressed: Toggle + - - Pressed + - Toggle 32380: - - Pressed: Toggle + - - Pressed + - Toggle 32379: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 34227 components: - type: Transform @@ -185242,15 +185540,20 @@ entities: - type: DeviceLinkSource linkedPorts: 32379: - - Pressed: Toggle + - - Pressed + - Toggle 32380: - - Pressed: Toggle + - - Pressed + - Toggle 32381: - - Pressed: Toggle + - - Pressed + - Toggle 34226: - - Pressed: Toggle + - - Pressed + - Toggle 32702: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 34691 components: - type: MetaData @@ -185261,15 +185564,20 @@ entities: - type: DeviceLinkSource linkedPorts: 34690: - - Pressed: Toggle + - - Pressed + - Toggle 34689: - - Pressed: Toggle + - - Pressed + - Toggle 34688: - - Pressed: Toggle + - - Pressed + - Toggle 34687: - - Pressed: Toggle + - - Pressed + - Toggle 34686: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 34692 components: - type: MetaData @@ -185280,15 +185588,20 @@ entities: - type: DeviceLinkSource linkedPorts: 34685: - - Pressed: Toggle + - - Pressed + - Toggle 34684: - - Pressed: Toggle + - - Pressed + - Toggle 34683: - - Pressed: Toggle + - - Pressed + - Toggle 34682: - - Pressed: Toggle + - - Pressed + - Toggle 34681: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 34695 components: - type: MetaData @@ -185299,15 +185612,20 @@ entities: - type: DeviceLinkSource linkedPorts: 34680: - - Pressed: Toggle + - - Pressed + - Toggle 34679: - - Pressed: Toggle + - - Pressed + - Toggle 34678: - - Pressed: Toggle + - - Pressed + - Toggle 34677: - - Pressed: Toggle + - - Pressed + - Toggle 34676: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 35312 components: - type: MetaData @@ -185318,9 +185636,11 @@ entities: - type: DeviceLinkSource linkedPorts: 35310: - - Pressed: Toggle + - - Pressed + - Toggle 35311: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 20551 @@ -185332,9 +185652,11 @@ entities: - type: DeviceLinkSource linkedPorts: 18558: - - Pressed: Open + - - Pressed + - Open 18557: - - Pressed: Open + - - Pressed + - Open - uid: 24277 components: - type: Transform @@ -185343,7 +185665,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29009: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 24281 components: - type: Transform @@ -185352,7 +185675,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29005: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 24282 components: - type: Transform @@ -185361,7 +185685,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29008: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 24283 components: - type: Transform @@ -185370,7 +185695,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29010: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 24284 components: - type: Transform @@ -185379,7 +185705,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29007: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 24285 components: - type: Transform @@ -185388,7 +185715,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29006: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 26975 components: - type: Transform @@ -185398,7 +185726,8 @@ entities: - type: DeviceLinkSource linkedPorts: 27054: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 35603 components: - type: Transform @@ -185408,9 +185737,11 @@ entities: - type: DeviceLinkSource linkedPorts: 35591: - - Pressed: Toggle + - - Pressed + - Toggle 35590: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalSwitchDirectional entities: - uid: 6941 @@ -185424,19 +185755,29 @@ entities: - type: DeviceLinkSource linkedPorts: 1493: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1492: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 15508: - - On: Open - - On: AutoClose - - Off: Close + - - On + - Open + - - On + - AutoClose + - - Off + - Close 9406: - - On: Open - - On: AutoClose - - Off: Close + - - On + - Open + - - On + - AutoClose + - - Off + - Close - type: Label currentLabel: Front Shutters - type: NameModifier @@ -185454,35 +185795,55 @@ entities: - type: DeviceLinkSource linkedPorts: 10638: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 10645: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9397: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9398: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9396: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9395: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9394: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9393: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9392: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9391: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Front Blast Doors - type: NameModifier @@ -185500,20 +185861,30 @@ entities: - type: DeviceLinkSource linkedPorts: 9405: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9404: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9403: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9401: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9400: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Perma Blast Doors - type: NameModifier @@ -185531,38 +185902,60 @@ entities: - type: DeviceLinkSource linkedPorts: 18502: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 10658: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 10659: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18498: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18463: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18462: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18461: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18460: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18503: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 10661: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18505: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Window Shutters - type: NameModifier @@ -185578,11 +185971,15 @@ entities: - type: DeviceLinkSource linkedPorts: 10638: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 10645: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Cell Blast Doors - type: NameModifier @@ -185595,14 +185992,20 @@ entities: - type: DeviceLinkSource linkedPorts: 25540: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25541: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25542: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 35971 components: - type: MetaData @@ -185614,11 +186017,15 @@ entities: - type: DeviceLinkSource linkedPorts: 9397: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9398: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Cell Blast Doors - type: NameModifier @@ -185636,11 +186043,15 @@ entities: - type: DeviceLinkSource linkedPorts: 9396: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9395: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Cell Blast Doors - type: NameModifier @@ -185658,17 +186069,25 @@ entities: - type: DeviceLinkSource linkedPorts: 9394: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9393: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9392: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9391: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Cell Blast Doors - type: NameModifier @@ -185682,14 +186101,20 @@ entities: - type: DeviceLinkSource linkedPorts: 25540: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25541: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open 25542: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - proto: SignAnomaly entities: - uid: 20083 @@ -197961,11 +198386,6 @@ entities: - type: Transform pos: 30.5,22.5 parent: 13329 - - uid: 10132 - components: - - type: Transform - pos: 30.5,23.5 - parent: 13329 - uid: 10133 components: - type: Transform @@ -199219,11 +199639,6 @@ entities: - type: Transform pos: 75.5,-8.5 parent: 13329 - - uid: 18804 - components: - - type: Transform - pos: 75.5,-11.5 - parent: 13329 - uid: 18886 components: - type: Transform @@ -200803,13 +201218,19 @@ entities: - type: DeviceLinkSource linkedPorts: 11495: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11496: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 11550 components: - type: Transform @@ -200818,65 +201239,110 @@ entities: - type: DeviceLinkSource linkedPorts: 11532: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11531: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11530: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11529: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11528: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11518: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11519: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11520: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11521: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11522: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11523: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11524: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11525: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11526: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11527: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 11551 components: - type: Transform @@ -200885,37 +201351,61 @@ entities: - type: DeviceLinkSource linkedPorts: 11533: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11534: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11535: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11536: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11537: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11538: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11539: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11540: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 11681 components: - type: Transform @@ -200924,9 +201414,12 @@ entities: - type: DeviceLinkSource linkedPorts: 26363: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 11835 components: - type: Transform @@ -200935,21 +201428,33 @@ entities: - type: DeviceLinkSource linkedPorts: 11830: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11829: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11828: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11827: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 27052 components: - type: Transform @@ -200958,21 +201463,33 @@ entities: - type: DeviceLinkSource linkedPorts: 27056: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 27055: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 26977: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 26978: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 27053 components: - type: Transform @@ -200981,37 +201498,61 @@ entities: - type: DeviceLinkSource linkedPorts: 27061: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 26976: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 32424: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 27060: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 27059: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 27058: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 27057: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 34658: - - Right: Forward - - Left: Reverse - - Middle: Off + - - Right + - Forward + - - Left + - Reverse + - - Middle + - Off - proto: UnfinishedMachineFrame entities: - uid: 12083 @@ -224685,26 +225226,8 @@ entities: - uid: 18859 components: - type: Transform - pos: 4.5,72.5 + pos: 5.5,72.5 parent: 13329 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.1495 - moles: - - 3.0981817 - - 11.655066 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - proto: WardrobeMixedFilled entities: - uid: 29334 @@ -225711,7 +226234,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15258: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 8646 components: - type: Transform @@ -225723,7 +226247,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15259: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9385 components: - type: Transform @@ -225801,7 +226326,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13328: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 32363 components: - type: Transform @@ -225813,7 +226339,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9651: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 36001 components: - type: Transform @@ -225825,7 +226352,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15325: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorBarKitchenLocked entities: - uid: 1220 @@ -226102,9 +226630,11 @@ entities: - type: DeviceLinkSource linkedPorts: 10660: - - DoorStatus: Close + - - DoorStatus + - Close 9337: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 13328 components: - type: Transform @@ -226116,7 +226646,8 @@ entities: - type: DeviceLinkSource linkedPorts: 31762: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 18458 components: - type: Transform @@ -226127,9 +226658,11 @@ entities: - type: DeviceLinkSource linkedPorts: 10660: - - DoorStatus: Close + - - DoorStatus + - Close 9337: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureCommandLocked entities: - uid: 30210 @@ -226216,9 +226749,11 @@ entities: - type: DeviceLinkSource linkedPorts: 11718: - - DoorStatus: Close + - - DoorStatus + - Close 18458: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 10660 components: - type: Transform @@ -226230,7 +226765,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18458: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 18827 components: - type: Transform @@ -226273,7 +226809,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7602: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 15259 components: - type: Transform @@ -226285,7 +226822,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8646: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 15324 components: - type: Transform @@ -226302,7 +226840,8 @@ entities: - type: DeviceLinkSource linkedPorts: 36001: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 15329 components: - type: Transform @@ -226400,7 +226939,8 @@ entities: - type: DeviceLinkSource linkedPorts: 32363: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 10244 components: - type: Transform diff --git a/Resources/Maps/loop.yml b/Resources/Maps/loop.yml index 0f7f4a55ed..2e405ca467 100644 --- a/Resources/Maps/loop.yml +++ b/Resources/Maps/loop.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 248.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/19/2025 20:53:24 - entityCount: 17797 + time: 04/20/2025 05:34:52 + entityCount: 17814 maps: - 1 grids: @@ -79,7 +79,7 @@ entities: version: 6 -1,0: ind: -1,0 - tiles: HQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHgAAAAAAHgAAAAABHgAAAAAAHgAAAAABHgAAAAADHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHgAAAAACHgAAAAACHgAAAAAAHgAAAAAAHgAAAAACHgAAAAADHgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHgAAAAACHgAAAAACHgAAAAACHgAAAAABHgAAAAAAHgAAAAACHgAAAAADHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHgAAAAAAHgAAAAACHgAAAAACHgAAAAABHgAAAAADHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAABHgAAAAABHgAAAAADHgAAAAABHgAAAAABHgAAAAACHgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAADHgAAAAABHgAAAAABHgAAAAADHgAAAAADHgAAAAAAHgAAAAAAHgAAAAACHgAAAAAAHgAAAAADHgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAABHgAAAAAAHgAAAAAAHgAAAAACHgAAAAACHgAAAAABHgAAAAABHgAAAAAAHgAAAAABHgAAAAACHgAAAAACHgAAAAAAHQAAAAAAHgAAAAADHgAAAAABHgAAAAADHgAAAAADHgAAAAABHgAAAAADHgAAAAABHgAAAAACHgAAAAADHgAAAAABHgAAAAAAHgAAAAAAHgAAAAADHgAAAAABHgAAAAAAHQAAAAAAHgAAAAACHgAAAAABHgAAAAADHgAAAAABHgAAAAAAHgAAAAADHgAAAAAAHgAAAAACHgAAAAACHgAAAAAAHgAAAAABHgAAAAAAHgAAAAAAHgAAAAADHgAAAAADHQAAAAAAHgAAAAAAHgAAAAABHgAAAAABHgAAAAADHgAAAAADHgAAAAABHgAAAAACHgAAAAAAHgAAAAABHgAAAAAAHgAAAAAAHgAAAAADHgAAAAABHgAAAAABHgAAAAAAHQAAAAAAHgAAAAADHgAAAAAAHgAAAAABHgAAAAACHgAAAAAAHgAAAAADHgAAAAABHgAAAAAAHgAAAAACHgAAAAADHgAAAAACHgAAAAADHgAAAAAAHgAAAAACHgAAAAACHQAAAAAAHgAAAAADHgAAAAACHgAAAAADHgAAAAABHgAAAAAAHgAAAAAAHgAAAAADHgAAAAACHgAAAAADHgAAAAADHgAAAAACHgAAAAABHgAAAAADHgAAAAADHgAAAAACHQAAAAAAHgAAAAABHgAAAAABHgAAAAADHgAAAAACHgAAAAADHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAABHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAACHgAAAAABHQAAAAAAHgAAAAADHgAAAAABHgAAAAAAHQAAAAAAHgAAAAADHgAAAAABHgAAAAADHgAAAAABHgAAAAAB + tiles: HQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAIQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHgAAAAAAHgAAAAABHgAAAAAAHgAAAAABHgAAAAADHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHgAAAAACHgAAAAACHgAAAAAAHgAAAAAAHgAAAAACHgAAAAADHgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHgAAAAACHgAAAAACHgAAAAACHgAAAAABHgAAAAAAHgAAAAACHgAAAAADHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAIAAAAAAAHQAAAAAAHgAAAAAAHgAAAAACHgAAAAACHgAAAAABHgAAAAADHgAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAABHgAAAAABHgAAAAADHgAAAAABHgAAAAABHgAAAAACHgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAADHgAAAAABHgAAAAABHgAAAAADHgAAAAADHgAAAAAAHgAAAAAAHgAAAAACHgAAAAAAHgAAAAADHgAAAAABHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAABHgAAAAAAHgAAAAAAHgAAAAACHgAAAAACHgAAAAABHgAAAAABHgAAAAAAHgAAAAABHgAAAAACHgAAAAACHgAAAAAAHQAAAAAAHgAAAAADHgAAAAABHgAAAAADHgAAAAADHgAAAAABHgAAAAADHgAAAAABHgAAAAACHgAAAAADHgAAAAABHgAAAAAAHgAAAAAAHgAAAAADHgAAAAABHgAAAAAAHQAAAAAAHgAAAAACHgAAAAABHgAAAAADHgAAAAABHgAAAAAAHgAAAAADHgAAAAAAHgAAAAACHgAAAAACHgAAAAAAHgAAAAABHgAAAAAAHgAAAAAAHgAAAAADHgAAAAADHQAAAAAAHgAAAAAAHgAAAAABHgAAAAABHgAAAAADHgAAAAADHgAAAAABHgAAAAACHgAAAAAAHgAAAAABHgAAAAAAHgAAAAAAHgAAAAADHgAAAAABHgAAAAABHgAAAAAAHQAAAAAAHgAAAAADHgAAAAAAHgAAAAABHgAAAAACHgAAAAAAHgAAAAADHgAAAAABHgAAAAAAHgAAAAACHgAAAAADHgAAAAACHgAAAAADHgAAAAAAHgAAAAACHgAAAAACHQAAAAAAHgAAAAADHgAAAAACHgAAAAADHgAAAAABHgAAAAAAHgAAAAAAHgAAAAADHgAAAAACHgAAAAADHgAAAAADHgAAAAACHgAAAAABHgAAAAADHgAAAAADHgAAAAACHQAAAAAAHgAAAAABHgAAAAABHgAAAAADHgAAAAACHgAAAAADHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHgAAAAAAHgAAAAABHgAAAAAAHgAAAAAAHgAAAAAAHgAAAAACHgAAAAABHQAAAAAAHgAAAAADHgAAAAABHgAAAAAAHQAAAAAAHgAAAAADHgAAAAABHgAAAAADHgAAAAABHgAAAAAB version: 6 0,-1: ind: 0,-1 @@ -267,7 +267,7 @@ entities: version: 6 2,1: ind: 2,1 - tiles: HQAAAAAAHwAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAA + tiles: HQAAAAAAHwAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAHQAAAAAAHQAAAAAAHQAAAAAAHwAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAIgAAAAAAHwAAAAAAHwAAAAAAHwAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAIgAAAAAAHwAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAAHQAAAAAAHwAAAAAAHQAAAAAAIgAAAAAA version: 6 3,1: ind: 3,1 @@ -7277,7 +7277,7 @@ entities: pos: -30.5,13.5 parent: 2 - type: Door - secondsUntilStateChange: -51840.86 + secondsUntilStateChange: -52610.02 state: Opening - type: DeviceLinkSource lastSignals: @@ -7436,7 +7436,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1200: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1200 components: - type: Transform @@ -7447,7 +7448,8 @@ entities: - type: DeviceLinkSource linkedPorts: 215: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2280 components: - type: Transform @@ -7458,7 +7460,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5219: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5219 components: - type: Transform @@ -7469,7 +7472,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2280: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalEngineeringLocked entities: - uid: 3669 @@ -7483,7 +7487,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3670: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3670 components: - type: Transform @@ -7495,7 +7500,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3669: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4325 components: - type: Transform @@ -7507,9 +7513,11 @@ entities: - type: DeviceLinkSource linkedPorts: 354: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 15451: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15451 components: - type: Transform @@ -7521,9 +7529,11 @@ entities: - type: DeviceLinkSource linkedPorts: 354: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 4325: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 77 @@ -7585,7 +7595,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1952: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 16431 components: - type: Transform @@ -7610,9 +7621,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4325: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 15451: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2714 components: - type: Transform @@ -7624,7 +7637,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7337: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3822 components: - type: Transform @@ -7635,7 +7649,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3823: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3823 components: - type: Transform @@ -7646,7 +7661,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3822: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7337 components: - type: Transform @@ -7658,7 +7674,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2714: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7452 components: - type: Transform @@ -7670,7 +7687,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17580: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8100 components: - type: Transform @@ -7681,7 +7699,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17561: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13402 components: - type: Transform @@ -7692,7 +7711,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13404: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13404 components: - type: Transform @@ -7703,7 +7723,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13402: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14633 components: - type: Transform @@ -7714,7 +7735,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14634: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14634 components: - type: Transform @@ -7725,7 +7747,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14633: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17561 components: - type: Transform @@ -7736,7 +7759,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8100: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17580 components: - type: Transform @@ -7748,7 +7772,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7452: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 1952 @@ -7761,7 +7786,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1953: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2673 components: - type: Transform @@ -7772,7 +7798,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14035: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14035 components: - type: Transform @@ -7783,7 +7810,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2673: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15778 components: - type: Transform @@ -12168,11 +12196,6 @@ entities: - type: Transform pos: -65.99897,12.61907 parent: 2 - - uid: 5181 - components: - - type: Transform - pos: -33.630547,42.726795 - parent: 2 - uid: 6342 components: - type: Transform @@ -34502,6 +34525,41 @@ entities: - type: Transform pos: 5.5,66.5 parent: 2 +- proto: CargoRequestEngineeringComputerCircuitboard + entities: + - uid: 5181 + components: + - type: Transform + pos: -27.446213,16.10369 + parent: 2 +- proto: CargoRequestMedicalComputerCircuitboard + entities: + - uid: 6362 + components: + - type: Transform + pos: -27.461838,17.69744 + parent: 2 +- proto: CargoRequestScienceComputerCircuitboard + entities: + - uid: 6363 + components: + - type: Transform + pos: -27.477463,17.306814 + parent: 2 +- proto: CargoRequestSecurityComputerCircuitboard + entities: + - uid: 6472 + components: + - type: Transform + pos: -27.477463,16.91619 + parent: 2 +- proto: CargoRequestServiceComputerCircuitboard + entities: + - uid: 5829 + components: + - type: Transform + pos: -27.446213,16.50994 + parent: 2 - proto: Carpet entities: - uid: 15027 @@ -39617,6 +39675,12 @@ entities: rot: -1.5707963267948966 rad pos: 0.54984474,72.83825 parent: 2 + - uid: 13992 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 8.385203,35.704662 + parent: 2 - uid: 15176 components: - type: Transform @@ -40028,6 +40092,13 @@ entities: - type: Transform pos: -59.5,-6.5 parent: 2 +- proto: ChemistryBottleUnstableMutagen + entities: + - uid: 15490 + components: + - type: Transform + pos: -54.314514,40.52692 + parent: 2 - proto: ChemistryEmptyBottle01 entities: - uid: 15531 @@ -41897,7 +41968,7 @@ entities: - uid: 5177 components: - type: Transform - pos: -38.141457,44.585876 + pos: -37.779823,44.625 parent: 2 - proto: CombatKnife entities: @@ -41943,12 +42014,6 @@ entities: rot: 3.141592653589793 rad pos: -15.5,67.5 parent: 2 - - uid: 5829 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 8.5,35.5 - parent: 2 - proto: CommandmentCircuitBoard entities: - uid: 5336 @@ -41967,11 +42032,11 @@ entities: parent: 2 - proto: ComputerAlert entities: - - uid: 6472 + - uid: 5828 components: - type: Transform rot: 1.5707963267948966 rad - pos: -10.5,5.5 + pos: -10.5,3.5 parent: 2 - uid: 7074 components: @@ -42061,6 +42126,45 @@ entities: rot: -1.5707963267948966 rad pos: 1.5,71.5 parent: 2 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 5182 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -10.5,5.5 + parent: 2 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 17799 + components: + - type: Transform + pos: -26.5,25.5 + parent: 2 +- proto: ComputerCargoOrdersScience + entities: + - uid: 6361 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 7.5,35.5 + parent: 2 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 6474 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -33.5,42.5 + parent: 2 +- proto: ComputerCargoOrdersService + entities: + - uid: 17812 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -55.5,51.5 + parent: 2 - proto: ComputerCargoShuttle entities: - uid: 2716 @@ -42152,6 +42256,14 @@ entities: - type: Transform pos: -16.5,75.5 parent: 2 +- proto: ComputerFundingAllocation + entities: + - uid: 5179 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -30.5,63.5 + parent: 2 - proto: ComputerId entities: - uid: 6612 @@ -42233,12 +42345,6 @@ entities: rot: 1.5707963267948966 rad pos: 6.5,57.5 parent: 2 - - uid: 6474 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -10.5,3.5 - parent: 2 - uid: 6657 components: - type: Transform @@ -43375,6 +43481,56 @@ entities: - type: Transform pos: -44.5,5.5 parent: 2 +- proto: CrateLockBoxEngineering + entities: + - uid: 17807 + components: + - type: Transform + pos: -24.5,6.5 + parent: 2 + - uid: 17810 + components: + - type: Transform + pos: -2.5,17.5 + parent: 2 +- proto: CrateLockBoxMedical + entities: + - uid: 17803 + components: + - type: Transform + pos: -19.5,30.5 + parent: 2 + - uid: 17804 + components: + - type: Transform + pos: -39.5,33.5 + parent: 2 +- proto: CrateLockBoxScience + entities: + - uid: 17805 + components: + - type: Transform + pos: 17.5,38.5 + parent: 2 +- proto: CrateLockBoxSecurity + entities: + - uid: 17806 + components: + - type: Transform + pos: -28.5,44.5 + parent: 2 +- proto: CrateLockBoxService + entities: + - uid: 17808 + components: + - type: Transform + pos: -59.5,45.5 + parent: 2 + - uid: 17809 + components: + - type: Transform + pos: -33.5,60.5 + parent: 2 - proto: CrateMedicalSurgery entities: - uid: 5690 @@ -43764,7 +43920,7 @@ entities: pos: -9.5,51.5 parent: 2 - type: Door - secondsUntilStateChange: -299596.4 + secondsUntilStateChange: -300365.56 state: Opening - uid: 6747 components: @@ -43772,7 +43928,7 @@ entities: pos: -8.5,51.5 parent: 2 - type: Door - secondsUntilStateChange: -299597.12 + secondsUntilStateChange: -300366.28 state: Opening - uid: 6749 components: @@ -43780,7 +43936,7 @@ entities: pos: -6.5,51.5 parent: 2 - type: Door - secondsUntilStateChange: -299595.7 + secondsUntilStateChange: -300364.84 state: Opening - uid: 6750 components: @@ -43788,7 +43944,7 @@ entities: pos: -5.5,51.5 parent: 2 - type: Door - secondsUntilStateChange: -299595.06 + secondsUntilStateChange: -300364.22 state: Opening - uid: 9721 components: @@ -52710,7 +52866,7 @@ entities: - uid: 5162 components: - type: Transform - pos: -37.568985,44.778774 + pos: -37.311073,44.78125 parent: 2 - uid: 5163 components: @@ -53067,6 +53223,14 @@ entities: - type: Transform pos: -53.45894,65.60686 parent: 2 +- proto: FundingAllocationComputerCircuitboard + entities: + - uid: 17811 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -10.469555,74.37512 + parent: 2 - proto: GameMasterCircuitBoard entities: - uid: 5329 @@ -54011,14 +54175,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' - - uid: 11648 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,6.5 - parent: 2 - - type: AtmosPipeColor - color: '#990000FF' - uid: 11654 components: - type: Transform @@ -54377,6 +54533,11 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' + - uid: 14534 + components: + - type: Transform + pos: -3.5,6.5 + parent: 2 - uid: 15192 components: - type: Transform @@ -66635,6 +66796,12 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0055CCFF' + - uid: 11648 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -4.5,6.5 + parent: 2 - uid: 11655 components: - type: Transform @@ -76361,11 +76528,6 @@ entities: parent: 2 - proto: Lamp entities: - - uid: 5182 - components: - - type: Transform - pos: -33.349297,42.633045 - parent: 2 - uid: 5883 components: - type: Transform @@ -76532,11 +76694,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4526: - - Pressed: Toggle + - - Pressed + - Toggle 3578: - - Pressed: Toggle + - - Pressed + - Toggle 6171: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonBar entities: - uid: 16964 @@ -76550,23 +76715,32 @@ entities: - type: DeviceLinkSource linkedPorts: 16956: - - Pressed: Toggle + - - Pressed + - Toggle 16955: - - Pressed: Toggle + - - Pressed + - Toggle 16957: - - Pressed: Toggle + - - Pressed + - Toggle 16958: - - Pressed: Toggle + - - Pressed + - Toggle 16959: - - Pressed: Toggle + - - Pressed + - Toggle 16960: - - Pressed: Toggle + - - Pressed + - Toggle 16961: - - Pressed: Toggle + - - Pressed + - Toggle 16962: - - Pressed: Toggle + - - Pressed + - Toggle 16963: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonBrig entities: - uid: 15056 @@ -76580,21 +76754,29 @@ entities: - type: DeviceLinkSource linkedPorts: 15055: - - Pressed: Toggle + - - Pressed + - Toggle 15053: - - Pressed: Toggle + - - Pressed + - Toggle 15051: - - Pressed: Toggle + - - Pressed + - Toggle 15040: - - Pressed: Toggle + - - Pressed + - Toggle 15039: - - Pressed: Toggle + - - Pressed + - Toggle 14916: - - Pressed: Toggle + - - Pressed + - Toggle 14897: - - Pressed: Toggle + - - Pressed + - Toggle 10603: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonCargo entities: - uid: 6009 @@ -76606,9 +76788,11 @@ entities: - type: DeviceLinkSource linkedPorts: 15844: - - Pressed: Toggle + - - Pressed + - Toggle 16418: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonCommand entities: - uid: 17596 @@ -76622,29 +76806,41 @@ entities: - type: DeviceLinkSource linkedPorts: 17595: - - Pressed: Toggle + - - Pressed + - Toggle 17594: - - Pressed: Toggle + - - Pressed + - Toggle 17593: - - Pressed: Toggle + - - Pressed + - Toggle 17592: - - Pressed: Toggle + - - Pressed + - Toggle 17591: - - Pressed: Toggle + - - Pressed + - Toggle 17590: - - Pressed: Toggle + - - Pressed + - Toggle 17589: - - Pressed: Toggle + - - Pressed + - Toggle 17588: - - Pressed: Toggle + - - Pressed + - Toggle 17587: - - Pressed: Toggle + - - Pressed + - Toggle 17586: - - Pressed: Toggle + - - Pressed + - Toggle 17585: - - Pressed: Toggle + - - Pressed + - Toggle 17584: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonEngineering entities: - uid: 603 @@ -76655,13 +76851,17 @@ entities: - type: DeviceLinkSource linkedPorts: 3617: - - Pressed: Toggle + - - Pressed + - Toggle 4912: - - Pressed: Toggle + - - Pressed + - Toggle 254: - - Pressed: Toggle + - - Pressed + - Toggle 3618: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 604 components: - type: Transform @@ -76671,13 +76871,17 @@ entities: - type: DeviceLinkSource linkedPorts: 3617: - - Pressed: Toggle + - - Pressed + - Toggle 4912: - - Pressed: Toggle + - - Pressed + - Toggle 3618: - - Pressed: Toggle + - - Pressed + - Toggle 254: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4539 components: - type: Transform @@ -76687,11 +76891,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4523: - - Pressed: Toggle + - - Pressed + - Toggle 4524: - - Pressed: Toggle + - - Pressed + - Toggle 4525: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonKitchen entities: - uid: 1783 @@ -76704,15 +76911,20 @@ entities: - type: DeviceLinkSource linkedPorts: 3873: - - Pressed: Toggle + - - Pressed + - Toggle 3872: - - Pressed: Toggle + - - Pressed + - Toggle 3874: - - Pressed: Toggle + - - Pressed + - Toggle 14273: - - Pressed: Toggle + - - Pressed + - Toggle 14274: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonMedical entities: - uid: 15502 @@ -76724,9 +76936,11 @@ entities: - type: DeviceLinkSource linkedPorts: 13976: - - Pressed: Open + - - Pressed + - Open 13975: - - Pressed: Open + - - Pressed + - Open - proto: LockableButtonResearch entities: - uid: 4540 @@ -76737,11 +76951,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4522: - - Pressed: Toggle + - - Pressed + - Toggle 4521: - - Pressed: Toggle + - - Pressed + - Toggle 4520: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4541 components: - type: Transform @@ -76751,11 +76968,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4519: - - Pressed: Toggle + - - Pressed + - Toggle 4518: - - Pressed: Toggle + - - Pressed + - Toggle 1862: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonSecurity entities: - uid: 14322 @@ -76769,11 +76989,14 @@ entities: - type: DeviceLinkSource linkedPorts: 7442: - - Pressed: Toggle + - - Pressed + - Toggle 8021: - - Pressed: Toggle + - - Pressed + - Toggle 8353: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15310 components: - type: MetaData @@ -76784,11 +77007,14 @@ entities: - type: DeviceLinkSource linkedPorts: 7442: - - Pressed: Toggle + - - Pressed + - Toggle 8021: - - Pressed: Toggle + - - Pressed + - Toggle 8353: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15350 components: - type: MetaData @@ -76799,13 +77025,17 @@ entities: - type: DeviceLinkSource linkedPorts: 8356: - - Pressed: Toggle + - - Pressed + - Toggle 8357: - - Pressed: Toggle + - - Pressed + - Toggle 10340: - - Pressed: Toggle + - - Pressed + - Toggle 14321: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockerAtmosphericsFilled entities: - uid: 6057 @@ -77429,6 +77659,13 @@ entities: rot: -1.5707963267948966 rad pos: -63.5,-3.5 parent: 2 +- proto: MachineMaterialSilo + entities: + - uid: 17814 + components: + - type: Transform + pos: 19.5,38.5 + parent: 2 - proto: MagazinePistolSubMachineGunPractice entities: - uid: 17217 @@ -77465,6 +77702,13 @@ entities: - type: Transform pos: 24.282629,16.96738 parent: 2 +- proto: MailBag + entities: + - uid: 17798 + components: + - type: Transform + pos: 3.5258055,77.07606 + parent: 2 - proto: MaintenanceFluffSpawner entities: - uid: 13003 @@ -78592,11 +78836,6 @@ entities: - type: Transform pos: -27.5,25.5 parent: 2 - - uid: 13992 - components: - - type: Transform - pos: 7.5,35.5 - parent: 2 - uid: 16632 components: - type: Transform @@ -83443,17 +83682,7 @@ entities: - type: Transform pos: -32.5,15.5 parent: 2 - - uid: 6361 - components: - - type: Transform - pos: -27.5,17.5 - parent: 2 - - uid: 6362 - components: - - type: Transform - pos: -27.5,16.5 - parent: 2 - - uid: 6363 + - uid: 17800 components: - type: Transform pos: -27.5,15.5 @@ -88818,15 +89047,20 @@ entities: - type: DeviceLinkSource linkedPorts: 3090: - - Pressed: Toggle + - - Pressed + - Toggle 3089: - - Pressed: Toggle + - - Pressed + - Toggle 3088: - - Pressed: Toggle + - - Pressed + - Toggle 3087: - - Pressed: Toggle + - - Pressed + - Toggle 3203: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 14058 @@ -88840,7 +89074,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13874: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 14059 components: - type: Transform @@ -88850,7 +89085,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13875: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 14060 components: - type: Transform @@ -88860,7 +89096,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13876: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 14061 components: - type: Transform @@ -88870,7 +89107,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13873: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - proto: SignAnomaly entities: - uid: 1790 @@ -93227,7 +93465,7 @@ entities: - uid: 5161 components: - type: Transform - pos: -38.230072,44.56757 + pos: -38.029823,44.609375 parent: 2 - proto: SubstationBasic entities: @@ -95121,12 +95359,6 @@ entities: - type: Transform pos: -37.5,42.5 parent: 2 - - uid: 5179 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -33.5,42.5 - parent: 2 - uid: 5392 components: - type: Transform @@ -95264,11 +95496,6 @@ entities: rot: -1.5707963267948966 rad pos: 20.5,35.5 parent: 2 - - uid: 5828 - components: - - type: Transform - pos: 7.5,35.5 - parent: 2 - uid: 5838 components: - type: Transform @@ -97662,7 +97889,7 @@ entities: - uid: 5790 components: - type: Transform - pos: -33.676872,42.47227 + pos: -38.37745,44.65625 parent: 2 - proto: ToyFigurineSpaceDragon entities: @@ -97725,37 +97952,61 @@ entities: - type: DeviceLinkSource linkedPorts: 5737: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6389: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5833: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2818: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6021: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6022: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 1794: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6451: - - Right: Forward - - Left: Reverse - - Middle: Off + - - Right + - Forward + - - Left + - Reverse + - - Middle + - Off - uid: 9691 components: - type: Transform @@ -97764,25 +98015,40 @@ entities: - type: DeviceLinkSource linkedPorts: 6023: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3025: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3026: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 1491: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6871: - - Right: Forward - - Left: Reverse - - Middle: Off + - - Right + - Forward + - - Left + - Reverse + - - Middle + - Off - uid: 9808 components: - type: Transform @@ -97791,69 +98057,117 @@ entities: - type: DeviceLinkSource linkedPorts: 16428: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 16427: - - Right: Reverse - - Left: Forward - - Middle: Off + - - Right + - Reverse + - - Left + - Forward + - - Middle + - Off 16426: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 16425: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 16424: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 16423: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 15000: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14997: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2839: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3027: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6449: - - Right: Reverse - - Left: Forward - - Middle: Off + - - Right + - Reverse + - - Left + - Forward + - - Middle + - Off 2820: - - Right: Reverse - - Left: Forward - - Middle: Off + - - Right + - Reverse + - - Left + - Forward + - - Middle + - Off 5723: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2841: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2979: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6391: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 10371 components: - type: Transform @@ -97862,37 +98176,61 @@ entities: - type: DeviceLinkSource linkedPorts: 3117: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 432: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 10643: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 10370: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 8087: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 10482: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11635: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 464: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - proto: UnfinishedMachineFrame entities: - uid: 17347 @@ -97932,13 +98270,6 @@ entities: - type: Transform pos: -40.292664,59.497982 parent: 2 -- proto: UnstableMutagenChemistryBottle - entities: - - uid: 15490 - components: - - type: Transform - pos: -54.314514,40.52692 - parent: 2 - proto: Vaccinator entities: - uid: 7013 @@ -104834,12 +105165,6 @@ entities: - type: Transform pos: 3.5,-6.5 parent: 2 - - uid: 14534 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -3.5,6.5 - parent: 2 - uid: 14555 components: - type: Transform @@ -105552,6 +105877,11 @@ entities: rot: 3.141592653589793 rad pos: 12.5,-7.5 parent: 2 + - uid: 17813 + components: + - type: Transform + pos: -3.5,6.5 + parent: 2 - proto: WallSolid entities: - uid: 19 @@ -110527,6 +110857,18 @@ entities: - type: Transform pos: -34.50039,40.60095 parent: 2 +- proto: WeaponTurretSyndicateBroken + entities: + - uid: 17801 + components: + - type: Transform + pos: -27.5,87.5 + parent: 2 + - uid: 17802 + components: + - type: Transform + pos: -15.5,89.5 + parent: 2 - proto: WeldingFuelTankFull entities: - uid: 1641 diff --git a/Resources/Maps/marathon.yml b/Resources/Maps/marathon.yml index 2f11c20cef..87c9c7cb2f 100644 --- a/Resources/Maps/marathon.yml +++ b/Resources/Maps/marathon.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 247.2.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/07/2025 19:59:53 - entityCount: 23196 + time: 04/19/2025 17:06:58 + entityCount: 23203 maps: - 5350 grids: @@ -10234,7 +10234,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6606: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 17373 components: - type: Transform @@ -10255,7 +10256,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8595: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalEngineeringLocked entities: - uid: 1695 @@ -10268,7 +10270,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1826: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1826 components: - type: Transform @@ -10279,7 +10282,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1695: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9501 components: - type: Transform @@ -10291,7 +10295,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10789: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9879 components: - type: Transform @@ -10303,7 +10308,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11117: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10789 components: - type: Transform @@ -10315,7 +10321,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9501: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11117 components: - type: Transform @@ -10327,7 +10334,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9879: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 838 @@ -10385,7 +10393,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9254: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22374 components: - type: Transform @@ -10396,9 +10405,11 @@ entities: - type: DeviceLinkSource linkedPorts: 22375: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 22376: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22375 components: - type: Transform @@ -10409,7 +10420,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22374: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22376 components: - type: Transform @@ -10420,7 +10432,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22374: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassCargoLocked entities: - uid: 11658 @@ -10431,7 +10444,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11800: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11710 components: - type: Transform @@ -10445,7 +10459,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11658: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12083 components: - type: Transform @@ -10464,7 +10479,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10559: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10559 components: - type: Transform @@ -10476,7 +10492,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9342: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt lastSignals: DoorStatus: True - uid: 20059 @@ -10487,7 +10504,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20060: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20060 components: - type: Transform @@ -10496,7 +10514,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20059: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 386 @@ -10509,7 +10528,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17342: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5391 components: - type: Transform @@ -10518,7 +10538,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5390: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9654 components: - type: Transform @@ -10530,9 +10551,11 @@ entities: - type: DeviceLinkSource linkedPorts: 9655: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 9675: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9655 components: - type: Transform @@ -10544,9 +10567,11 @@ entities: - type: DeviceLinkSource linkedPorts: 9654: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 9675: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9675 components: - type: Transform @@ -10558,9 +10583,11 @@ entities: - type: DeviceLinkSource linkedPorts: 9654: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 9655: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15334 components: - type: Transform @@ -10569,7 +10596,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15335: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15335 components: - type: Transform @@ -10578,7 +10606,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15334: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17342 components: - type: Transform @@ -10589,7 +10618,8 @@ entities: - type: DeviceLinkSource linkedPorts: 386: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 18018 components: - type: Transform @@ -10598,7 +10628,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21047: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21047 components: - type: Transform @@ -10607,7 +10638,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18018: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21116 components: - type: Transform @@ -10616,7 +10648,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21117: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21117 components: - type: Transform @@ -10625,7 +10658,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21116: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 1299 @@ -10717,7 +10751,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1696: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5390 components: - type: Transform @@ -10726,7 +10761,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5391: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15829 components: - type: Transform @@ -10737,7 +10773,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15830: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15830 components: - type: Transform @@ -10748,7 +10785,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15829: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 16278 components: - type: Transform @@ -10757,7 +10795,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16279: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 16279 components: - type: Transform @@ -10766,7 +10805,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16278: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalShuttleLocked entities: - uid: 6606 @@ -10778,7 +10818,8 @@ entities: - type: DeviceLinkSource linkedPorts: 841: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - proto: AirlockFreezerKitchenHydroLocked @@ -10850,7 +10891,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2312: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1006 components: - type: Transform @@ -10936,7 +10978,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1829: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2123 components: - type: Transform @@ -11558,7 +11601,7 @@ entities: pos: 34.5,45.5 parent: 30 - type: Door - secondsUntilStateChange: -9541.195 + secondsUntilStateChange: -10106.782 state: Opening - type: DeviceLinkSource lastSignals: @@ -11975,7 +12018,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5070: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1756 components: - type: Transform @@ -12070,7 +12114,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1827: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2312 components: - type: Transform @@ -12081,7 +12126,8 @@ entities: - type: DeviceLinkSource linkedPorts: 840: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13548 components: - type: Transform @@ -15557,11 +15603,6 @@ entities: - type: Transform pos: -33.499332,49.57459 parent: 30 - - uid: 2187 - components: - - type: Transform - pos: -30.483707,51.590214 - parent: 30 - uid: 5840 components: - type: Transform @@ -15746,9 +15787,12 @@ entities: - type: DeviceLinkSource linkedPorts: 1761: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 1982 components: - type: Transform @@ -15758,9 +15802,12 @@ entities: - type: DeviceLinkSource linkedPorts: 1759: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 1993 components: - type: Transform @@ -15770,9 +15817,12 @@ entities: - type: DeviceLinkSource linkedPorts: 1760: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - proto: Brutepack entities: - uid: 7890 @@ -38730,7 +38780,7 @@ entities: - uid: 10203 components: - type: Transform - pos: -24.57955,-44.498714 + pos: -21.548817,-40.18438 parent: 30 - uid: 10314 components: @@ -44399,7 +44449,7 @@ entities: - uid: 10202 components: - type: Transform - pos: -24.846876,-44.33535 + pos: -21.470692,-40.52813 parent: 30 - uid: 10260 components: @@ -50222,12 +50272,6 @@ entities: rot: -1.5707963267948966 rad pos: 23.5,11.5 parent: 30 - - uid: 21727 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 23.5,12.5 - parent: 30 - uid: 21734 components: - type: Transform @@ -54326,7 +54370,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22233: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 11291 @@ -54391,6 +54436,44 @@ entities: - type: Transform pos: 16.5,2.5 parent: 30 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 21714 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -24.5,-44.5 + parent: 30 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 2187 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -12.5,-20.5 + parent: 30 +- proto: ComputerCargoOrdersScience + entities: + - uid: 21715 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 23.5,12.5 + parent: 30 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 21719 + components: + - type: Transform + pos: -30.5,51.5 + parent: 30 +- proto: ComputerCargoOrdersService + entities: + - uid: 2177 + components: + - type: Transform + pos: -6.5,11.5 + parent: 30 - proto: ComputerCargoShuttle entities: - uid: 11718 @@ -54514,6 +54597,13 @@ entities: - type: Transform pos: -17.5,-0.5 parent: 30 +- proto: ComputerFundingAllocation + entities: + - uid: 5238 + components: + - type: Transform + pos: 2.5,34.5 + parent: 30 - proto: ComputerId entities: - uid: 5032 @@ -54552,12 +54642,6 @@ entities: - type: Transform pos: -34.5,-15.5 parent: 30 - - uid: 7574 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,-20.5 - parent: 30 - proto: ComputerPowerMonitoring entities: - uid: 5800 @@ -55342,6 +55426,46 @@ entities: - 0 - 0 - 0 +- proto: CrateLockBoxEngineering + entities: + - uid: 21679 + components: + - type: Transform + pos: 1.5,-41.5 + parent: 30 +- proto: CrateLockBoxMedical + entities: + - uid: 23202 + components: + - type: Transform + pos: -18.5,-21.5 + parent: 30 +- proto: CrateLockBoxScience + entities: + - uid: 23201 + components: + - type: Transform + pos: 24.5,18.5 + parent: 30 +- proto: CrateLockBoxSecurity + entities: + - uid: 23200 + components: + - type: Transform + pos: -30.5,46.5 + parent: 30 +- proto: CrateLockBoxService + entities: + - uid: 23198 + components: + - type: Transform + pos: -13.5,19.5 + parent: 30 + - uid: 23199 + components: + - type: Transform + pos: -23.5,19.5 + parent: 30 - proto: CrateMedicalScrubs entities: - uid: 7019 @@ -63681,11 +63805,6 @@ entities: parent: 30 - proto: filingCabinetDrawerRandom entities: - - uid: 5726 - components: - - type: Transform - pos: 2.5,34.5 - parent: 30 - uid: 11017 components: - type: Transform @@ -63696,6 +63815,11 @@ entities: - type: Transform pos: -9.5,-36.5 parent: 30 + - uid: 23197 + components: + - type: Transform + pos: -12.5,31.5 + parent: 30 - proto: filingCabinetRandom entities: - uid: 8234 @@ -103822,21 +103946,29 @@ entities: - type: DeviceLinkSource linkedPorts: 1943: - - Pressed: Close + - - Pressed + - Close 1986: - - Pressed: Close + - - Pressed + - Close 4788: - - Pressed: Close + - - Pressed + - Close 2407: - - Pressed: Close + - - Pressed + - Close 2006: - - Pressed: Close + - - Pressed + - Close 2216: - - Pressed: Close + - - Pressed + - Close 1753: - - Pressed: Close + - - Pressed + - Close 3180: - - Pressed: Close + - - Pressed + - Close - uid: 2578 components: - type: MetaData @@ -103848,29 +103980,45 @@ entities: - type: DeviceLinkSource linkedPorts: 1986: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 1943: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 4788: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 2407: - - Pressed: AutoClose - - Pressed: Open + - - Pressed + - AutoClose + - - Pressed + - Open 3180: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 1753: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 2216: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 2006: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose - proto: LockerAtmosphericsFilled entities: - uid: 9079 @@ -105149,6 +105297,13 @@ entities: rot: -1.5707963267948966 rad pos: -22.5,-44.5 parent: 30 +- proto: MachineMaterialSilo + entities: + - uid: 21727 + components: + - type: Transform + pos: 23.5,13.5 + parent: 30 - proto: MagazinePistolSubMachineGun entities: - uid: 19841 @@ -106451,6 +106606,11 @@ entities: - type: Transform pos: -8.522221,33.58804 parent: 30 + - uid: 5726 + components: + - type: Transform + pos: 18.04272,13.451241 + parent: 30 - uid: 6761 components: - type: Transform @@ -106466,6 +106626,16 @@ entities: - type: Transform pos: -13.41527,-5.1955566 parent: 30 + - uid: 7110 + components: + - type: Transform + pos: 18.04272,13.451241 + parent: 30 + - uid: 7574 + components: + - type: Transform + pos: 18.04272,13.451241 + parent: 30 - uid: 11629 components: - type: Transform @@ -106571,21 +106741,6 @@ entities: - type: Transform pos: -72.49536,-65.49479 parent: 30 - - uid: 21714 - components: - - type: Transform - pos: 23.549414,13.599922 - parent: 30 - - uid: 21715 - components: - - type: Transform - pos: 23.549414,13.599922 - parent: 30 - - uid: 21719 - components: - - type: Transform - pos: 23.549414,13.599922 - parent: 30 - proto: PaperBin5 entities: - uid: 9040 @@ -108153,11 +108308,6 @@ entities: - type: Transform pos: 0.5,-37.5 parent: 30 - - uid: 7110 - components: - - type: Transform - pos: 1.5,-41.5 - parent: 30 - uid: 8613 components: - type: Transform @@ -108372,6 +108522,11 @@ entities: - type: ContainerContainer containers: stash: !type:ContainerSlot {} + - uid: 23203 + components: + - type: Transform + pos: -1.5,-41.5 + parent: 30 - proto: PottedPlantRD entities: - uid: 12726 @@ -118526,17 +118681,23 @@ entities: - type: DeviceLinkSource linkedPorts: 390: - - Pressed: Toggle + - - Pressed + - Toggle 392: - - Pressed: Toggle + - - Pressed + - Toggle 391: - - Pressed: Toggle + - - Pressed + - Toggle 394: - - Pressed: Toggle + - - Pressed + - Toggle 393: - - Pressed: Toggle + - - Pressed + - Toggle 395: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 544 components: - type: Transform @@ -118545,9 +118706,11 @@ entities: - type: DeviceLinkSource linkedPorts: 542: - - Pressed: Toggle + - - Pressed + - Toggle 543: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 723 components: - type: Transform @@ -118561,7 +118724,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9068: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9038 components: - type: Transform @@ -118570,7 +118734,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9068: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11008 components: - type: Transform @@ -118579,13 +118744,17 @@ entities: - type: DeviceLinkSource linkedPorts: 11006: - - Pressed: Toggle + - - Pressed + - Toggle 11002: - - Pressed: Toggle + - - Pressed + - Toggle 11010: - - Pressed: Toggle + - - Pressed + - Toggle 21333: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11761 components: - type: Transform @@ -118594,7 +118763,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11659: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11933 components: - type: Transform @@ -118603,7 +118773,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11682: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 12029 components: - type: Transform @@ -118612,11 +118783,14 @@ entities: - type: DeviceLinkSource linkedPorts: 11822: - - Pressed: Toggle + - - Pressed + - Toggle 11823: - - Pressed: Toggle + - - Pressed + - Toggle 11716: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 12915 components: - type: Transform @@ -118625,9 +118799,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16773: - - Pressed: Toggle + - - Pressed + - Toggle 13347: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13741 components: - type: Transform @@ -118636,25 +118812,35 @@ entities: - type: DeviceLinkSource linkedPorts: 13737: - - Pressed: Toggle + - - Pressed + - Toggle 13736: - - Pressed: Toggle + - - Pressed + - Toggle 13735: - - Pressed: Toggle + - - Pressed + - Toggle 13734: - - Pressed: Toggle + - - Pressed + - Toggle 13733: - - Pressed: Toggle + - - Pressed + - Toggle 13729: - - Pressed: Toggle + - - Pressed + - Toggle 13728: - - Pressed: Toggle + - - Pressed + - Toggle 13730: - - Pressed: Toggle + - - Pressed + - Toggle 13731: - - Pressed: Toggle + - - Pressed + - Toggle 13732: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13742 components: - type: Transform @@ -118663,25 +118849,35 @@ entities: - type: DeviceLinkSource linkedPorts: 13733: - - Pressed: Toggle + - - Pressed + - Toggle 13732: - - Pressed: Toggle + - - Pressed + - Toggle 13731: - - Pressed: Toggle + - - Pressed + - Toggle 13730: - - Pressed: Toggle + - - Pressed + - Toggle 13734: - - Pressed: Toggle + - - Pressed + - Toggle 13735: - - Pressed: Toggle + - - Pressed + - Toggle 13736: - - Pressed: Toggle + - - Pressed + - Toggle 13737: - - Pressed: Toggle + - - Pressed + - Toggle 13728: - - Pressed: Toggle + - - Pressed + - Toggle 13729: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 20392 components: - type: Transform @@ -118690,9 +118886,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5738: - - Pressed: Toggle + - - Pressed + - Toggle 5741: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 20393 components: - type: Transform @@ -118701,9 +118899,11 @@ entities: - type: DeviceLinkSource linkedPorts: 20395: - - Pressed: Toggle + - - Pressed + - Toggle 20394: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 20446 components: - type: Transform @@ -118712,19 +118912,26 @@ entities: - type: DeviceLinkSource linkedPorts: 12625: - - Pressed: Toggle + - - Pressed + - Toggle 9238: - - Pressed: Toggle + - - Pressed + - Toggle 9239: - - Pressed: Toggle + - - Pressed + - Toggle 20445: - - Pressed: Toggle + - - Pressed + - Toggle 20449: - - Pressed: Toggle + - - Pressed + - Toggle 20448: - - Pressed: Toggle + - - Pressed + - Toggle 20447: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 21721 components: - type: Transform @@ -118733,9 +118940,11 @@ entities: - type: DeviceLinkSource linkedPorts: 22424: - - Pressed: Toggle + - - Pressed + - Toggle 21722: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 295 @@ -118747,9 +118956,11 @@ entities: - type: DeviceLinkSource linkedPorts: 7417: - - Pressed: Open + - - Pressed + - Open 7402: - - Pressed: Open + - - Pressed + - Open - uid: 1919 components: - type: Transform @@ -118759,9 +118970,11 @@ entities: - type: DeviceLinkSource linkedPorts: 999: - - Pressed: Open + - - Pressed + - Open 988: - - Pressed: Open + - - Pressed + - Open - uid: 3189 components: - type: MetaData @@ -118773,7 +118986,8 @@ entities: - type: DeviceLinkSource linkedPorts: 864: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3204 components: - type: Transform @@ -118782,17 +118996,23 @@ entities: - type: DeviceLinkSource linkedPorts: 7972: - - Pressed: Toggle + - - Pressed + - Toggle 7991: - - Pressed: Toggle + - - Pressed + - Toggle 7971: - - Pressed: Toggle + - - Pressed + - Toggle 6785: - - Pressed: Toggle + - - Pressed + - Toggle 6797: - - Pressed: Toggle + - - Pressed + - Toggle 7992: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3708 components: - type: Transform @@ -118801,7 +119021,8 @@ entities: - type: DeviceLinkSource linkedPorts: 341: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4731 components: - type: Transform @@ -118811,15 +119032,20 @@ entities: - type: DeviceLinkSource linkedPorts: 15174: - - Pressed: Toggle + - - Pressed + - Toggle 6299: - - Pressed: Toggle + - - Pressed + - Toggle 5822: - - Pressed: Toggle + - - Pressed + - Toggle 5079: - - Pressed: Toggle + - - Pressed + - Toggle 5078: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6868 components: - type: Transform @@ -118829,9 +119055,11 @@ entities: - type: DeviceLinkSource linkedPorts: 7164: - - Pressed: Toggle + - - Pressed + - Toggle 7829: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6869 components: - type: Transform @@ -118841,9 +119069,11 @@ entities: - type: DeviceLinkSource linkedPorts: 7876: - - Pressed: Toggle + - - Pressed + - Toggle 6871: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6992 components: - type: MetaData @@ -118854,7 +119084,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6991: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7440 components: - type: MetaData @@ -118868,7 +119099,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7609: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7673 components: - type: Transform @@ -118878,17 +119110,23 @@ entities: - type: DeviceLinkSource linkedPorts: 14355: - - Pressed: Toggle + - - Pressed + - Toggle 14340: - - Pressed: Toggle + - - Pressed + - Toggle 14352: - - Pressed: Toggle + - - Pressed + - Toggle 12810: - - Pressed: Toggle + - - Pressed + - Toggle 4438: - - Pressed: Toggle + - - Pressed + - Toggle 899: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7920 components: - type: Transform @@ -118898,9 +119136,11 @@ entities: - type: DeviceLinkSource linkedPorts: 7563: - - Pressed: Toggle + - - Pressed + - Toggle 7562: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8607 components: - type: Transform @@ -118910,7 +119150,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6882: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8610 components: - type: Transform @@ -118920,9 +119161,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12099: - - Pressed: Toggle + - - Pressed + - Toggle 11923: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8863 components: - type: Transform @@ -118932,9 +119175,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12059: - - Pressed: Toggle + - - Pressed + - Toggle 11995: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9184 components: - type: Transform @@ -118943,11 +119188,14 @@ entities: - type: DeviceLinkSource linkedPorts: 9190: - - Pressed: Toggle + - - Pressed + - Toggle 9189: - - Pressed: Toggle + - - Pressed + - Toggle 9188: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 12859 components: - type: MetaData @@ -118958,7 +119206,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14249: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 16041 components: - type: Transform @@ -118968,7 +119217,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6413: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 16042 components: - type: Transform @@ -118978,7 +119228,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6414: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 16116 components: - type: Transform @@ -118988,7 +119239,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6415: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - proto: SignalSwitch entities: - uid: 11021 @@ -119000,14 +119252,20 @@ entities: - type: DeviceLinkSource linkedPorts: 9533: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11028: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11015: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 23173 components: - type: MetaData @@ -119019,32 +119277,50 @@ entities: - type: DeviceLinkSource linkedPorts: 3181: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3182: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3183: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3184: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3185: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3176: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3177: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 5698: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 5700: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - proto: SignalSwitchDirectional entities: - uid: 1845 @@ -119060,35 +119336,55 @@ entities: - type: DeviceLinkSource linkedPorts: 20391: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20401: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20402: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18840: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20360: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20389: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2584: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8060: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9292: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2189: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 3131 components: - type: Transform @@ -119098,17 +119394,25 @@ entities: - type: DeviceLinkSource linkedPorts: 9415: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9408: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9410: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9411: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 5063 components: - type: Transform @@ -119118,8 +119422,10 @@ entities: - type: DeviceLinkSource linkedPorts: 3512: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 9164 components: - type: Transform @@ -119129,14 +119435,20 @@ entities: - type: DeviceLinkSource linkedPorts: 9678: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9065: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9064: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 9214 components: - type: Transform @@ -119146,14 +119458,20 @@ entities: - type: DeviceLinkSource linkedPorts: 9690: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9302: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9691: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 12697 components: - type: Transform @@ -119163,11 +119481,15 @@ entities: - type: DeviceLinkSource linkedPorts: 15213: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 15987: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 14525 components: - type: Transform @@ -119177,11 +119499,15 @@ entities: - type: DeviceLinkSource linkedPorts: 15986: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 14844: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 15975 components: - type: Transform @@ -119191,11 +119517,15 @@ entities: - type: DeviceLinkSource linkedPorts: 14530: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 15075: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 20068 components: - type: Transform @@ -119205,38 +119535,60 @@ entities: - type: DeviceLinkSource linkedPorts: 20061: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20063: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20062: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20064: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20051: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20053: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20052: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19418: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19419: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open 20054: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19795: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 21706 components: - type: Transform @@ -119245,14 +119597,20 @@ entities: - type: DeviceLinkSource linkedPorts: 20065: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21758: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20066: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 22211 components: - type: Transform @@ -119262,14 +119620,20 @@ entities: - type: DeviceLinkSource linkedPorts: 22194: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 22101: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20075: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - proto: SignArmory entities: - uid: 1927 @@ -125885,11 +126249,6 @@ entities: - type: Transform pos: -13.5,-8.5 parent: 30 - - uid: 5238 - components: - - type: Transform - pos: -24.5,-44.5 - parent: 30 - uid: 5240 components: - type: Transform @@ -126646,11 +127005,6 @@ entities: - type: Transform pos: 46.5,36.5 parent: 30 - - uid: 21679 - components: - - type: Transform - pos: 23.5,13.5 - parent: 30 - uid: 21705 components: - type: Transform @@ -127667,11 +128021,6 @@ entities: - type: Transform pos: -31.5,51.5 parent: 30 - - uid: 2177 - components: - - type: Transform - pos: -30.5,51.5 - parent: 30 - uid: 3361 components: - type: Transform @@ -128624,17 +128973,26 @@ entities: - type: DeviceLinkSource linkedPorts: 16230: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close 16229: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close 16228: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close - uid: 11677 components: - type: Transform @@ -128643,33 +129001,54 @@ entities: - type: DeviceLinkSource linkedPorts: 11639: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12096: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6726: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12031: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 16126: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11932: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12231: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 11717 components: - type: Transform @@ -128678,61 +129057,103 @@ entities: - type: DeviceLinkSource linkedPorts: 8500: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 8466: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 8503: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 11691: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward 21238: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 20281: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22308: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22309: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22310: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22311: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22312: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22313: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22314: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22316: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 11866 components: - type: Transform @@ -128741,25 +129162,40 @@ entities: - type: DeviceLinkSource linkedPorts: 11702: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11979: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11755: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11865: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12014: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 12013 components: - type: Transform @@ -128768,21 +129204,33 @@ entities: - type: DeviceLinkSource linkedPorts: 11780: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12047: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11926: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11978: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 18373 components: - type: Transform @@ -128791,41 +129239,68 @@ entities: - type: DeviceLinkSource linkedPorts: 12943: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12944: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12961: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12973: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 18374: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12974: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 12983: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13034: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13048: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 21584 components: - type: Transform @@ -128834,9 +129309,12 @@ entities: - type: DeviceLinkSource linkedPorts: 21582: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - proto: UnfinishedMachineFrame entities: - uid: 7826 diff --git a/Resources/Maps/meta.yml b/Resources/Maps/meta.yml index bfd02ba6de..0541469ef5 100644 --- a/Resources/Maps/meta.yml +++ b/Resources/Maps/meta.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 250.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/29/2025 04:10:56 - entityCount: 28717 + time: 04/24/2025 09:44:40 + entityCount: 28726 maps: - 951 grids: @@ -12161,9 +12161,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1563: - - DoorStatus: Close + - - DoorStatus + - Close 240: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 238 components: - type: MetaData @@ -12176,9 +12178,11 @@ entities: - type: DeviceLinkSource linkedPorts: 240: - - DoorStatus: Close + - - DoorStatus + - Close 1563: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 240 components: - type: MetaData @@ -12191,9 +12195,11 @@ entities: - type: DeviceLinkSource linkedPorts: 238: - - DoorStatus: Close + - - DoorStatus + - Close 237: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 242 components: - type: MetaData @@ -12206,9 +12212,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1147: - - DoorStatus: Close + - - DoorStatus + - Close 243: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 243 components: - type: MetaData @@ -12221,9 +12229,11 @@ entities: - type: DeviceLinkSource linkedPorts: 242: - - DoorStatus: Close + - - DoorStatus + - Close 1710: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 268 components: - type: MetaData @@ -12252,9 +12262,11 @@ entities: - type: DeviceLinkSource linkedPorts: 242: - - DoorStatus: Close + - - DoorStatus + - Close 1710: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 1563 components: - type: MetaData @@ -12267,9 +12279,11 @@ entities: - type: DeviceLinkSource linkedPorts: 237: - - DoorStatus: Close + - - DoorStatus + - Close 238: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 1710 components: - type: MetaData @@ -12282,9 +12296,11 @@ entities: - type: DeviceLinkSource linkedPorts: 243: - - DoorStatus: Close + - - DoorStatus + - Close 1147: - - DoorStatus: Close + - - DoorStatus + - Close - proto: AirlockCommandLocked entities: - uid: 245 @@ -12395,7 +12411,7 @@ entities: pos: 11.5,29.5 parent: 5350 - type: Door - secondsUntilStateChange: -4233.237 + secondsUntilStateChange: -5519.5977 state: Opening - type: DeviceLinkSource lastSignals: @@ -12664,7 +12680,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11257: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 27016 components: - type: MetaData @@ -12677,7 +12694,8 @@ entities: - type: DeviceLinkSource linkedPorts: 27248: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalEngineeringLocked entities: - uid: 10968 @@ -12692,7 +12710,8 @@ entities: - type: DeviceLinkSource linkedPorts: 26632: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23561 components: - type: MetaData @@ -12703,7 +12722,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23562: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23562 components: - type: MetaData @@ -12714,7 +12734,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23561: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23563 components: - type: MetaData @@ -12725,7 +12746,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23564: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 23564 components: - type: MetaData @@ -12736,7 +12758,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23563: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 26632 components: - type: MetaData @@ -12749,7 +12772,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10968: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 1485 @@ -12852,7 +12876,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11254: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11980 components: - type: MetaData @@ -12866,7 +12891,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13933: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13933 components: - type: MetaData @@ -12880,7 +12906,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11980: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 27248 components: - type: MetaData @@ -12894,7 +12921,8 @@ entities: - type: DeviceLinkSource linkedPorts: 27016: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassCargoLocked entities: - uid: 183 @@ -12920,9 +12948,11 @@ entities: - type: DeviceLinkSource linkedPorts: 9482: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 3527: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3527 components: - type: MetaData @@ -12935,9 +12965,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3443: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 9426: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3884 components: - type: MetaData @@ -12964,9 +12996,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3527: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 9482: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9482 components: - type: MetaData @@ -12979,9 +13013,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3443: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 9426: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassCommandLocked entities: - uid: 3025 @@ -12994,9 +13030,11 @@ entities: - type: DeviceLinkSource linkedPorts: 27212: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 27213: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3026 components: - type: MetaData @@ -13007,9 +13045,11 @@ entities: - type: DeviceLinkSource linkedPorts: 27213: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 27212: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 27212 components: - type: MetaData @@ -13042,7 +13082,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13927: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13927 components: - type: MetaData @@ -13055,7 +13096,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13926: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 149 @@ -13070,7 +13112,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20038: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5712 components: - type: Transform @@ -13081,7 +13124,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5711: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 5713 components: - type: Transform @@ -13092,9 +13136,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5716: - - DoorStatus: Close + - - DoorStatus + - Close 5715: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 5714 components: - type: Transform @@ -13105,9 +13151,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5715: - - DoorStatus: Close + - - DoorStatus + - Close 5716: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 5742 components: - type: Transform @@ -13125,7 +13173,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9495: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9495 components: - type: MetaData @@ -13138,7 +13187,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9494: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13922 components: - type: MetaData @@ -13151,7 +13201,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13921: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 16716 components: - type: MetaData @@ -13164,7 +13215,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16715: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17204 components: - type: MetaData @@ -13177,7 +13229,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17205: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17205 components: - type: MetaData @@ -13190,7 +13243,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17204: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20027 components: - type: MetaData @@ -13203,7 +13257,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20026: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20029 components: - type: MetaData @@ -13216,7 +13271,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20030: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20030 components: - type: MetaData @@ -13229,7 +13285,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20029: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20038 components: - type: MetaData @@ -13242,7 +13299,8 @@ entities: - type: DeviceLinkSource linkedPorts: 149: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 2996 @@ -13364,7 +13422,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5712: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 5715 @@ -13375,9 +13434,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5713: - - DoorStatus: Close + - - DoorStatus + - Close 5714: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 2 - uid: 5716 @@ -13388,9 +13449,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5713: - - DoorStatus: Close + - - DoorStatus + - Close 5714: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 2 - proto: AirlockExternalLocked @@ -13407,7 +13470,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13922: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 16715 components: - type: MetaData @@ -13420,7 +13484,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16716: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20026 components: - type: MetaData @@ -13433,7 +13498,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20027: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockFreezerKitchenHydroLocked entities: - uid: 2433 @@ -13605,7 +13671,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7231: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7143 components: - type: MetaData @@ -13618,7 +13685,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6718: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7272 components: - type: MetaData @@ -13631,7 +13699,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6706: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7758 components: - type: MetaData @@ -14852,7 +14921,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19185: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15115 components: - type: MetaData @@ -14884,7 +14954,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14850: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20286 components: - type: MetaData @@ -14953,14 +15024,15 @@ entities: pos: -4.5,53.5 parent: 5350 - type: Door - secondsUntilStateChange: -112816.266 + secondsUntilStateChange: -114102.625 state: Opening - type: DeviceLinkSink invokeCounter: 2 - type: DeviceLinkSource linkedPorts: 7272: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt lastSignals: DoorStatus: True - uid: 6718 @@ -14976,7 +15048,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7143: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6751 components: - type: MetaData @@ -15013,7 +15086,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6710: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7429 components: - type: MetaData @@ -23192,7 +23266,7 @@ entities: - uid: 16030 components: - type: Transform - pos: 1.3051715,-33.362003 + pos: 1.5512257,-33.37433 parent: 5350 - uid: 19241 components: @@ -23560,7 +23634,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6803: - - Start: Close + - - Start + - Close - uid: 6845 components: - type: MetaData @@ -23571,7 +23646,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7429: - - Start: Close + - - Start + - Close - uid: 7372 components: - type: MetaData @@ -23582,7 +23658,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6802: - - Start: Close + - - Start + - Close - proto: Bucket entities: - uid: 1113 @@ -41532,7 +41609,7 @@ entities: - uid: 8040 components: - type: Transform - pos: 0.6150346,-33.378967 + pos: 0.84810066,-33.49933 parent: 5350 - uid: 12067 components: @@ -66280,16 +66357,16 @@ entities: parent: 5350 - proto: ClosetBombFilled entities: - - uid: 7031 - components: - - type: Transform - pos: 5.5,41.5 - parent: 5350 - uid: 15535 components: - type: Transform pos: 20.5,-47.5 parent: 5350 + - uid: 17456 + components: + - type: Transform + pos: 4.5,36.5 + parent: 5350 - proto: ClosetEmergencyFilledRandom entities: - uid: 483 @@ -67929,13 +68006,6 @@ entities: - type: Transform pos: -7.4309044,-16.489243 parent: 5350 -- proto: ClothingHeadHatRedwizard - entities: - - uid: 6128 - components: - - type: Transform - pos: -50.70865,-38.195942 - parent: 5350 - proto: ClothingHeadHatSkub entities: - uid: 10493 @@ -68012,12 +68082,17 @@ entities: - type: Transform pos: -40.532333,-25.270031 parent: 5350 -- proto: ClothingHeadHatWizard +- proto: ClothingHeadHatWizardFake entities: - - uid: 17456 + - uid: 804 components: - type: Transform - pos: -50.3649,-38.227192 + pos: -50.66044,-38.362316 + parent: 5350 + - uid: 6128 + components: + - type: Transform + pos: -50.344055,-38.625935 parent: 5350 - proto: ClothingHeadHelmetBasic entities: @@ -68584,20 +68659,6 @@ entities: - type: Transform pos: 35.48533,-43.42037 parent: 5350 -- proto: ClothingOuterWizard - entities: - - uid: 804 - components: - - type: Transform - pos: -50.349274,-38.461567 - parent: 5350 -- proto: ClothingOuterWizardRed - entities: - - uid: 23047 - components: - - type: Transform - pos: -50.70865,-38.445942 - parent: 5350 - proto: ClothingShoesBootsJackFilled entities: - uid: 5435 @@ -69508,7 +69569,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19265: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 19135 @@ -69608,6 +69670,44 @@ entities: - type: Transform pos: -9.5,2.5 parent: 5350 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 28719 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 55.5,3.5 + parent: 5350 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 8377 + components: + - type: Transform + pos: -36.5,-30.5 + parent: 5350 +- proto: ComputerCargoOrdersScience + entities: + - uid: 15604 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 2.5,-33.5 + parent: 5350 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 4324 + components: + - type: Transform + pos: 5.5,41.5 + parent: 5350 +- proto: ComputerCargoOrdersService + entities: + - uid: 23047 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 33.5,-7.5 + parent: 5350 - proto: ComputerCargoShuttle entities: - uid: 28195 @@ -69727,6 +69827,14 @@ entities: rot: 1.5707963267948966 rad pos: 37.5,-30.5 parent: 5350 +- proto: ComputerFundingAllocation + entities: + - uid: 7031 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -16.5,-3.5 + parent: 5350 - proto: ComputerId entities: - uid: 1061 @@ -71360,6 +71468,46 @@ entities: showEnts: False occludes: True ent: null +- proto: CrateLockBoxEngineering + entities: + - uid: 28721 + components: + - type: Transform + pos: 49.5,0.5 + parent: 5350 +- proto: CrateLockBoxMedical + entities: + - uid: 28722 + components: + - type: Transform + pos: -33.5,-45.5 + parent: 5350 +- proto: CrateLockBoxScience + entities: + - uid: 28723 + components: + - type: Transform + pos: 5.5,-40.5 + parent: 5350 +- proto: CrateLockBoxSecurity + entities: + - uid: 28724 + components: + - type: Transform + pos: 10.5,42.5 + parent: 5350 +- proto: CrateLockBoxService + entities: + - uid: 28725 + components: + - type: Transform + pos: 42.5,-5.5 + parent: 5350 + - uid: 28726 + components: + - type: Transform + pos: 41.5,-22.5 + parent: 5350 - proto: CrateMaterialSteel entities: - uid: 28057 @@ -82358,11 +82506,6 @@ entities: parent: 5350 - proto: filingCabinetDrawer entities: - - uid: 8377 - components: - - type: Transform - pos: -16.5,-3.5 - parent: 5350 - uid: 9062 components: - type: Transform @@ -82427,6 +82570,11 @@ entities: - type: Transform pos: 10.5,-43.5 parent: 5350 + - uid: 28720 + components: + - type: Transform + pos: -18.5,-1.5 + parent: 5350 - proto: filingCabinetDrawerRandom entities: - uid: 1377 @@ -84587,7 +84735,7 @@ entities: pos: 31.5,-33.5 parent: 5350 - type: Door - secondsUntilStateChange: -35655.312 + secondsUntilStateChange: -36941.67 state: Closing - uid: 9615 components: @@ -130986,17 +131134,23 @@ entities: - type: DeviceLinkSource linkedPorts: 1876: - - Pressed: Close + - - Pressed + - Close 28459: - - Pressed: Close + - - Pressed + - Close 6962: - - Pressed: Close + - - Pressed + - Close 8868: - - Pressed: Close + - - Pressed + - Close 23027: - - Pressed: Close + - - Pressed + - Close 22904: - - Pressed: Close + - - Pressed + - Close - uid: 23091 components: - type: MetaData @@ -131008,22 +131162,33 @@ entities: - type: DeviceLinkSource linkedPorts: 1876: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 28459: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 6962: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 22904: - - Pressed: Open + - - Pressed + - Open 8868: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose 23027: - - Pressed: Open - - Pressed: AutoClose + - - Pressed + - Open + - - Pressed + - AutoClose - proto: LockableButtonAtmospherics entities: - uid: 18348 @@ -131037,7 +131202,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15944: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 18353 components: - type: MetaData @@ -131049,7 +131215,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15941: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonEngineering entities: - uid: 4161 @@ -131063,11 +131230,14 @@ entities: - type: DeviceLinkSource linkedPorts: 28365: - - Pressed: Toggle + - - Pressed + - Toggle 23391: - - Pressed: Toggle + - - Pressed + - Toggle 28382: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonMedical entities: - uid: 1426 @@ -131080,11 +131250,14 @@ entities: - type: DeviceLinkSource linkedPorts: 23655: - - Pressed: Toggle + - - Pressed + - Toggle 23712: - - Pressed: Toggle + - - Pressed + - Toggle 23720: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 10414 components: - type: MetaData @@ -131096,9 +131269,11 @@ entities: - type: DeviceLinkSource linkedPorts: 14445: - - Pressed: Open + - - Pressed + - Open 14444: - - Pressed: Open + - - Pressed + - Open - uid: 13783 components: - type: MetaData @@ -131110,9 +131285,11 @@ entities: - type: DeviceLinkSource linkedPorts: 23500: - - Pressed: Open + - - Pressed + - Open 24195: - - Pressed: Open + - - Pressed + - Open - proto: LockableButtonResearch entities: - uid: 792 @@ -131126,11 +131303,14 @@ entities: - type: DeviceLinkSource linkedPorts: 15522: - - Pressed: Toggle + - - Pressed + - Toggle 14390: - - Pressed: Toggle + - - Pressed + - Toggle 14436: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockerAtmosphericsFilled entities: - uid: 11751 @@ -131662,19 +131842,16 @@ entities: - 0 - 0 - 0 - - uid: 15604 - components: - - type: Transform - anchored: True - pos: -36.5,-30.5 - parent: 5350 - - type: Physics - bodyType: Static - uid: 24329 components: - type: Transform pos: -30.5,-29.5 parent: 5350 + - uid: 28718 + components: + - type: Transform + pos: -25.5,-29.5 + parent: 5350 - proto: LockerParamedicFilled entities: - uid: 15898 @@ -131990,6 +132167,13 @@ entities: - type: Transform pos: -44.5,-21.5 parent: 5350 +- proto: MachineMaterialSilo + entities: + - uid: 16678 + components: + - type: Transform + pos: 4.5,-36.5 + parent: 5350 - proto: MagazineBoxMagnumPractice entities: - uid: 22264 @@ -132449,12 +132633,12 @@ entities: - uid: 4312 components: - type: Transform - pos: 1.8806596,-33.332092 + pos: 0.44185066,-33.171204 parent: 5350 - uid: 4315 components: - type: Transform - pos: 2.0837846,-33.441467 + pos: 0.31685066,-32.99933 parent: 5350 - proto: MechEquipmentGrabberSmall entities: @@ -145979,11 +146163,14 @@ entities: - type: DeviceLinkSource linkedPorts: 6260: - - Pressed: Forward + - - Pressed + - Forward 4451: - - Pressed: Forward + - - Pressed + - Forward 15331: - - Pressed: Forward + - - Pressed + - Forward - type: Physics canCollide: False - uid: 21407 @@ -145993,11 +146180,14 @@ entities: - type: DeviceLinkSource linkedPorts: 6260: - - Pressed: Reverse + - - Pressed + - Reverse 4451: - - Pressed: Reverse + - - Pressed + - Reverse 15331: - - Pressed: Reverse + - - Pressed + - Reverse - type: Physics canCollide: False - uid: 28429 @@ -146325,7 +146515,7 @@ entities: - uid: 4044 components: - type: Transform - pos: 4.0027914,-36.42903 + pos: 3.6835365,-36.49933 parent: 5350 - uid: 8906 components: @@ -146464,7 +146654,7 @@ entities: - uid: 16473 components: - type: Transform - pos: 4.5652914,-36.413406 + pos: 3.4960365,-36.34308 parent: 5350 - uid: 24292 components: @@ -146493,7 +146683,7 @@ entities: - uid: 3799 components: - type: Transform - pos: 3.4715414,-36.42903 + pos: 0.52583885,-32.077454 parent: 5350 - uid: 3832 components: @@ -147100,7 +147290,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24634: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11517 components: - type: MetaData @@ -147112,7 +147303,8 @@ entities: - type: DeviceLinkSource linkedPorts: 91: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 11518 components: - type: MetaData @@ -147124,7 +147316,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8659: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 11519 components: - type: MetaData @@ -147136,7 +147329,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8660: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 11742 components: - type: MetaData @@ -147148,7 +147342,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8658: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 11770 components: - type: MetaData @@ -147160,7 +147355,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8656: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 16024 components: - type: MetaData @@ -147172,9 +147368,11 @@ entities: - type: DeviceLinkSource linkedPorts: 672: - - Pressed: Open + - - Pressed + - Open 673: - - Pressed: Open + - - Pressed + - Open - uid: 19081 components: - type: MetaData @@ -147186,9 +147384,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16538: - - Pressed: Open + - - Pressed + - Open 16470: - - Pressed: Open + - - Pressed + - Open - proto: SignalButtonDirectional entities: - uid: 6536 @@ -147202,9 +147402,11 @@ entities: - type: DeviceLinkSource linkedPorts: 23500: - - Pressed: Open + - - Pressed + - Open 24195: - - Pressed: Open + - - Pressed + - Open - uid: 10139 components: - type: MetaData @@ -147215,7 +147417,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17273: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 10140 components: - type: MetaData @@ -147226,7 +147429,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17274: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 10141 components: - type: MetaData @@ -147237,7 +147441,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17275: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 11158 components: - type: Transform @@ -147246,11 +147451,14 @@ entities: - type: DeviceLinkSource linkedPorts: 12418: - - Pressed: Toggle + - - Pressed + - Toggle 9188: - - Pressed: Toggle + - - Pressed + - Toggle 9185: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11160 components: - type: Transform @@ -147260,11 +147468,14 @@ entities: - type: DeviceLinkSource linkedPorts: 12418: - - Pressed: Toggle + - - Pressed + - Toggle 9188: - - Pressed: Toggle + - - Pressed + - Toggle 9185: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11423 components: - type: MetaData @@ -147276,7 +147487,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10406: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 21082 components: - type: MetaData @@ -147288,7 +147500,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20757: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 21101 components: - type: MetaData @@ -147300,7 +147513,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21092: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 21102 components: - type: MetaData @@ -147312,7 +147526,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21091: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 21103 components: - type: MetaData @@ -147324,7 +147539,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15418: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 21548 components: - type: MetaData @@ -147336,7 +147552,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16592: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - proto: SignalSwitch entities: - uid: 15949 @@ -147350,14 +147567,20 @@ entities: - type: DeviceLinkSource linkedPorts: 7323: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 14414: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 499: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 16224 components: - type: MetaData @@ -147371,44 +147594,70 @@ entities: - type: DeviceLinkSource linkedPorts: 5086: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7142: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6339: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6780: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6758: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7713: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7749: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7745: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8903: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8904: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7746: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9226: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9219: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 16288 components: - type: MetaData @@ -147422,14 +147671,20 @@ entities: - type: DeviceLinkSource linkedPorts: 12458: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 12457: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 12456: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 16289 components: - type: MetaData @@ -147443,14 +147698,20 @@ entities: - type: DeviceLinkSource linkedPorts: 12459: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 12460: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 12461: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 19084 components: - type: MetaData @@ -147464,17 +147725,25 @@ entities: - type: DeviceLinkSource linkedPorts: 2741: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16049: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16565: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16083: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 19400 components: - type: MetaData @@ -147486,14 +147755,20 @@ entities: - type: DeviceLinkSource linkedPorts: 19409: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19621: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19326: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 19433 components: - type: MetaData @@ -147505,14 +147780,20 @@ entities: - type: DeviceLinkSource linkedPorts: 19259: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19258: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19270: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 22352 components: - type: MetaData @@ -147524,53 +147805,85 @@ entities: - type: DeviceLinkSource linkedPorts: 22285: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22286: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22287: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22288: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 7280: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 5440: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 11232: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 13342: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22245: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22255: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22257: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22254: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22253: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22252: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22251: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 22259: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off - proto: SignalSwitchDirectional entities: - uid: 1301 @@ -147586,26 +147899,40 @@ entities: - type: DeviceLinkSource linkedPorts: 2415: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2416: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2417: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2418: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2419: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2420: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2421: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 2558 components: - type: MetaData @@ -147618,11 +147945,15 @@ entities: - type: DeviceLinkSource linkedPorts: 27135: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 27136: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 4744 components: - type: MetaData @@ -147634,41 +147965,65 @@ entities: - type: DeviceLinkSource linkedPorts: 3910: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3907: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3909: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 4450: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3911: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 4449: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3908: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3912: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 4746: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 5045: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4145: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4308: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 4758 components: - type: MetaData @@ -147679,37 +148034,55 @@ entities: - type: DeviceLinkSource linkedPorts: 9473: - - On: Forward - - Off: Reverse + - - On + - Forward + - - Off + - Reverse 3479: - - On: Forward - - Off: Reverse + - - On + - Forward + - - Off + - Reverse 9256: - - On: Forward - - Off: Reverse + - - On + - Forward + - - Off + - Reverse 9357: - - On: Forward + - - On + - Forward 9479: - - On: Forward + - - On + - Forward 9344: - - On: Forward + - - On + - Forward 4556: - - On: Forward + - - On + - Forward 4513: - - On: Forward + - - On + - Forward 4458: - - On: Forward + - - On + - Forward 4471: - - On: Forward + - - On + - Forward 4472: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9700: - - On: Forward + - - On + - Forward 9669: - - On: Forward + - - On + - Forward 4525: - - On: Forward + - - On + - Forward - uid: 6572 components: - type: MetaData @@ -147723,14 +148096,20 @@ entities: - type: DeviceLinkSource linkedPorts: 6335: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6599: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6471: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 6824 components: - type: Transform @@ -147740,26 +148119,40 @@ entities: - type: DeviceLinkSource linkedPorts: 28197: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 26164: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 26158: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 26157: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 22640: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 22324: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 22366: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open - uid: 7134 components: - type: MetaData @@ -147771,11 +148164,15 @@ entities: - type: DeviceLinkSource linkedPorts: 6412: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9630: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 9373 components: - type: MetaData @@ -147787,32 +148184,50 @@ entities: - type: DeviceLinkSource linkedPorts: 9301: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 4553: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 9289: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9477: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 4461: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 4652: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 17828: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 849: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 18236: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off - uid: 9685 components: - type: MetaData @@ -147825,11 +148240,15 @@ entities: - type: DeviceLinkSource linkedPorts: 7713: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7749: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 9686 components: - type: MetaData @@ -147842,11 +148261,15 @@ entities: - type: DeviceLinkSource linkedPorts: 8903: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7745: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 10429 components: - type: MetaData @@ -147858,38 +148281,60 @@ entities: - type: DeviceLinkSource linkedPorts: 3090: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3089: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3612: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3456: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3603: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3455: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3460: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 3475: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 9643: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 20939: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1576: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 10468 components: - type: MetaData @@ -147903,14 +148348,20 @@ entities: - type: DeviceLinkSource linkedPorts: 7594: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6301: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6302: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 11110 components: - type: MetaData @@ -147922,17 +148373,25 @@ entities: - type: DeviceLinkSource linkedPorts: 12361: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11564: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11655: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open 11733: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 11467 components: - type: MetaData @@ -147945,11 +148404,15 @@ entities: - type: DeviceLinkSource linkedPorts: 8904: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7746: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 12130 components: - type: MetaData @@ -147962,14 +148425,20 @@ entities: - type: DeviceLinkSource linkedPorts: 13934: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 13163: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 13781: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 17321 components: - type: MetaData @@ -147981,17 +148450,25 @@ entities: - type: DeviceLinkSource linkedPorts: 16181: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11426: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 17317: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21785: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 19106 components: - type: MetaData @@ -148003,8 +148480,10 @@ entities: - type: DeviceLinkSource linkedPorts: 6953: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 19107 components: - type: MetaData @@ -148016,8 +148495,10 @@ entities: - type: DeviceLinkSource linkedPorts: 15954: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 19110 components: - type: MetaData @@ -148029,8 +148510,10 @@ entities: - type: DeviceLinkSource linkedPorts: 19627: - - Off: Off - - On: On + - - Off + - Off + - - On + - On - uid: 20315 components: - type: MetaData @@ -148044,26 +148527,40 @@ entities: - type: DeviceLinkSource linkedPorts: 16466: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11599: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16602: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20928: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20927: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20926: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20929: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 20919 components: - type: MetaData @@ -148077,20 +148574,30 @@ entities: - type: DeviceLinkSource linkedPorts: 2460: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 12467: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2754: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2428: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3180: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 20931 components: - type: MetaData @@ -148102,11 +148609,15 @@ entities: - type: DeviceLinkSource linkedPorts: 15717: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16529: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 21438 components: - type: MetaData @@ -148118,14 +148629,20 @@ entities: - type: DeviceLinkSource linkedPorts: 21434: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 21231: - - On: Forward - - Off: Off + - - On + - Forward + - - Off + - Off 21435: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 21783 components: - type: MetaData @@ -148137,17 +148654,25 @@ entities: - type: DeviceLinkSource linkedPorts: 18546: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21773: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21779: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21784: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 22186 components: - type: MetaData @@ -148159,17 +148684,25 @@ entities: - type: DeviceLinkSource linkedPorts: 22132: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 22088: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 22045: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21786: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 23365 components: - type: MetaData @@ -148182,17 +148715,25 @@ entities: - type: DeviceLinkSource linkedPorts: 19745: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19741: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19740: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19736: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 24265 components: - type: MetaData @@ -148206,14 +148747,20 @@ entities: - type: DeviceLinkSource linkedPorts: 15096: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16334: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 28212: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 28285 components: - type: MetaData @@ -148225,8 +148772,10 @@ entities: - type: DeviceLinkSource linkedPorts: 17445: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 28286 components: - type: MetaData @@ -148238,8 +148787,10 @@ entities: - type: DeviceLinkSource linkedPorts: 4311: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 28292 components: - type: MetaData @@ -148251,8 +148802,10 @@ entities: - type: DeviceLinkSource linkedPorts: 28293: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - proto: SignAnomaly entities: - uid: 19445 @@ -156906,12 +157459,6 @@ entities: - type: Transform pos: 0.5,-28.5 parent: 5350 - - uid: 4324 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 2.5,-33.5 - parent: 5350 - uid: 4368 components: - type: Transform @@ -157776,11 +158323,6 @@ entities: - type: Transform pos: -16.5,-13.5 parent: 5350 - - uid: 16678 - components: - - type: Transform - pos: 4.5,-36.5 - parent: 5350 - uid: 16875 components: - type: Transform @@ -161108,73 +161650,124 @@ entities: - type: DeviceLinkSource linkedPorts: 10032: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 10037: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9952: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9882: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9934: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9790: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9707: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9711: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9757: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9803: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9709: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9705: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9675: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9696: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9678: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3024: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close 4469: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close - uid: 17528 components: - type: MetaData @@ -161185,25 +161778,40 @@ entities: - type: DeviceLinkSource linkedPorts: 9459: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9460: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4562: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 9951: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4676: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - proto: UnfinishedMachineFrame entities: - uid: 2970 @@ -180126,7 +180734,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7542: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 7073 components: - type: MetaData @@ -180168,7 +180777,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14290: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 14378 components: - type: Transform @@ -180179,7 +180789,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20826: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 16865 components: - type: Transform @@ -180208,9 +180819,11 @@ entities: - type: DeviceLinkSource linkedPorts: 20220: - - DoorStatus: Close + - - DoorStatus + - Close 20221: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 19625 components: - type: Transform @@ -180222,9 +180835,11 @@ entities: - type: DeviceLinkSource linkedPorts: 20220: - - DoorStatus: Close + - - DoorStatus + - Close 20221: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 23114 components: - type: Transform @@ -180236,7 +180851,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20160: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 25676 components: - type: Transform @@ -180279,9 +180895,11 @@ entities: - type: DeviceLinkSource linkedPorts: 21462: - - DoorStatus: Close + - - DoorStatus + - Close 21461: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 28118 components: - type: Transform @@ -180293,9 +180911,11 @@ entities: - type: DeviceLinkSource linkedPorts: 21462: - - DoorStatus: Close + - - DoorStatus + - Close 21461: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorBarLocked entities: - uid: 21054 @@ -180309,7 +180929,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2410: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 21460 components: - type: MetaData @@ -180349,9 +180970,11 @@ entities: - type: DeviceLinkSource linkedPorts: 28116: - - DoorStatus: Close + - - DoorStatus + - Close 28118: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 21462 components: - type: Transform @@ -180363,9 +180986,11 @@ entities: - type: DeviceLinkSource linkedPorts: 28116: - - DoorStatus: Close + - - DoorStatus + - Close 28118: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorKitchenHydroponicsLocked entities: - uid: 1153 @@ -180393,7 +181018,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21054: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecure entities: - uid: 15701 @@ -180418,7 +181044,8 @@ entities: - type: DeviceLinkSource linkedPorts: 987: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 22299 components: - type: Transform @@ -180524,7 +181151,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14361: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 20826 components: - type: Transform @@ -180536,7 +181164,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14378: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 26681 components: - type: Transform @@ -180658,7 +181287,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22219: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureMedicalLocked entities: - uid: 15543 @@ -180721,9 +181351,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19625: - - DoorStatus: Close + - - DoorStatus + - Close 19624: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 20221 components: - type: Transform @@ -180734,9 +181366,11 @@ entities: - type: DeviceLinkSource linkedPorts: 19625: - - DoorStatus: Close + - - DoorStatus + - Close 19624: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureSecurityLocked entities: - uid: 6894 @@ -180761,7 +181395,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4931: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 7781 components: - type: Transform @@ -180781,7 +181416,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23114: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureServiceLocked entities: - uid: 14569 @@ -185231,7 +185867,7 @@ entities: pos: -28.5,-5.5 parent: 5350 - type: Door - secondsUntilStateChange: -41367.223 + secondsUntilStateChange: -42653.582 state: Opening - uid: 17570 components: diff --git a/Resources/Maps/oasis.yml b/Resources/Maps/oasis.yml index 0cde7a9206..53f2b33e27 100644 --- a/Resources/Maps/oasis.yml +++ b/Resources/Maps/oasis.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 250.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/30/2025 03:58:19 - entityCount: 30243 + time: 04/19/2025 10:13:38 + entityCount: 30308 maps: - 1 grids: @@ -31,6 +31,7 @@ tilemap: 0: FloorConcreteSmooth 16: FloorDark 27: FloorDarkDiagonal + 55: FloorDarkHerringbone 41: FloorDarkMini 29: FloorDarkMono 33: FloorDarkOffset @@ -52,6 +53,7 @@ tilemap: 7: FloorPlanetGrass 30: FloorReinforced 48: FloorReinforcedHardened + 54: FloorRockVault 17: FloorSteel 25: FloorSteelDiagonal 37: FloorSteelOffset @@ -131,7 +133,7 @@ entities: version: 6 1,1: ind: 1,1 - tiles: BgAAAAADBgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAADFAAAAAAAFAAAAAACFAAAAAABFAAAAAADFAAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAACFAAAAAAABgAAAAACBgAAAAADAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAABFAAAAAAAFAAAAAADFAAAAAACFAAAAAACFAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAABHAAAAAADAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAABFAAAAAACFAAAAAACFAAAAAABFAAAAAABFAAAAAACAgAAAAAAHAAAAAADHAAAAAABHAAAAAAAHAAAAAAAAgAAAAAADwAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAABDAAAAAAADAAAAAADDAAAAAACAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAEAAAAAAAEAAAAAAAAgAAAAAAHAAAAAADDAAAAAACDAAAAAABDAAAAAABAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAACAgAAAAAAHAAAAAADDAAAAAAADAAAAAACDAAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAEAAAAAAAEAAAAAABAgAAAAAAHAAAAAACHAAAAAACHAAAAAAAHAAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAEAAAAAAAEAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGwAAAAACAgAAAAAADwAAAAAADwAAAAAAAgAAAAAADgAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAADEQAAAAABEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAADDwAAAAAADwAAAAAADwAAAAAAAgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAEQAAAAAAEQAAAAACEQAAAAAAEQAAAAABEQAAAAADEQAAAAAAAgAAAAAADwAAAAAADwAAAAAAAgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAADEQAAAAABEQAAAAACEQAAAAAAEQAAAAACEQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAEQAAAAAAEQAAAAABEQAAAAACEQAAAAABEQAAAAABEQAAAAADDwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGQAAAAACGQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAACDAAAAAAAAgAAAAAADwAAAAAAAgAAAAAAEQAAAAAAEQAAAAAAEQAAAAACEQAAAAAAEQAAAAACEQAAAAABEQAAAAABEQAAAAACEQAAAAAAAgAAAAAAFQAAAAAAEQAAAAACEQAAAAACEQAAAAACEQAAAAADAgAAAAAAEQAAAAACEQAAAAACEQAAAAABEQAAAAABEQAAAAAAEQAAAAABEQAAAAABEQAAAAADEQAAAAADAgAAAAAAFQAAAAAA + tiles: BgAAAAADBgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAADFAAAAAAAFAAAAAACFAAAAAABFAAAAAADFAAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAACFAAAAAAABgAAAAACBgAAAAADAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAABFAAAAAAAFAAAAAADFAAAAAACFAAAAAACFAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAABHAAAAAADAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAABFAAAAAACFAAAAAACFAAAAAABFAAAAAABFAAAAAACAgAAAAAAHAAAAAADHAAAAAABHAAAAAAAHAAAAAAAAgAAAAAADwAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAABDAAAAAAADAAAAAADDAAAAAACAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAEAAAAAAAEAAAAAAAAgAAAAAAHAAAAAADDAAAAAACDAAAAAABDAAAAAABAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAACAgAAAAAAHAAAAAADDAAAAAAADAAAAAACDAAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAEAAAAAAAEAAAAAABAgAAAAAAHAAAAAACHAAAAAACHAAAAAAAHAAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAGgAAAAAAEAAAAAAAEAAAAAABAgAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAHAAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGwAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAADEQAAAAABEQAAAAAAEQAAAAAAEQAAAAAAEQAAAAADDwAAAAAADwAAAAAADwAAAAAAAgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAEQAAAAAAEQAAAAACEQAAAAAAEQAAAAABEQAAAAADEQAAAAAAAgAAAAAADwAAAAAADwAAAAAAAgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAADEQAAAAABEQAAAAACEQAAAAAAEQAAAAACEQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAEQAAAAAAEQAAAAABEQAAAAACEQAAAAABEQAAAAABEQAAAAADDwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGQAAAAACGQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAACDAAAAAAAAgAAAAAADwAAAAAAAgAAAAAAEQAAAAAAEQAAAAAAEQAAAAACEQAAAAAAEQAAAAACEQAAAAABEQAAAAABEQAAAAACEQAAAAAAAgAAAAAAFQAAAAAAEQAAAAACEQAAAAACEQAAAAACEQAAAAADAgAAAAAAEQAAAAACEQAAAAACEQAAAAABEQAAAAABEQAAAAAAEQAAAAABEQAAAAABEQAAAAADEQAAAAADAgAAAAAAFQAAAAAA version: 6 1,0: ind: 1,0 @@ -183,7 +185,7 @@ entities: version: 6 2,-1: ind: 2,-1 - tiles: FAAAAAAAAgAAAAAAFAAAAAABFAAAAAABAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAADFAAAAAAAFAAAAAABFAAAAAACFAAAAAACFAAAAAADFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAADAgAAAAAAFAAAAAACFAAAAAAAAgAAAAAAFAAAAAABFAAAAAADFAAAAAADFAAAAAACFAAAAAACFAAAAAAAFAAAAAADFAAAAAADFAAAAAAAFAAAAAADFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAADAgAAAAAAFAAAAAABFAAAAAAAFAAAAAACFAAAAAADKAAAAAACKAAAAAAAKAAAAAAAKAAAAAACKAAAAAAAIQAAAAAAIQAAAAAAFAAAAAADFAAAAAAAFAAAAAADFAAAAAABFAAAAAADFAAAAAABFAAAAAAAFAAAAAACFAAAAAADKAAAAAABKAAAAAAAKAAAAAABKAAAAAADKAAAAAACIQAAAAAAIQAAAAAAFAAAAAADFAAAAAACFAAAAAACFAAAAAABFAAAAAAAFAAAAAABFAAAAAADFAAAAAABFAAAAAADKAAAAAACKAAAAAACKAAAAAAAKAAAAAADKAAAAAADIQAAAAAAIQAAAAAAFAAAAAABFAAAAAADFAAAAAABFAAAAAAAFAAAAAADFAAAAAADFAAAAAACFAAAAAACFAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAFAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAACAgAAAAAAAgAAAAAAAgAAAAAADAAAAAABDAAAAAACDAAAAAADAgAAAAAAFAAAAAAAFAAAAAADFAAAAAABFAAAAAADAgAAAAAADAAAAAABDAAAAAABDAAAAAACDAAAAAACGwAAAAAAGwAAAAACAgAAAAAADAAAAAACDAAAAAAADAAAAAABAgAAAAAAFAAAAAADFAAAAAADFAAAAAACFAAAAAADAgAAAAAADAAAAAAADAAAAAACDAAAAAACHAAAAAACGwAAAAADGwAAAAACAgAAAAAAAgAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAFAAAAAAAFAAAAAADFAAAAAACFAAAAAABHAAAAAABDAAAAAACDAAAAAACDAAAAAAAHAAAAAAADAAAAAADDAAAAAACDAAAAAACDAAAAAACDAAAAAACDAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAABFAAAAAAAAgAAAAAAHAAAAAADHAAAAAADHAAAAAABHAAAAAAADAAAAAACDAAAAAABDAAAAAADDAAAAAADDAAAAAADDAAAAAADHAAAAAAADAAAAAACAgAAAAAAFAAAAAABFAAAAAADHAAAAAAADAAAAAAADAAAAAADDAAAAAADHAAAAAABDAAAAAADDAAAAAADDAAAAAADDAAAAAABDAAAAAABDAAAAAACAgAAAAAADAAAAAAAAgAAAAAAFAAAAAABFAAAAAAAAgAAAAAADAAAAAADDAAAAAADDAAAAAACHAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAACAgAAAAAAFAAAAAADFAAAAAADAgAAAAAADAAAAAAADAAAAAADDAAAAAAADAAAAAAAAgAAAAAAEQAAAAADEQAAAAABEQAAAAAAEQAAAAACAgAAAAAAEQAAAAADEQAAAAAAEQAAAAABEQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAACFAAAAAAAFAAAAAACEQAAAAAAAgAAAAAAEQAAAAADEQAAAAAAEQAAAAACEQAAAAACEQAAAAADEQAAAAACEQAAAAAAEQAAAAAAEQAAAAABEQAAAAACEQAAAAAAEQAAAAADEQAAAAABEQAAAAACEQAAAAAAEQAAAAABEQAAAAACEQAAAAABEQAAAAAA + tiles: FAAAAAAAAgAAAAAAFAAAAAABFAAAAAABAgAAAAAAFAAAAAAAFAAAAAAAFAAAAAADFAAAAAAAFAAAAAABFAAAAAACFAAAAAACFAAAAAADFAAAAAAAFAAAAAAAFAAAAAAAFAAAAAADAgAAAAAAFAAAAAACFAAAAAAAAgAAAAAAFAAAAAABFAAAAAADFAAAAAADFAAAAAACFAAAAAACFAAAAAAAFAAAAAADFAAAAAADFAAAAAAAFAAAAAADFAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAADAgAAAAAAFAAAAAABFAAAAAAAFAAAAAACFAAAAAADKAAAAAACKAAAAAAAKAAAAAAAKAAAAAACKAAAAAAAIQAAAAAAIQAAAAAAFAAAAAADFAAAAAAAFAAAAAADFAAAAAABFAAAAAADFAAAAAABFAAAAAAAFAAAAAACFAAAAAADKAAAAAABKAAAAAAAKAAAAAABKAAAAAADKAAAAAACIQAAAAAAIQAAAAAAFAAAAAADFAAAAAACFAAAAAACFAAAAAABFAAAAAAAFAAAAAABFAAAAAADFAAAAAABFAAAAAADKAAAAAACKAAAAAACKAAAAAAAKAAAAAADKAAAAAADIQAAAAAAIQAAAAAAFAAAAAABFAAAAAADFAAAAAABFAAAAAAAFAAAAAADFAAAAAADFAAAAAACFAAAAAACFAAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAIQAAAAAAIQAAAAAAFAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAACAgAAAAAAAgAAAAAAAgAAAAAADAAAAAABDAAAAAACDAAAAAADAgAAAAAAFAAAAAAAFAAAAAADFAAAAAABFAAAAAADAgAAAAAADAAAAAABDAAAAAABDAAAAAACDAAAAAACGwAAAAAAGwAAAAACAgAAAAAADAAAAAACDAAAAAAADAAAAAABAgAAAAAAFAAAAAADFAAAAAADFAAAAAACFAAAAAADAgAAAAAADAAAAAAADAAAAAACDAAAAAACHAAAAAACGwAAAAADGwAAAAACAgAAAAAAAgAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFAAAAAADFAAAAAACFAAAAAABHAAAAAABDAAAAAACDAAAAAACDAAAAAAAHAAAAAAADAAAAAADDAAAAAACDAAAAAACDAAAAAACDAAAAAACNgAAAAAADAAAAAAAAgAAAAAAAgAAAAAAFAAAAAABFAAAAAAAAgAAAAAAHAAAAAADHAAAAAADHAAAAAABHAAAAAAADAAAAAACDAAAAAABDAAAAAADDAAAAAADDAAAAAADDAAAAAADDAAAAAAADAAAAAACAgAAAAAAFAAAAAABFAAAAAADHAAAAAAADAAAAAAADAAAAAADDAAAAAADHAAAAAABDAAAAAADDAAAAAADDAAAAAADDAAAAAABDAAAAAABNgAAAAAADAAAAAAADAAAAAAAAgAAAAAAFAAAAAABFAAAAAAAAgAAAAAADAAAAAADDAAAAAADDAAAAAACHAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAAADAAAAAAAAgAAAAAAFAAAAAADFAAAAAADAgAAAAAADAAAAAAADAAAAAADDAAAAAAADAAAAAAAAgAAAAAAEQAAAAADEQAAAAABEQAAAAAAEQAAAAACAgAAAAAAEQAAAAADHAAAAAAAEQAAAAABEQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAACFAAAAAAAFAAAAAACEQAAAAAAAgAAAAAAEQAAAAADEQAAAAAAEQAAAAACEQAAAAACEQAAAAADEQAAAAACEQAAAAAAEQAAAAAAEQAAAAABEQAAAAACEQAAAAAAEQAAAAADEQAAAAABEQAAAAACEQAAAAAAEQAAAAABEQAAAAACEQAAAAABEQAAAAAA version: 6 2,0: ind: 2,0 @@ -191,7 +193,7 @@ entities: version: 6 2,1: ind: 2,1 - tiles: FAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAAgAAAAAADAAAAAACDAAAAAABDAAAAAADAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAACDAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAABHAAAAAACDAAAAAADDAAAAAAAAgAAAAAAAgAAAAAADAAAAAAADAAAAAACDAAAAAADAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAADHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAACAgAAAAAAAgAAAAAALAAAAAAADAAAAAACDAAAAAACAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAADHAAAAAACAgAAAAAAEgAAAAADEgAAAAABAgAAAAAAAgAAAAAADAAAAAACDAAAAAACDAAAAAADDwAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAADHAAAAAABAgAAAAAAEgAAAAACEgAAAAADAgAAAAAAAgAAAAAADAAAAAAADAAAAAABDAAAAAABAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAADAgAAAAAACwAAAAAACwAAAAAAAgAAAAAAAgAAAAAADAAAAAABDAAAAAAADAAAAAABAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAADDAAAAAAADAAAAAABAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAADgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAADgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAFQAAAAAAKwAAAAAAKwAAAAADKwAAAAACFQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAA + tiles: FAAAAAABAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAAgAAAAAADAAAAAACDAAAAAABDAAAAAADAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAACDAAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAABHAAAAAACDAAAAAADDAAAAAAAAgAAAAAAAgAAAAAADAAAAAAADAAAAAACDAAAAAADAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAADHAAAAAAAAgAAAAAAAgAAAAAAHAAAAAACAgAAAAAAAgAAAAAALAAAAAAADAAAAAACDAAAAAACAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAADHAAAAAACAgAAAAAAEgAAAAADEgAAAAABAgAAAAAAAgAAAAAADAAAAAACDAAAAAACDAAAAAADDwAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAADHAAAAAABAgAAAAAAEgAAAAACEgAAAAADAgAAAAAAAgAAAAAADAAAAAAADAAAAAABDAAAAAABAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAADAgAAAAAACwAAAAAACwAAAAAAAgAAAAAAAgAAAAAADAAAAAABDAAAAAAADAAAAAABAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAHAAAAAAAHAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADAAAAAADDAAAAAAADAAAAAABAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAADgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAFQAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAFQAAAAAAKwAAAAAAKwAAAAADKwAAAAACFQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAA version: 6 -3,-3: ind: -3,-3 @@ -243,7 +245,7 @@ entities: version: 6 1,2: ind: 1,2 - tiles: HQAAAAAAHQAAAAADEQAAAAAAEQAAAAABGQAAAAABEQAAAAADEQAAAAADHQAAAAAAHQAAAAAAHQAAAAADHQAAAAACHQAAAAADEQAAAAAAEQAAAAADAgAAAAAAFQAAAAAAEQAAAAAAEQAAAAAAEQAAAAADEQAAAAACGQAAAAABEQAAAAACEQAAAAACEQAAAAADEQAAAAACEQAAAAADEQAAAAADEQAAAAAAEQAAAAAAEQAAAAACAgAAAAAAFQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAABEQAAAAABEQAAAAACEQAAAAABEQAAAAABEQAAAAACEQAAAAADEQAAAAAAEQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGQAAAAAAAgAAAAAAGQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFQAAAAAAAgAAAAAAEAAAAAAAHQAAAAAAEAAAAAAAAgAAAAAAEQAAAAAAEQAAAAACEQAAAAACEQAAAAADEQAAAAAAEQAAAAADEQAAAAACEQAAAAACEQAAAAABAgAAAAAAKwAAAAAAAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAgAAAAAAEQAAAAAAEQAAAAABEQAAAAAAEQAAAAABEQAAAAAAEQAAAAABEQAAAAADEQAAAAABEQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGQAAAAAAAgAAAAAAAgAAAAAAEQAAAAACEQAAAAABEQAAAAABEQAAAAACEQAAAAACEQAAAAACEQAAAAADEQAAAAABEQAAAAABAgAAAAAAAgAAAAAAEQAAAAAAEQAAAAAAEQAAAAACEQAAAAABAgAAAAAAEQAAAAACEQAAAAADEQAAAAABEQAAAAAAEQAAAAACEQAAAAABEQAAAAABEQAAAAADEQAAAAADAgAAAAAAAgAAAAAAFAAAAAABEQAAAAACEQAAAAADEQAAAAAAAgAAAAAAEQAAAAADEQAAAAACEQAAAAAAEQAAAAABEQAAAAAAEQAAAAADEQAAAAADEQAAAAACEQAAAAABAgAAAAAAKwAAAAADAgAAAAAAEQAAAAACEQAAAAABEQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGQAAAAAAAgAAAAAAGQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAAAEQAAAAADEQAAAAABEQAAAAADEQAAAAACGwAAAAAAGwAAAAACGwAAAAAAGwAAAAACGwAAAAADGwAAAAABGwAAAAAAGwAAAAABGwAAAAADGwAAAAACGwAAAAACFAAAAAAAEQAAAAACEQAAAAACEQAAAAABEQAAAAADGwAAAAACGwAAAAADGwAAAAAAGwAAAAACGwAAAAABGwAAAAABGwAAAAACGwAAAAAAGwAAAAABGwAAAAABGwAAAAABEQAAAAABEQAAAAABEQAAAAAAEQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAAAEQAAAAAAEQAAAAACEQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAEQAAAAAAEQAAAAACEQAAAAAAEQAAAAAAGgAAAAAAFAAAAAABFAAAAAAAFAAAAAACFAAAAAACFAAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAEQAAAAACEQAAAAADEQAAAAAAGgAAAAAAFAAAAAABFAAAAAAAFAAAAAAAFAAAAAABFAAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAA + tiles: HQAAAAAAHQAAAAADEQAAAAAAEQAAAAABGQAAAAABEQAAAAADEQAAAAADHQAAAAAAHQAAAAAAHQAAAAADHQAAAAACHQAAAAADEQAAAAAAEQAAAAADAgAAAAAAFQAAAAAAEQAAAAAAEQAAAAAAEQAAAAADEQAAAAACGQAAAAABEQAAAAACEQAAAAACEQAAAAADEQAAAAACEQAAAAADEQAAAAADEQAAAAAAEQAAAAAAEQAAAAACAgAAAAAAFQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAABEQAAAAABEQAAAAACEQAAAAABEQAAAAABEQAAAAACEQAAAAADEQAAAAAAEQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGQAAAAAAAgAAAAAAGQAAAAABAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAFQAAAAAAAgAAAAAAEAAAAAAAHQAAAAAAEAAAAAAAAgAAAAAANwAAAAAANwAAAAAAEQAAAAAAEQAAAAADEQAAAAAAEQAAAAADEQAAAAACEQAAAAACEQAAAAABAgAAAAAAKwAAAAAAAgAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAgAAAAAANwAAAAAANwAAAAAAEQAAAAAAEQAAAAABEQAAAAAAEQAAAAABEQAAAAADEQAAAAABEQAAAAACAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGQAAAAAAAgAAAAAAAgAAAAAANwAAAAAANwAAAAAAEQAAAAAAEQAAAAACEQAAAAACEQAAAAACEQAAAAADEQAAAAABEQAAAAABAgAAAAAAAgAAAAAAEQAAAAAAEQAAAAAAEQAAAAACEQAAAAABAgAAAAAANwAAAAAANwAAAAAAEQAAAAAAEQAAAAAAEQAAAAACEQAAAAABEQAAAAABEQAAAAADEQAAAAADAgAAAAAAAgAAAAAAFAAAAAABEQAAAAACEQAAAAADEQAAAAAAAgAAAAAANwAAAAAANwAAAAAAEQAAAAAAEQAAAAABEQAAAAAAEQAAAAADEQAAAAADEQAAAAACEQAAAAABAgAAAAAAKwAAAAADAgAAAAAAEQAAAAACEQAAAAABEQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAGQAAAAAAAgAAAAAAGQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAAAEQAAAAADEQAAAAABEQAAAAADEQAAAAACGwAAAAAAGwAAAAACGwAAAAAAGwAAAAACGwAAAAADGwAAAAABGwAAAAAAGwAAAAABGwAAAAADGwAAAAACGwAAAAACFAAAAAAAEQAAAAACEQAAAAACEQAAAAABEQAAAAADGwAAAAACGwAAAAADGwAAAAAAGwAAAAACGwAAAAABGwAAAAABGwAAAAACGwAAAAAAGwAAAAABGwAAAAABGwAAAAABEQAAAAABEQAAAAABEQAAAAAAEQAAAAADAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAEQAAAAAAEQAAAAAAEQAAAAACEQAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAEQAAAAAAEQAAAAACEQAAAAAAEQAAAAAAGgAAAAAAFAAAAAABFAAAAAAAFAAAAAACFAAAAAACFAAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAEQAAAAACEQAAAAADEQAAAAAAGgAAAAAAFAAAAAABFAAAAAAAFAAAAAAAFAAAAAABFAAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAADwAAAAAA version: 6 0,2: ind: 0,2 @@ -263,7 +265,7 @@ entities: version: 6 3,-3: ind: 3,-3 - tiles: DgAAAAAADgAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAKgAAAAAAKgAAAAACKgAAAAAAKgAAAAAAKgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAHKgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAgAAAAAAKgAAAAAAKgAAAAALKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAABKgAAAAAAKgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAADKgAAAAAAKgAAAAABKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAADgAAAAAADgAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAGKgAAAAAAKgAAAAAGKgAAAAAAKgAAAAACKgAAAAAAKgAAAAAAKgAAAAAKKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAMKgAAAAAAFAAAAAAAAgAAAAAAFAAAAAABFAAAAAABFAAAAAABFAAAAAACFAAAAAAAFAAAAAABFAAAAAABFAAAAAACFAAAAAAAAgAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAFAAAAAACFAAAAAABFAAAAAACFAAAAAAAFAAAAAABFAAAAAACFAAAAAAAFAAAAAABFAAAAAADFAAAAAACFAAAAAADFAAAAAABAgAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAFAAAAAABFAAAAAACFAAAAAAAFAAAAAABFAAAAAACFAAAAAABFAAAAAAAFAAAAAADFAAAAAACFAAAAAAAFAAAAAACFAAAAAACFAAAAAADAgAAAAAAKgAAAAAAKgAAAAAAFAAAAAABAgAAAAAAFAAAAAADFAAAAAABFAAAAAAAFAAAAAADFAAAAAACFAAAAAAAFAAAAAABFAAAAAADFAAAAAACFAAAAAACFAAAAAAAAgAAAAAAAgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAA + tiles: DgAAAAAADgAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAAMQAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAKgAAAAAAKgAAAAACKgAAAAAAKgAAAAAAKgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAHKgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAgAAAAAAKgAAAAAAKgAAAAALKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAABKgAAAAAAKgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAADgAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAADKgAAAAAAKgAAAAABKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAADgAAAAAADgAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAGKgAAAAAAKgAAAAAGKgAAAAAAKgAAAAACKgAAAAAAKgAAAAAAKgAAAAAKKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAKgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAKgAAAAAMKgAAAAAAFAAAAAAAFAAAAAAAFAAAAAABFAAAAAABFAAAAAABFAAAAAACFAAAAAAAFAAAAAABFAAAAAABFAAAAAACFAAAAAAAFAAAAAAAFAAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAFAAAAAACFAAAAAABFAAAAAACFAAAAAAAFAAAAAABFAAAAAACFAAAAAAAFAAAAAABFAAAAAADFAAAAAACFAAAAAADFAAAAAABFAAAAAAAAgAAAAAAKgAAAAAAKgAAAAAAFAAAAAABFAAAAAACFAAAAAAAFAAAAAABFAAAAAACFAAAAAABFAAAAAAAFAAAAAADFAAAAAACFAAAAAAAFAAAAAACFAAAAAACFAAAAAADAgAAAAAAKgAAAAAAKgAAAAAAFAAAAAABFAAAAAAAFAAAAAADFAAAAAABFAAAAAAAFAAAAAADFAAAAAACFAAAAAAAFAAAAAABFAAAAAADFAAAAAACFAAAAAACFAAAAAAAAgAAAAAAAgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAADwAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADwAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAAAgAAAAAADgAAAAAA version: 6 -1,2: ind: -1,2 @@ -524,8 +526,6 @@ entities: color: '#FFFFFFFF' id: Box decals: - 1732: 49,-37 - 1733: 49,-38 2339: -7,-51 2340: -5,-53 - node: @@ -744,11 +744,17 @@ entities: id: BrickTileDarkInnerNw decals: 884: -55,7 + 4183: 23,37 - node: color: '#FFFFFFFF' id: BrickTileDarkInnerSe decals: 3865: 23,8 + - node: + color: '#FFFFFFFF' + id: BrickTileDarkInnerSw + decals: + 4182: 23,39 - node: color: '#FFFFFFFF' id: BrickTileDarkLineE @@ -769,6 +775,10 @@ entities: 4062: 48,-7 4063: 48,-8 4064: 48,-9 + 4168: 22,36 + 4169: 22,37 + 4170: 22,38 + 4171: 22,39 - node: color: '#FFFFFFFF' id: BrickTileDarkLineN @@ -801,6 +811,7 @@ entities: 4067: 52,-7 4068: 52,-6 4069: 52,-6 + 4185: 23,38 - node: color: '#FFFFFFFF' id: BrickTileSteelCornerNe @@ -1359,7 +1370,6 @@ entities: 1394: 50,-6 1395: 48,-6 1418: 47,-8 - 1419: 46,-8 1438: 40,-15 1439: 40,-14 1440: 40,-13 @@ -1436,7 +1446,6 @@ entities: 1847: 23,34 1848: 25,34 1849: 25,40 - 1850: 23,40 1864: 22,31 2494: 3,49 2498: 19,43 @@ -1564,7 +1573,6 @@ entities: 1397: 48,-7 1398: 48,-8 1399: 47,-8 - 1400: 46,-8 1401: 46,-9 1420: 50,-6 1432: 52,-6 @@ -1815,6 +1823,7 @@ entities: 3454: 52,-7 3455: 52,-6 4058: 48,-13 + 4211: 48,-9 - node: color: '#EFB34196' id: BrickTileWhiteInnerSe @@ -1964,7 +1973,6 @@ entities: 1358: 33,-9 1421: 48,-7 1422: 48,-6 - 1423: 46,-8 1424: 46,-9 1453: 30,-13 1454: 32,-13 @@ -3128,6 +3136,13 @@ entities: id: Caution decals: 3544: 56.20735,16.017925 + - node: + angle: 4.71238898038469 rad + color: '#FFFFFFFF' + id: Caution + decals: + 4148: 48,-38 + 4149: 48,-37 - node: color: '#DE3A3A96' id: CheckerNESW @@ -4178,6 +4193,12 @@ entities: id: HalfTileOverlayGreyscale90 decals: 3741: 19,36 + - node: + angle: 1.5707963267948966 rad + color: '#FFFFFFFF' + id: LoadingArea + decals: + 4150: 51,-39 - node: color: '#EFB34196' id: MiniTileCornerOverlayNE @@ -5156,7 +5177,6 @@ entities: 1203: -2,31 1271: 47,-2 1272: 47,-3 - 1273: 46,-3 1274: 44,-1 1275: 42,-1 1276: 39,-1 @@ -5966,7 +5986,6 @@ entities: decals: 266: -30,-39 683: 37,-7 - 689: 44,-5 737: -4,38 738: -12,33 779: -16,32 @@ -5984,6 +6003,8 @@ entities: 3641: -16,13 3642: -30,-35 3782: 15,37 + 4193: 46,-4 + 4199: 43,-5 - node: color: '#FFFFFFFF' id: WoodTrimThinCornerNw @@ -6010,12 +6031,12 @@ entities: 2830: 39,23 3615: 7,-19 3781: 12,37 + 4194: 45,-4 - node: color: '#FFFFFFFF' id: WoodTrimThinCornerSe decals: 687: 37,-5 - 702: 44,-7 741: -12,31 742: -4,31 781: -16,27 @@ -6032,6 +6053,7 @@ entities: 3640: -16,15 3643: -30,-37 3728: -30,-41 + 4190: 46,-6 - node: color: '#FFFFFFFF' id: WoodTrimThinCornerSw @@ -6062,16 +6084,11 @@ entities: decals: 669: 38,-3 670: 38,-9 - - node: - color: '#FFFFFFFF' - id: WoodTrimThinEndN - decals: - 917: 46,-5 - node: color: '#FFFFFFFF' id: WoodTrimThinEndS decals: - 918: 46,-6 + 4208: 45,-7 - node: color: '#FFFFFFFF' id: WoodTrimThinInnerNe @@ -6079,6 +6096,7 @@ entities: 685: 37,-9 868: -53,10 3634: -16,12 + 4203: 43,-7 - node: color: '#FFFFFFFF' id: WoodTrimThinInnerNw @@ -6086,11 +6104,13 @@ entities: 869: -55,10 916: 38,15 3635: -11,12 + 4195: 45,-5 - node: color: '#FFFFFFFF' id: WoodTrimThinInnerSe decals: 688: 37,-3 + 4189: 44,-6 - node: color: '#FFFFFFFF' id: WoodTrimThinInnerSw @@ -6114,7 +6134,6 @@ entities: 280: -32.29232,-41.003887 684: 37,-8 686: 37,-4 - 703: 44,-6 752: -4,32 753: -4,33 754: -4,34 @@ -6144,6 +6163,8 @@ entities: 3776: 15,34 3777: 15,35 3778: 15,36 + 4196: 46,-5 + 4206: 43,-7 - node: color: '#FFFFFFFF' id: WoodTrimThinLineN @@ -6159,7 +6180,6 @@ entities: 698: 41,-5 699: 41,-5 700: 42,-5 - 701: 43,-5 759: -5,38 760: -6,38 761: -7,38 @@ -6194,6 +6214,7 @@ entities: 3629: -12,12 3783: 14,37 3784: 13,37 + 4207: 44,-7 - node: color: '#FFFFFFFF' id: WoodTrimThinLineS @@ -6238,6 +6259,7 @@ entities: 943: 16,-32 3618: 9,-21 3619: 8,-21 + 4201: 44,-5 - node: color: '#FFFFFFFF' id: WoodTrimThinLineW @@ -6274,6 +6296,7 @@ entities: 3632: -11,15 3779: 12,35 3780: 12,36 + 4200: 45,-5 - type: GridAtmosphere version: 2 data: @@ -6473,9 +6496,7 @@ entities: -5,4: 0: 61944 -4,5: - 1: 53244 - 2: 4096 - 3: 8192 + 1: 65532 -5,5: 1: 3264 0: 305 @@ -6535,7 +6556,7 @@ entities: -9,-2: 0: 43176 -8,-1: - 0: 65295 + 0: 65375 -9,-1: 0: 63528 -8,0: @@ -6660,7 +6681,6 @@ entities: 0: 65535 4,4: 0: 43699 - 4: 16384 4,5: 0: 61182 4,6: @@ -6696,9 +6716,9 @@ entities: 7,4: 0: 65486 7,5: - 0: 4095 + 0: 65535 7,6: - 0: 819 + 0: 816 7,7: 0: 47887 7,3: @@ -6708,7 +6728,7 @@ entities: 8,4: 0: 16257 8,5: - 0: 3003 + 0: 15291 8,7: 0: 65295 5,0: @@ -6793,7 +6813,7 @@ entities: 5,-8: 0: 51677 5,-7: - 0: 2047 + 0: 4095 5,-6: 0: 65527 5,-9: @@ -6802,7 +6822,7 @@ entities: 6,-8: 0: 43195 6,-7: - 0: 65466 + 0: 65450 6,-6: 0: 56782 6,-9: @@ -6848,7 +6868,7 @@ entities: 2,-8: 0: 51 2,-7: - 0: 4080 + 0: 20464 2,-6: 0: 28927 2,-9: @@ -6920,7 +6940,7 @@ entities: -5,-9: 0: 65535 -4,-12: - 0: 61661 + 0: 62685 -4,-13: 0: 56784 -5,-12: @@ -7062,8 +7082,7 @@ entities: 8,-9: 0: 65520 9,-8: - 0: 45167 - 5: 16 + 0: 45183 9,-6: 0: 65376 9,-5: @@ -7119,7 +7138,7 @@ entities: 10,-10: 0: 62207 10,-13: - 6: 9902 + 2: 9902 11,-12: 0: 4913 11,-11: @@ -7128,11 +7147,11 @@ entities: 0: 65262 11,-13: 0: 4352 - 6: 127 + 2: 127 12,-10: - 0: 65488 + 0: 65520 12,-9: - 0: 65293 + 0: 65295 9,-3: 0: 62719 9,-2: @@ -7142,8 +7161,7 @@ entities: 9,0: 0: 53759 10,-3: - 0: 55583 - 4: 1024 + 0: 56607 10,-2: 0: 65529 10,-1: @@ -7153,9 +7171,9 @@ entities: 11,-3: 0: 56783 11,-2: - 0: 22300 + 0: 30520 11,-1: - 0: 65252 + 0: 65094 11,0: 0: 62207 12,-4: @@ -7235,14 +7253,14 @@ entities: 12,6: 0: 48911 12,7: - 6: 65520 + 2: 65520 -12,-12: 0: 13119 -12,-13: 0: 65427 -13,-12: 0: 56524 - 7: 17 + 3: 17 -12,-11: 0: 60931 -13,-11: @@ -7340,70 +7358,70 @@ entities: -13,1: 0: 57296 -12,1: - 6: 36352 + 2: 36352 -12,3: - 6: 34956 + 2: 34956 -11,1: 0: 127 - 6: 30464 + 2: 30464 -12,2: - 6: 34952 + 2: 34952 -11,2: - 6: 255 - 8: 57344 + 2: 255 + 4: 57344 -12,4: - 6: 53192 + 2: 53192 -11,3: - 6: 61440 - 9: 224 + 2: 61440 + 5: 224 -10,1: 0: 40847 -10,2: - 6: 51 + 2: 51 0: 43656 -10,3: - 6: 12288 + 2: 12288 0: 35498 -10,4: 0: 43690 -13,4: - 6: 32630 + 2: 32630 -12,7: - 6: 52476 + 2: 52476 -13,7: - 6: 26615 + 2: 26615 -12,6: - 6: 51336 + 2: 51336 -12,5: - 6: 34952 + 2: 34952 -11,6: - 6: 61440 - 7: 224 + 2: 61440 + 3: 224 -11,7: - 6: 65535 + 2: 65535 -12,8: - 6: 34952 + 2: 34952 -11,4: - 10: 224 - 7: 57344 + 6: 224 + 3: 57344 -11,5: - 7: 57568 + 3: 57568 -11,8: - 6: 65535 + 2: 65535 -10,6: - 6: 12288 + 2: 12288 0: 35498 -10,7: - 6: 13107 + 2: 13107 0: 34952 -10,5: 0: 43690 -10,8: - 6: 62259 + 2: 62259 0: 136 -9,8: 0: 52479 - 6: 4096 + 2: 4096 0,-16: 0: 65528 -1,-16: @@ -7423,28 +7441,27 @@ entities: 1,-15: 0: 52481 1,-14: - 0: 55773 - 4: 1024 + 0: 56797 1,-17: 0: 4371 2,-15: 0: 65280 - 6: 3 + 2: 3 2,-14: 0: 65535 2,-16: - 6: 27776 + 2: 27776 3,-16: - 6: 57375 + 2: 57375 3,-15: 0: 30464 - 6: 11 + 2: 11 3,-14: 0: 30583 4,-16: - 6: 4883 + 2: 4883 4,-14: - 6: 2304 + 2: 2304 -4,-15: 0: 65102 -4,-14: @@ -7482,25 +7499,25 @@ entities: -9,-13: 0: 4095 -7,-15: - 7: 61184 + 3: 61184 -7,-14: 0: 32752 -6,-15: - 7: 256 + 3: 256 0: 32768 -6,-14: 0: 65528 -12,-16: - 6: 4880 + 2: 4880 -13,-16: - 6: 65520 + 2: 65520 -12,-15: 0: 53128 -12,-14: 0: 30487 -13,-14: 0: 52232 - 6: 23 + 2: 23 -11,-16: 0: 4352 -11,-15: @@ -7518,32 +7535,32 @@ entities: -10,-16: 0: 8704 -10,-17: - 7: 49152 + 3: 49152 -16,-7: - 6: 52416 + 2: 52416 -16,-6: - 6: 3276 + 2: 3276 0: 32768 -16,-5: 0: 35852 -16,-4: - 6: 52428 + 2: 52428 -15,-7: - 6: 4368 + 2: 4368 0: 3276 -15,-6: - 6: 273 + 2: 273 0: 52428 -15,-5: 0: 53199 -15,-4: - 6: 4369 + 2: 4369 0: 52420 -15,-8: 0: 52416 -15,-9: 0: 34952 - 7: 256 + 3: 256 -14,-8: 0: 49080 -14,-7: @@ -7563,31 +7580,31 @@ entities: -13,-7: 0: 26214 -16,-12: - 7: 32 + 3: 32 -16,-11: - 7: 32768 + 3: 32768 -16,-10: - 7: 8 + 3: 8 -15,-11: - 7: 13036 + 3: 13036 0: 32768 -15,-10: - 7: 307 + 3: 307 0: 34952 -15,-12: - 7: 51336 + 3: 51336 -14,-12: - 7: 4607 + 3: 4607 0: 49152 -14,-11: - 7: 17 + 3: 17 0: 61644 -14,-10: 0: 65535 -14,-13: - 7: 59392 + 3: 59392 -13,-13: - 7: 4352 + 3: 4352 0: 1604 8,9: 0: 65535 @@ -7619,25 +7636,25 @@ entities: 0: 275 10,12: 0: 305 - 6: 3276 + 2: 3276 11,9: 0: 4469 - 6: 49152 + 2: 49152 11,10: 0: 273 - 6: 52428 + 2: 52428 11,11: - 6: 61166 + 2: 61166 11,12: - 6: 53247 + 2: 53247 12,8: - 6: 13175 + 2: 13175 12,9: - 6: 13107 + 2: 13107 12,10: - 6: 63923 + 2: 63923 12,11: - 6: 61443 + 2: 61443 4,9: 0: 58606 3,9: @@ -7660,7 +7677,7 @@ entities: 0: 60928 5,12: 0: 238 - 6: 49152 + 2: 49152 6,9: 0: 65535 6,10: @@ -7739,10 +7756,10 @@ entities: 0: 48059 16,0: 0: 1793 - 6: 4 + 2: 4 16,1: 0: 7 - 6: 1024 + 2: 1024 13,-4: 0: 26471 13,-3: @@ -7761,22 +7778,22 @@ entities: 0: 61098 15,-4: 0: 4113 - 6: 34952 + 2: 34952 15,-3: 0: 4369 - 6: 34952 + 2: 34952 15,-2: 0: 16177 - 6: 8 + 2: 8 15,-5: 0: 4353 - 6: 34952 + 2: 34952 16,-2: 0: 1792 - 6: 4 + 2: 4 16,-1: 0: 4359 - 6: 17408 + 2: 17408 13,-8: 0: 15 13,-6: @@ -7790,49 +7807,49 @@ entities: 14,-9: 0: 36623 15,-8: - 7: 16 + 3: 16 15,-6: - 7: 16 + 3: 16 0: 4096 - 6: 32768 + 2: 32768 15,-9: 0: 4353 16,-5: - 6: 304 + 2: 304 12,-11: - 7: 49156 + 3: 32772 12,-12: - 6: 12 + 2: 12 12,-13: - 6: 52303 + 2: 52303 13,-12: - 6: 15 - 7: 16384 + 2: 15 + 3: 16384 13,-11: - 7: 65228 + 3: 65228 13,-10: 0: 65520 13,-13: - 6: 65295 + 2: 65295 14,-12: - 6: 15 + 2: 15 14,-11: - 7: 65521 + 3: 65521 14,-10: - 0: 65392 + 0: 65520 14,-13: - 6: 65295 + 2: 65295 15,-12: - 6: 1 + 2: 1 15,-11: - 7: 4112 + 3: 28688 15,-10: - 7: 52451 - 0: 4096 + 0: 4368 + 3: 52420 15,-13: - 6: 4511 + 2: 4511 16,-10: - 7: 19 + 3: 19 -4,9: 0: 7421 -5,9: @@ -7847,13 +7864,13 @@ entities: 0: 32767 -4,12: 0: 34945 - 7: 13072 + 3: 13072 -3,9: 0: 4095 -3,10: 0: 65535 -3,11: - 7: 61408 + 3: 61408 -2,9: 0: 4095 -2,10: @@ -7866,23 +7883,23 @@ entities: 0: 61678 -9,9: 0: 52430 - 6: 4369 + 2: 4369 -8,10: 0: 65535 -9,10: 0: 52428 -8,11: - 6: 43808 + 2: 43808 -9,11: - 6: 20224 + 2: 20224 -8,12: - 6: 43690 + 2: 43690 -7,9: 0: 45311 -7,10: 0: 49087 -7,11: - 6: 768 + 2: 768 0: 34952 -6,9: 0: 61661 @@ -7892,38 +7909,38 @@ entities: 0: 65535 -7,12: 0: 34952 - 6: 12322 + 2: 12322 -6,12: 0: 65535 -5,12: 0: 13111 - 7: 34816 + 3: 34816 -12,9: - 6: 65497 + 2: 65497 -13,9: - 6: 8 + 2: 8 -12,10: - 6: 52428 + 2: 52428 -11,9: - 6: 4607 - 7: 49152 + 2: 4607 + 3: 49152 -11,10: - 6: 33041 - 7: 204 + 2: 33041 + 3: 204 -12,11: - 6: 136 + 2: 136 -11,11: - 6: 248 + 2: 248 -10,9: - 6: 52479 - 7: 4096 + 2: 52479 + 3: 4096 -10,10: - 7: 17 - 6: 34952 + 3: 17 + 2: 34952 -10,11: - 6: 2296 + 2: 2296 -9,12: - 6: 17476 + 2: 17476 8,-15: 0: 65535 7,-15: @@ -7937,48 +7954,48 @@ entities: 9,-14: 0: 4403 10,-16: - 6: 3584 + 2: 3584 11,-16: - 6: 7936 + 2: 7936 10,-14: - 6: 34816 + 2: 34816 11,-14: - 6: 29489 + 2: 29489 11,-15: - 6: 4369 + 2: 4369 12,-16: - 6: 3840 + 2: 3840 4,-17: - 6: 4096 + 2: 4096 5,-14: - 6: 1024 + 2: 1024 6,-14: - 6: 512 + 2: 512 -8,13: - 6: 29666 + 2: 29666 -9,13: - 6: 3140 + 2: 3140 -8,14: - 6: 15 + 2: 15 -7,13: - 6: 32816 + 2: 32816 0: 1032 -7,14: - 6: 15 + 2: 15 -6,13: 0: 255 -6,14: - 6: 49 + 2: 49 -5,13: 0: 51 - 7: 51208 + 3: 51208 -5,14: - 7: 264 + 3: 264 -4,13: - 7: 29443 + 3: 29443 0: 136 -4,14: - 7: 3 + 3: 3 -3,12: 0: 65520 -3,13: @@ -7997,176 +8014,176 @@ entities: 0: 41634 1,14: 0: 8710 - 6: 34952 + 2: 34952 1,15: 0: 8226 - 6: 34952 + 2: 34952 1,16: 0: 8738 - 6: 34952 + 2: 34952 2,13: 0: 4280 2,14: - 6: 49023 + 2: 49023 2,15: - 6: 44974 + 2: 44974 2,16: - 6: 32702 + 2: 32702 3,13: 0: 255 3,14: - 6: 44847 + 2: 44847 3,15: - 6: 44463 + 2: 44463 0: 512 3,16: - 6: 12207 + 2: 12207 4,14: - 6: 61439 + 2: 61439 4,15: - 6: 44971 + 2: 44971 4,13: 0: 49376 4,16: - 6: 65515 + 2: 65515 5,15: 0: 8243 - 6: 1228 + 2: 1228 5,13: 0: 8738 - 7: 136 + 3: 136 5,14: 0: 546 - 6: 16384 + 2: 16384 5,16: 0: 8738 6,15: - 6: 255 + 2: 255 6,13: 0: 1262 7,13: 0: 1279 7,15: - 6: 255 + 2: 255 8,15: - 6: 255 + 2: 255 9,15: - 6: 255 + 2: 255 10,15: - 6: 55 + 2: 55 10,14: - 6: 65224 + 2: 65224 11,14: - 6: 311 + 2: 311 11,13: - 6: 65228 + 2: 65228 12,12: - 6: 65535 + 2: 65535 13,10: - 6: 17 + 2: 17 13,9: - 6: 13028 + 2: 13028 13,8: - 6: 19652 + 2: 19652 13,7: - 6: 20476 + 2: 20476 14,9: - 6: 248 + 2: 248 14,8: - 6: 52428 + 2: 52428 14,7: - 6: 51711 + 2: 51711 15,8: - 6: 56797 + 2: 56797 15,9: - 6: 248 + 2: 248 15,7: - 6: 55539 + 2: 55539 16,8: - 6: 56797 + 2: 56797 16,9: - 6: 248 + 2: 248 13,5: 0: 1911 13,6: 0: 4879 - 6: 52224 + 2: 52224 14,5: 0: 7633 14,6: 0: 15 - 6: 13056 + 2: 13056 15,5: 0: 35768 15,6: 0: 15 - 6: 13824 + 2: 13824 16,7: - 6: 55544 + 2: 55544 13,12: - 6: 4095 + 2: 4095 14,12: - 6: 4095 + 2: 4095 15,12: - 6: 4095 + 2: 4095 16,12: - 6: 883 + 2: 883 0,18: - 6: 49160 + 2: 49160 0,17: - 6: 34816 + 2: 34816 1,17: - 6: 24856 + 2: 24856 0: 3106 1,18: - 6: 64035 + 2: 64035 1,19: - 6: 200 + 2: 200 2,17: - 6: 57359 + 2: 57359 0: 1792 2,18: - 6: 4238 + 2: 4238 2,19: - 6: 240 + 2: 240 3,17: - 6: 61455 + 2: 61455 0: 1792 3,18: - 6: 255 + 2: 255 3,19: - 6: 240 + 2: 240 4,17: - 6: 12303 + 2: 12303 0: 3840 4,18: - 6: 51203 + 2: 51203 4,19: - 6: 248 + 2: 248 5,17: 0: 290 - 6: 48192 + 2: 48192 5,18: - 6: 61998 + 2: 61998 5,19: - 6: 16 + 2: 16 6,17: - 6: 18244 + 2: 18244 6,18: - 6: 4164 + 2: 4164 6,16: - 6: 16384 + 2: 16384 -15,0: - 6: 1 + 2: 1 0: 52428 -15,1: - 6: 4401 + 2: 4401 0: 34944 -15,2: - 6: 4369 + 2: 4369 0: 2176 -15,3: - 6: 34959 + 2: 34959 -15,-1: 0: 52732 -14,0: @@ -8176,49 +8193,49 @@ entities: -14,2: 0: 61439 -14,3: - 6: 61440 + 2: 61440 0: 14 -14,-1: 0: 65535 -13,2: 0: 817 - 6: 128 + 2: 128 -13,3: - 6: 12834 + 2: 12834 -13,5: - 6: 8742 + 2: 8742 -13,6: - 6: 25122 + 2: 25122 -13,8: - 6: 50722 + 2: 50722 -16,-16: - 6: 30583 + 2: 30583 -16,-17: - 6: 29187 + 2: 29187 -16,-15: - 6: 29426 + 2: 29426 -17,-15: - 6: 29426 + 2: 29426 -16,-14: - 6: 30583 + 2: 30583 -16,-13: - 6: 2 + 2: 2 -15,-15: - 6: 240 + 2: 240 -15,-16: - 6: 65520 + 2: 65520 -15,-13: - 7: 64 + 3: 64 -14,-16: - 6: 24404 + 2: 24404 -14,-15: - 6: 52980 + 2: 52980 -14,-17: - 6: 24404 + 2: 24404 -13,-15: - 6: 29456 + 2: 29456 -14,-14: - 6: 8 + 2: 8 0,-20: 0: 34952 0,-19: @@ -8252,14 +8269,14 @@ entities: -2,-18: 0: 4096 -16,-3: - 6: 17612 + 2: 17612 -16,-2: - 6: 4 + 2: 4 0: 51200 -16,-1: 0: 2240 -15,-3: - 6: 1 + 2: 1 0: 56780 -15,-2: 0: 64973 @@ -8268,131 +8285,131 @@ entities: -14,-2: 0: 65535 16,4: - 6: 25188 + 2: 25188 16,5: - 6: 58914 + 2: 58914 16,6: - 6: 34946 + 2: 34946 16,3: - 6: 18018 + 2: 18018 17,5: - 6: 61440 + 2: 61440 17,6: - 6: 65520 + 2: 65520 17,7: - 6: 55536 + 2: 55536 17,8: - 6: 56797 + 2: 56797 18,5: - 6: 61440 + 2: 61440 18,6: - 6: 65520 + 2: 65520 18,7: - 6: 55536 + 2: 55536 18,8: - 6: 56797 + 2: 56797 19,5: - 6: 61440 + 2: 61440 19,6: - 6: 48056 + 2: 48056 19,7: - 6: 39162 + 2: 39162 19,8: - 6: 39321 + 2: 39321 20,7: - 6: 16 + 2: 16 16,2: - 6: 8192 + 2: 8192 -12,-19: - 6: 61440 + 2: 61440 -13,-19: - 6: 61440 + 2: 61440 -12,-18: - 6: 4880 + 2: 4880 -13,-18: - 6: 65520 + 2: 65520 -12,-17: - 6: 4880 + 2: 4880 -13,-17: - 6: 65520 + 2: 65520 -11,-19: - 6: 61440 + 2: 61440 -10,-19: - 6: 4096 + 2: 4096 -10,-18: - 7: 4 + 3: 4 -18,-12: - 6: 68 + 2: 68 -18,-13: - 6: 17476 + 2: 17476 -18,-15: - 6: 17636 + 2: 17636 -18,-16: - 6: 17476 + 2: 17476 -18,-17: - 6: 17484 + 2: 17484 -18,-14: - 6: 17476 + 2: 17476 -17,-16: - 6: 30583 + 2: 30583 -17,-17: - 6: 29199 + 2: 29199 -17,-14: - 6: 30583 + 2: 30583 -17,-13: - 6: 2 + 2: 2 16,-12: - 6: 546 + 2: 546 16,-13: - 6: 8743 + 2: 8743 -16,-19: - 6: 57344 + 2: 57344 -16,-18: - 6: 10786 + 2: 10786 -15,-19: - 6: 61440 + 2: 61440 -15,-18: - 6: 65520 + 2: 65520 -15,-17: - 6: 65520 + 2: 65520 -14,-19: - 6: 62464 + 2: 62464 -14,-18: - 6: 24404 + 2: 24404 12,-15: - 6: 30496 + 2: 30496 12,-14: - 6: 10103 + 2: 10103 13,-16: - 6: 3840 + 2: 3840 13,-15: - 6: 30496 + 2: 30496 13,-14: - 6: 10103 + 2: 10103 14,-16: - 6: 3840 + 2: 3840 14,-15: - 6: 30496 + 2: 30496 14,-14: - 6: 10103 + 2: 10103 15,-16: - 6: 3840 + 2: 3840 15,-15: - 6: 30496 + 2: 30496 15,-14: - 6: 10103 + 2: 10103 16,-16: - 6: 8960 + 2: 8960 16,-15: - 6: 8738 + 2: 8738 16,-14: - 6: 8738 + 2: 8738 17,9: - 6: 248 + 2: 248 18,9: - 6: 248 + 2: 248 19,9: - 6: 248 + 2: 248 uniqueMixes: - volume: 2500 temperature: 293.15 @@ -8424,66 +8441,6 @@ entities: - 0 - 0 - 0 - - volume: 2500 - temperature: 235 - moles: - - 26.653654 - - 100.26852 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 235 - moles: - - 26.782158 - - 100.75194 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.14975 - moles: - - 20.078888 - - 75.53487 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - volume: 2500 - temperature: 293.15 - moles: - - 20.078888 - - 75.53487 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - volume: 2500 immutable: True moles: @@ -12580,7 +12537,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28923: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 8505 components: - type: Transform @@ -12591,7 +12549,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28923: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 8506 components: - type: Transform @@ -12602,7 +12561,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28922: - - DoorStatus: InputB + - - DoorStatus + - InputB - uid: 8507 components: - type: Transform @@ -12613,7 +12573,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28922: - - DoorStatus: InputA + - - DoorStatus + - InputA - proto: AirlockAtmosphericsLocked entities: - uid: 8143 @@ -12702,7 +12663,7 @@ entities: pos: 38.5,-9.5 parent: 2 - type: Door - secondsUntilStateChange: -87827.695 + secondsUntilStateChange: -96624.1 state: Opening - type: DeviceLinkSource lastSignals: @@ -13212,7 +13173,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13107: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13142 components: - type: Transform @@ -13223,7 +13185,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13106: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 15503 components: - type: Transform @@ -13235,7 +13198,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18882: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 18896 components: - type: Transform @@ -13247,7 +13211,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15562: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 29618 components: - type: Transform @@ -13258,7 +13223,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28756: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassAtmosphericsLocked entities: - uid: 8424 @@ -13272,7 +13238,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8431: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8431 components: - type: Transform @@ -13284,7 +13251,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8424: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 28436 components: - type: Transform @@ -13296,13 +13264,17 @@ entities: - type: DeviceLinkSource linkedPorts: 8507: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 8506: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 8505: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 8504: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassCargoLocked entities: - uid: 11331 @@ -13315,7 +13287,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11335: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11332 components: - type: Transform @@ -13326,7 +13299,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11336: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 29523 components: - type: Transform @@ -13338,10 +13312,13 @@ entities: - type: DeviceLinkSource linkedPorts: 827: - - DoorStatus: InputB + - - DoorStatus + - InputB 29543: - - DoorStatus: InputA - - DoorStatus: InputB + - - DoorStatus + - InputA + - - DoorStatus + - InputB - uid: 29528 components: - type: Transform @@ -13352,9 +13329,11 @@ entities: - type: DeviceLinkSource linkedPorts: 29536: - - DoorStatus: InputA + - - DoorStatus + - InputA 29539: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 29532 components: - type: Transform @@ -13366,9 +13345,11 @@ entities: - type: DeviceLinkSource linkedPorts: 29538: - - DoorStatus: InputA + - - DoorStatus + - InputA 29534: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 29541 components: - type: Transform @@ -13380,10 +13361,13 @@ entities: - type: DeviceLinkSource linkedPorts: 29542: - - DoorStatus: InputA - - DoorStatus: InputB + - - DoorStatus + - InputA + - - DoorStatus + - InputB 826: - - DoorStatus: InputB + - - DoorStatus + - InputB - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 234 @@ -13396,7 +13380,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3673: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 437 components: - type: Transform @@ -13407,7 +13392,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3673: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3673 components: - type: Transform @@ -13418,9 +13404,11 @@ entities: - type: DeviceLinkSource linkedPorts: 234: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 437: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3888 components: - type: Transform @@ -13431,7 +13419,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3902: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3902 components: - type: Transform @@ -13442,7 +13431,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3888: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6828 components: - type: Transform @@ -13451,7 +13441,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6829: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6829 components: - type: Transform @@ -13460,7 +13451,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6828: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7615 components: - type: Transform @@ -13470,7 +13462,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7623: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7621 components: - type: Transform @@ -13480,7 +13473,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7622: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7622 components: - type: Transform @@ -13490,7 +13484,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7621: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7623 components: - type: Transform @@ -13500,7 +13495,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7615: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7830 components: - type: Transform @@ -13512,7 +13508,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8048: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8048 components: - type: Transform @@ -13524,7 +13521,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7830: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8052 components: - type: Transform @@ -13536,7 +13534,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8053: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8053 components: - type: Transform @@ -13548,7 +13547,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8052: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13059 components: - type: Transform @@ -13566,7 +13566,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19974: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19974 components: - type: Transform @@ -13578,7 +13579,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19973: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 29371 components: - type: Transform @@ -13601,7 +13603,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3867: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3783 components: - type: Transform @@ -13611,7 +13614,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3778: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3867 components: - type: Transform @@ -13651,7 +13655,8 @@ entities: - type: DeviceLinkSource linkedPorts: 555: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 18430 components: - type: Transform @@ -13663,7 +13668,8 @@ entities: - type: DeviceLinkSource linkedPorts: 353: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 19233 components: - type: Transform @@ -13675,7 +13681,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24274: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 20084 components: - type: Transform @@ -13693,7 +13700,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22785: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 22785 components: - type: Transform @@ -13703,7 +13711,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22784: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24274 components: - type: Transform @@ -13715,7 +13724,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19233: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24599 components: - type: Transform @@ -13726,7 +13736,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24609: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24600 components: - type: Transform @@ -13738,9 +13749,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24601: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24606: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24606 components: - type: Transform @@ -13752,9 +13765,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24601: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24600: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24609 components: - type: Transform @@ -13765,7 +13780,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24599: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24630 components: - type: Transform @@ -13811,9 +13827,12 @@ entities: - type: DeviceLinkSource linkedPorts: 5762: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 11336 @@ -13825,9 +13844,12 @@ entities: - type: DeviceLinkSource linkedPorts: 5763: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - proto: AirlockExternalGlassShuttleEmergencyLocked @@ -13841,9 +13863,12 @@ entities: - type: DeviceLinkSource linkedPorts: 28961: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 13107 @@ -13855,9 +13880,12 @@ entities: - type: DeviceLinkSource linkedPorts: 28962: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 15562 @@ -13869,9 +13897,12 @@ entities: - type: DeviceLinkSource linkedPorts: 28964: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 18882 @@ -13883,9 +13914,12 @@ entities: - type: DeviceLinkSource linkedPorts: 28963: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - proto: AirlockExternalGlassShuttleEscape @@ -13918,9 +13952,12 @@ entities: - type: DeviceLinkSource linkedPorts: 28765: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - proto: AirlockExternalGlassShuttleLocked @@ -13934,9 +13971,12 @@ entities: - type: DeviceLinkSource linkedPorts: 5766: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 555 @@ -13948,9 +13988,12 @@ entities: - type: DeviceLinkSource linkedPorts: 6810: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - uid: 3806 @@ -13962,9 +14005,12 @@ entities: - type: DeviceLinkSource linkedPorts: 5765: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - uid: 9992 components: - type: Transform @@ -13974,9 +14020,12 @@ entities: - type: DeviceLinkSource linkedPorts: 7856: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - uid: 9993 components: - type: Transform @@ -13986,9 +14035,12 @@ entities: - type: DeviceLinkSource linkedPorts: 7854: - - DockStatus: InputA - - DockStatus: InputB - - DoorStatus: InputA + - - DockStatus + - InputA + - - DockStatus + - InputB + - - DoorStatus + - InputA - uid: 20082 components: - type: Transform @@ -13998,9 +14050,12 @@ entities: - type: DeviceLinkSource linkedPorts: 5764: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB - uid: 21015 components: - type: Transform @@ -14022,13 +14077,18 @@ entities: - type: DeviceLinkSource linkedPorts: 277: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB 29540: - - DockStatus: InputA + - - DockStatus + - InputA 29535: - - DockStatus: InputA + - - DockStatus + - InputA - type: DeviceLinkSink invokeCounter: 1 - uid: 29530 @@ -14040,13 +14100,18 @@ entities: - type: DeviceLinkSource linkedPorts: 10843: - - DoorStatus: InputA - - DockStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputA + - - DockStatus + - InputB 29533: - - DockStatus: InputA + - - DockStatus + - InputA 29537: - - DockStatus: InputA + - - DockStatus + - InputA - type: DeviceLinkSink invokeCounter: 1 - proto: AirlockExternalLocked @@ -14061,9 +14126,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24600: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24606: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24613 components: - type: Transform @@ -14074,9 +14141,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24622: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24623: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24614 components: - type: Transform @@ -14087,9 +14156,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24615: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24616: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24615 components: - type: Transform @@ -14100,9 +14171,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24614: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24616: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24616 components: - type: Transform @@ -14113,9 +14186,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24614: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24615: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24617 components: - type: Transform @@ -14126,9 +14201,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24618: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24619: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24618 components: - type: Transform @@ -14139,9 +14216,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24619: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24617: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24619 components: - type: Transform @@ -14152,9 +14231,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24618: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24617: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24620 components: - type: Transform @@ -14165,7 +14246,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24621: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24621 components: - type: Transform @@ -14176,7 +14258,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24620: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24622 components: - type: Transform @@ -14187,9 +14270,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24623: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24613: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24623 components: - type: Transform @@ -14200,9 +14285,11 @@ entities: - type: DeviceLinkSource linkedPorts: 24622: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 24613: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockFreezerLocked entities: - uid: 423 @@ -14543,24 +14630,18 @@ entities: parent: 2 - proto: AirlockHeadOfPersonnelLocked entities: - - uid: 4 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 45.5,-5.5 - parent: 2 - - uid: 5 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 46.5,-3.5 - parent: 2 - uid: 356 components: - type: Transform rot: -1.5707963267948966 rad pos: 43.5,-7.5 parent: 2 + - uid: 4568 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-2.5 + parent: 2 - proto: AirlockHeadOfSecurityGlassLocked entities: - uid: 4315 @@ -14633,7 +14714,7 @@ entities: pos: -22.5,26.5 parent: 2 - type: Door - secondsUntilStateChange: -109879.86 + secondsUntilStateChange: -118676.266 state: Opening - type: DeviceLinkSource lastSignals: @@ -15498,7 +15579,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -208708.47 + secondsUntilStateChange: -217504.88 state: Opening - uid: 6934 components: @@ -15510,7 +15591,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -208711.1 + secondsUntilStateChange: -217507.5 state: Opening - uid: 6935 components: @@ -15522,7 +15603,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -208709.95 + secondsUntilStateChange: -217506.36 state: Opening - uid: 6936 components: @@ -15533,7 +15614,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -208709.17 + secondsUntilStateChange: -217505.58 state: Opening - proto: AirlockTheatreLocked entities: @@ -17217,11 +17298,16 @@ entities: - type: Transform pos: 12.5,-18.5 parent: 2 - - uid: 3554 + - uid: 3049 components: - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-4.5 + pos: 43.5,-30.5 + parent: 2 + - uid: 3462 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 46.5,-6.5 parent: 2 - uid: 3610 components: @@ -17229,11 +17315,6 @@ entities: rot: -1.5707963267948966 rad pos: 37.5,2.5 parent: 2 - - uid: 4518 - components: - - type: Transform - pos: 43.5,-30.5 - parent: 2 - uid: 5517 components: - type: Transform @@ -17554,6 +17635,11 @@ entities: parent: 2 - proto: AsteroidRock entities: + - uid: 1405 + components: + - type: Transform + pos: 50.5,-40.5 + parent: 2 - uid: 2256 components: - type: Transform @@ -17984,21 +18070,11 @@ entities: - type: Transform pos: 61.5,-41.5 parent: 2 - - uid: 19220 - components: - - type: Transform - pos: 61.5,-40.5 - parent: 2 - uid: 19221 components: - type: Transform pos: 62.5,-41.5 parent: 2 - - uid: 19222 - components: - - type: Transform - pos: 62.5,-40.5 - parent: 2 - uid: 19223 components: - type: Transform @@ -18014,11 +18090,6 @@ entities: - type: Transform pos: 64.5,-40.5 parent: 2 - - uid: 19226 - components: - - type: Transform - pos: 62.5,-39.5 - parent: 2 - uid: 19227 components: - type: Transform @@ -36507,6 +36578,24 @@ entities: parent: 21002 - proto: AtmosFixBlockerMarker entities: + - uid: 1354 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 61.5,-40.5 + parent: 2 + - uid: 1368 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 62.5,-40.5 + parent: 2 + - uid: 1403 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 62.5,-39.5 + parent: 2 - uid: 2223 components: - type: Transform @@ -37082,11 +37171,6 @@ entities: - type: Transform pos: 50.5,-43.5 parent: 2 - - uid: 28783 - components: - - type: Transform - pos: 50.5,-40.5 - parent: 2 - uid: 28784 components: - type: Transform @@ -37227,21 +37311,6 @@ entities: - type: Transform pos: 54.5,-44.5 parent: 2 - - uid: 28812 - components: - - type: Transform - pos: 60.5,-39.5 - parent: 2 - - uid: 28813 - components: - - type: Transform - pos: 61.5,-39.5 - parent: 2 - - uid: 28814 - components: - - type: Transform - pos: 61.5,-38.5 - parent: 2 - uid: 28815 components: - type: Transform @@ -39124,7 +39193,7 @@ entities: - uid: 3492 components: - type: Transform - pos: 41.24941,-4.1411743 + pos: 42.21155,-4.3455667 parent: 2 - uid: 9379 components: @@ -39161,7 +39230,7 @@ entities: - uid: 3490 components: - type: Transform - pos: 41.259827,-4.432841 + pos: 42.22197,-4.5122337 parent: 2 - uid: 9380 components: @@ -39304,7 +39373,7 @@ entities: - uid: 3491 components: - type: Transform - pos: 41.270245,-4.2661743 + pos: 42.21155,-4.2518167 parent: 2 - uid: 4433 components: @@ -39776,6 +39845,11 @@ entities: parent: 2 - proto: CableApcExtension entities: + - uid: 5 + components: + - type: Transform + pos: 46.5,-5.5 + parent: 2 - uid: 485 components: - type: Transform @@ -41371,6 +41445,36 @@ entities: - type: Transform pos: -20.5,-5.5 parent: 2 + - uid: 2669 + components: + - type: Transform + pos: 43.5,-32.5 + parent: 2 + - uid: 2689 + components: + - type: Transform + pos: 33.5,23.5 + parent: 2 + - uid: 2690 + components: + - type: Transform + pos: 33.5,21.5 + parent: 2 + - uid: 2692 + components: + - type: Transform + pos: 33.5,20.5 + parent: 2 + - uid: 2693 + components: + - type: Transform + pos: 33.5,18.5 + parent: 2 + - uid: 2701 + components: + - type: Transform + pos: 33.5,19.5 + parent: 2 - uid: 2764 components: - type: Transform @@ -42686,26 +42790,26 @@ entities: - type: Transform pos: 43.5,8.5 parent: 2 + - uid: 3409 + components: + - type: Transform + pos: 46.5,-4.5 + parent: 2 + - uid: 3460 + components: + - type: Transform + pos: 43.5,-30.5 + parent: 2 - uid: 3514 components: - type: Transform pos: -15.5,21.5 parent: 2 - - uid: 3555 - components: - - type: Transform - pos: 45.5,-4.5 - parent: 2 - uid: 3556 components: - type: Transform pos: 45.5,-5.5 parent: 2 - - uid: 3557 - components: - - type: Transform - pos: 45.5,-5.5 - parent: 2 - uid: 3558 components: - type: Transform @@ -43096,25 +43200,20 @@ entities: - type: Transform pos: 40.5,20.5 parent: 2 + - uid: 4095 + components: + - type: Transform + pos: 33.5,22.5 + parent: 2 - uid: 4439 components: - type: Transform pos: 58.5,-4.5 parent: 2 - - uid: 4568 + - uid: 4548 components: - type: Transform - pos: 43.5,-30.5 - parent: 2 - - uid: 4569 - components: - - type: Transform - pos: 43.5,-31.5 - parent: 2 - - uid: 4570 - components: - - type: Transform - pos: 43.5,-32.5 + pos: 32.5,23.5 parent: 2 - uid: 4571 components: @@ -44006,30 +44105,10 @@ entities: - type: Transform pos: 33.5,18.5 parent: 2 - - uid: 4959 - components: - - type: Transform - pos: 33.5,19.5 - parent: 2 - - uid: 4960 - components: - - type: Transform - pos: 33.5,20.5 - parent: 2 - - uid: 4961 - components: - - type: Transform - pos: 32.5,20.5 - parent: 2 - uid: 4962 components: - type: Transform - pos: 31.5,20.5 - parent: 2 - - uid: 4963 - components: - - type: Transform - pos: 30.5,20.5 + pos: 30.5,23.5 parent: 2 - uid: 4964 components: @@ -53086,6 +53165,11 @@ entities: - type: Transform pos: 43.5,29.5 parent: 2 + - uid: 20763 + components: + - type: Transform + pos: 46.5,-6.5 + parent: 2 - uid: 20946 components: - type: Transform @@ -57686,6 +57770,76 @@ entities: - type: Transform pos: 25.5,-27.5 parent: 2 + - uid: 30260 + components: + - type: Transform + pos: 43.5,-31.5 + parent: 2 + - uid: 30266 + components: + - type: Transform + pos: 46.5,-3.5 + parent: 2 + - uid: 30274 + components: + - type: Transform + pos: 29.5,23.5 + parent: 2 + - uid: 30275 + components: + - type: Transform + pos: 28.5,23.5 + parent: 2 + - uid: 30276 + components: + - type: Transform + pos: 31.5,23.5 + parent: 2 + - uid: 30277 + components: + - type: Transform + pos: 28.5,22.5 + parent: 2 + - uid: 30278 + components: + - type: Transform + pos: 28.5,21.5 + parent: 2 + - uid: 30279 + components: + - type: Transform + pos: 28.5,20.5 + parent: 2 + - uid: 30280 + components: + - type: Transform + pos: 28.5,19.5 + parent: 2 + - uid: 30281 + components: + - type: Transform + pos: 28.5,18.5 + parent: 2 + - uid: 30282 + components: + - type: Transform + pos: 29.5,18.5 + parent: 2 + - uid: 30283 + components: + - type: Transform + pos: 30.5,18.5 + parent: 2 + - uid: 30284 + components: + - type: Transform + pos: 31.5,18.5 + parent: 2 + - uid: 30285 + components: + - type: Transform + pos: 32.5,18.5 + parent: 2 - proto: CableApcStack entities: - uid: 30075 @@ -60075,11 +60229,6 @@ entities: - type: Transform pos: 35.5,39.5 parent: 2 - - uid: 6450 - components: - - type: Transform - pos: 32.5,40.5 - parent: 2 - uid: 6451 components: - type: Transform @@ -65427,6 +65576,16 @@ entities: - type: Transform pos: 53.5,-17.5 parent: 2 + - uid: 2614 + components: + - type: Transform + pos: 43.5,-31.5 + parent: 2 + - uid: 2740 + components: + - type: Transform + pos: 42.5,-31.5 + parent: 2 - uid: 3299 components: - type: Transform @@ -65437,6 +65596,11 @@ entities: - type: Transform pos: -29.5,-0.5 parent: 2 + - uid: 3395 + components: + - type: Transform + pos: 43.5,-30.5 + parent: 2 - uid: 3653 components: - type: Transform @@ -65472,6 +65636,11 @@ entities: - type: Transform pos: 43.5,-17.5 parent: 2 + - uid: 4133 + components: + - type: Transform + pos: 46.5,-5.5 + parent: 2 - uid: 4154 components: - type: Transform @@ -65612,21 +65781,6 @@ entities: - type: Transform pos: 41.5,-31.5 parent: 2 - - uid: 4547 - components: - - type: Transform - pos: 42.5,-31.5 - parent: 2 - - uid: 4548 - components: - - type: Transform - pos: 43.5,-31.5 - parent: 2 - - uid: 4549 - components: - - type: Transform - pos: 43.5,-30.5 - parent: 2 - uid: 4550 components: - type: Transform @@ -68337,6 +68491,11 @@ entities: - type: Transform pos: 10.5,49.5 parent: 2 + - uid: 7721 + components: + - type: Transform + pos: 46.5,-6.5 + parent: 2 - uid: 8114 components: - type: Transform @@ -70047,11 +70206,6 @@ entities: - type: Transform pos: -40.5,5.5 parent: 2 - - uid: 18146 - components: - - type: Transform - pos: 45.5,-4.5 - parent: 2 - uid: 18147 components: - type: Transform @@ -72033,6 +72187,16 @@ entities: rot: 1.5707963267948966 rad pos: 42.5,-4.5 parent: 2 + - uid: 3555 + components: + - type: Transform + pos: 29.5,22.5 + parent: 2 + - uid: 4960 + components: + - type: Transform + pos: 30.5,22.5 + parent: 2 - uid: 5869 components: - type: Transform @@ -72063,6 +72227,16 @@ entities: - type: Transform pos: -19.5,-3.5 parent: 2 + - uid: 19220 + components: + - type: Transform + pos: 31.5,22.5 + parent: 2 + - uid: 30267 + components: + - type: Transform + pos: 32.5,22.5 + parent: 2 - proto: CarpetChapel entities: - uid: 773 @@ -77561,12 +77735,6 @@ entities: parent: 2 - proto: ChairFoldingSpawnFolded entities: - - uid: 6852 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -15.46788,36.60081 - parent: 2 - uid: 12425 components: - type: Transform @@ -77596,6 +77764,11 @@ entities: rot: 3.141592653589793 rad pos: 48.48059,9.701607 parent: 2 + - uid: 30298 + components: + - type: Transform + pos: -19.127499,34.762245 + parent: 2 - proto: ChairGreyscale entities: - uid: 342 @@ -77704,6 +77877,12 @@ entities: rot: 1.5707963267948966 rad pos: -3.5,-27.5 parent: 2 + - uid: 1349 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 43.594894,-32.38475 + parent: 2 - uid: 1638 components: - type: Transform @@ -77779,6 +77958,12 @@ entities: rot: 3.141592653589793 rad pos: 20.5,-39.5 parent: 2 + - uid: 4129 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 23.50942,39.78484 + parent: 2 - uid: 5398 components: - type: Transform @@ -77956,12 +78141,6 @@ entities: rot: 3.141592653589793 rad pos: 39.5,4.5 parent: 2 - - uid: 9956 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 14.5,-35.5 - parent: 2 - uid: 9957 components: - type: Transform @@ -77998,6 +78177,12 @@ entities: rot: 1.5707963267948966 rad pos: 30.5,-16.5 parent: 2 + - uid: 30259 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 14.49886,-34.42077 + parent: 2 - proto: ChairWood entities: - uid: 483 @@ -78482,7 +78667,7 @@ entities: - uid: 2691 components: - type: Transform - pos: 29.384224,21.543312 + pos: 29.371857,21.544085 parent: 2 - uid: 11465 components: @@ -78537,10 +78722,10 @@ entities: - type: Transform pos: 3.5,-39.5 parent: 2 - - uid: 12057 + - uid: 30265 components: - type: Transform - pos: 46.5,-7.5 + pos: 47.5,-7.5 parent: 2 - proto: ClosetChefFilled entities: @@ -78561,6 +78746,11 @@ entities: - type: Transform pos: -1.5,33.5 parent: 2 + - uid: 3459 + components: + - type: Transform + pos: -15.5,36.5 + parent: 2 - uid: 3478 components: - type: Transform @@ -78581,6 +78771,16 @@ entities: - type: Transform pos: 46.5,-31.5 parent: 2 + - uid: 4518 + components: + - type: Transform + pos: -10.5,-54.5 + parent: 2 + - uid: 4963 + components: + - type: Transform + pos: -19.5,18.5 + parent: 2 - uid: 5343 components: - type: Transform @@ -78626,11 +78826,6 @@ entities: - type: Transform pos: 62.5,-0.5 parent: 2 - - uid: 18917 - components: - - type: Transform - pos: -47.5,-43.5 - parent: 2 - uid: 18970 components: - type: Transform @@ -78736,8 +78931,58 @@ entities: - type: Transform pos: 47.5,9.5 parent: 2 + - uid: 30294 + components: + - type: Transform + pos: 44.5,19.5 + parent: 2 + - uid: 30295 + components: + - type: Transform + pos: 40.5,32.5 + parent: 2 + - uid: 30296 + components: + - type: Transform + pos: 40.5,42.5 + parent: 2 + - uid: 30299 + components: + - type: Transform + pos: -12.5,26.5 + parent: 2 + - uid: 30300 + components: + - type: Transform + pos: -50.5,-17.5 + parent: 2 + - uid: 30303 + components: + - type: Transform + pos: -49.5,-47.5 + parent: 2 + - uid: 30304 + components: + - type: Transform + pos: 47.5,-42.5 + parent: 2 + - uid: 30305 + components: + - type: Transform + pos: 25.5,-32.5 + parent: 2 + - uid: 30307 + components: + - type: Transform + pos: 28.5,-12.5 + parent: 2 - proto: ClosetEmergencyN2FilledRandom entities: + - uid: 9938 + components: + - type: Transform + pos: -50.5,-19.5 + parent: 2 - uid: 12052 components: - type: Transform @@ -78820,11 +79065,6 @@ entities: - type: Transform pos: -25.5,10.5 parent: 2 - - uid: 9951 - components: - - type: Transform - pos: 8.5,-46.5 - parent: 2 - uid: 9953 components: - type: Transform @@ -78915,6 +79155,26 @@ entities: - type: Transform pos: -1.5,32.5 parent: 2 + - uid: 30297 + components: + - type: Transform + pos: 40.5,41.5 + parent: 2 + - uid: 30301 + components: + - type: Transform + pos: -50.5,-18.5 + parent: 2 + - uid: 30306 + components: + - type: Transform + pos: 22.5,-32.5 + parent: 2 + - uid: 30308 + components: + - type: Transform + pos: 7.5,-46.5 + parent: 2 - proto: ClosetJanitorFilled entities: - uid: 3055 @@ -79859,6 +80119,20 @@ entities: - type: Physics canCollide: False - type: InsideEntityStorage +- proto: ClothingNeckHeadphones + entities: + - uid: 6722 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.484985,-35.679863 + parent: 2 + - uid: 30253 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.474567,-36.84653 + parent: 2 - proto: ClothingNeckStethoscope entities: - uid: 2097 @@ -80796,6 +81070,45 @@ entities: - type: Transform pos: -48.5,1.5 parent: 2 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 14224 + components: + - type: Transform + pos: 23.5,40.5 + parent: 2 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 4096 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -9.5,-33.5 + parent: 2 +- proto: ComputerCargoOrdersScience + entities: + - uid: 18917 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 13.5,-34.5 + parent: 2 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 4134 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 44.5,-32.5 + parent: 2 +- proto: ComputerCargoOrdersService + entities: + - uid: 3515 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 41.5,-6.5 + parent: 2 - proto: ComputerComms entities: - uid: 2388 @@ -80804,24 +81117,23 @@ entities: rot: 1.5707963267948966 rad pos: 21.5,7.5 parent: 2 -- proto: ComputerCrewMonitoring - entities: - - uid: 1349 + - uid: 4117 components: - type: Transform - rot: 3.141592653589793 rad - pos: -7.5,-34.5 + pos: 31.5,23.5 parent: 2 +- proto: ComputerCrewMonitoring + entities: - uid: 3046 components: - type: Transform pos: 20.5,9.5 parent: 2 - - uid: 3409 + - uid: 3522 components: - type: Transform rot: 3.141592653589793 rad - pos: 41.5,-6.5 + pos: 40.5,-6.5 parent: 2 - uid: 14688 components: @@ -80834,6 +81146,12 @@ entities: - type: Transform pos: 55.5,-9.5 parent: 2 + - uid: 30257 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,-33.5 + parent: 2 - proto: ComputerCriminalRecords entities: - uid: 12271 @@ -80872,6 +81190,19 @@ entities: rot: 3.141592653589793 rad pos: -26.5,-49.5 parent: 2 +- proto: ComputerFundingAllocation + entities: + - uid: 3557 + components: + - type: Transform + pos: 30.5,23.5 + parent: 2 + - uid: 4109 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 45.5,-6.5 + parent: 2 - proto: ComputerId entities: - uid: 2390 @@ -80880,11 +81211,10 @@ entities: rot: 1.5707963267948966 rad pos: 21.5,6.5 parent: 2 - - uid: 3395 + - uid: 12819 components: - type: Transform - rot: 3.141592653589793 rad - pos: 40.5,-6.5 + pos: 41.5,-4.5 parent: 2 - proto: ComputerMassMedia entities: @@ -80896,12 +81226,6 @@ entities: parent: 2 - proto: ComputerMedicalRecords entities: - - uid: 1348 - components: - - type: Transform - rot: 3.141592653589793 rad - pos: -6.5,-34.5 - parent: 2 - uid: 2045 components: - type: Transform @@ -80914,6 +81238,12 @@ entities: rot: 3.141592653589793 rad pos: 23.5,4.5 parent: 2 + - uid: 30256 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -7.5,-33.5 + parent: 2 - proto: ComputerPowerMonitoring entities: - uid: 2377 @@ -81161,6 +81491,12 @@ entities: rot: 3.141592653589793 rad pos: 36.5,12.5 parent: 2 + - uid: 4549 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -4.5,-34.5 + parent: 2 - uid: 5341 components: - type: Transform @@ -81185,12 +81521,6 @@ entities: rot: -1.5707963267948966 rad pos: 54.5,-21.5 parent: 2 - - uid: 9938 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -4.5,-33.5 - parent: 2 - uid: 11203 components: - type: Transform @@ -82587,6 +82917,8 @@ entities: - type: Transform pos: 42.5,-9.5 parent: 2 + - type: Lock + locked: False - type: EntityStorage air: volume: 200 @@ -82611,15 +82943,16 @@ entities: showEnts: False occludes: True ents: - - 17450 + - 1404 - 18218 - - 18548 - - 18693 - - 18920 - - 19023 - - 19529 - - 19533 - 19534 + - 19533 + - 19529 + - 19023 + - 18920 + - 18693 + - 18548 + - 17450 paper_label: !type:ContainerSlot showEnts: False occludes: True @@ -83539,6 +83872,11 @@ entities: - type: Transform pos: 13.5,-39.5 parent: 2 + - uid: 4102 + components: + - type: Transform + pos: 30.5,23.5 + parent: 2 - uid: 5636 components: - type: Transform @@ -83856,11 +84194,6 @@ entities: rot: 1.5707963267948966 rad pos: 28.5,6.5 parent: 2 - - uid: 17260 - components: - - type: Transform - pos: 30.5,22.5 - parent: 2 - uid: 17295 components: - type: Transform @@ -84467,6 +84800,12 @@ entities: rot: 3.141592653589793 rad pos: -15.5,-37.5 parent: 2 + - uid: 2702 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -48.5,-16.5 + parent: 2 - uid: 3097 components: - type: Transform @@ -84483,6 +84822,11 @@ entities: - type: Transform pos: -32.5,34.5 parent: 2 + - uid: 3554 + components: + - type: Transform + pos: 30.5,22.5 + parent: 2 - uid: 3718 components: - type: Transform @@ -91024,6 +91368,12 @@ entities: rot: 1.5707963267948966 rad pos: 11.5,-39.5 parent: 2 + - uid: 4959 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 29.5,23.5 + parent: 2 - uid: 7813 components: - type: Transform @@ -91289,12 +91639,6 @@ entities: rot: 1.5707963267948966 rad pos: 26.5,12.5 parent: 2 - - uid: 17263 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 29.5,22.5 - parent: 2 - uid: 17283 components: - type: Transform @@ -91526,11 +91870,6 @@ entities: - type: Transform pos: 28.5,5.5 parent: 2 - - uid: 3049 - components: - - type: Transform - pos: 29.5,22.5 - parent: 2 - uid: 3050 components: - type: Transform @@ -91556,6 +91895,11 @@ entities: - type: Transform pos: 11.5,-39.5 parent: 2 + - uid: 4101 + components: + - type: Transform + pos: 29.5,23.5 + parent: 2 - uid: 5180 components: - type: Transform @@ -91752,6 +92096,11 @@ entities: - type: Transform pos: 53.5,-13.5 parent: 2 + - uid: 30264 + components: + - type: Transform + pos: 38.5,15.5 + parent: 2 - proto: DonkpocketBoxSpawner entities: - uid: 1615 @@ -93116,6 +93465,11 @@ entities: rot: 1.5707963267948966 rad pos: 55.5,-5.5 parent: 2 + - uid: 20707 + components: + - type: Transform + pos: 33.5,23.5 + parent: 2 - uid: 23550 components: - type: Transform @@ -93295,11 +93649,6 @@ entities: rot: 1.5707963267948966 rad pos: 21.5,16.5 parent: 2 - - uid: 24048 - components: - - type: Transform - pos: 33.5,22.5 - parent: 2 - uid: 24049 components: - type: Transform @@ -94071,7 +94420,7 @@ entities: - type: MetaData name: medical fax machine - type: Transform - pos: -9.5,-34.5 + pos: -7.5,-34.5 parent: 2 - type: FaxMachine name: medical @@ -94190,6 +94539,14 @@ entities: - type: Transform pos: 32.5,20.5 parent: 2 +- proto: FenceMetalGate + entities: + - uid: 30252 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-38.5 + parent: 2 - proto: FenceWoodSmallGate entities: - uid: 28615 @@ -94224,27 +94581,6 @@ entities: occludes: True ents: - 1115 - - uid: 1403 - components: - - type: Transform - pos: -9.5,-33.5 - parent: 2 - - type: Storage - storedItems: - 1404: - position: 0,0 - _rotation: South - 1405: - position: 1,0 - _rotation: South - - type: ContainerContainer - containers: - storagebase: !type:Container - showEnts: False - occludes: True - ents: - - 1404 - - 1405 - uid: 2577 components: - type: Transform @@ -94266,10 +94602,10 @@ entities: ents: - 6938 - 6941 - - uid: 2669 + - uid: 3542 components: - type: Transform - pos: 28.5,18.5 + pos: -4.5,-33.5 parent: 2 - uid: 3609 components: @@ -94321,6 +94657,11 @@ entities: - type: Transform pos: 40.5,18.5 parent: 2 + - uid: 4097 + components: + - type: Transform + pos: 29.507704,22.5 + parent: 2 - uid: 5843 components: - type: Transform @@ -94355,15 +94696,10 @@ entities: parent: 2 - proto: filingCabinetRandom entities: - - uid: 2692 + - uid: 4569 components: - type: Transform - pos: 28.245878,22.5 - parent: 2 - - uid: 2693 - components: - - type: Transform - pos: 28.730253,22.5 + pos: 28.720076,23.5 parent: 2 - type: Storage storedItems: @@ -94377,6 +94713,11 @@ entities: occludes: True ents: - 10837 + - uid: 4570 + components: + - type: Transform + pos: 28.251326,23.5 + parent: 2 - uid: 19175 components: - type: Transform @@ -94425,6 +94766,16 @@ entities: ents: - 29262 - 15048 + - uid: 30287 + components: + - type: Transform + pos: 33.288647,23.5 + parent: 2 + - uid: 30288 + components: + - type: Transform + pos: 33.757397,23.5 + parent: 2 - proto: filingCabinetTall entities: - uid: 19177 @@ -96874,7 +97225,7 @@ entities: pos: -13.5,-1.5 parent: 2 - type: Door - secondsUntilStateChange: -200032.48 + secondsUntilStateChange: -208828.89 - type: DeviceNetwork deviceLists: - 18275 @@ -100326,6 +100677,15 @@ entities: rot: -1.5707963267948966 rad pos: 9.5,31.5 parent: 2 +- proto: FundingAllocationComputerCircuitboard + entities: + - uid: 1404 + components: + - type: Transform + parent: 3510 + - type: Physics + canCollide: False + - type: InsideEntityStorage - proto: GameMasterCircuitBoard entities: - uid: 29445 @@ -103917,6 +104277,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 4108 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 43.5,-6.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 4865 components: - type: Transform @@ -111324,13 +111692,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 14224 - components: - - type: Transform - pos: 43.5,-5.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 14225 components: - type: Transform @@ -125432,6 +125793,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' + - uid: 30262 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 44.5,-5.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - proto: GasPipeTJunction entities: - uid: 17 @@ -125529,6 +125898,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 4103 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 43.5,-5.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 4566 components: - type: Transform @@ -126041,14 +126418,6 @@ entities: parent: 2 - type: AtmosPipeColor color: '#990000FF' - - uid: 11968 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 43.5,-6.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 12297 components: - type: Transform @@ -129385,14 +129754,6 @@ entities: - 18258 - type: AtmosPipeColor color: '#0335FCFF' - - uid: 12821 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 44.5,-6.5 - parent: 2 - - type: AtmosPipeColor - color: '#0335FCFF' - uid: 13132 components: - type: Transform @@ -131261,6 +131622,14 @@ entities: parent: 2 - type: AtmosPipeColor color: '#0335FCFF' + - uid: 23549 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 45.5,-5.5 + parent: 2 + - type: AtmosPipeColor + color: '#0335FCFF' - uid: 23704 components: - type: Transform @@ -133703,10 +134072,10 @@ entities: color: '#FF1212FF' - proto: GlassBoxLaserFilled entities: - - uid: 2740 + - uid: 30286 components: - type: Transform - pos: 39.5,11.5 + pos: 32.5,23.5 parent: 2 - proto: GrassBattlemap entities: @@ -134817,24 +135186,6 @@ entities: rot: -1.5707963267948966 rad pos: 61.5,-37.5 parent: 2 - - uid: 4101 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 60.5,-37.5 - parent: 2 - - uid: 4102 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 60.5,-38.5 - parent: 2 - - uid: 4103 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 59.5,-38.5 - parent: 2 - uid: 4104 components: - type: Transform @@ -134898,20 +135249,14 @@ entities: - uid: 4126 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-39.5 + rot: 1.5707963267948966 rad + pos: 60.5,-39.5 parent: 2 - - uid: 4131 + - uid: 4128 components: - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-38.5 - parent: 2 - - uid: 4132 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-35.5 + rot: 1.5707963267948966 rad + pos: 61.5,-39.5 parent: 2 - uid: 4211 components: @@ -135397,6 +135742,12 @@ entities: rot: 1.5707963267948966 rad pos: 6.5,41.5 parent: 2 + - uid: 6721 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 61.5,-38.5 + parent: 2 - uid: 6847 components: - type: Transform @@ -142002,7 +142353,7 @@ entities: - uid: 3488 components: - type: Transform - pos: 41.696266,-4.611898 + pos: 42.71155,-4.5851502 parent: 2 - proto: HarmonicaInstrument entities: @@ -142894,7 +143245,7 @@ entities: pos: 36.5,-35.5 parent: 2 - type: Door - secondsUntilStateChange: -236864.28 + secondsUntilStateChange: -245660.69 state: Opening - uid: 5211 components: @@ -143941,7 +144292,8 @@ entities: - type: DeviceLinkSource linkedPorts: 683: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 23551 components: - type: MetaData @@ -143953,7 +144305,8 @@ entities: - type: DeviceLinkSource linkedPorts: 570: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 23556 components: - type: MetaData @@ -143965,7 +144318,8 @@ entities: - type: DeviceLinkSource linkedPorts: 684: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 23557 components: - type: MetaData @@ -143976,7 +144330,8 @@ entities: - type: DeviceLinkSource linkedPorts: 682: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 23558 components: - type: MetaData @@ -143987,7 +144342,8 @@ entities: - type: DeviceLinkSource linkedPorts: 681: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 23559 components: - type: MetaData @@ -143998,7 +144354,8 @@ entities: - type: DeviceLinkSource linkedPorts: 680: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - proto: LockerAtmosphericsFilled entities: - uid: 8897 @@ -144216,6 +144573,11 @@ entities: parent: 2 - proto: LockerEvidence entities: + - uid: 2615 + components: + - type: Transform + pos: 44.5,-31.5 + parent: 2 - uid: 4442 components: - type: Transform @@ -144246,16 +144608,6 @@ entities: - type: Transform pos: 36.5,-10.5 parent: 2 - - uid: 5415 - components: - - type: Transform - pos: 44.5,-31.5 - parent: 2 - - uid: 5416 - components: - - type: Transform - pos: 44.5,-32.5 - parent: 2 - uid: 5417 components: - type: Transform @@ -144745,7 +145097,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12066: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -144761,7 +145114,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29541: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -144777,7 +145131,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29523: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -144792,7 +145147,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11297: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -144808,7 +145164,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29540: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -144823,7 +145180,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29539: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -144839,7 +145197,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29537: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -144854,7 +145213,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29538: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -144871,7 +145231,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28494: - - Output: InputB + - - Output + - InputB - uid: 29543 components: - type: Transform @@ -144884,7 +145245,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29507: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -144901,9 +145263,11 @@ entities: - type: DeviceLinkSource linkedPorts: 29527: - - Output: InputA + - - Output + - InputA 12066: - - Output: InputA + - - Output + - InputA - type: Physics canCollide: False bodyType: Static @@ -144918,9 +145282,11 @@ entities: - type: DeviceLinkSource linkedPorts: 2259: - - Output: InputA + - - Output + - InputA 11297: - - Output: InputA + - - Output + - InputA - type: Physics canCollide: False bodyType: Static @@ -144935,7 +145301,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29528: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -144950,7 +145317,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29532: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -144969,7 +145337,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28924: - - Output: InputA + - - Output + - InputA - uid: 28923 components: - type: Transform @@ -144985,7 +145354,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28924: - - Output: InputB + - - Output + - InputB - uid: 28924 components: - type: Transform @@ -145001,7 +145371,8 @@ entities: - type: DeviceLinkSource linkedPorts: 28436: - - Output: DoorBolt + - - Output + - DoorBolt - uid: 29522 components: - type: Transform @@ -145013,17 +145384,23 @@ entities: - type: DeviceLinkSource linkedPorts: 29527: - - Output: InputB + - - Output + - InputB 2259: - - Output: InputB + - - Output + - InputB 29533: - - Output: InputB + - - Output + - InputB 29535: - - Output: InputB + - - Output + - InputB 29536: - - Output: InputB + - - Output + - InputB 29534: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -145039,9 +145416,11 @@ entities: - type: DeviceLinkSource linkedPorts: 29507: - - Output: InputA + - - Output + - InputA 24126: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145057,9 +145436,11 @@ entities: - type: DeviceLinkSource linkedPorts: 28494: - - Output: InputA + - - Output + - InputA 29530: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145074,7 +145455,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29531: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -145090,7 +145472,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29531: - - Output: InputA + - - Output + - InputA - type: Physics canCollide: False bodyType: Static @@ -145106,7 +145489,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29529: - - Output: InputA + - - Output + - InputA - type: Physics canCollide: False bodyType: Static @@ -145121,7 +145505,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29529: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -145138,7 +145523,8 @@ entities: - type: DeviceLinkSource linkedPorts: 827: - - Output: InputA + - - Output + - InputA - type: Physics canCollide: False bodyType: Static @@ -145153,7 +145539,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11331: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145168,7 +145555,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11332: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145184,7 +145572,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11161: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145200,7 +145589,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20084: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145215,7 +145605,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18430: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145230,7 +145621,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12847: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145246,7 +145638,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7764: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145262,7 +145655,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7763: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145277,7 +145671,8 @@ entities: - type: DeviceLinkSource linkedPorts: 826: - - Output: InputA + - - Output + - InputA - type: Physics canCollide: False bodyType: Static @@ -145293,7 +145688,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29618: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145309,7 +145705,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13142: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145325,7 +145722,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13141: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145341,7 +145739,8 @@ entities: - type: DeviceLinkSource linkedPorts: 15503: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145357,7 +145756,8 @@ entities: - type: DeviceLinkSource linkedPorts: 18896: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -145491,6 +145891,13 @@ entities: - type: Transform pos: -10.5,-42.5 parent: 2 +- proto: MachineMaterialSilo + entities: + - uid: 9951 + components: + - type: Transform + pos: 8.5,-46.5 + parent: 2 - proto: MachineParticleAcceleratorEmitterForeCircuitboard entities: - uid: 11506 @@ -145533,6 +145940,13 @@ entities: - type: Transform pos: -47.520466,-22.794298 parent: 2 +- proto: MagazineBoxPistolPractice + entities: + - uid: 30254 + components: + - type: Transform + pos: 51.509186,-37.41696 + parent: 2 - proto: MagazineMagnum entities: - uid: 4205 @@ -145695,6 +146109,11 @@ entities: - type: Transform pos: 37.5,24.5 parent: 2 + - uid: 3486 + components: + - type: Transform + pos: -11.5,-52.5 + parent: 2 - uid: 4055 components: - type: Transform @@ -145735,11 +146154,6 @@ entities: - type: Transform pos: 25.5,-42.5 parent: 2 - - uid: 23549 - components: - - type: Transform - pos: -10.5,-54.5 - parent: 2 - uid: 23580 components: - type: Transform @@ -145864,7 +146278,7 @@ entities: - uid: 3513 components: - type: Transform - pos: 43.426495,-4.5161743 + pos: 45.4437,-4.2865305 parent: 2 - proto: MaterialDiamond1 entities: @@ -145893,7 +146307,7 @@ entities: - uid: 3512 components: - type: Transform - pos: 41.613995,-4.120341 + pos: 45.41245,-4.5990305 parent: 2 - proto: MatterBinStockPart entities: @@ -147289,7 +147703,7 @@ entities: - uid: 10837 components: - type: Transform - parent: 2693 + parent: 4569 - type: Paper content: >+ [bold]=====================================================[/bold] @@ -148375,18 +148789,6 @@ entities: rot: 3.141592653589793 rad pos: -8.918555,-34.483868 parent: 2 - - uid: 1404 - components: - - type: Transform - parent: 1403 - - type: Physics - canCollide: False - - uid: 1405 - components: - - type: Transform - parent: 1403 - - type: Physics - canCollide: False - uid: 1417 components: - type: Transform @@ -149473,11 +149875,6 @@ entities: - type: Transform pos: -4.5,-39.5 parent: 2 - - uid: 1368 - components: - - type: Transform - pos: -4.5,-32.5 - parent: 2 - uid: 1370 components: - type: Transform @@ -149568,11 +149965,6 @@ entities: - type: Transform pos: 42.5,3.5 parent: 2 - - uid: 5842 - components: - - type: Transform - pos: 42.5,5.5 - parent: 2 - uid: 11893 components: - type: Transform @@ -149758,6 +150150,16 @@ entities: - type: Transform pos: 2.5,-62.5 parent: 2 + - uid: 30258 + components: + - type: Transform + pos: -4.5,-32.5 + parent: 2 + - uid: 30263 + components: + - type: Transform + pos: 38.5,4.5 + parent: 2 - proto: PottedPlantRD entities: - uid: 9902 @@ -149784,11 +150186,6 @@ entities: parent: 2 - proto: PowerCellRecharger entities: - - uid: 1602 - components: - - type: Transform - pos: -4.5,-34.5 - parent: 2 - uid: 1603 components: - type: Transform @@ -149811,6 +150208,12 @@ entities: - type: Transform pos: 34.5,-34.5 parent: 2 + - uid: 4547 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,-34.5 + parent: 2 - uid: 5801 components: - type: Transform @@ -150987,6 +151390,12 @@ entities: rot: 3.141592653589793 rad pos: -28.5,-20.5 parent: 2 + - uid: 1348 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 47.5,-1.5 + parent: 2 - uid: 2105 components: - type: Transform @@ -151423,12 +151832,6 @@ entities: - type: Transform pos: 49.5,6.5 parent: 2 - - uid: 6171 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 47.5,-2.5 - parent: 2 - uid: 6172 components: - type: Transform @@ -152662,6 +153065,12 @@ entities: rot: -1.5707963267948966 rad pos: 54.5,-13.5 parent: 2 + - uid: 30261 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-4.5 + parent: 2 - proto: PoweredlightEmpty entities: - uid: 12295 @@ -152916,38 +153325,12 @@ entities: rot: 3.141592653589793 rad pos: 35.5,20.5 parent: 2 - - uid: 2689 - components: - - type: Transform - pos: 30.5,22.5 - parent: 2 - - uid: 2690 - components: - - type: Transform - pos: 29.5,22.5 - parent: 2 - uid: 2700 components: - type: Transform rot: 3.141592653589793 rad pos: 35.5,17.5 parent: 2 - - uid: 2701 - components: - - type: Transform - pos: 31.5,22.5 - parent: 2 - - uid: 2702 - components: - - type: Transform - pos: 32.5,22.5 - parent: 2 - - uid: 3522 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 46.5,-4.5 - parent: 2 - uid: 3764 components: - type: Transform @@ -153148,12 +153531,27 @@ entities: rot: 3.141592653589793 rad pos: 64.5,4.5 parent: 2 + - uid: 19222 + components: + - type: Transform + pos: 29.5,23.5 + parent: 2 + - uid: 19226 + components: + - type: Transform + pos: 30.5,23.5 + parent: 2 - uid: 19426 components: - type: Transform rot: 3.141592653589793 rad pos: 64.5,-3.5 parent: 2 + - uid: 20081 + components: + - type: Transform + pos: 31.5,23.5 + parent: 2 - uid: 20212 components: - type: Transform @@ -153170,6 +153568,11 @@ entities: - type: Transform pos: 64.5,-5.5 parent: 2 + - uid: 20670 + components: + - type: Transform + pos: 32.5,23.5 + parent: 2 - uid: 22572 components: - type: Transform @@ -153309,8 +153712,10 @@ entities: - type: DeviceLinkSource linkedPorts: 22036: - - PowerDischarging: On - - PowerCharging: Off + - - PowerDischarging + - On + - - PowerCharging + - Off - proto: PresentRandomCash entities: - uid: 9641 @@ -153920,6 +154325,12 @@ entities: rot: 3.141592653589793 rad pos: 52.5,30.5 parent: 2 + - uid: 6171 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 22.5,40.5 + parent: 2 - uid: 6853 components: - type: Transform @@ -154944,6 +155355,12 @@ entities: - type: Transform pos: -11.5,16.5 parent: 2 + - uid: 30255 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 22.5,36.5 + parent: 2 - proto: RailingCorner entities: - uid: 64 @@ -155320,6 +155737,12 @@ entities: rot: -1.5707963267948966 rad pos: 2.5,-44.5 parent: 2 + - uid: 4131 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 22.5,39.5 + parent: 2 - uid: 4219 components: - type: Transform @@ -155502,6 +155925,12 @@ entities: rot: 3.141592653589793 rad pos: 22.5,60.5 parent: 2 + - uid: 7720 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 22.5,37.5 + parent: 2 - uid: 8033 components: - type: Transform @@ -156107,6 +156536,11 @@ entities: parent: 2 - proto: RandomPainting entities: + - uid: 2612 + components: + - type: Transform + pos: 27.5,20.5 + parent: 2 - uid: 8104 components: - type: Transform @@ -156124,11 +156558,6 @@ entities: rot: -1.5707963267948966 rad pos: 41.5,13.5 parent: 2 - - uid: 20759 - components: - - type: Transform - pos: 30.5,23.5 - parent: 2 - uid: 20760 components: - type: Transform @@ -156140,6 +156569,16 @@ entities: - type: Transform pos: 4.5,45.5 parent: 2 + - uid: 30272 + components: + - type: Transform + pos: 29.5,24.5 + parent: 2 + - uid: 30273 + components: + - type: Transform + pos: 32.5,24.5 + parent: 2 - proto: RandomPosterAny entities: - uid: 3728 @@ -156423,11 +156862,10 @@ entities: parent: 2 - proto: RandomSoap entities: - - uid: 20763 + - uid: 5415 components: - type: Transform - rot: -1.5707963267948966 rad - pos: -12.5,26.5 + pos: -9.5,26.5 parent: 2 - uid: 20764 components: @@ -156583,11 +157021,6 @@ entities: - type: Transform pos: 40.5,28.5 parent: 2 - - uid: 20707 - components: - - type: Transform - pos: 40.5,41.5 - parent: 2 - uid: 20708 components: - type: Transform @@ -156603,6 +157036,11 @@ entities: - type: Transform pos: 19.5,-27.5 parent: 2 + - uid: 30290 + components: + - type: Transform + pos: 40.5,40.5 + parent: 2 - proto: RandomSpawner100 entities: - uid: 13018 @@ -156659,11 +157097,6 @@ entities: rot: 1.5707963267948966 rad pos: -27.5,-45.5 parent: 2 - - uid: 3540 - components: - - type: Transform - pos: 45.5,-2.5 - parent: 2 - uid: 3541 components: - type: Transform @@ -156787,10 +157220,11 @@ entities: - type: Transform pos: -1.5,28.5 parent: 2 - - uid: 6722 + - uid: 9956 components: - type: Transform - pos: 21.5,36.5 + rot: -1.5707963267948966 rad + pos: 29.5,37.5 parent: 2 - uid: 18707 components: @@ -157626,6 +158060,12 @@ entities: rot: -1.5707963267948966 rad pos: -31.5,-33.5 parent: 2 + - uid: 1602 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 60.5,-39.5 + parent: 2 - uid: 1610 components: - type: Transform @@ -157741,6 +158181,18 @@ entities: rot: 1.5707963267948966 rad pos: 34.5,12.5 parent: 2 + - uid: 2610 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 61.5,-39.5 + parent: 2 + - uid: 2611 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 61.5,-38.5 + parent: 2 - uid: 3204 components: - type: Transform @@ -158103,24 +158555,6 @@ entities: rot: -1.5707963267948966 rad pos: 59.5,-39.5 parent: 2 - - uid: 4095 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 59.5,-38.5 - parent: 2 - - uid: 4096 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 60.5,-38.5 - parent: 2 - - uid: 4097 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 60.5,-37.5 - parent: 2 - uid: 4098 components: - type: Transform @@ -158175,24 +158609,6 @@ entities: rot: -1.5707963267948966 rad pos: 51.5,-39.5 parent: 2 - - uid: 4117 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 50.5,-39.5 - parent: 2 - - uid: 4129 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-35.5 - parent: 2 - - uid: 4130 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 49.5,-38.5 - parent: 2 - uid: 4244 components: - type: Transform @@ -160491,9 +160907,11 @@ entities: - type: DeviceLinkSource linkedPorts: 16922: - - Pressed: Toggle + - - Pressed + - Toggle 17256: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4246 components: - type: MetaData @@ -160504,7 +160922,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3921: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6115 components: - type: MetaData @@ -160515,9 +160934,11 @@ entities: - type: DeviceLinkSource linkedPorts: 6114: - - Pressed: Toggle + - - Pressed + - Toggle 6113: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9928 components: - type: Transform @@ -160595,7 +161016,7 @@ entities: - uid: 23360 components: - type: Transform - pos: 41.815514,-4.2144213 + pos: 42.75322,-4.2518167 parent: 2 - uid: 23362 components: @@ -160607,7 +161028,7 @@ entities: - uid: 23361 components: - type: Transform - pos: 41.534264,-4.287338 + pos: 42.44072,-4.3768167 parent: 2 - uid: 23363 components: @@ -161880,7 +162301,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29522: - - DoorStatus: InputA + - - DoorStatus + - InputA - uid: 29574 components: - type: Transform @@ -161889,7 +162311,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29522: - - DoorStatus: InputB + - - DoorStatus + - InputB - proto: ShuttersWindowOpen entities: - uid: 742 @@ -162004,11 +162427,14 @@ entities: - type: DeviceLinkSource linkedPorts: 5586: - - Pressed: Toggle + - - Pressed + - Toggle 5585: - - Pressed: Toggle + - - Pressed + - Toggle 5584: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 872 components: - type: Transform @@ -162018,13 +162444,17 @@ entities: - type: DeviceLinkSource linkedPorts: 923: - - Pressed: Toggle + - - Pressed + - Toggle 922: - - Pressed: Toggle + - - Pressed + - Toggle 921: - - Pressed: Toggle + - - Pressed + - Toggle 920: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 928 components: - type: MetaData @@ -162035,13 +162465,17 @@ entities: - type: DeviceLinkSource linkedPorts: 924: - - Pressed: Toggle + - - Pressed + - Toggle 925: - - Pressed: Toggle + - - Pressed + - Toggle 926: - - Pressed: Toggle + - - Pressed + - Toggle 927: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1014 components: - type: MetaData @@ -162053,7 +162487,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1050: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1628 components: - type: Transform @@ -162063,17 +162498,23 @@ entities: - type: DeviceLinkSource linkedPorts: 1502: - - Pressed: Toggle + - - Pressed + - Toggle 1501: - - Pressed: Toggle + - - Pressed + - Toggle 742: - - Pressed: Toggle + - - Pressed + - Toggle 1619: - - Pressed: Toggle + - - Pressed + - Toggle 1620: - - Pressed: Toggle + - - Pressed + - Toggle 1621: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1629 components: - type: MetaData @@ -162085,17 +162526,23 @@ entities: - type: DeviceLinkSource linkedPorts: 1622: - - Pressed: Toggle + - - Pressed + - Toggle 1623: - - Pressed: Toggle + - - Pressed + - Toggle 1624: - - Pressed: Toggle + - - Pressed + - Toggle 1625: - - Pressed: Toggle + - - Pressed + - Toggle 1626: - - Pressed: Toggle + - - Pressed + - Toggle 1627: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1919 components: - type: MetaData @@ -162107,7 +162554,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7999: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1920 components: - type: MetaData @@ -162119,7 +162567,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8000: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2694 components: - type: MetaData @@ -162131,9 +162580,11 @@ entities: - type: DeviceLinkSource linkedPorts: 2602: - - Pressed: Toggle + - - Pressed + - Toggle 2603: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2696 components: - type: MetaData @@ -162145,11 +162596,14 @@ entities: - type: DeviceLinkSource linkedPorts: 2600: - - Pressed: Toggle + - - Pressed + - Toggle 2601: - - Pressed: Toggle + - - Pressed + - Toggle 5742: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2735 components: - type: MetaData @@ -162161,7 +162615,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2733: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3701 components: - type: Transform @@ -162171,11 +162626,14 @@ entities: - type: DeviceLinkSource linkedPorts: 30094: - - Pressed: Toggle + - - Pressed + - Toggle 30095: - - Pressed: Toggle + - - Pressed + - Toggle 30093: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3800 components: - type: MetaData @@ -162187,9 +162645,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3799: - - Pressed: Toggle + - - Pressed + - Toggle 5217: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3892 components: - type: MetaData @@ -162201,7 +162661,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3810: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4033 components: - type: MetaData @@ -162213,7 +162674,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4035: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4168 components: - type: MetaData @@ -162225,7 +162687,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4167: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6175 components: - type: MetaData @@ -162237,9 +162700,11 @@ entities: - type: DeviceLinkSource linkedPorts: 17256: - - Pressed: Toggle + - - Pressed + - Toggle 16922: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6481 components: - type: MetaData @@ -162251,11 +162716,14 @@ entities: - type: DeviceLinkSource linkedPorts: 6394: - - Pressed: Toggle + - - Pressed + - Toggle 6395: - - Pressed: Toggle + - - Pressed + - Toggle 6480: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6652 components: - type: MetaData @@ -162266,19 +162734,26 @@ entities: - type: DeviceLinkSource linkedPorts: 6606: - - Pressed: Toggle + - - Pressed + - Toggle 6607: - - Pressed: Toggle + - - Pressed + - Toggle 6608: - - Pressed: Toggle + - - Pressed + - Toggle 6609: - - Pressed: Toggle + - - Pressed + - Toggle 6610: - - Pressed: Toggle + - - Pressed + - Toggle 6614: - - Pressed: Toggle + - - Pressed + - Toggle 6615: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7696 components: - type: MetaData @@ -162290,11 +162765,14 @@ entities: - type: DeviceLinkSource linkedPorts: 7190: - - Pressed: Toggle + - - Pressed + - Toggle 7191: - - Pressed: Toggle + - - Pressed + - Toggle 7192: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7697 components: - type: MetaData @@ -162306,11 +162784,14 @@ entities: - type: DeviceLinkSource linkedPorts: 7189: - - Pressed: Toggle + - - Pressed + - Toggle 7188: - - Pressed: Toggle + - - Pressed + - Toggle 7042: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7698 components: - type: MetaData @@ -162322,11 +162803,14 @@ entities: - type: DeviceLinkSource linkedPorts: 7340: - - Pressed: Toggle + - - Pressed + - Toggle 7339: - - Pressed: Toggle + - - Pressed + - Toggle 7338: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7706 components: - type: MetaData @@ -162338,13 +162822,17 @@ entities: - type: DeviceLinkSource linkedPorts: 7336: - - Pressed: Toggle + - - Pressed + - Toggle 7337: - - Pressed: Toggle + - - Pressed + - Toggle 7334: - - Pressed: Toggle + - - Pressed + - Toggle 7335: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7865 components: - type: MetaData @@ -162355,11 +162843,14 @@ entities: - type: DeviceLinkSource linkedPorts: 7862: - - Pressed: Toggle + - - Pressed + - Toggle 7861: - - Pressed: Toggle + - - Pressed + - Toggle 7860: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8947 components: - type: MetaData @@ -162371,13 +162862,17 @@ entities: - type: DeviceLinkSource linkedPorts: 8941: - - Pressed: Toggle + - - Pressed + - Toggle 1125: - - Pressed: Toggle + - - Pressed + - Toggle 6576: - - Pressed: Toggle + - - Pressed + - Toggle 6226: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9642 components: - type: MetaData @@ -162389,11 +162884,14 @@ entities: - type: DeviceLinkSource linkedPorts: 9640: - - Pressed: Toggle + - - Pressed + - Toggle 9639: - - Pressed: Toggle + - - Pressed + - Toggle 9638: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9774 components: - type: MetaData @@ -162405,7 +162903,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16239: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9775 components: - type: Transform @@ -162423,7 +162922,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9718: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 9782 components: - type: MetaData @@ -162435,15 +162935,20 @@ entities: - type: DeviceLinkSource linkedPorts: 9769: - - Pressed: Toggle + - - Pressed + - Toggle 9770: - - Pressed: Toggle + - - Pressed + - Toggle 9771: - - Pressed: Toggle + - - Pressed + - Toggle 9855: - - Pressed: Toggle + - - Pressed + - Toggle 9773: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 10078 components: - type: MetaData @@ -162455,7 +162960,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9715: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 10222 components: - type: Transform @@ -162465,11 +162971,14 @@ entities: - type: DeviceLinkSource linkedPorts: 7794: - - Pressed: Toggle + - - Pressed + - Toggle 7762: - - Pressed: Toggle + - - Pressed + - Toggle 10164: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 10393 components: - type: MetaData @@ -162481,11 +162990,14 @@ entities: - type: DeviceLinkSource linkedPorts: 10312: - - Pressed: Toggle + - - Pressed + - Toggle 9965: - - Pressed: Toggle + - - Pressed + - Toggle 10308: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 10588 components: - type: MetaData @@ -162496,11 +163008,14 @@ entities: - type: DeviceLinkSource linkedPorts: 10589: - - Pressed: Toggle + - - Pressed + - Toggle 10590: - - Pressed: Toggle + - - Pressed + - Toggle 10591: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11339 components: - type: MetaData @@ -162512,9 +163027,11 @@ entities: - type: DeviceLinkSource linkedPorts: 11338: - - Pressed: Toggle + - - Pressed + - Toggle 11337: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11986 components: - type: Transform @@ -162524,9 +163041,11 @@ entities: - type: DeviceLinkSource linkedPorts: 29526: - - Pressed: Toggle + - - Pressed + - Toggle 29574: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 12804 components: - type: MetaData @@ -162538,11 +163057,14 @@ entities: - type: DeviceLinkSource linkedPorts: 12801: - - Pressed: Toggle + - - Pressed + - Toggle 12802: - - Pressed: Toggle + - - Pressed + - Toggle 12803: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13038 components: - type: MetaData @@ -162554,17 +163076,23 @@ entities: - type: DeviceLinkSource linkedPorts: 12956: - - Pressed: Toggle + - - Pressed + - Toggle 12955: - - Pressed: Toggle + - - Pressed + - Toggle 12774: - - Pressed: Toggle + - - Pressed + - Toggle 20644: - - Pressed: Toggle + - - Pressed + - Toggle 20255: - - Pressed: Toggle + - - Pressed + - Toggle 20268: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15291 components: - type: Transform @@ -162574,11 +163102,14 @@ entities: - type: DeviceLinkSource linkedPorts: 8458: - - Pressed: Toggle + - - Pressed + - Toggle 8459: - - Pressed: Toggle + - - Pressed + - Toggle 8460: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 18372 components: - type: MetaData @@ -162590,7 +163121,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23781: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 18469 components: - type: Transform @@ -162599,9 +163131,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12261: - - Pressed: Toggle + - - Pressed + - Toggle 12830: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 18694 components: - type: MetaData @@ -162613,23 +163147,32 @@ entities: - type: DeviceLinkSource linkedPorts: 11555: - - Pressed: Toggle + - - Pressed + - Toggle 11554: - - Pressed: Toggle + - - Pressed + - Toggle 24136: - - Pressed: Toggle + - - Pressed + - Toggle 24134: - - Pressed: Toggle + - - Pressed + - Toggle 24135: - - Pressed: Toggle + - - Pressed + - Toggle 24145: - - Pressed: Toggle + - - Pressed + - Toggle 24147: - - Pressed: Toggle + - - Pressed + - Toggle 17900: - - Pressed: Toggle + - - Pressed + - Toggle 28363: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 21063 components: - type: MetaData @@ -162649,7 +163192,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21068: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 21223 components: - type: MetaData @@ -162661,15 +163205,20 @@ entities: - type: DeviceLinkSource linkedPorts: 9854: - - Pressed: Toggle + - - Pressed + - Toggle 9772: - - Pressed: Toggle + - - Pressed + - Toggle 9768: - - Pressed: Toggle + - - Pressed + - Toggle 9767: - - Pressed: Toggle + - - Pressed + - Toggle 9766: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23768 components: - type: MetaData @@ -162681,7 +163230,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23766: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23771 components: - type: MetaData @@ -162692,7 +163242,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23770: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23773 components: - type: MetaData @@ -162704,7 +163255,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23772: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23774 components: - type: MetaData @@ -162718,7 +163270,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23762: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23775 components: - type: MetaData @@ -162730,7 +163283,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23761: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23776 components: - type: MetaData @@ -162741,7 +163295,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24128: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23777 components: - type: MetaData @@ -162753,7 +163308,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23763: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23778 components: - type: MetaData @@ -162765,7 +163321,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23764: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23779 components: - type: MetaData @@ -162776,7 +163333,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16214: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23782 components: - type: MetaData @@ -162787,26 +163345,17 @@ entities: - type: DeviceLinkSource linkedPorts: 3534: - - Pressed: Toggle + - - Pressed + - Toggle 3535: - - Pressed: Toggle + - - Pressed + - Toggle 3536: - - Pressed: Toggle + - - Pressed + - Toggle 3537: - - Pressed: Toggle - - uid: 23783 - components: - - type: MetaData - name: cleaning service - - type: Transform - pos: 47.5,-6.5 - parent: 2 - - type: SignalSwitch - state: True - - type: DeviceLinkSource - linkedPorts: - 23780: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23785 components: - type: MetaData @@ -162818,7 +163367,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23784: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 23829 components: - type: MetaData @@ -162830,7 +163380,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16797: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24149 components: - type: MetaData @@ -162842,21 +163393,29 @@ entities: - type: DeviceLinkSource linkedPorts: 24140: - - Pressed: Toggle + - - Pressed + - Toggle 24142: - - Pressed: Toggle + - - Pressed + - Toggle 11306: - - Pressed: Toggle + - - Pressed + - Toggle 11305: - - Pressed: Toggle + - - Pressed + - Toggle 11304: - - Pressed: Toggle + - - Pressed + - Toggle 11303: - - Pressed: Toggle + - - Pressed + - Toggle 11302: - - Pressed: Toggle + - - Pressed + - Toggle 11301: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24218 components: - type: MetaData @@ -162867,11 +163426,14 @@ entities: - type: DeviceLinkSource linkedPorts: 18581: - - Pressed: Toggle + - - Pressed + - Toggle 11982: - - Pressed: Toggle + - - Pressed + - Toggle 20831: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 24278 components: - type: MetaData @@ -162883,23 +163445,32 @@ entities: - type: DeviceLinkSource linkedPorts: 3531: - - Pressed: Toggle + - - Pressed + - Toggle 3530: - - Pressed: Toggle + - - Pressed + - Toggle 3529: - - Pressed: Toggle + - - Pressed + - Toggle 2365: - - Pressed: Toggle + - - Pressed + - Toggle 2366: - - Pressed: Toggle + - - Pressed + - Toggle 2367: - - Pressed: Toggle + - - Pressed + - Toggle 2368: - - Pressed: Toggle + - - Pressed + - Toggle 2369: - - Pressed: Toggle + - - Pressed + - Toggle 2370: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 28321 components: - type: MetaData @@ -162910,11 +163481,14 @@ entities: - type: DeviceLinkSource linkedPorts: 28326: - - Pressed: Toggle + - - Pressed + - Toggle 28407: - - Pressed: Toggle + - - Pressed + - Toggle 29923: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 28356 components: - type: MetaData @@ -162926,7 +163500,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12133: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 28357 components: - type: MetaData @@ -162938,7 +163513,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12132: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 28358 components: - type: MetaData @@ -162950,7 +163526,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12131: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 28868 components: - type: MetaData @@ -162962,7 +163539,8 @@ entities: - type: DeviceLinkSource linkedPorts: 29962: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 28874 components: - type: MetaData @@ -162973,7 +163551,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3764: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 28878 components: - type: MetaData @@ -162985,7 +163564,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23642: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 28900 components: - type: MetaData @@ -162996,11 +163576,14 @@ entities: - type: DeviceLinkSource linkedPorts: 9296: - - Pressed: Toggle + - - Pressed + - Toggle 9294: - - Pressed: Toggle + - - Pressed + - Toggle 9295: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 29782 components: - type: MetaData @@ -163012,9 +163595,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1384: - - Pressed: Open + - - Pressed + - Open 1378: - - Pressed: Open + - - Pressed + - Open - proto: SignAnomaly entities: - uid: 16793 @@ -163664,6 +164249,12 @@ entities: parent: 2 - proto: SignHead entities: + - uid: 4 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-2.5 + parent: 2 - uid: 857 components: - type: Transform @@ -163676,12 +164267,6 @@ entities: rot: -1.5707963267948966 rad pos: -22.5,-36.5 parent: 2 - - uid: 8251 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 47.5,-3.5 - parent: 2 - uid: 9604 components: - type: Transform @@ -166754,10 +167339,10 @@ entities: parent: 2 - proto: SpawnMobPossumMorty entities: - - uid: 20670 + - uid: 30302 components: - type: Transform - pos: -50.5,-17.5 + pos: -50.5,-20.5 parent: 2 - proto: SpawnMobPurpleSnake entities: @@ -167822,6 +168407,12 @@ entities: parent: 2 - proto: StairStageWood entities: + - uid: 8251 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 44.5,-5.5 + parent: 2 - uid: 28980 components: - type: Transform @@ -168380,6 +168971,11 @@ entities: parent: 2 - proto: SuitStorageEngi entities: + - uid: 5842 + components: + - type: Transform + pos: 21.5,36.5 + parent: 2 - uid: 7668 components: - type: Transform @@ -168395,15 +168991,10 @@ entities: - type: Transform pos: 21.5,39.5 parent: 2 - - uid: 7720 + - uid: 18146 components: - type: Transform - pos: 29.5,39.5 - parent: 2 - - uid: 7721 - components: - - type: Transform - pos: 29.5,37.5 + pos: 21.5,40.5 parent: 2 - proto: SuitStorageEVA entities: @@ -168412,31 +169003,181 @@ entities: - type: Transform pos: 44.5,3.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 10217 - uid: 6117 components: - type: Transform pos: 44.5,4.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 11968 - uid: 6118 components: - type: Transform pos: 44.5,5.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 12057 - uid: 6119 components: - type: Transform pos: 50.5,3.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 12788 - uid: 6120 components: - type: Transform pos: 50.5,4.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 12789 - uid: 6121 components: - type: Transform pos: 50.5,5.5 parent: 2 + - type: EntityStorage + air: + volume: 200 + immutable: False + temperature: 293.14673 + moles: + - 1.7459903 + - 6.568249 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - 0 + - type: ContainerContainer + containers: + entity_storage: !type:Container + showEnts: False + occludes: True + ents: + - 12818 - proto: SuitStorageEVAPrisoner entities: - uid: 3948 @@ -170960,6 +171701,18 @@ entities: rot: 1.5707963267948966 rad pos: 15.5,20.5 parent: 2 + - uid: 3487 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -7.5,-34.5 + parent: 2 + - uid: 3540 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -6.5,-34.5 + parent: 2 - uid: 3691 components: - type: Transform @@ -171618,6 +172371,24 @@ entities: - type: Transform pos: 46.5,-9.5 parent: 2 + - uid: 30249 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-35.5 + parent: 2 + - uid: 30250 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-37.5 + parent: 2 + - uid: 30251 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 51.5,-36.5 + parent: 2 - proto: TableCarpet entities: - uid: 7942 @@ -173041,11 +173812,6 @@ entities: rot: 1.5707963267948966 rad pos: 36.5,-7.5 parent: 2 - - uid: 3487 - components: - - type: Transform - pos: 41.5,-4.5 - parent: 2 - uid: 3730 components: - type: Transform @@ -173406,6 +174172,11 @@ entities: rot: -1.5707963267948966 rad pos: -54.5,9.5 parent: 2 + - uid: 17263 + components: + - type: Transform + pos: 42.5,-4.5 + parent: 2 - uid: 18714 components: - type: Transform @@ -173575,11 +174346,11 @@ entities: - type: Transform pos: -29.5,-43.5 parent: 2 - - uid: 4109 + - uid: 17260 components: - type: Transform rot: -1.5707963267948966 rad - pos: 54.5,-37.5 + pos: 56.5,-37.5 parent: 2 - proto: TargetDarts entities: @@ -173591,17 +174362,17 @@ entities: parent: 2 - proto: TargetHuman entities: - - uid: 4108 + - uid: 6450 components: - type: Transform rot: -1.5707963267948966 rad - pos: 56.5,-35.5 + pos: 59.5,-38.5 parent: 2 - - uid: 4128 + - uid: 12821 components: - type: Transform rot: -1.5707963267948966 rad - pos: 57.5,-38.5 + pos: 57.5,-35.5 parent: 2 - proto: TargetSyndicate entities: @@ -174217,37 +174988,61 @@ entities: - type: DeviceLinkSource linkedPorts: 29014: - - Left: Forward - - Right: Forward - - Middle: Off + - - Left + - Forward + - - Right + - Forward + - - Middle + - Off 29007: - - Left: Forward - - Right: Forward - - Middle: Off + - - Left + - Forward + - - Right + - Forward + - - Middle + - Off 29008: - - Left: Forward - - Right: Forward - - Middle: Off + - - Left + - Forward + - - Right + - Forward + - - Middle + - Off 29009: - - Left: Forward - - Right: Forward - - Middle: Off + - - Left + - Forward + - - Right + - Forward + - - Middle + - Off 29010: - - Left: Forward - - Right: Forward - - Middle: Off + - - Left + - Forward + - - Right + - Forward + - - Middle + - Off 29011: - - Left: Forward - - Right: Forward - - Middle: Off + - - Left + - Forward + - - Right + - Forward + - - Middle + - Off 29012: - - Left: Forward - - Right: Forward - - Middle: Off + - - Left + - Forward + - - Right + - Forward + - - Middle + - Off 29013: - - Left: Forward - - Right: Forward - - Middle: Off + - - Left + - Forward + - - Right + - Forward + - - Middle + - Off - uid: 11354 components: - type: Transform @@ -174256,29 +175051,47 @@ entities: - type: DeviceLinkSource linkedPorts: 11358: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11345: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11346: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11348: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11349: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11352: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 11355 components: - type: Transform @@ -174287,29 +175100,47 @@ entities: - type: DeviceLinkSource linkedPorts: 11357: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11344: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11353: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11350: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11347: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11356: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 12098 components: - type: Transform @@ -174318,37 +175149,61 @@ entities: - type: DeviceLinkSource linkedPorts: 12097: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12096: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12095: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12094: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12092: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12093: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11660: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11659: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 16101 components: - type: MetaData @@ -174359,41 +175214,68 @@ entities: - type: DeviceLinkSource linkedPorts: 11363: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11364: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11941: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11942: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11948: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11565: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11828: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11571: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11596: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 19975 components: - type: MetaData @@ -174404,9 +175286,12 @@ entities: - type: DeviceLinkSource linkedPorts: 23797: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 29268 components: - type: Transform @@ -174415,61 +175300,103 @@ entities: - type: DeviceLinkSource linkedPorts: 29511: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 20597: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 29512: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 29513: - - Right: Reverse - - Middle: Off - - Left: Off + - - Right + - Reverse + - - Middle + - Off + - - Left + - Off 29514: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11361: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11325: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 24001: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 29515: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 29516: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 29517: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11990: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 29508: - - Left: Forward - - Right: Off - - Middle: Off + - - Left + - Forward + - - Right + - Off + - - Middle + - Off 11382: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - proto: UnfinishedMachineFrame entities: - uid: 9643 @@ -174486,10 +175413,10 @@ entities: parent: 2 - proto: UniformPrinter entities: - - uid: 3486 + - uid: 4961 components: - type: Transform - pos: 42.5,-4.5 + pos: 45.5,-3.5 parent: 2 - proto: UprightPianoInstrument entities: @@ -174658,15 +175585,10 @@ entities: - type: Transform pos: 21.5,18.5 parent: 2 - - uid: 6721 - components: - - type: Transform - pos: 21.5,40.5 - parent: 2 - uid: 9949 components: - type: Transform - pos: 13.5,-34.5 + pos: 29.5,39.5 parent: 2 - uid: 10448 components: @@ -177099,41 +178021,11 @@ entities: rot: -1.5707963267948966 rad pos: 27.5,23.5 parent: 2 - - uid: 2610 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 28.5,23.5 - parent: 2 - - uid: 2611 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 29.5,23.5 - parent: 2 - - uid: 2612 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 30.5,23.5 - parent: 2 - uid: 2613 components: - type: Transform rot: -1.5707963267948966 rad - pos: 31.5,23.5 - parent: 2 - - uid: 2614 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 32.5,23.5 - parent: 2 - - uid: 2615 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: 33.5,23.5 + pos: 33.5,24.5 parent: 2 - uid: 2616 components: @@ -178066,24 +178958,6 @@ entities: rot: 1.5707963267948966 rad pos: 44.5,-7.5 parent: 2 - - uid: 3459 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-3.5 - parent: 2 - - uid: 3460 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-4.5 - parent: 2 - - uid: 3462 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 45.5,-6.5 - parent: 2 - uid: 3463 components: - type: Transform @@ -178139,11 +179013,6 @@ entities: - type: Transform pos: 43.5,-10.5 parent: 2 - - uid: 3515 - components: - - type: Transform - pos: 46.5,-6.5 - parent: 2 - uid: 3519 components: - type: Transform @@ -179209,6 +180078,12 @@ entities: rot: 1.5707963267948966 rad pos: 49.5,-39.5 parent: 2 + - uid: 4130 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 50.5,-39.5 + parent: 2 - uid: 4135 components: - type: Transform @@ -179838,6 +180713,12 @@ entities: - type: Transform pos: -15.5,-59.5 parent: 2 + - uid: 5416 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 47.5,-2.5 + parent: 2 - uid: 5431 components: - type: Transform @@ -185536,6 +186417,12 @@ entities: - type: Transform pos: -27.5,7.5 parent: 2 + - uid: 20759 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-7.5 + parent: 2 - uid: 21004 components: - type: Transform @@ -186681,6 +187568,12 @@ entities: rot: 3.141592653589793 rad pos: -0.5,44.5 parent: 2 + - uid: 23783 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 46.5,-6.5 + parent: 2 - uid: 23810 components: - type: Transform @@ -188132,6 +189025,12 @@ entities: - type: Transform pos: -12.5,-60.5 parent: 2 + - uid: 28783 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 45.5,-2.5 + parent: 2 - uid: 29003 components: - type: Transform @@ -188372,6 +189271,30 @@ entities: - type: Transform pos: 24.5,-26.5 parent: 2 + - uid: 30268 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 32.5,24.5 + parent: 2 + - uid: 30269 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 31.5,24.5 + parent: 2 + - uid: 30270 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 29.5,24.5 + parent: 2 + - uid: 30271 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 28.5,24.5 + parent: 2 - proto: WallSolid entities: - uid: 309 @@ -192861,7 +193784,7 @@ entities: parent: 21002 - proto: WallWeaponCapacitorRecharger entities: - - uid: 20081 + - uid: 24048 components: - type: Transform rot: -1.5707963267948966 rad @@ -193603,11 +194526,6 @@ entities: - type: Transform pos: -36.5,-45.5 parent: 2 - - uid: 3542 - components: - - type: Transform - pos: 47.5,-2.5 - parent: 2 - uid: 5339 components: - type: Transform @@ -193820,6 +194738,50 @@ entities: - type: Transform pos: 48.66992,-38.664413 parent: 2 +- proto: WeaponGrapplingGun + entities: + - uid: 10217 + components: + - type: Transform + parent: 6116 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 11968 + components: + - type: Transform + parent: 6117 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 12057 + components: + - type: Transform + parent: 6118 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 12788 + components: + - type: Transform + parent: 6119 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 12789 + components: + - type: Transform + parent: 6120 + - type: Physics + canCollide: False + - type: InsideEntityStorage + - uid: 12818 + components: + - type: Transform + parent: 6121 + - type: Physics + canCollide: False + - type: InsideEntityStorage - proto: WeaponLaserCarbine entities: - uid: 4191 @@ -193894,36 +194856,36 @@ entities: parent: 2 - proto: WeaponTurretSyndicateBroken entities: - - uid: 10217 - components: - - type: Transform - pos: 48.5,18.5 - parent: 2 - - uid: 12788 - components: - - type: Transform - pos: 54.5,13.5 - parent: 2 - - uid: 12789 - components: - - type: Transform - pos: 48.5,13.5 - parent: 2 - - uid: 12818 - components: - - type: Transform - pos: 54.5,22.5 - parent: 2 - - uid: 12819 - components: - - type: Transform - pos: 48.5,22.5 - parent: 2 - uid: 20501 components: - type: Transform pos: 63.5,8.5 parent: 2 + - uid: 28812 + components: + - type: Transform + pos: 48.5,22.5 + parent: 2 + - uid: 28813 + components: + - type: Transform + pos: 48.5,13.5 + parent: 2 + - uid: 28814 + components: + - type: Transform + pos: 48.5,18.5 + parent: 2 + - uid: 29833 + components: + - type: Transform + pos: 54.5,13.5 + parent: 2 + - uid: 30245 + components: + - type: Transform + pos: 54.5,22.5 + parent: 2 - proto: WeldingFuelTankFull entities: - uid: 4298 @@ -194001,24 +194963,24 @@ entities: rot: 3.141592653589793 rad pos: -15.5,-26.5 parent: 2 - - uid: 4133 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 49.5,-36.5 - parent: 2 - - uid: 4134 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: 49.5,-37.5 - parent: 2 - uid: 19248 components: - type: Transform rot: 1.5707963267948966 rad pos: 10.5,-55.5 parent: 2 + - uid: 30246 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-36.5 + parent: 2 + - uid: 30247 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-37.5 + parent: 2 - proto: WindoorHydroponicsLocked entities: - uid: 3318 @@ -194165,6 +195127,30 @@ entities: - type: Transform pos: 51.5,21.5 parent: 2 + - uid: 30289 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 46.5,3.5 + parent: 2 + - uid: 30291 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,3.5 + parent: 2 + - uid: 30292 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: 46.5,4.5 + parent: 2 + - uid: 30293 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 48.5,4.5 + parent: 2 - proto: WindoorSecureEngineeringLocked entities: - uid: 6236 @@ -194987,11 +195973,6 @@ entities: - type: Transform pos: -6.5,-34.5 parent: 2 - - uid: 1354 - components: - - type: Transform - pos: -7.5,-34.5 - parent: 2 - uid: 1355 components: - type: Transform @@ -195145,6 +196126,11 @@ entities: rot: -1.5707963267948966 rad pos: -56.5,-27.5 parent: 2 + - uid: 30248 + components: + - type: Transform + pos: -7.5,-34.5 + parent: 2 - proto: WindowFrostedDirectional entities: - uid: 28867 @@ -195436,6 +196422,12 @@ entities: rot: 3.141592653589793 rad pos: 15.5,-41.5 parent: 2 + - uid: 4132 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-38.5 + parent: 2 - uid: 4178 components: - type: Transform @@ -195478,6 +196470,12 @@ entities: rot: 1.5707963267948966 rad pos: 48.5,6.5 parent: 2 + - uid: 6852 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 49.5,-35.5 + parent: 2 - uid: 9476 components: - type: Transform @@ -195694,7 +196692,7 @@ entities: pos: 24.5,2.5 parent: 21002 - type: Door - secondsUntilStateChange: -582068.9 + secondsUntilStateChange: -590865.3 state: Opening - uid: 28863 components: diff --git a/Resources/Maps/omega.yml b/Resources/Maps/omega.yml index db2f9709bc..8433901c5d 100644 --- a/Resources/Maps/omega.yml +++ b/Resources/Maps/omega.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 247.2.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/07/2025 18:56:09 - entityCount: 13931 + time: 04/19/2025 10:03:04 + entityCount: 13940 maps: - 473 grids: @@ -4865,6 +4865,17 @@ entities: - type: Transform pos: -49.383278,-8.450993 parent: 4812 +- proto: ActionStethoscope + entities: + - uid: 917 + mapInit: true + paused: true + components: + - type: Transform + parent: 7580 + - type: EntityTargetAction + originalIconColor: '#FFFFFFFF' + container: 7580 - proto: ActionToggleBlock entities: - uid: 12052 @@ -6346,7 +6357,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4014: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalEngineeringLocked entities: - uid: 9212 @@ -6359,7 +6371,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9190: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13456 components: - type: Transform @@ -6370,7 +6383,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13457: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 892 @@ -6457,9 +6471,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12107: - - DoorStatus: Close + - - DoorStatus + - Close 9656: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 13037 components: - type: Transform @@ -6497,7 +6513,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4550: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3040 components: - type: Transform @@ -6519,7 +6536,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2894: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassCommandLocked entities: - uid: 4014 @@ -6533,7 +6551,8 @@ entities: - type: DeviceLinkSource linkedPorts: 729: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 9190 @@ -6546,7 +6565,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9212: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13457 components: - type: Transform @@ -6558,7 +6578,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13456: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 10406 @@ -6571,7 +6592,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10405: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11139 components: - type: Transform @@ -6582,7 +6604,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11141: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11141 components: - type: Transform @@ -6593,7 +6616,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11139: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 3760 @@ -6706,7 +6730,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9651: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 12107 @@ -6717,7 +6742,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9651: - - DoorStatus: Close + - - DoorStatus + - Close - type: DeviceLinkSink invokeCounter: 1 - uid: 12991 @@ -6744,7 +6770,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2814: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2814 components: - type: Transform @@ -6755,7 +6782,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2737: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3349 components: - type: Transform @@ -6766,7 +6794,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3350: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3350 components: - type: Transform @@ -6777,7 +6806,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3349: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3686 components: - type: Transform @@ -6788,7 +6818,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3687: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 3687 components: - type: Transform @@ -6799,7 +6830,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3686: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10405 components: - type: Transform @@ -6810,7 +6842,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10406: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockFreezer entities: - uid: 3119 @@ -7346,7 +7379,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11676: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11350 components: - type: Transform @@ -7367,7 +7401,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11326: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11802 components: - type: Transform @@ -12285,9 +12320,12 @@ entities: - type: DeviceLinkSource linkedPorts: 7786: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 4811 components: - type: Transform @@ -12296,9 +12334,12 @@ entities: - type: DeviceLinkSource linkedPorts: 7785: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - proto: Bucket entities: - uid: 1477 @@ -33527,8 +33568,16 @@ entities: - uid: 7580 components: - type: Transform - pos: -18.561977,-20.380136 + pos: -18.519077,-23.380693 parent: 4812 + - type: Stethoscope + actionEntity: 917 + - type: ActionsContainer + - type: ContainerContainer + containers: + actions: !type:Container + ents: + - 917 - proto: ClothingNeckTieRed entities: - uid: 10922 @@ -34112,7 +34161,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6319: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 3581 @@ -34174,6 +34224,44 @@ entities: rot: 3.141592653589793 rad pos: 16.5,29.5 parent: 4812 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 13932 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -38.5,-5.5 + parent: 4812 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 13157 + components: + - type: Transform + pos: -15.5,-15.5 + parent: 4812 +- proto: ComputerCargoOrdersScience + entities: + - uid: 13936 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: 29.5,-27.5 + parent: 4812 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 10759 + components: + - type: Transform + pos: -38.5,12.5 + parent: 4812 +- proto: ComputerCargoOrdersService + entities: + - uid: 13337 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -6.5,9.5 + parent: 4812 - proto: ComputerCargoShuttle entities: - uid: 2760 @@ -34287,6 +34375,13 @@ entities: rot: 3.141592653589793 rad pos: 9.5,-44.5 parent: 4812 +- proto: ComputerFundingAllocation + entities: + - uid: 2514 + components: + - type: Transform + pos: 7.5,26.5 + parent: 4812 - proto: ComputerId entities: - uid: 2504 @@ -34888,6 +34983,46 @@ entities: - type: Transform pos: -19.5,-28.5 parent: 4812 +- proto: CrateLockBoxEngineering + entities: + - uid: 9118 + components: + - type: Transform + pos: -35.5,-11.5 + parent: 4812 +- proto: CrateLockBoxMedical + entities: + - uid: 6250 + components: + - type: Transform + pos: -16.5,-28.5 + parent: 4812 +- proto: CrateLockBoxScience + entities: + - uid: 2511 + components: + - type: Transform + pos: 12.5,-23.5 + parent: 4812 +- proto: CrateLockBoxSecurity + entities: + - uid: 13937 + components: + - type: Transform + pos: -31.5,23.5 + parent: 4812 +- proto: CrateLockBoxService + entities: + - uid: 13938 + components: + - type: Transform + pos: -15.5,5.5 + parent: 4812 + - uid: 13939 + components: + - type: Transform + pos: 1.5,13.5 + parent: 4812 - proto: CrateMedicalSurgery entities: - uid: 4926 @@ -34936,29 +35071,6 @@ entities: - 0 - proto: CrateScienceSecure entities: - - uid: 6250 - components: - - type: Transform - pos: 12.5,-23.5 - parent: 4812 - - type: EntityStorage - air: - volume: 200 - immutable: False - temperature: 293.14957 - moles: - - 1.6033952 - - 6.031821 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - - 0 - uid: 6251 components: - type: Transform @@ -38430,11 +38542,6 @@ entities: parent: 4812 - proto: DogBed entities: - - uid: 2511 - components: - - type: Transform - pos: 5.5,26.5 - parent: 4812 - uid: 2610 components: - type: MetaData @@ -38459,6 +38566,11 @@ entities: - type: Transform pos: -36.5,14.5 parent: 4812 + - uid: 13933 + components: + - type: Transform + pos: 7.5,25.5 + parent: 4812 - proto: DonkpocketBoxSpawner entities: - uid: 1571 @@ -38718,7 +38830,7 @@ entities: - uid: 8435 components: - type: Transform - pos: -38.614426,12.463839 + pos: -37.616684,10.457129 parent: 4812 - uid: 10760 components: @@ -38742,7 +38854,7 @@ entities: - uid: 8434 components: - type: Transform - pos: -38.3488,12.713839 + pos: -37.31981,10.691504 parent: 4812 - proto: DrinkRootBeerGlass entities: @@ -39298,10 +39410,10 @@ entities: parent: 4812 - proto: filingCabinetDrawer entities: - - uid: 2514 + - uid: 2512 components: - type: Transform - pos: 7.5,26.5 + pos: 5.5,26.5 parent: 4812 - proto: filingCabinetTall entities: @@ -62395,7 +62507,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9455: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8728 components: - type: Transform @@ -62405,7 +62518,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9828: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13618 components: - type: Transform @@ -62415,7 +62529,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9455: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13619 components: - type: Transform @@ -62425,7 +62540,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9828: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonChiefEngineer entities: - uid: 13776 @@ -62437,15 +62553,20 @@ entities: - type: DeviceLinkSource linkedPorts: 10675: - - Pressed: Toggle + - - Pressed + - Toggle 10674: - - Pressed: Toggle + - - Pressed + - Toggle 10673: - - Pressed: Toggle + - - Pressed + - Toggle 13775: - - Pressed: Toggle + - - Pressed + - Toggle 13532: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonCommand entities: - uid: 13857 @@ -62457,9 +62578,11 @@ entities: - type: DeviceLinkSource linkedPorts: 4413: - - Pressed: Toggle + - - Pressed + - Toggle 7635: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonHeadOfPersonnel entities: - uid: 13858 @@ -62471,15 +62594,20 @@ entities: - type: DeviceLinkSource linkedPorts: 13854: - - Pressed: Toggle + - - Pressed + - Toggle 13853: - - Pressed: Toggle + - - Pressed + - Toggle 13852: - - Pressed: Toggle + - - Pressed + - Toggle 4695: - - Pressed: Toggle + - - Pressed + - Toggle 9592: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonHeadOfSecurity entities: - uid: 13826 @@ -62490,11 +62618,14 @@ entities: - type: DeviceLinkSource linkedPorts: 8153: - - Pressed: Toggle + - - Pressed + - Toggle 8160: - - Pressed: Toggle + - - Pressed + - Toggle 8161: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonMedical entities: - uid: 4693 @@ -62506,9 +62637,11 @@ entities: - type: DeviceLinkSource linkedPorts: 13414: - - Pressed: Open + - - Pressed + - Open 13415: - - Pressed: Open + - - Pressed + - Open - proto: LockableButtonResearch entities: - uid: 9591 @@ -62520,11 +62653,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4615: - - Pressed: Toggle + - - Pressed + - Toggle 5795: - - Pressed: Toggle + - - Pressed + - Toggle 5794: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonSecurity entities: - uid: 13825 @@ -62536,13 +62672,17 @@ entities: - type: DeviceLinkSource linkedPorts: 13821: - - Pressed: Toggle + - - Pressed + - Toggle 13822: - - Pressed: Toggle + - - Pressed + - Toggle 13823: - - Pressed: Toggle + - - Pressed + - Toggle 13824: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockerAtmosphericsFilled entities: - uid: 9571 @@ -63333,6 +63473,13 @@ entities: - type: Transform pos: 4.5,-40.5 parent: 4812 +- proto: MachineMaterialSilo + entities: + - uid: 6224 + components: + - type: Transform + pos: 16.5,-23.5 + parent: 4812 - proto: MagazinePistolSubMachineGunTopMounted entities: - uid: 2914 @@ -65387,12 +65534,6 @@ entities: parent: 4812 - type: Physics canCollide: False - - uid: 13157 - components: - - type: Transform - rot: 1.5707963267948966 rad - pos: -15.5,-15.5 - parent: 4812 - uid: 13162 components: - type: Transform @@ -65404,6 +65545,12 @@ entities: - type: Transform pos: -43.5,-18.5 parent: 4812 + - uid: 13935 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -18.5,-20.5 + parent: 4812 - proto: PowerDrill entities: - uid: 6309 @@ -71377,7 +71524,7 @@ entities: - uid: 6236 components: - type: Transform - pos: 16.561968,-23.469662 + pos: 13.57206,-23.338892 parent: 4812 - uid: 10770 components: @@ -71852,17 +71999,23 @@ entities: - type: DeviceLinkSource linkedPorts: 360: - - Pressed: Toggle + - - Pressed + - Toggle 359: - - Pressed: Toggle + - - Pressed + - Toggle 358: - - Pressed: Toggle + - - Pressed + - Toggle 357: - - Pressed: Toggle + - - Pressed + - Toggle 356: - - Pressed: Toggle + - - Pressed + - Toggle 355: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1646 components: - type: Transform @@ -71871,11 +72024,14 @@ entities: - type: DeviceLinkSource linkedPorts: 785: - - Pressed: Toggle + - - Pressed + - Toggle 787: - - Pressed: Toggle + - - Pressed + - Toggle 786: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1965 components: - type: Transform @@ -71884,11 +72040,14 @@ entities: - type: DeviceLinkSource linkedPorts: 2235: - - Pressed: Toggle + - - Pressed + - Toggle 2236: - - Pressed: Toggle + - - Pressed + - Toggle 1930: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 2241 components: - type: Transform @@ -71897,11 +72056,14 @@ entities: - type: DeviceLinkSource linkedPorts: 1929: - - Pressed: Toggle + - - Pressed + - Toggle 2234: - - Pressed: Toggle + - - Pressed + - Toggle 1931: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 5576 components: - type: Transform @@ -71910,11 +72072,14 @@ entities: - type: DeviceLinkSource linkedPorts: 5509: - - Pressed: Toggle + - - Pressed + - Toggle 5507: - - Pressed: Toggle + - - Pressed + - Toggle 5508: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 6690 components: - type: Transform @@ -71923,11 +72088,14 @@ entities: - type: DeviceLinkSource linkedPorts: 5575: - - Pressed: Toggle + - - Pressed + - Toggle 5574: - - Pressed: Toggle + - - Pressed + - Toggle 5573: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 2928 @@ -71939,11 +72107,14 @@ entities: - type: DeviceLinkSource linkedPorts: 9345: - - Pressed: Toggle + - - Pressed + - Toggle 13742: - - Pressed: Toggle + - - Pressed + - Toggle 13743: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4610 components: - type: Transform @@ -71953,9 +72124,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12970: - - Pressed: Toggle + - - Pressed + - Toggle 13287: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 10877 components: - type: Transform @@ -71965,9 +72138,11 @@ entities: - type: DeviceLinkSource linkedPorts: 2866: - - Pressed: Toggle + - - Pressed + - Toggle 2864: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13373 components: - type: Transform @@ -71977,13 +72152,17 @@ entities: - type: DeviceLinkSource linkedPorts: 13668: - - Pressed: Toggle + - - Pressed + - Toggle 13667: - - Pressed: Toggle + - - Pressed + - Toggle 13666: - - Pressed: Toggle + - - Pressed + - Toggle 13665: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13629 components: - type: Transform @@ -71993,13 +72172,17 @@ entities: - type: DeviceLinkSource linkedPorts: 2835: - - Pressed: Toggle + - - Pressed + - Toggle 2836: - - Pressed: Toggle + - - Pressed + - Toggle 2837: - - Pressed: Toggle + - - Pressed + - Toggle 2870: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13662 components: - type: Transform @@ -72008,23 +72191,32 @@ entities: - type: DeviceLinkSource linkedPorts: 6574: - - Pressed: Toggle + - - Pressed + - Toggle 6576: - - Pressed: Toggle + - - Pressed + - Toggle 6575: - - Pressed: Toggle + - - Pressed + - Toggle 6577: - - Pressed: Toggle + - - Pressed + - Toggle 6578: - - Pressed: Toggle + - - Pressed + - Toggle 6570: - - Pressed: Toggle + - - Pressed + - Toggle 6586: - - Pressed: Toggle + - - Pressed + - Toggle 13473: - - Pressed: Toggle + - - Pressed + - Toggle 13663: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13886 components: - type: Transform @@ -72033,9 +72225,11 @@ entities: - type: DeviceLinkSource linkedPorts: 13890: - - Pressed: Toggle + - - Pressed + - Toggle 13891: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13887 components: - type: Transform @@ -72044,9 +72238,11 @@ entities: - type: DeviceLinkSource linkedPorts: 13888: - - Pressed: Toggle + - - Pressed + - Toggle 13889: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignAnomaly2 entities: - uid: 6342 @@ -73695,9 +73891,10 @@ entities: parent: 4812 - proto: SolidSecretDoor entities: - - uid: 13337 + - uid: 8425 components: - type: Transform + rot: 1.5707963267948966 rad pos: -41.5,-17.5 parent: 4812 - proto: SpaceHeater @@ -73742,10 +73939,10 @@ entities: parent: 4812 - proto: SpawnMobCorgi entities: - - uid: 2512 + - uid: 13934 components: - type: Transform - pos: 5.5,26.5 + pos: 7.5,25.5 parent: 4812 - proto: SpawnMobCow entities: @@ -76281,11 +76478,6 @@ entities: - type: Transform pos: -27.5,26.5 parent: 4812 - - uid: 8425 - components: - - type: Transform - pos: -38.5,12.5 - parent: 4812 - uid: 8426 components: - type: Transform @@ -76571,11 +76763,6 @@ entities: - type: Transform pos: -40.5,-34.5 parent: 4812 - - uid: 9118 - components: - - type: Transform - pos: -15.5,-15.5 - parent: 4812 - uid: 10659 components: - type: Transform @@ -76866,11 +77053,6 @@ entities: - type: Transform pos: 16.5,-27.5 parent: 4812 - - uid: 6224 - components: - - type: Transform - pos: 16.5,-23.5 - parent: 4812 - uid: 6225 components: - type: Transform @@ -78066,25 +78248,40 @@ entities: - type: DeviceLinkSource linkedPorts: 3013: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3014: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3033: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3028: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3029: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 3188 components: - type: Transform @@ -78095,25 +78292,40 @@ entities: - type: DeviceLinkSource linkedPorts: 2863: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3043: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 3046: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2765: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2771: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 11245 components: - type: Transform @@ -78122,13 +78334,19 @@ entities: - type: DeviceLinkSource linkedPorts: 11235: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11244: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 12980 components: - type: Transform @@ -78137,45 +78355,75 @@ entities: - type: DeviceLinkSource linkedPorts: 2886: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 2896: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 2890: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 3769: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 3434: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 13135: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 13282: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 13283: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 13289: - - Left: Reverse - - Right: Forward - - Middle: Off + - - Left + - Reverse + - - Right + - Forward + - - Middle + - Off 13290: - - Middle: Off - - Right: Reverse - - Left: Forward + - - Middle + - Off + - - Right + - Reverse + - - Left + - Forward - proto: UniformPrinter entities: - uid: 2513 @@ -78301,13 +78549,6 @@ entities: parent: 4812 - proto: VendingMachineCigs entities: - - uid: 917 - components: - - type: MetaData - name: cigarette machine - - type: Transform - pos: -6.5,9.5 - parent: 4812 - uid: 2672 components: - type: MetaData @@ -78353,6 +78594,11 @@ entities: - type: Transform pos: -27.5,8.5 parent: 4812 + - uid: 13940 + components: + - type: Transform + pos: -5.5,10.5 + parent: 4812 - proto: VendingMachineClothing entities: - uid: 10850 @@ -87474,11 +87720,6 @@ entities: - type: Transform pos: -39.5,10.5 parent: 4812 - - uid: 10759 - components: - - type: Transform - pos: -38.5,-5.5 - parent: 4812 - uid: 13496 components: - type: Transform diff --git a/Resources/Maps/packed.yml b/Resources/Maps/packed.yml index 769a5bcc78..21316998bb 100644 --- a/Resources/Maps/packed.yml +++ b/Resources/Maps/packed.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 247.2.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/07/2025 19:06:04 - entityCount: 15478 + time: 04/19/2025 11:10:37 + entityCount: 15485 maps: - 126 grids: @@ -8274,7 +8274,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4392: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalEngineeringLocked entities: - uid: 173 @@ -8287,7 +8288,8 @@ entities: - type: DeviceLinkSource linkedPorts: 225: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 226 components: - type: Transform @@ -8303,7 +8305,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2128: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2128 components: - type: Transform @@ -8314,7 +8317,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1902: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4392 components: - type: Transform @@ -8325,7 +8329,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4391: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12931 components: - type: Transform @@ -8336,7 +8341,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12932: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 12932 components: - type: Transform @@ -8347,7 +8353,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12931: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 88 @@ -8439,7 +8446,8 @@ entities: - type: DeviceLinkSource linkedPorts: 975: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 975 components: - type: Transform @@ -8450,7 +8458,8 @@ entities: - type: DeviceLinkSource linkedPorts: 974: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 225 @@ -8464,7 +8473,8 @@ entities: - type: DeviceLinkSource linkedPorts: 173: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 662 components: - type: Transform @@ -8488,7 +8498,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13780: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4556 components: - type: Transform @@ -8500,7 +8511,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4517: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8930 components: - type: Transform @@ -8511,7 +8523,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2333: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14224 components: - type: Transform @@ -8522,7 +8535,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14221: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 13727 @@ -8644,7 +8658,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1370: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1370 components: - type: Transform @@ -8655,7 +8670,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1369: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 2333 components: - type: Transform @@ -8666,7 +8682,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8930: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 4517 components: - type: Transform @@ -8677,7 +8694,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4556: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7759 components: - type: Transform @@ -8688,7 +8706,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13556: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8728 components: - type: Transform @@ -8699,7 +8718,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10751: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10751 components: - type: Transform @@ -8710,7 +8730,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8728: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13556 components: - type: Transform @@ -8721,7 +8742,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7759: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13780 components: - type: Transform @@ -8732,7 +8754,8 @@ entities: - type: DeviceLinkSource linkedPorts: 941: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 14221 components: - type: Transform @@ -8743,7 +8766,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14224: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockFreezer entities: - uid: 10 @@ -9610,7 +9634,7 @@ entities: pos: 44.5,30.5 parent: 2 - type: Door - secondsUntilStateChange: -2424.868 + secondsUntilStateChange: -3771.7566 state: Opening - type: DeviceLinkSource lastSignals: @@ -12120,11 +12144,6 @@ entities: parent: 2 - proto: BoxFolderBlack entities: - - uid: 10293 - components: - - type: Transform - pos: 19.70301,-2.360692 - parent: 2 - uid: 12101 components: - type: Transform @@ -12137,11 +12156,6 @@ entities: - type: Transform pos: 20.522104,32.67386 parent: 2 - - uid: 10290 - components: - - type: Transform - pos: 19.281136,-2.391942 - parent: 2 - uid: 11892 components: - type: Transform @@ -12178,11 +12192,6 @@ entities: - type: Transform pos: 20.53773,30.345732 parent: 2 - - uid: 10291 - components: - - type: Transform - pos: 19.374886,-2.470067 - parent: 2 - uid: 11890 components: - type: Transform @@ -12212,11 +12221,6 @@ entities: - type: Transform pos: 43.630394,20.021849 parent: 2 - - uid: 10292 - components: - - type: Transform - pos: 19.48426,-2.579442 - parent: 2 - uid: 14766 components: - type: Transform @@ -12312,7 +12316,7 @@ entities: - uid: 12244 components: - type: Transform - pos: 16.370987,-5.343148 + pos: 16.347303,-5.341838 parent: 2 - uid: 12269 components: @@ -12324,7 +12328,7 @@ entities: - uid: 10294 components: - type: Transform - pos: 16.51551,-5.391942 + pos: 16.57045,-5.442256 parent: 2 - proto: BriefcaseBrownFilled entities: @@ -12348,9 +12352,12 @@ entities: - type: DeviceLinkSource linkedPorts: 2258: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - uid: 7718 components: - type: Transform @@ -12359,9 +12366,12 @@ entities: - type: DeviceLinkSource linkedPorts: 2259: - - Start: Close - - Timer: AutoClose - - Timer: Open + - - Start + - Close + - - Timer + - AutoClose + - - Timer + - Open - proto: Brutepack entities: - uid: 5712 @@ -38736,12 +38746,12 @@ entities: - uid: 6793 components: - type: Transform - pos: 60.359756,25.627806 + pos: 53.3757,25.459305 parent: 2 - - uid: 11827 + - uid: 10291 components: - type: Transform - pos: 60.359756,25.45593 + pos: 53.3757,25.646805 parent: 2 - uid: 12167 components: @@ -39047,7 +39057,7 @@ entities: - uid: 5343 components: - type: Transform - pos: 60.54431,25.642796 + pos: 53.65695,25.740555 parent: 2 - uid: 10799 components: @@ -39651,7 +39661,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8666: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 15222 @@ -39704,6 +39715,44 @@ entities: - type: Transform pos: 7.5,19.5 parent: 2 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 15480 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 19.5,-36.5 + parent: 2 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 10276 + components: + - type: Transform + pos: 71.5,8.5 + parent: 2 +- proto: ComputerCargoOrdersScience + entities: + - uid: 12164 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 57.5,17.5 + parent: 2 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 10290 + components: + - type: Transform + pos: 35.5,28.5 + parent: 2 +- proto: ComputerCargoOrdersService + entities: + - uid: 6619 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: 32.5,-7.5 + parent: 2 - proto: ComputerCargoShuttle entities: - uid: 14770 @@ -39790,6 +39839,13 @@ entities: - type: Transform pos: 45.5,25.5 parent: 2 +- proto: ComputerFundingAllocation + entities: + - uid: 10270 + components: + - type: Transform + pos: 19.5,-2.5 + parent: 2 - proto: ComputerId entities: - uid: 401 @@ -40486,6 +40542,46 @@ entities: containers: - EntityStorageComponent - entity_storage +- proto: CrateLockBoxEngineering + entities: + - uid: 15489 + components: + - type: Transform + pos: 22.5,-25.5 + parent: 2 +- proto: CrateLockBoxMedical + entities: + - uid: 15486 + components: + - type: Transform + pos: 79.5,1.5 + parent: 2 +- proto: CrateLockBoxScience + entities: + - uid: 15487 + components: + - type: Transform + pos: 58.5,8.5 + parent: 2 +- proto: CrateLockBoxSecurity + entities: + - uid: 15488 + components: + - type: Transform + pos: 32.5,19.5 + parent: 2 +- proto: CrateLockBoxService + entities: + - uid: 15484 + components: + - type: Transform + pos: 48.5,-13.5 + parent: 2 + - uid: 15485 + components: + - type: Transform + pos: 57.5,-18.5 + parent: 2 - proto: CrateMaterialSteel entities: - uid: 5687 @@ -40669,7 +40765,7 @@ entities: - uid: 2153 components: - type: Transform - pos: 38.46774,19.5811 + pos: 38.497105,19.578838 parent: 2 - proto: CryogenicSleepUnit entities: @@ -45082,15 +45178,20 @@ entities: parent: 2 - proto: filingCabinetRandom entities: + - uid: 4017 + components: + - type: Transform + pos: 15.5,-5.5 + parent: 2 - uid: 7834 components: - type: Transform pos: 41.5,19.5 parent: 2 - - uid: 10276 + - uid: 15479 components: - type: Transform - pos: 15.5,-5.5 + pos: 35.5,45.5 parent: 2 - proto: filingCabinetTallRandom entities: @@ -47517,6 +47618,9 @@ entities: - type: Transform pos: -0.0010213852,-26.399889 parent: 2 + - type: CollisionWake + enabled: False + - type: Conveyed - proto: FoodMeat entities: - uid: 566 @@ -47583,6 +47687,9 @@ entities: - type: Transform pos: -0.9697714,-25.884264 parent: 2 + - type: CollisionWake + enabled: False + - type: Conveyed - proto: FoodPoppy entities: - uid: 12099 @@ -47618,6 +47725,9 @@ entities: - type: Transform pos: -1.0166464,-26.540514 parent: 2 + - type: CollisionWake + enabled: False + - type: Conveyed - uid: 5887 components: - type: Transform @@ -68765,9 +68875,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12890: - - Pressed: Toggle + - - Pressed + - Toggle 12891: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8692 components: - type: Transform @@ -68777,7 +68889,8 @@ entities: - type: DeviceLinkSource linkedPorts: 55: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 12355 components: - type: Transform @@ -68787,7 +68900,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4257: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15242 components: - type: Transform @@ -68796,9 +68910,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12891: - - Pressed: Toggle + - - Pressed + - Toggle 12890: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonChiefEngineer entities: - uid: 6118 @@ -68809,11 +68925,14 @@ entities: - type: DeviceLinkSource linkedPorts: 13490: - - Pressed: Toggle + - - Pressed + - Toggle 13489: - - Pressed: Toggle + - - Pressed + - Toggle 13488: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13470 components: - type: Transform @@ -68822,17 +68941,23 @@ entities: - type: DeviceLinkSource linkedPorts: 13478: - - Pressed: Toggle + - - Pressed + - Toggle 13477: - - Pressed: Toggle + - - Pressed + - Toggle 13476: - - Pressed: Toggle + - - Pressed + - Toggle 13480: - - Pressed: Toggle + - - Pressed + - Toggle 13481: - - Pressed: Toggle + - - Pressed + - Toggle 13482: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonCommand entities: - uid: 15104 @@ -68844,35 +68969,50 @@ entities: - type: DeviceLinkSource linkedPorts: 15098: - - Pressed: Toggle + - - Pressed + - Toggle 15096: - - Pressed: Toggle + - - Pressed + - Toggle 15095: - - Pressed: Toggle + - - Pressed + - Toggle 15094: - - Pressed: Toggle + - - Pressed + - Toggle 15093: - - Pressed: Toggle + - - Pressed + - Toggle 15092: - - Pressed: Toggle + - - Pressed + - Toggle 15091: - - Pressed: Toggle + - - Pressed + - Toggle 15097: - - Pressed: Toggle + - - Pressed + - Toggle 15090: - - Pressed: Toggle + - - Pressed + - Toggle 15089: - - Pressed: Toggle + - - Pressed + - Toggle 15088: - - Pressed: Toggle + - - Pressed + - Toggle 15099: - - Pressed: Toggle + - - Pressed + - Toggle 15100: - - Pressed: Toggle + - - Pressed + - Toggle 15101: - - Pressed: Toggle + - - Pressed + - Toggle 15102: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonEngineering entities: - uid: 15398 @@ -68884,9 +69024,11 @@ entities: - type: DeviceLinkSource linkedPorts: 924: - - Pressed: Toggle + - - Pressed + - Toggle 803: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15399 components: - type: Transform @@ -68896,9 +69038,11 @@ entities: - type: DeviceLinkSource linkedPorts: 803: - - Pressed: Toggle + - - Pressed + - Toggle 924: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15400 components: - type: Transform @@ -68908,7 +69052,8 @@ entities: - type: DeviceLinkSource linkedPorts: 779: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonMedical entities: - uid: 15129 @@ -68920,9 +69065,11 @@ entities: - type: DeviceLinkSource linkedPorts: 599: - - Pressed: Open + - - Pressed + - Open 600: - - Pressed: Open + - - Pressed + - Open - proto: LockableButtonResearch entities: - uid: 1557 @@ -68934,9 +69081,11 @@ entities: - type: DeviceLinkSource linkedPorts: 11022: - - Pressed: Toggle + - - Pressed + - Toggle 8248: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonSalvage entities: - uid: 15284 @@ -68948,7 +69097,8 @@ entities: - type: DeviceLinkSource linkedPorts: 895: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockableButtonService entities: - uid: 15276 @@ -68960,9 +69110,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12988: - - Pressed: Toggle + - - Pressed + - Toggle 13443: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockerAtmosphericsFilledHardsuit entities: - uid: 1458 @@ -69346,6 +69498,13 @@ entities: - type: Transform pos: 52.5,21.5 parent: 2 +- proto: MachineMaterialSilo + entities: + - uid: 5309 + components: + - type: Transform + pos: 60.5,25.5 + parent: 2 - proto: MachineParticleAcceleratorEmitterForeCircuitboard entities: - uid: 5610 @@ -69514,7 +69673,7 @@ entities: - uid: 9369 components: - type: Transform - pos: 71.5,8.5 + pos: 73.5,8.5 parent: 2 - proto: MedkitAdvancedFilled entities: @@ -70143,7 +70302,7 @@ entities: - uid: 11975 components: - type: Transform - pos: 18.920185,-2.2376757 + pos: 18.293547,-2.8643441 parent: 2 - uid: 11976 components: @@ -70907,13 +71066,6 @@ entities: - type: Transform pos: 30.5,12.5 parent: 2 -- proto: PottedPlant1 - entities: - - uid: 6619 - components: - - type: Transform - pos: 32.48526,-7.8502135 - parent: 2 - proto: PottedPlant19 entities: - uid: 2615 @@ -71041,11 +71193,6 @@ entities: - type: ContainerContainer containers: stash: !type:ContainerSlot {} - - uid: 12164 - components: - - type: Transform - pos: 73.5,8.5 - parent: 2 - uid: 12165 components: - type: Transform @@ -71091,6 +71238,16 @@ entities: - type: Transform pos: 15.5,22.5 parent: 2 + - uid: 15481 + components: + - type: Transform + pos: 74.5,8.5 + parent: 2 + - uid: 15483 + components: + - type: Transform + pos: 31.5,-2.5 + parent: 2 - proto: PottedPlantRD entities: - uid: 10662 @@ -73635,7 +73792,7 @@ entities: - uid: 5342 components: - type: Transform - pos: 60.5,25.5 + pos: 53.5,25.5 parent: 2 - uid: 5375 components: @@ -76911,9 +77068,11 @@ entities: - type: DeviceLinkSource linkedPorts: 8248: - - Pressed: Toggle + - - Pressed + - Toggle 11022: - - Pressed: Toggle + - - Pressed + - Toggle - proto: ResearchAndDevelopmentServer entities: - uid: 8233 @@ -77892,7 +78051,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8103: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 1471 components: - type: MetaData @@ -77903,11 +78063,14 @@ entities: - type: DeviceLinkSource linkedPorts: 265: - - Pressed: Toggle + - - Pressed + - Toggle 267: - - Pressed: Toggle + - - Pressed + - Toggle 270: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 7809 components: - type: Transform @@ -77917,7 +78080,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8067: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13002 components: - type: Transform @@ -77926,11 +78090,14 @@ entities: - type: DeviceLinkSource linkedPorts: 2090: - - Pressed: Toggle + - - Pressed + - Toggle 12839: - - Pressed: Toggle + - - Pressed + - Toggle 12381: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14913 components: - type: Transform @@ -77940,11 +78107,14 @@ entities: - type: DeviceLinkSource linkedPorts: 14912: - - Pressed: Toggle + - - Pressed + - Toggle 14910: - - Pressed: Toggle + - - Pressed + - Toggle 14911: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignalButtonDirectional entities: - uid: 543 @@ -77958,15 +78128,20 @@ entities: - type: DeviceLinkSource linkedPorts: 419: - - Pressed: Toggle + - - Pressed + - Toggle 1658: - - Pressed: Toggle + - - Pressed + - Toggle 6512: - - Pressed: Toggle + - - Pressed + - Toggle 913: - - Pressed: Toggle + - - Pressed + - Toggle 1154: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 3993 components: - type: Transform @@ -77976,23 +78151,32 @@ entities: - type: DeviceLinkSource linkedPorts: 4636: - - Pressed: Toggle + - - Pressed + - Toggle 4635: - - Pressed: Toggle + - - Pressed + - Toggle 3972: - - Pressed: Toggle + - - Pressed + - Toggle 3241: - - Pressed: Toggle + - - Pressed + - Toggle 3992: - - Pressed: Toggle + - - Pressed + - Toggle 7808: - - Pressed: Toggle + - - Pressed + - Toggle 8031: - - Pressed: Toggle + - - Pressed + - Toggle 10999: - - Pressed: Toggle + - - Pressed + - Toggle 10959: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11001 components: - type: Transform @@ -78002,13 +78186,17 @@ entities: - type: DeviceLinkSource linkedPorts: 449: - - Pressed: Toggle + - - Pressed + - Toggle 2044: - - Pressed: Toggle + - - Pressed + - Toggle 780: - - Pressed: Toggle + - - Pressed + - Toggle 4502: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 11019 components: - type: Transform @@ -78018,9 +78206,11 @@ entities: - type: DeviceLinkSource linkedPorts: 15371: - - Pressed: Toggle + - - Pressed + - Toggle 15370: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 13655 components: - type: MetaData @@ -78032,23 +78222,32 @@ entities: - type: DeviceLinkSource linkedPorts: 13650: - - Pressed: Toggle + - - Pressed + - Toggle 13651: - - Pressed: Toggle + - - Pressed + - Toggle 13652: - - Pressed: Toggle + - - Pressed + - Toggle 13644: - - Pressed: Toggle + - - Pressed + - Toggle 13645: - - Pressed: Toggle + - - Pressed + - Toggle 13646: - - Pressed: Toggle + - - Pressed + - Toggle 13647: - - Pressed: Toggle + - - Pressed + - Toggle 13648: - - Pressed: Toggle + - - Pressed + - Toggle 13649: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14566 components: - type: Transform @@ -78057,9 +78256,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5351: - - Pressed: Toggle + - - Pressed + - Toggle 5361: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14742 components: - type: Transform @@ -78068,9 +78269,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12825: - - Pressed: Toggle + - - Pressed + - Toggle 13183: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 14924 components: - type: Transform @@ -78080,9 +78283,11 @@ entities: - type: DeviceLinkSource linkedPorts: 12826: - - Pressed: Toggle + - - Pressed + - Toggle 12824: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15124 components: - type: Transform @@ -78092,15 +78297,20 @@ entities: - type: DeviceLinkSource linkedPorts: 6937: - - Pressed: Toggle + - - Pressed + - Toggle 15119: - - Pressed: Toggle + - - Pressed + - Toggle 15120: - - Pressed: Toggle + - - Pressed + - Toggle 15122: - - Pressed: Toggle + - - Pressed + - Toggle 15121: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15127 components: - type: Transform @@ -78110,7 +78320,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13915: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 15286 components: - type: Transform @@ -78119,7 +78330,8 @@ entities: - type: DeviceLinkSource linkedPorts: 895: - - Pressed: Toggle + - - Pressed + - Toggle - proto: SignAnomaly entities: - uid: 5066 @@ -82757,11 +82969,6 @@ entities: rot: 3.141592653589793 rad pos: 12.5,20.5 parent: 2 - - uid: 4017 - components: - - type: Transform - pos: 57.5,17.5 - parent: 2 - uid: 4117 components: - type: Transform @@ -82875,11 +83082,6 @@ entities: - type: Transform pos: 54.5,17.5 parent: 2 - - uid: 5309 - components: - - type: Transform - pos: 55.5,20.5 - parent: 2 - uid: 5310 components: - type: Transform @@ -83065,11 +83267,6 @@ entities: - type: Transform pos: 18.5,-2.5 parent: 2 - - uid: 10270 - components: - - type: Transform - pos: 19.5,-2.5 - parent: 2 - uid: 10277 components: - type: Transform @@ -84447,6 +84644,7 @@ entities: - type: Transform pos: 0.13960361,-25.931139 parent: 2 + - type: Conveyed - uid: 9603 components: - type: Transform @@ -84469,33 +84667,54 @@ entities: - type: DeviceLinkSource linkedPorts: 829: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 967: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 944: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 450: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 999: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14660: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12384: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 5856 components: - type: Transform @@ -84504,53 +84723,89 @@ entities: - type: DeviceLinkSource linkedPorts: 5842: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5843: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5844: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5845: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5846: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5847: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5850: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5851: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5852: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5853: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5854: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5855: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 5857 components: - type: Transform @@ -84559,9 +84814,12 @@ entities: - type: DeviceLinkSource linkedPorts: 5875: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close - uid: 8101 components: - type: Transform @@ -84570,25 +84828,40 @@ entities: - type: DeviceLinkSource linkedPorts: 2037: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2041: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2042: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2064: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 13731: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 8446 components: - type: Transform @@ -84597,25 +84870,40 @@ entities: - type: DeviceLinkSource linkedPorts: 2040: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2067: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2051: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2066: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 8239: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - proto: UniformPrinter entities: - uid: 10283 diff --git a/Resources/Maps/plasma.yml b/Resources/Maps/plasma.yml index daf884241b..e1c2da78be 100644 --- a/Resources/Maps/plasma.yml +++ b/Resources/Maps/plasma.yml @@ -1,11 +1,11 @@ meta: format: 7 category: Map - engineVersion: 248.0.0 + engineVersion: 254.1.0 forkId: "" forkVersion: "" - time: 03/09/2025 09:02:52 - entityCount: 26218 + time: 04/19/2025 08:50:04 + entityCount: 26229 maps: - 1 grids: @@ -11768,9 +11768,11 @@ entities: - type: DeviceLinkSource linkedPorts: 387: - - DoorStatus: Close + - - DoorStatus + - Close 386: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9038 components: - type: Transform @@ -12047,7 +12049,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10197: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 433 components: - type: Transform @@ -12081,7 +12084,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23296: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5964 components: - type: Transform @@ -12118,7 +12122,8 @@ entities: - type: DeviceLinkSource linkedPorts: 310: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17595 components: - type: Transform @@ -12147,7 +12152,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5899: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockEngineeringLocked entities: - uid: 149 @@ -12232,7 +12238,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7384: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 18032 components: - type: Transform @@ -12250,7 +12257,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17502: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlass entities: - uid: 115 @@ -12264,7 +12272,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8648: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 332 components: - type: Transform @@ -12276,7 +12285,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8647: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 1771 components: - type: Transform @@ -12288,7 +12298,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23005: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8300 components: - type: Transform @@ -12299,7 +12310,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8719: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8301 components: - type: Transform @@ -12310,7 +12322,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8721: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8713 components: - type: Transform @@ -12322,9 +12335,11 @@ entities: - type: DeviceLinkSource linkedPorts: 8742: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 8741: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9280 components: - type: Transform @@ -12336,9 +12351,11 @@ entities: - type: DeviceLinkSource linkedPorts: 8653: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 8652: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10081 components: - type: Transform @@ -12349,7 +12366,8 @@ entities: - type: DeviceLinkSource linkedPorts: 514: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassAtmosphericsLocked entities: - uid: 608 @@ -12363,7 +12381,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5533: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 5533 components: - type: Transform @@ -12375,7 +12394,8 @@ entities: - type: DeviceLinkSource linkedPorts: 608: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8598 components: - type: Transform @@ -12398,7 +12418,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8718: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10565 components: - type: Transform @@ -12410,7 +12431,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10563: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10566 components: - type: Transform @@ -12422,7 +12444,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10564: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassCommandLocked entities: - uid: 1880 @@ -12435,7 +12458,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8722: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24574 components: - type: Transform @@ -12449,7 +12473,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24883: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24883 components: - type: Transform @@ -12463,7 +12488,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24574: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassEngineeringLocked entities: - uid: 6122 @@ -12476,9 +12502,11 @@ entities: - type: DeviceLinkSource linkedPorts: 6124: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt 6123: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6123 components: - type: Transform @@ -12489,7 +12517,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6122: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6124 components: - type: Transform @@ -12500,7 +12529,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6122: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17502 components: - type: Transform @@ -12512,7 +12542,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13904: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21310 components: - type: Transform @@ -12523,7 +12554,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21322: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 21322 components: - type: Transform @@ -12534,7 +12566,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21310: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassLocked entities: - uid: 5606 @@ -12561,7 +12594,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7378: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9344 components: - type: Transform @@ -12572,7 +12606,8 @@ entities: - type: DeviceLinkSource linkedPorts: 11057: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9652 components: - type: Transform @@ -12583,7 +12618,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10487: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9984 components: - type: Transform @@ -12594,7 +12630,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9985: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 9985 components: - type: Transform @@ -12605,7 +12642,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9984: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10185 components: - type: Transform @@ -12616,7 +12654,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10184: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 11057 components: - type: Transform @@ -12627,7 +12666,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9344: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 17519 components: - type: Transform @@ -12647,7 +12687,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1771: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24228 components: - type: Transform @@ -12658,7 +12699,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24227: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockExternalGlassShuttleArrivals entities: - uid: 8647 @@ -12670,8 +12712,10 @@ entities: - type: DeviceLinkSource linkedPorts: 26239: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 8648 @@ -12683,8 +12727,10 @@ entities: - type: DeviceLinkSource linkedPorts: 16903: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - proto: AirlockExternalGlassShuttleEmergencyLocked @@ -12698,8 +12744,10 @@ entities: - type: DeviceLinkSource linkedPorts: 8950: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 8719 @@ -12711,8 +12759,10 @@ entities: - type: DeviceLinkSource linkedPorts: 13489: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 8721 @@ -12724,8 +12774,10 @@ entities: - type: DeviceLinkSource linkedPorts: 26238: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 8722 @@ -12737,8 +12789,10 @@ entities: - type: DeviceLinkSource linkedPorts: 26237: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - proto: AirlockExternalGlassShuttleEscape @@ -12783,8 +12837,10 @@ entities: - type: DeviceLinkSource linkedPorts: 24217: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 1 - proto: AirlockExternalLocked @@ -12799,7 +12855,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10185: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 10487 components: - type: Transform @@ -12810,7 +12867,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9652: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 24227 components: - type: Transform @@ -12821,7 +12879,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24228: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - proto: AirlockFreezerHydroponicsLocked entities: - uid: 3410 @@ -12849,7 +12908,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1936: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 387 components: - type: Transform @@ -12861,7 +12921,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1936: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 460 components: - type: Transform @@ -13133,8 +13194,10 @@ entities: - type: DeviceLinkSource linkedPorts: 19502: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 8653 @@ -13146,8 +13209,10 @@ entities: - type: DeviceLinkSource linkedPorts: 19503: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 8741 @@ -13159,8 +13224,10 @@ entities: - type: DeviceLinkSource linkedPorts: 22372: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 8742 @@ -13172,8 +13239,10 @@ entities: - type: DeviceLinkSource linkedPorts: 22371: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 10563 @@ -13185,8 +13254,10 @@ entities: - type: DeviceLinkSource linkedPorts: 8961: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 10564 @@ -13198,8 +13269,10 @@ entities: - type: DeviceLinkSource linkedPorts: 12421: - - DoorStatus: InputA - - DockStatus: InputB + - - DoorStatus + - InputA + - - DockStatus + - InputB - type: DeviceLinkSink invokeCounter: 2 - uid: 24212 @@ -13583,9 +13656,11 @@ entities: - type: DeviceLinkSource linkedPorts: 9820: - - DoorStatus: Close + - - DoorStatus + - Close 23603: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9820 components: - type: Transform @@ -13596,9 +13671,11 @@ entities: - type: DeviceLinkSource linkedPorts: 9819: - - DoorStatus: Close + - - DoorStatus + - Close 9821: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 9821 components: - type: Transform @@ -13609,7 +13686,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9820: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 10142 components: - type: Transform @@ -13845,7 +13923,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9819: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 23999 components: - type: Transform @@ -14002,7 +14081,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7455: - - DoorStatus: Close + - - DoorStatus + - Close - proto: AirlockMaintServiceLocked entities: - uid: 1024 @@ -14234,7 +14314,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7859: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7857 components: - type: Transform @@ -14246,7 +14327,8 @@ entities: - type: DeviceLinkSource linkedPorts: 13624: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 7859 components: - type: Transform @@ -14258,7 +14340,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7848: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8080 components: - type: Transform @@ -14275,7 +14358,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7857: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 13827 components: - type: Transform @@ -14324,7 +14408,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5609: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6604 components: - type: Transform @@ -14336,7 +14421,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6487: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 6605 components: - type: Transform @@ -14348,7 +14434,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6545: - - DoorStatus: DoorBolt + - - DoorStatus + - DoorBolt - uid: 8247 components: - type: Transform @@ -14403,7 +14490,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19605: - - DoorStatus: Close + - - DoorStatus + - Close - proto: AirlockServiceLocked entities: - uid: 1968 @@ -24547,7 +24635,8 @@ entities: - type: DeviceLinkSource linkedPorts: 25870: - - DoorStatus: Input + - - DoorStatus + - Input - uid: 4923 components: - type: Transform @@ -25210,7 +25299,7 @@ entities: - uid: 6835 components: - type: Transform - pos: -80.4528,-27.475985 + pos: -80.98839,-25.448616 parent: 2 - uid: 16179 components: @@ -25327,9 +25416,12 @@ entities: - type: DeviceLinkSource linkedPorts: 8661: - - Timer: Open - - Timer: AutoClose - - Start: Close + - - Timer + - Open + - - Timer + - AutoClose + - - Start + - Close - uid: 14643 components: - type: Transform @@ -25339,9 +25431,12 @@ entities: - type: DeviceLinkSource linkedPorts: 8660: - - Timer: Open - - Timer: AutoClose - - Start: Close + - - Timer + - Open + - - Timer + - AutoClose + - - Start + - Close - uid: 15254 components: - type: Transform @@ -25351,9 +25446,12 @@ entities: - type: DeviceLinkSource linkedPorts: 357: - - Start: Close - - Timer: Open - - Timer: AutoClose + - - Start + - Close + - - Timer + - Open + - - Timer + - AutoClose - uid: 22692 components: - type: Transform @@ -25363,9 +25461,12 @@ entities: - type: DeviceLinkSource linkedPorts: 512: - - Start: Close - - Timer: Open - - Timer: AutoClose + - - Start + - Close + - - Timer + - Open + - - Timer + - AutoClose - uid: 22696 components: - type: Transform @@ -25375,9 +25476,12 @@ entities: - type: DeviceLinkSource linkedPorts: 915: - - Start: Close - - Timer: Open - - Timer: AutoClose + - - Start + - Close + - - Timer + - Open + - - Timer + - AutoClose - proto: Brutepack entities: - uid: 20642 @@ -63580,6 +63684,23 @@ entities: - type: Transform pos: -39.5,-25.5 parent: 2 +- proto: ChemistryBottleEpinephrine + entities: + - uid: 2612 + components: + - type: Transform + pos: -60.347107,-3.8663821 + parent: 2 + - uid: 6479 + components: + - type: Transform + pos: -36.623154,-30.40255 + parent: 2 + - uid: 6480 + components: + - type: Transform + pos: -36.404404,-30.261925 + parent: 2 - proto: ChemistryHotplate entities: - uid: 3949 @@ -64897,7 +65018,8 @@ entities: range: 7 linkedPorts: 14168: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - uid: 7251 components: - type: Transform @@ -64907,7 +65029,8 @@ entities: range: 7 linkedPorts: 15401: - - ArtifactAnalyzerSender: ArtifactAnalyzerReceiver + - - ArtifactAnalyzerSender + - ArtifactAnalyzerReceiver - proto: ComputerAtmosMonitoring entities: - uid: 5571 @@ -65013,6 +65136,45 @@ entities: rot: -1.5707963267948966 rad pos: -98.5,13.5 parent: 2 +- proto: ComputerCargoOrdersEngineering + entities: + - uid: 22274 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -112.5,-18.5 + parent: 2 +- proto: ComputerCargoOrdersMedical + entities: + - uid: 19332 + components: + - type: Transform + rot: 3.141592653589793 rad + pos: -21.5,-46.5 + parent: 2 +- proto: ComputerCargoOrdersScience + entities: + - uid: 3012 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -112.5,-39.5 + parent: 2 +- proto: ComputerCargoOrdersSecurity + entities: + - uid: 12908 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -80.5,-27.5 + parent: 2 +- proto: ComputerCargoOrdersService + entities: + - uid: 24116 + components: + - type: Transform + pos: -72.5,-24.5 + parent: 2 - proto: ComputerComms entities: - uid: 2690 @@ -65140,6 +65302,14 @@ entities: rot: 1.5707963267948966 rad pos: -20.5,-25.5 parent: 2 +- proto: ComputerFundingAllocation + entities: + - uid: 22992 + components: + - type: Transform + rot: 1.5707963267948966 rad + pos: -53.5,-7.5 + parent: 2 - proto: ComputerId entities: - uid: 2701 @@ -65814,7 +65984,7 @@ entities: - uid: 11064 components: - type: Transform - rot: 1.5707963267948966 rad + rot: -1.5707963267948966 rad pos: -97.5,20.5 parent: 2 - uid: 11082 @@ -66289,11 +66459,6 @@ entities: - type: Transform pos: -87.5,12.5 parent: 2 - - uid: 12908 - components: - - type: Transform - pos: -116.5,-38.5 - parent: 2 - uid: 15970 components: - type: Transform @@ -66612,6 +66777,41 @@ entities: - type: Transform pos: -134.5,15.5 parent: 2 +- proto: CrateLockBoxEngineering + entities: + - uid: 23199 + components: + - type: Transform + pos: -118.5,-24.5 + parent: 2 +- proto: CrateLockBoxMedical + entities: + - uid: 23764 + components: + - type: Transform + pos: -17.5,-42.5 + parent: 2 +- proto: CrateLockBoxScience + entities: + - uid: 23593 + components: + - type: Transform + pos: -114.5,-40.5 + parent: 2 +- proto: CrateLockBoxSecurity + entities: + - uid: 23594 + components: + - type: Transform + pos: -88.5,-20.5 + parent: 2 +- proto: CrateLockBoxService + entities: + - uid: 23710 + components: + - type: Transform + pos: -45.5,-23.5 + parent: 2 - proto: CrateMaterialGlass entities: - uid: 12923 @@ -66664,10 +66864,10 @@ entities: showEnts: False occludes: True ent: null - - uid: 12921 + - uid: 2929 components: - type: Transform - pos: -112.5,-39.5 + pos: -116.5,-38.5 parent: 2 - proto: CrateMaterialTextiles entities: @@ -67574,6 +67774,11 @@ entities: - type: Transform pos: -92.52145,-24.442335 parent: 2 + - uid: 22354 + components: + - type: Transform + pos: -31.56386,-19.092993 + parent: 2 - uid: 22985 components: - type: Transform @@ -76601,8 +76806,10 @@ entities: - type: DeviceLinkSource linkedPorts: 22440: - - OutputHigh: On - - OutputLow: Off + - - OutputHigh + - On + - - OutputLow + - Off - type: Physics canCollide: False bodyType: Static @@ -76741,23 +76948,6 @@ entities: rot: 3.141592653589793 rad pos: -112.5,34.5 parent: 2 -- proto: EpinephrineChemistryBottle - entities: - - uid: 2612 - components: - - type: Transform - pos: -60.347107,-3.8663821 - parent: 2 - - uid: 6479 - components: - - type: Transform - pos: -36.623154,-30.40255 - parent: 2 - - uid: 6480 - components: - - type: Transform - pos: -36.404404,-30.261925 - parent: 2 - proto: ExosuitFabricator entities: - uid: 20469 @@ -76897,16 +77087,6 @@ entities: parent: 2 - type: FaxMachine name: Reporter - - uid: 3012 - components: - - type: MetaData - name: long range fax machine - - type: Transform - pos: -53.5,-7.5 - parent: 2 - - type: FaxMachine - name: Head of Personel - - type: Label - uid: 4761 components: - type: Transform @@ -76960,6 +77140,13 @@ entities: - type: FaxMachine name: Warden - type: Label + - uid: 10749 + components: + - type: Transform + pos: -51.5,-7.5 + parent: 2 + - type: FaxMachine + name: Head of Personell - uid: 13583 components: - type: MetaData @@ -124369,7 +124556,7 @@ entities: parent: 2 - proto: HolopadCommandHop entities: - - uid: 24547 + - uid: 4117 components: - type: Transform pos: -51.5,-6.5 @@ -125093,12 +125280,6 @@ entities: parent: 2 - proto: IntercomCommand entities: - - uid: 1224 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -42.5,-66.5 - parent: 2 - uid: 23355 components: - type: Transform @@ -125107,6 +125288,12 @@ entities: parent: 2 - proto: IntercomCommon entities: + - uid: 1224 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -42.5,-66.5 + parent: 2 - uid: 6494 components: - type: Transform @@ -125671,7 +125858,8 @@ entities: - type: DeviceLinkSource linkedPorts: 668: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Plasma Storage Vent - type: NameModifier @@ -125686,7 +125874,8 @@ entities: - type: DeviceLinkSource linkedPorts: 669: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Burn Chamber Vent - type: NameModifier @@ -125702,7 +125891,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4662: - - Pressed: Trigger + - - Pressed + - Trigger - proto: LockableButtonEngineering entities: - uid: 5991 @@ -125716,11 +125906,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4923: - - Pressed: Toggle + - - Pressed + - Toggle 4922: - - Pressed: Toggle + - - Pressed + - Toggle 4924: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: EMERGENCY VENT - type: NameModifier @@ -125735,11 +125928,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4923: - - Pressed: Toggle + - - Pressed + - Toggle 4922: - - Pressed: Toggle + - - Pressed + - Toggle 4924: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: EMERGENCY VENT - type: NameModifier @@ -125755,7 +125951,8 @@ entities: - type: DeviceLinkSource linkedPorts: 20188: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 8824 components: - type: Transform @@ -125765,7 +125962,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8812: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - proto: LockableButtonMedical entities: - uid: 2458 @@ -125777,9 +125975,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5862: - - Pressed: Open + - - Pressed + - Open 5752: - - Pressed: Open + - - Pressed + - Open - uid: 2607 components: - type: MetaData @@ -125790,9 +125990,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3972: - - Pressed: Toggle + - - Pressed + - Toggle 3988: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Front Door - type: NameModifier @@ -125805,9 +126007,11 @@ entities: - type: DeviceLinkSource linkedPorts: 3972: - - Pressed: Toggle + - - Pressed + - Toggle 3988: - - Pressed: Toggle + - - Pressed + - Toggle - uid: 4192 components: - type: Transform @@ -125817,11 +126021,14 @@ entities: - type: DeviceLinkSource linkedPorts: 4190: - - Pressed: Toggle + - - Pressed + - Toggle 4191: - - Pressed: Toggle + - - Pressed + - Toggle 4189: - - Pressed: Toggle + - - Pressed + - Toggle - proto: LockerAtmosphericsFilled entities: - uid: 5383 @@ -125851,7 +126058,7 @@ entities: - type: Transform pos: -67.5,-24.5 parent: 2 - - uid: 10749 + - uid: 7428 components: - type: Transform pos: -68.5,-24.5 @@ -126396,7 +126603,8 @@ entities: - type: DeviceLinkSource linkedPorts: 9280: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126411,7 +126619,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8713: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126428,7 +126637,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1898: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126443,7 +126653,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10565: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126458,7 +126669,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10566: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126473,7 +126685,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8300: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126488,7 +126701,8 @@ entities: - type: DeviceLinkSource linkedPorts: 115: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126503,7 +126717,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17089: - - Output: InputA + - - Output + - InputA - type: Physics canCollide: False bodyType: Static @@ -126518,7 +126733,8 @@ entities: - type: DeviceLinkSource linkedPorts: 17089: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -126533,7 +126749,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22370: - - Output: InputA + - - Output + - InputA - type: Physics canCollide: False bodyType: Static @@ -126548,7 +126765,8 @@ entities: - type: DeviceLinkSource linkedPorts: 22370: - - Output: InputB + - - Output + - InputB - type: Physics canCollide: False bodyType: Static @@ -126563,7 +126781,8 @@ entities: - type: DeviceLinkSource linkedPorts: 10081: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126578,7 +126797,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1880: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126593,7 +126813,8 @@ entities: - type: DeviceLinkSource linkedPorts: 8301: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126608,7 +126829,8 @@ entities: - type: DeviceLinkSource linkedPorts: 332: - - Output: DoorBolt + - - Output + - DoorBolt - type: Physics canCollide: False bodyType: Static @@ -126781,6 +127003,13 @@ entities: - type: Transform pos: -110.5,36.5 parent: 2 +- proto: MachineMaterialSilo + entities: + - uid: 12921 + components: + - type: Transform + pos: -112.5,-38.5 + parent: 2 - proto: MagazinePistol entities: - uid: 4573 @@ -127030,12 +127259,12 @@ entities: - uid: 2102 components: - type: Transform - pos: -22.33516,-46.510864 + pos: -22.948994,-46.2582 parent: 2 - uid: 5832 components: - type: Transform - pos: -22.507034,-46.74524 + pos: -23.120869,-46.492577 parent: 2 - uid: 22878 components: @@ -127047,12 +127276,12 @@ entities: - uid: 2103 components: - type: Transform - pos: -22.96016,-46.49524 + pos: -23.464619,-46.180077 parent: 2 - uid: 2105 components: - type: Transform - pos: -23.14766,-46.729614 + pos: -23.667744,-46.47695 parent: 2 - proto: MedkitFilled entities: @@ -127064,12 +127293,12 @@ entities: - uid: 2495 components: - type: Transform - pos: -24.58516,-46.760864 + pos: -24.652119,-46.430077 parent: 2 - uid: 2498 components: - type: Transform - pos: -24.39766,-46.510864 + pos: -24.527119,-46.180077 parent: 2 - uid: 6463 components: @@ -127101,24 +127330,24 @@ entities: - uid: 2104 components: - type: Transform - pos: -23.850784,-46.792114 + pos: -24.152119,-46.461327 parent: 2 - uid: 6459 components: - type: Transform - pos: -23.67891,-46.573364 + pos: -24.011494,-46.211327 parent: 2 - proto: MedkitToxinFilled entities: - uid: 6460 components: - type: Transform - pos: -21.77266,-46.74524 + pos: -22.573994,-46.5082 parent: 2 - uid: 6461 components: - type: Transform - pos: -21.507034,-46.542114 + pos: -22.308369,-46.22695 parent: 2 - proto: Memorial entities: @@ -128175,13 +128404,6 @@ entities: - type: Transform pos: -19.5,-18.5 parent: 2 -- proto: PaperBin20 - entities: - - uid: 22274 - components: - - type: Transform - pos: -51.5,-7.5 - parent: 2 - proto: PaperBin5 entities: - uid: 6715 @@ -128488,6 +128710,13 @@ entities: - type: Transform pos: -60.456474,2.4886463 parent: 2 +- proto: PhoneInstrument + entities: + - uid: 22431 + components: + - type: Transform + pos: -60.930367,-1.4142666 + parent: 2 - proto: PianoInstrument entities: - uid: 15846 @@ -129720,6 +129949,11 @@ entities: - type: Transform pos: -30.5,-66.5 parent: 2 + - uid: 22991 + components: + - type: Transform + pos: -122.5,-50.5 + parent: 2 - uid: 24952 components: - type: Transform @@ -131470,6 +131704,12 @@ entities: rot: 1.5707963267948966 rad pos: -70.5,-31.5 parent: 2 + - uid: 24501 + components: + - type: Transform + rot: -1.5707963267948966 rad + pos: -71.5,-26.5 + parent: 2 - uid: 25360 components: - type: Transform @@ -132766,12 +133006,6 @@ entities: - type: Transform pos: -24.5,-9.5 parent: 2 - - uid: 23710 - components: - - type: Transform - rot: -1.5707963267948966 rad - pos: -80.5,-27.5 - parent: 2 - uid: 24408 components: - type: Transform @@ -133479,11 +133713,6 @@ entities: parent: 2 - proto: RandomArtifactSpawner entities: - - uid: 7428 - components: - - type: Transform - pos: -112.5,-38.5 - parent: 2 - uid: 19337 components: - type: Transform @@ -133494,6 +133723,11 @@ entities: - type: Transform pos: -89.5,19.5 parent: 2 + - uid: 24047 + components: + - type: Transform + pos: -114.5,-39.5 + parent: 2 - uid: 25697 components: - type: Transform @@ -136494,11 +136728,14 @@ entities: - type: DeviceLinkSource linkedPorts: 138: - - Pressed: Toggle + - - Pressed + - Toggle 3976: - - Pressed: Toggle + - - Pressed + - Toggle 132: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Paramedic Shutters - type: NameModifier @@ -136786,17 +137023,17 @@ entities: - uid: 22075 components: - type: Transform - pos: -111.06298,-18.491226 + pos: -110.842995,-18.42477 parent: 2 - uid: 22165 components: - type: Transform - pos: -111.06298,-18.491226 + pos: -110.76487,-18.42477 parent: 2 - uid: 22240 components: - type: Transform - pos: -111.06298,-18.491226 + pos: -110.686745,-18.409145 parent: 2 - uid: 25202 components: @@ -136881,7 +137118,7 @@ entities: - uid: 22256 components: - type: Transform - pos: -111.703606,-18.538101 + pos: -111.29612,-18.471645 parent: 2 - proto: SheetSteel entities: @@ -136933,17 +137170,17 @@ entities: - uid: 21889 components: - type: Transform - pos: -112.42362,-18.506851 + pos: -111.749245,-18.42477 parent: 2 - uid: 22097 components: - type: Transform - pos: -112.42362,-18.491226 + pos: -111.82737,-18.409145 parent: 2 - uid: 22114 components: - type: Transform - pos: -112.42362,-18.475601 + pos: -111.79612,-18.39352 parent: 2 - uid: 25203 components: @@ -137788,9 +138025,11 @@ entities: - type: DeviceLinkSource linkedPorts: 5666: - - Pressed: Trigger + - - Pressed + - Trigger 669: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Burn Chamber Vent - type: NameModifier @@ -137806,7 +138045,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5948: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Vent Chamber - type: NameModifier @@ -137822,9 +138062,11 @@ entities: - type: DeviceLinkSource linkedPorts: 1936: - - Pressed: Toggle + - - Pressed + - Toggle 385: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Open Doors - type: NameModifier @@ -137840,7 +138082,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3776: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 1521 components: - type: Transform @@ -137850,7 +138093,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3779: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 2591 components: - type: MetaData @@ -137861,7 +138105,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3300: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Space Blast Doors - type: NameModifier @@ -137875,7 +138120,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3780: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 3810 components: - type: Transform @@ -137884,7 +138130,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3771: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 3811 components: - type: Transform @@ -137893,7 +138140,8 @@ entities: - type: DeviceLinkSource linkedPorts: 3772: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 4222 components: - type: Transform @@ -137903,7 +138151,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4096: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 6068 components: - type: MetaData @@ -137914,7 +138163,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6071: - - Pressed: Trigger + - - Pressed + - Trigger - type: Label currentLabel: Ignite Chamber - type: NameModifier @@ -137929,7 +138179,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5948: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Vent Chamber - type: NameModifier @@ -137943,7 +138194,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6157: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 6164 components: - type: Transform @@ -137953,7 +138205,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6156: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 6168 components: - type: MetaData @@ -137964,7 +138217,8 @@ entities: - type: DeviceLinkSource linkedPorts: 5948: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Vent Chamber - type: NameModifier @@ -137979,7 +138233,8 @@ entities: - type: DeviceLinkSource linkedPorts: 6071: - - Pressed: Trigger + - - Pressed + - Trigger - type: Label currentLabel: Ignite Chamber - type: NameModifier @@ -137993,7 +138248,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4662: - - Pressed: Trigger + - - Pressed + - Trigger - uid: 19541 components: - type: MetaData @@ -138005,7 +138261,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19524: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Dock Blast Doors - type: NameModifier @@ -138021,7 +138278,8 @@ entities: - type: DeviceLinkSource linkedPorts: 19525: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Dock Blast Doors - type: NameModifier @@ -138037,7 +138295,8 @@ entities: - type: DeviceLinkSource linkedPorts: 23508: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Salvage Blast Doors - type: NameModifier @@ -138053,7 +138312,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7764: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Disposals Blast Doors - type: NameModifier @@ -138069,7 +138329,8 @@ entities: - type: DeviceLinkSource linkedPorts: 7766: - - Pressed: Toggle + - - Pressed + - Toggle - type: Label currentLabel: Disposals Blast Doors - type: NameModifier @@ -138084,7 +138345,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16763: - - Pressed: Trigger + - - Pressed + - Trigger - type: Label currentLabel: Space Blast Doors - type: NameModifier @@ -138098,7 +138360,8 @@ entities: - type: DeviceLinkSource linkedPorts: 14940: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 25417 components: - type: Transform @@ -138108,7 +138371,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12466: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - uid: 25418 components: - type: Transform @@ -138118,7 +138382,8 @@ entities: - type: DeviceLinkSource linkedPorts: 12043: - - Pressed: DoorBolt + - - Pressed + - DoorBolt - proto: SignalSwitch entities: - uid: 1217 @@ -138130,14 +138395,20 @@ entities: - type: DeviceLinkSource linkedPorts: 9769: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9414: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9078: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 1220 components: - type: Transform @@ -138147,14 +138418,20 @@ entities: - type: DeviceLinkSource linkedPorts: 15252: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 15282: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 15283: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 2791 components: - type: MetaData @@ -138167,20 +138444,30 @@ entities: - type: DeviceLinkSource linkedPorts: 2795: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2796: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2793: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2794: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1825: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - type: Label @@ -138200,56 +138487,90 @@ entities: - type: DeviceLinkSource linkedPorts: 2773: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2775: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2776: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2777: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2779: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2780: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2782: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2783: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2784: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2785: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2787: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2786: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2788: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2789: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2790: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2781: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2778: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - type: Label @@ -138268,11 +138589,15 @@ entities: - type: DeviceLinkSource linkedPorts: 2959: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2998: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - type: Label @@ -138292,23 +138617,35 @@ entities: - type: DeviceLinkSource linkedPorts: 2962: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2963: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 399: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2960: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2964: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 2958: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - type: Label @@ -138323,8 +138660,10 @@ entities: - type: DeviceLinkSource linkedPorts: 25628: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 7079 components: - type: Transform @@ -138334,8 +138673,10 @@ entities: - type: DeviceLinkSource linkedPorts: 7134: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 7335 components: - type: MetaData @@ -138347,11 +138688,15 @@ entities: - type: DeviceLinkSource linkedPorts: 19537: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19536: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Warehouse Shutters - type: NameModifier @@ -138367,14 +138712,20 @@ entities: - type: DeviceLinkSource linkedPorts: 11622: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11623: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11624: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - uid: 11613 @@ -138387,14 +138738,20 @@ entities: - type: DeviceLinkSource linkedPorts: 11619: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11617: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11616: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - uid: 11614 @@ -138408,14 +138765,20 @@ entities: - type: DeviceLinkSource linkedPorts: 11620: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11618: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 11621: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - uid: 17822 @@ -138431,14 +138794,20 @@ entities: - type: DeviceLinkSource linkedPorts: 17820: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 17819: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 17815: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - type: Label @@ -138454,14 +138823,20 @@ entities: - type: DeviceLinkSource linkedPorts: 22373: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 22374: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 22375: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 25663 components: - type: MetaData @@ -138473,8 +138848,10 @@ entities: - type: DeviceLinkSource linkedPorts: 18983: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - type: Label currentLabel: Janitor Light - type: NameModifier @@ -138490,14 +138867,20 @@ entities: - type: DeviceLinkSource linkedPorts: 7273: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7274: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7272: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 3053 components: - type: Transform @@ -138506,20 +138889,30 @@ entities: - type: DeviceLinkSource linkedPorts: 6265: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6310: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6308: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6307: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6306: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 3834 components: - type: Transform @@ -138531,17 +138924,25 @@ entities: - type: DeviceLinkSource linkedPorts: 3830: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3831: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3832: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3833: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - uid: 3974 @@ -138555,17 +138956,25 @@ entities: - type: DeviceLinkSource linkedPorts: 138: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3976: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 132: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3985: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - type: Label currentLabel: Paramedic Shutters - type: NameModifier @@ -138581,14 +138990,20 @@ entities: - type: DeviceLinkSource linkedPorts: 3997: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3998: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3999: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - uid: 8067 @@ -138599,14 +139014,20 @@ entities: - type: DeviceLinkSource linkedPorts: 13676: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 13637: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open 13665: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 8073 components: - type: Transform @@ -138616,14 +139037,20 @@ entities: - type: DeviceLinkSource linkedPorts: 13625: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7181: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 1798: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 8662 components: - type: MetaData @@ -138634,14 +139061,20 @@ entities: - type: DeviceLinkSource linkedPorts: 1716: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 5039: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7778: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Shutters - type: NameModifier @@ -138654,14 +139087,20 @@ entities: - type: DeviceLinkSource linkedPorts: 8822: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8821: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 8820: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 9429 components: - type: Transform @@ -138673,14 +139112,20 @@ entities: - type: DeviceLinkSource linkedPorts: 20435: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20495: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 20417: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - uid: 11163 @@ -138692,11 +139137,15 @@ entities: - type: DeviceLinkSource linkedPorts: 11159: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9559: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 12308 components: - type: MetaData @@ -138707,7 +139156,8 @@ entities: - type: DeviceLinkSource linkedPorts: 937: - - Status: DoorBolt + - - Status + - DoorBolt - type: Label currentLabel: Door Bolt - type: NameModifier @@ -138721,17 +139171,25 @@ entities: - type: DeviceLinkSource linkedPorts: 25626: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25625: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25624: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25623: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 17488 components: - type: Transform @@ -138740,14 +139198,20 @@ entities: - type: DeviceLinkSource linkedPorts: 7275: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7276: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 7277: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - uid: 17816 components: - type: MetaData @@ -138761,14 +139225,20 @@ entities: - type: DeviceLinkSource linkedPorts: 5391: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 5113: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 5581: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - type: Label @@ -138788,32 +139258,50 @@ entities: - type: DeviceLinkSource linkedPorts: 18777: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 5558: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18648: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18649: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 21672: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18694: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 16381: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6607: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 6613: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - type: Label @@ -138833,14 +139321,20 @@ entities: - type: DeviceLinkSource linkedPorts: 17813: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 17814: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 9642: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - type: Label @@ -138858,29 +139352,45 @@ entities: - type: DeviceLinkSource linkedPorts: 19533: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19532: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19531: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19534: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19535: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19528: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19529: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 19530: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close - type: Label currentLabel: Privacy Shutters - type: NameModifier @@ -138898,14 +139408,20 @@ entities: - type: DeviceLinkSource linkedPorts: 22284: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 18724: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 17192: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - type: Label @@ -138923,11 +139439,15 @@ entities: - type: DeviceLinkSource linkedPorts: 3344: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 3382: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - uid: 25393 @@ -138941,41 +139461,65 @@ entities: - type: DeviceLinkSource linkedPorts: 4466: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4467: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4469: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4459: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25385: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25386: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25389: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25388: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25387: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25392: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 25391: - - Off: Close - - On: Open + - - Off + - Close + - - On + - Open 25390: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - uid: 25397 @@ -138988,14 +139532,20 @@ entities: - type: DeviceLinkSource linkedPorts: 4457: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4468: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 4456: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - uid: 25613 @@ -139006,8 +139556,10 @@ entities: - type: DeviceLinkSource linkedPorts: 9583: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 25656 components: - type: Transform @@ -139017,8 +139569,10 @@ entities: - type: DeviceLinkSource linkedPorts: 25654: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 25659 components: - type: Transform @@ -139027,8 +139581,10 @@ entities: - type: DeviceLinkSource linkedPorts: 25657: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 25661 components: - type: Transform @@ -139038,8 +139594,10 @@ entities: - type: DeviceLinkSource linkedPorts: 17852: - - On: On - - Off: Off + - - On + - On + - - Off + - Off - uid: 25694 components: - type: Transform @@ -139051,17 +139609,25 @@ entities: - type: DeviceLinkSource linkedPorts: 14139: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 14140: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 14141: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close 14142: - - On: Open - - Off: Close + - - On + - Open + - - Off + - Close lastSignals: Status: True - proto: SignalTimer @@ -139075,8 +139641,10 @@ entities: - type: DeviceLinkSource linkedPorts: 9290: - - Start: Open - - Timer: Close + - - Start + - Open + - - Timer + - Close - uid: 16763 components: - type: Transform @@ -139086,8 +139654,10 @@ entities: - type: DeviceLinkSource linkedPorts: 4631: - - Start: Open - - Timer: Close + - - Start + - Open + - - Timer + - Close - proto: SignAnomaly entities: - uid: 8081 @@ -143622,6 +144192,7 @@ entities: - type: Transform pos: -112.5,18.5 parent: 2 + - type: Conveyed - uid: 5807 components: - type: Transform @@ -143632,6 +144203,7 @@ entities: - type: Transform pos: -109.5,18.5 parent: 2 + - type: Conveyed - uid: 8610 components: - type: Transform @@ -146094,11 +146666,6 @@ entities: - type: Transform pos: -22.5,-46.5 parent: 2 - - uid: 4117 - components: - - type: Transform - pos: -21.5,-46.5 - parent: 2 - uid: 4121 components: - type: Transform @@ -146934,11 +147501,6 @@ entities: - type: Transform pos: -36.5,-25.5 parent: 2 - - uid: 19332 - components: - - type: Transform - pos: -112.5,-18.5 - parent: 2 - uid: 19333 components: - type: Transform @@ -147054,6 +147616,11 @@ entities: - type: Transform pos: -14.5,-24.5 parent: 2 + - uid: 22432 + components: + - type: Transform + pos: -122.5,-50.5 + parent: 2 - uid: 22830 components: - type: Transform @@ -147701,11 +148268,6 @@ entities: - type: Transform pos: -44.5,-4.5 parent: 2 - - uid: 2929 - components: - - type: Transform - pos: -53.5,-7.5 - parent: 2 - uid: 2936 components: - type: Transform @@ -148920,31 +149482,51 @@ entities: - type: DeviceLinkSource linkedPorts: 6610: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6612: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19511: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 25544: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 2600: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 25555: - - Left: Open - - Right: Open - - Left: AutoClose - - Right: AutoClose - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Left + - AutoClose + - - Right + - AutoClose + - - Middle + - Close - type: Label currentLabel: Front Desk Conveyor - type: NameModifier @@ -148959,89 +149541,152 @@ entities: - type: DeviceLinkSource linkedPorts: 1357: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4369: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 8476: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4368: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7262: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4370: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4367: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7264: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11280: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11082: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 19736: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 14873: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 8421: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 12463: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 8422: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 1576: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 8449: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 23479: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 23417: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 24821: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4575: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - type: Label currentLabel: Salvage Conveyor - type: NameModifier @@ -149056,45 +149701,75 @@ entities: - type: DeviceLinkSource linkedPorts: 7553: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6968: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 20287: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7315: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7559: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7343: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6964: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11064: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6813: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6815: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - type: Label currentLabel: Disposals Conveyor - type: NameModifier @@ -149109,25 +149784,40 @@ entities: - type: DeviceLinkSource linkedPorts: 7584: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7586: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7418: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7539: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7077: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - type: Label currentLabel: Dock Conveyor - type: NameModifier @@ -149142,25 +149832,40 @@ entities: - type: DeviceLinkSource linkedPorts: 7548: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7582: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7583: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7579: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7344: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - type: Label currentLabel: Dock Conveyor - type: NameModifier @@ -149173,37 +149878,61 @@ entities: - type: DeviceLinkSource linkedPorts: 22196: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22197: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22198: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22199: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22200: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22201: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22203: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 22202: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - uid: 23513 components: - type: MetaData @@ -149214,85 +149943,145 @@ entities: - type: DeviceLinkSource linkedPorts: 7080: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 23169: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close 23171: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close 6525: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6524: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6587: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6577: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5820: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6507: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 5850: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7549: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7304: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 7336: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 18079: - - Left: Open - - Right: Open - - Middle: Close + - - Left + - Open + - - Right + - Open + - - Middle + - Close 6054: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6790: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6794: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6000: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6743: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6679: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - type: Label currentLabel: Cargo Conveyor - type: NameModifier @@ -149307,23 +150096,37 @@ entities: - type: DeviceLinkSource linkedPorts: 25546: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 25545: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 6926: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11109: - - Left: Open - - Right: Open - - Middle: Close - - Left: AutoClose - - Right: AutoClose + - - Left + - Open + - - Right + - Open + - - Middle + - Close + - - Left + - AutoClose + - - Right + - AutoClose - type: Label currentLabel: Desk Conveyor - type: NameModifier @@ -149338,81 +150141,138 @@ entities: - type: DeviceLinkSource linkedPorts: 14781: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 15308: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11641: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 10621: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11649: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11764: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11757: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11768: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11745: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11744: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 10569: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 4582: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11739: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11726: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11723: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 11720: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 18938: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 18870: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off 24819: - - Left: Forward - - Right: Reverse - - Middle: Off + - - Left + - Forward + - - Right + - Reverse + - - Middle + - Off - type: Label currentLabel: Space Conveyor - type: NameModifier @@ -166243,7 +167103,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2966: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 18341 components: - type: Transform @@ -166262,7 +167123,7 @@ entities: lastSignals: DoorStatus: True - type: Door - secondsUntilStateChange: -199343.58 + secondsUntilStateChange: -200076.22 state: Opening - type: Airlock autoClose: False @@ -166304,7 +167165,8 @@ entities: - type: DeviceLinkSource linkedPorts: 24033: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 16040 components: - type: Transform @@ -166316,7 +167178,8 @@ entities: - type: DeviceLinkSource linkedPorts: 4026: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureArmoryLocked entities: - uid: 4026 @@ -166330,7 +167193,8 @@ entities: - type: DeviceLinkSource linkedPorts: 16040: - - DoorStatus: Close + - - DoorStatus + - Close - uid: 6663 components: - type: Transform @@ -166426,7 +167290,8 @@ entities: - type: DeviceLinkSource linkedPorts: 2967: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureJanitorLocked entities: - uid: 19615 @@ -166465,7 +167330,8 @@ entities: - type: DeviceLinkSource linkedPorts: 21056: - - DoorStatus: Toggle + - - DoorStatus + - Toggle - proto: WindoorSecureSalvageLocked entities: - uid: 9973 @@ -166500,7 +167366,8 @@ entities: - type: DeviceLinkSource linkedPorts: 1715: - - DoorStatus: Close + - - DoorStatus + - Close - proto: WindoorSecureServiceLocked entities: - uid: 10029 diff --git a/Resources/Prototypes/Access/misc.yml b/Resources/Prototypes/Access/misc.yml index f79f1779c2..d3f6df775b 100644 --- a/Resources/Prototypes/Access/misc.yml +++ b/Resources/Prototypes/Access/misc.yml @@ -32,3 +32,5 @@ - Chapel - Hydroponics - Atmospherics + - GenpopEnter + - GenpopLeave diff --git a/Resources/Prototypes/Access/security.yml b/Resources/Prototypes/Access/security.yml index cfe94dd78a..45d8af61ed 100644 --- a/Resources/Prototypes/Access/security.yml +++ b/Resources/Prototypes/Access/security.yml @@ -18,6 +18,14 @@ id: Detective name: id-card-access-level-detective +- type: accessLevel + id: GenpopEnter + name: id-card-access-level-genpop-enter + +- type: accessLevel + id: GenpopLeave + name: id-card-access-level-genpop-leave + - type: accessGroup id: Security tags: diff --git a/Resources/Prototypes/Access/xenoborg.yml b/Resources/Prototypes/Access/xenoborg.yml new file mode 100644 index 0000000000..7436e4ec55 --- /dev/null +++ b/Resources/Prototypes/Access/xenoborg.yml @@ -0,0 +1,4 @@ +- type: accessLevel + id: Xenoborg + name: id-card-access-level-basic-xenoborg + canAddToIdCard: false \ No newline at end of file diff --git a/Resources/Prototypes/Actions/types.yml b/Resources/Prototypes/Actions/types.yml index aa378d8861..e1da9bcf1f 100644 --- a/Resources/Prototypes/Actions/types.yml +++ b/Resources/Prototypes/Actions/types.yml @@ -93,8 +93,9 @@ name: Break Free description: Activating your freedom implant will free you from any hand restraints components: + - type: LimitedCharges + maxCharges: 3 - type: InstantAction - charges: 3 checkCanInteract: false itemIconStyle: BigAction priority: -20 @@ -121,9 +122,10 @@ name: Activate EMP description: Triggers a small EMP pulse around you components: + - type: LimitedCharges + maxCharges: 3 - type: InstantAction checkCanInteract: false - charges: 3 useDelay: 5 itemIconStyle: BigAction priority: -20 @@ -137,9 +139,10 @@ name: SCRAM! description: Randomly teleports you within a large distance. components: + - type: LimitedCharges + maxCharges: 2 - type: InstantAction checkCanInteract: false - charges: 2 useDelay: 5 itemIconStyle: BigAction priority: -20 @@ -155,8 +158,9 @@ components: - type: ConfirmableAction popup: dna-scrambler-action-popup + - type: LimitedCharges + maxCharges: 1 - type: InstantAction - charges: 1 itemIconStyle: BigAction priority: -20 icon: @@ -216,18 +220,6 @@ useDelay: 30 event: !type:VendingMachineSelfDispenseEvent -- type: entity - id: ActionArtifactActivate - name: Activate Artifact - description: Immediately activates your current artifact node. - components: - - type: InstantAction - icon: - sprite: Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi - state: ano01 - useDelay: 60 - event: !type:ArtifactSelfActivateEvent - - type: entity id: ActionToggleBlock name: Block diff --git a/Resources/Prototypes/Body/Organs/moth.yml b/Resources/Prototypes/Body/Organs/moth.yml index 535c25c9d3..4bbe151e8b 100644 --- a/Resources/Prototypes/Body/Organs/moth.yml +++ b/Resources/Prototypes/Body/Organs/moth.yml @@ -8,6 +8,7 @@ tags: - ClothMade - Paper + - Pill - type: SolutionContainerManager solutions: stomach: diff --git a/Resources/Prototypes/Body/Parts/skeleton.yml b/Resources/Prototypes/Body/Parts/skeleton.yml index 1b378c6233..378c4263dc 100644 --- a/Resources/Prototypes/Body/Parts/skeleton.yml +++ b/Resources/Prototypes/Body/Parts/skeleton.yml @@ -14,7 +14,6 @@ ents: [] - type: StaticPrice price: 20 - - type: Gibbable - type: Tag tags: - Trash @@ -37,7 +36,7 @@ id: HeadSkeleton name: "skull" description: Alas poor Yorick... - parent: PartSkeleton + parent: [ PartSkeleton, BaseMob ] components: - type: Sprite sprite: Mobs/Species/Skeleton/parts.rsi @@ -47,10 +46,12 @@ state: "skull_icon" - type: BodyPart partType: Head + - type: BlockMovement - type: Input context: "human" - type: Speech speechVerb: Skeleton + speechSounds: Alto - type: SkeletonAccent - type: Actions - type: Vocal diff --git a/Resources/Prototypes/Catalog/Bounties/bounties.yml b/Resources/Prototypes/Catalog/Bounties/bounties.yml index b96ce86df3..3c1f8457e0 100644 --- a/Resources/Prototypes/Catalog/Bounties/bounties.yml +++ b/Resources/Prototypes/Catalog/Bounties/bounties.yml @@ -7,7 +7,7 @@ amount: 1 whitelist: components: - - Artifact + - XenoArtifact - type: cargoBounty id: BountyBaseballBat @@ -564,6 +564,7 @@ - Cake - Pie - Bread + - Pistachios - type: cargoBounty id: BountyVegetable diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml b/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml index c85210adf6..47831e09ab 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_atmospherics.yml @@ -4,7 +4,7 @@ sprite: Structures/Storage/canister.rsi state: grey product: AirCanister - cost: 1100 + cost: 300 category: cargoproduct-category-name-atmospherics group: market @@ -14,7 +14,7 @@ sprite: Structures/Storage/canister.rsi state: blue product: OxygenCanister - cost: 1100 + cost: 300 category: cargoproduct-category-name-atmospherics group: market @@ -24,7 +24,7 @@ sprite: Structures/Storage/canister.rsi state: blue product: LiquidOxygenCanister - cost: 2500 + cost: 1000 category: cargoproduct-category-name-atmospherics group: market @@ -34,7 +34,7 @@ sprite: Structures/Storage/canister.rsi state: red product: NitrogenCanister - cost: 1100 + cost: 300 category: cargoproduct-category-name-atmospherics group: market @@ -44,7 +44,7 @@ sprite: Structures/Storage/canister.rsi state: red product: LiquidNitrogenCanister - cost: 2500 + cost: 1000 category: cargoproduct-category-name-atmospherics group: market @@ -54,7 +54,7 @@ sprite: Structures/Storage/canister.rsi state: black product: CarbonDioxideCanister - cost: 2200 # Until someone fixes it co2 can be used to oneshot people so it's more expensive + cost: 400 # even though it's poisonous, it comes locked and only damages you slowly even with high amounts (tested) category: cargoproduct-category-name-atmospherics group: market @@ -64,7 +64,7 @@ sprite: Structures/Storage/canister.rsi state: black product: LiquidCarbonDioxideCanister - cost: 4000 + cost: 1800 # much less deadly than the plasma can (this has been tested) even though this is cold+poison category: cargoproduct-category-name-atmospherics group: market @@ -74,14 +74,12 @@ sprite: Structures/Storage/canister.rsi state: yellow product: StorageCanister - cost: 1010 # No gases in it so it's cheaper + cost: 210 # No gases in it so it's cheaper category: cargoproduct-category-name-atmospherics group: market #- type: cargoProduct -# name: "water vapor canister" # id: AtmosphericsWaterVapor -# description: "Water vapor canister" # icon: # sprite: Structures/Storage/canister.rsi # state: water_vapor @@ -96,14 +94,12 @@ sprite: Structures/Storage/canister.rsi state: orange product: PlasmaCanister - cost: 4000 + cost: 2500 # for reference, bagel's 3x1 roundstart plasma chamber contains ~16kmol for free, this is $2.5k for 1870mol, so $20k to nearly refill a 3x1 (some are 3x3) chamber category: cargoproduct-category-name-atmospherics group: market #- type: cargoProduct -# name: "tritium canister" # id: AtmosphericsTritium -# description: "Tritium canister" # icon: # sprite: Structures/Storage/canister.rsi # state: green diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml b/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml index 0a24240e7d..c1ef2f1a3f 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_botany.yml @@ -47,3 +47,13 @@ cost: 750 category: cargoproduct-category-name-hydroponics group: market + +- type: cargoProduct + id: HydroponicsTray + icon: + sprite: Structures/Hydroponics/containers.rsi + state: hydrotray3 + product: CrateHydroponicsTray + cost: 750 + category: cargoproduct-category-name-hydroponics + group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml b/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml index 75a1e24cdf..b25e8d525a 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_engines.yml @@ -29,14 +29,12 @@ group: market - type: cargoProduct - name: "emitter crate" id: EngineSingularityEmitter - description: "Contains an emitter. Used only for dangerous applications." icon: sprite: Structures/Power/Generation/Singularity/emitter.rsi state: emitter2 product: CrateEngineeringSingularityEmitter - cost: 3000 + cost: 1500 category: cargoproduct-category-name-engineering group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_food.yml b/Resources/Prototypes/Catalog/Cargo/cargo_food.yml index 1a6f838096..2a74478e94 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_food.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_food.yml @@ -77,3 +77,43 @@ cost: 2400 category: cargoproduct-category-name-food group: market + +- type: cargoProduct + id: FoodCookGetmore + icon: + sprite: Objects/Consumable/Food/snacks.rsi + state: raisins + product: CrateFoodGetMore + cost: 750 + category: cargoproduct-category-name-food + group: market + +- type: cargoProduct + id: FoodHappyHonkMeals + icon: + sprite: Objects/Consumable/Food/burger.rsi + state: bigbite + product: CrateFoodHappyHonkBigBite + cost: 1400 + category: cargoproduct-category-name-food + group: market + +- type: cargoProduct + id: FoodIceCream + icon: + sprite: Objects/Consumable/Food/frozen.rsi + state: sandwich + product: CrateFoodIceCream + cost: 1200 + category: cargoproduct-category-name-food + group: market + +- type: cargoProduct + id: FoodSnowcone + icon: + sprite: Objects/Consumable/Food/frozen.rsi + state: cone + product: CrateFoodSnowcone + cost: 1100 + category: cargoproduct-category-name-food + group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml index 26f9e230a8..f4d29705d4 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_fun.yml @@ -117,6 +117,16 @@ cost: 500 category: cargoproduct-category-name-fun group: market + +- type: cargoProduct + id: FunSharkPlushies + icon: + sprite: Objects/Fun/sharkplush.rsi + state: blue + product: CrateFunSharkPlushieBulk + cost: 500 + category: cargoproduct-category-name-fun + group: market - type: cargoProduct id: FunBoardGames diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_lockbox.yml b/Resources/Prototypes/Catalog/Cargo/cargo_lockbox.yml new file mode 100644 index 0000000000..92e8e8e72b --- /dev/null +++ b/Resources/Prototypes/Catalog/Cargo/cargo_lockbox.yml @@ -0,0 +1,49 @@ +- type: cargoProduct + id: CrateLockBoxEngineering + icon: + sprite: Structures/Storage/Crates/lockbox.rsi + state: icon + product: CrateLockBoxEngineering + cost: 100 + category: cargoproduct-category-name-engineering + group: market + +- type: cargoProduct + id: CrateLockBoxMedical + icon: + sprite: Structures/Storage/Crates/lockbox.rsi + state: icon + product: CrateLockBoxMedical + cost: 100 + category: cargoproduct-category-name-medical + group: market + +- type: cargoProduct + id: CrateLockBoxScience + icon: + sprite: Structures/Storage/Crates/lockbox.rsi + state: icon + product: CrateLockBoxScience + cost: 100 + category: cargoproduct-category-name-science + group: market + +- type: cargoProduct + id: CrateLockBoxSecurity + icon: + sprite: Structures/Storage/Crates/lockbox.rsi + state: icon + product: CrateLockBoxSecurity + cost: 100 + category: cargoproduct-category-name-security + group: market + +- type: cargoProduct + id: CrateLockBoxService + icon: + sprite: Structures/Storage/Crates/lockbox.rsi + state: icon + product: CrateLockBoxService + cost: 100 + category: cargoproduct-category-name-service + group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml b/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml index 33582fea94..1f9df937d8 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_materials.yml @@ -44,7 +44,7 @@ sprite: Objects/Materials/Sheets/metal.rsi state: plasteel_3 product: CrateMaterialPlasteel - cost: 4800 + cost: 1600 category: cargoproduct-category-name-materials group: market @@ -64,7 +64,7 @@ sprite: Objects/Materials/Sheets/other.rsi state: plasma_3 product: CrateMaterialPlasma - cost: 2000 + cost: 1500 category: cargoproduct-category-name-materials group: market @@ -88,6 +88,26 @@ category: cargoproduct-category-name-materials group: market +- type: cargoProduct + id: MaterialBasic + icon: + sprite: Objects/Materials/Sheets/other.rsi + state: generic_materials + product: CrateMaterialBasicResource + cost: 1660 + category: cargoproduct-category-name-materials + group: market + +- type: cargoProduct + id: MaterialSilo + icon: + sprite: Structures/Machines/silo.rsi + state: silo + product: CrateMaterialSilo + cost: 5000 + category: cargoproduct-category-name-materials + group: market + - type: cargoProduct id: MaterialFuelTank icon: diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml index cb7f8af822..aa428b7d55 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_science.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_science.yml @@ -8,6 +8,16 @@ category: cargoproduct-category-name-science group: market +- type: cargoProduct + id: HandheldArtifactContainer + icon: + sprite: Objects/Storage/artifact_container.rsi + state: icon + product: HandheldArtifactContainer + cost: 500 + category: cargoproduct-category-name-science + group: market + - type: cargoProduct id: RandomArtifact icon: diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml index 93b55fbb24..36f4b472ba 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_security.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_security.yml @@ -67,3 +67,13 @@ cost: 1000 category: cargoproduct-category-name-security group: market + +- type: cargoProduct + id: SecurityNonlethalThrowables + icon: + sprite: Objects/Weapons/Grenades/stingergrenade.rsi + state: icon + product: CrateSecNonlethalThrowables + cost: 2500 + category: cargoproduct-category-name-security + group: market diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_service.yml b/Resources/Prototypes/Catalog/Cargo/cargo_service.yml index ac7f02bd22..e170f8c59d 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_service.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_service.yml @@ -28,6 +28,16 @@ category: cargoproduct-category-name-service group: market +- type: cargoProduct + id: ServiceLightsColorful + icon: + sprite: Objects/Power/light_bulb.rsi + state: normal + product: CrateServiceColorfulLights + cost: 800 + category: cargoproduct-category-name-service + group: market + - type: cargoProduct id: MousetrapBoxes icon: @@ -217,5 +227,3 @@ cost: 500 category: cargoproduct-category-name-service group: market - - diff --git a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml index b8dd035e4f..f1389c854d 100644 --- a/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml +++ b/Resources/Prototypes/Catalog/Cargo/cargo_vending.yml @@ -18,7 +18,6 @@ - type: cargoProduct id: CrateVendingMachineRestockChefvend - name: ChefVend restock crate icon: sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base @@ -33,7 +32,7 @@ sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base product: CrateVendingMachineRestockClothesFilled - cost: 2440 + cost: 2480 category: cargoproduct-category-name-service group: market @@ -59,7 +58,6 @@ - type: cargoProduct id: CrateVendingMachineRestockCondimentStation - name: condiment station restock crate icon: sprite: Objects/Specific/Service/vending_machine_restock.rsi state: base diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/backpack.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/backpack.yml new file mode 100644 index 0000000000..4713d8d5bd --- /dev/null +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/backpack.yml @@ -0,0 +1,20 @@ +- type: entity + parent: ClothingBackpackSyndicate + id: ClothingBackpackSyndicateBundle + abstract: true + components: + - type: Tag + tags: [] # ignore "WhitelistChameleon" tag + +- type: entity + parent: ClothingBackpackSyndicateBundle + id: ClothingBackpackSyndicateRaidBundle + name: syndicate raid suit bundle + description: "Contains the Syndicate's durable raid armor suit." + components: + - type: StorageFill + contents: + - id: ClothingOuterArmorRaid + - id: ClothingHeadHelmetRaid + - id: ClothingMaskGasSyndicate + - id: ClothingHandsGlovesCombat diff --git a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml index 4db627bdae..c898b4272c 100644 --- a/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml +++ b/Resources/Prototypes/Catalog/Fills/Backpacks/duffelbag.yml @@ -226,19 +226,6 @@ - id: DoubleEmergencyOxygenTankFilled - id: DoubleEmergencyNitrogenTankFilled -- type: entity - parent: ClothingBackpackDuffelSyndicateBundle - id: ClothingBackpackDuffelSyndicateRaidBundle - name: syndicate raid suit bundle - description: "Contains the Syndicate's durable raid armor suit." - components: - - type: StorageFill - contents: - - id: ClothingOuterArmorRaid - - id: ClothingHeadHelmetRaid - - id: ClothingMaskGasSyndicate - - id: ClothingHandsGlovesCombat - - type: entity parent: ClothingBackpackDuffelSyndicateBundle id: ClothingBackpackDuffelSyndicateHardsuitBundle diff --git a/Resources/Prototypes/Catalog/Fills/Boxes/service.yml b/Resources/Prototypes/Catalog/Fills/Boxes/service.yml index 5aba7bdb2a..4ba7cf6f7e 100644 --- a/Resources/Prototypes/Catalog/Fills/Boxes/service.yml +++ b/Resources/Prototypes/Catalog/Fills/Boxes/service.yml @@ -38,3 +38,43 @@ guides: - Botanical - Chemicals + +- type: entity + parent: BoxLightbulb + id: BoxLightbulbColorfulMixed + name: mixed colorful lightbulb box + components: + - type: StorageFill + contents: + - id: LightBulbCrystalCyan + amount: 2 + - id: LightBulbCrystalBlue + amount: 2 + - id: LightBulbCrystalGreen + amount: 2 + - id: LightBulbCrystalPink + amount: 2 + - id: LightBulbCrystalRed + amount: 2 + - id: LightBulbCrystalOrange + amount: 2 + +- type: entity + parent: BoxLighttube + id: BoxLighttubeColorfulMixed + name: mixed colorful lighttube box + components: + - type: StorageFill + contents: + - id: LightTubeCrystalCyan + amount: 2 + - id: LightTubeCrystalBlue + amount: 2 + - id: LightTubeCrystalGreen + amount: 2 + - id: LightTubeCrystalPink + amount: 2 + - id: LightTubeCrystalRed + amount: 2 + - id: LightTubeCrystalOrange + amount: 2 diff --git a/Resources/Prototypes/Catalog/Fills/Crates/botany.yml b/Resources/Prototypes/Catalog/Fills/Crates/botany.yml index 11ee1eaefa..850b69294e 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/botany.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/botany.yml @@ -92,3 +92,13 @@ - id: WatermelonSeeds - id: PeaSeeds - id: CherrySeeds + +- type: entity + id: CrateHydroponicsTray + parent: CrateHydroponics + name: hydroponics tray crate + description: Contains a hydroponics tray flatpack. + components: + - type: StorageFill + contents: + - id: HydroponicsTrayFlatpack diff --git a/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml b/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml index 4b3f3f9339..23921b98e3 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/engineering.yml @@ -228,6 +228,8 @@ - id: SignalTimerElectronics - id: SMESMachineCircuitboard - id: SubstationMachineCircuitboard + - id: BorgChargerCircuitboard + - id: CellRechargerCircuitboard - id: SpaceVillainArcadeComputerCircuitboard - id: BlockGameArcadeComputerCircuitboard @@ -242,4 +244,4 @@ entity_storage: !type:NestedSelector tableId: RandomTechBoardTable rolls: !type:RangeNumberSelector - range: 3, 7 + range: 6, 8 diff --git a/Resources/Prototypes/Catalog/Fills/Crates/food.yml b/Resources/Prototypes/Catalog/Fills/Crates/food.yml index 5e1834316f..23d1b2f795 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/food.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/food.yml @@ -166,3 +166,84 @@ - id: DrinkFourteenLokoCan amount: 4 +- type: entity + id: CrateFoodGetMore + parent: CratePlastic + name: Getmore Bakemore crate + description: Getmore branded snacks and baking supplies for the creative chef, all without the need of emptying your station's Getmore machines! + components: + - type: StorageFill + contents: + - id: FoodSnackRaisins + amount: 4 + - id: FoodSnackChocolate + amount: 6 + - id: FoodSnackPistachios + amount: 4 + - id: ReagentContainerFlour + amount: 3 + - id: ReagentContainerSugar + amount: 2 + - id: FoodCondimentPacketSalt + amount: 3 + - id: DrinkMilkCarton + amount: 2 + - id: FoodContainerEgg + amount: 2 + - id: FoodBoxCloth + amount: 1 + +- type: entity + id: CrateFoodIceCream + parent: CrateFreezer + name: ice cream delivery + description: An assortment of ice cream delights for any occasion! Includes 16 frozen treats. + components: + - type: StorageFill + contents: + - id: FoodFrozenSandwich + amount: 3 + - id: FoodFrozenSandwichStrawberry + amount: 2 + - id: FoodFrozenPopsicleOrange + amount: 2 + - id: FoodFrozenPopsicleBerry + amount: 2 + - id: FoodFrozenPopsicleJumbo + amount: 3 + - id: FoodFrozenCornuto + amount: 2 + - id: FoodFrozenSundae + amount: 2 + +- type: entity + id: CrateFoodSnowcone + parent: CrateFreezer + name: snowcone delivery + description: A freezer packed with refreshing snowcones for a hard working crew, or even a lazy one! Includes 16 snowcones. + components: + - type: StorageFill + contents: + - id: FoodFrozenSnowconeBase + amount: 3 + - id: FoodFrozenSnowconeBerry + amount: 3 + - id: FoodFrozenSnowconeFruit + amount: 3 + - id: FoodFrozenSnowconeRainbow + amount: 3 + - id: FoodFrozenSnowconeClown + amount: 2 + - id: FoodFrozenSnowconeMime + amount: 2 + +- type: entity + id: CrateFoodHappyHonkBigBite + parent: CratePlastic + name: Happy Honk meal delivery + description: Two fully loaded Happy Honk Big Bite burger meals, complete with cheesy fries, a bottle of Space Cola, a slice of apple pie and a toy! + components: + - type: StorageFill + contents: + - id: FoodMealHappyHonkBigBite + amount: 2 diff --git a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml index 2f5c247d75..af57a565a6 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/fun.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/fun.yml @@ -10,6 +10,7 @@ - id: PlushieNuke - id: PlushieSlime - id: PlushieSnake + - id: PlushieExperiment - !type:GroupSelector children: - id: PlushieLizard @@ -72,6 +73,26 @@ amount: !type:ConstantNumberSelector value: 3 +- type: entity + id: CrateFunSharkPlushieBulk + parent: CrateGenericSteel + name: bulk soft toy shark crate + description: A crate filled with a variety of everyone's favorite finned friend. Rawr! + components: + - type: EntityTableContainerFill + containers: + entity_storage: !type:AllSelector + children: + - id: PlushieSharkBlue + amount: !type:ConstantNumberSelector + value: 2 + - id: PlushieSharkPink + amount: !type:ConstantNumberSelector + value: 2 + - id: PlushieSharkGrey + amount: !type:ConstantNumberSelector + value: 2 + - type: entity id: CrateFunInstrumentsVariety parent: CrateGenericSteel diff --git a/Resources/Prototypes/Catalog/Fills/Crates/materials.yml b/Resources/Prototypes/Catalog/Fills/Crates/materials.yml index 3934812ae4..cbc2330e3c 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/materials.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/materials.yml @@ -68,12 +68,11 @@ id: CrateMaterialPlasteel parent: CrateGenericSteel name: plasteel crate - description: 90 sheets of plasteel. + description: 30 sheets of plasteel. components: - type: StorageFill contents: - id: SheetPlasteel - amount: 3 - type: entity id: CrateMaterialPlasma @@ -149,9 +148,35 @@ entity_storage: !type:NestedSelector tableId: RandomMaterialCrateTable rolls: !type:RangeNumberSelector - range: 1, 3 - # for some reason, the selector here adds 1 to whatever value it generates, - # so this is actually 2-4 + range: 2, 4 + +- type: entity + id: CrateMaterialSilo + parent: CrateGenericSteel + name: material silo crate + description: A package including all the materials to create a material silo. + components: + - type: StorageFill + contents: + - id: MaterialSiloMachineCircuitboard + - id: SheetSteel1 + amount: 5 + - id: MatterBinStockPart + amount: 4 + - id: CableApcStack1 + amount: 2 + +- type: entity + id: CrateMaterialBasicResource + parent: CrateGenericSteel + name: basic sheet crate + description: 30 sheets of steel, glass, and plastic. + components: + - type: StorageFill + contents: + - id: SheetSteel + - id: SheetGlass + - id: SheetPlastic #- type: entity # id: CrateMaterialHFuelTank diff --git a/Resources/Prototypes/Catalog/Fills/Crates/security.yml b/Resources/Prototypes/Catalog/Fills/Crates/security.yml index 4726df16cf..0af4fe338f 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/security.yml @@ -93,4 +93,19 @@ - id: TrackingImplanter amount: 4 -# Cosmetic Crates +- type: entity + parent: CrateSecgear + id: CrateSecNonlethalThrowables + name: nonlethal throwables crate + description: Contains one box each of flashbangs, stingers, tear gas grenades, and four bolas. Requires Security access to open. + components: + - type: StorageFill + contents: + - id: BoxFlashbang + amount: 1 + - id: BoxStinger + amount: 1 + - id: BoxTearGas + amount: 1 + - id: Bola # replace with 4 e-bolas when added + amount: 4 diff --git a/Resources/Prototypes/Catalog/Fills/Crates/service.yml b/Resources/Prototypes/Catalog/Fills/Crates/service.yml index 32cfce4628..ccf39b2893 100644 --- a/Resources/Prototypes/Catalog/Fills/Crates/service.yml +++ b/Resources/Prototypes/Catalog/Fills/Crates/service.yml @@ -7,7 +7,7 @@ - type: StorageFill contents: - id: MopItem - - id: MopBucket + - id: MopBucketCubeWrapped - id: Bucket amount: 3 - id: WetFloorSign @@ -361,3 +361,14 @@ amount: 2 - id: BoxCandleSmall amount: 2 + +- type: entity + parent: CrateGenericSteel + id: CrateServiceColorfulLights + name: colorful lights crate + description: It's not a party until it's hard to see, a little disorienting, and your ears hurt. + components: + - type: StorageFill + contents: + - id: BoxLightbulbColorfulMixed + - id: BoxLighttubeColorfulMixed diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml index b63d661ae9..bf49e30923 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/heads.yml @@ -130,6 +130,8 @@ - id: DoorRemoteService - id: HoPIDCard - id: IDComputerCircuitboard + - id: FundingAllocationComputerCircuitboard + - id: CargoRequestServiceComputerCircuitboard - id: RubberStampApproved - id: RubberStampDenied - id: RubberStampHop @@ -160,6 +162,7 @@ - id: ClothingHandsGlovesColorYellow - id: ClothingHeadsetAltEngineering - id: DoorRemoteEngineering + - id: CargoRequestEngineeringComputerCircuitboard - id: RCD - id: RCDAmmo - id: RubberStampCE @@ -218,6 +221,7 @@ - id: HandheldCrewMonitor - id: Hypospray - id: MedicalTechFabCircuitboard + - id: CargoRequestMedicalComputerCircuitboard - id: MedkitFilled - id: RubberStampCMO - id: MedTekCartridge @@ -271,6 +275,7 @@ - id: HandTeleporter - id: ProtolatheMachineCircuitboard - id: ResearchComputerCircuitboard + - id: CargoRequestScienceComputerCircuitboard - id: RubberStampRd # Hardsuit table, used for suit storage as well @@ -328,6 +333,7 @@ - id: HoloprojectorSecurity - id: RubberStampHos - id: SecurityTechFabCircuitboard + - id: CargoRequestSecurityComputerCircuitboard - id: WeaponDisabler - id: WantedListCartridge - id: DrinkHosFlask diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml index dd9b602e00..4d42f2daa4 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/security.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/security.yml @@ -125,7 +125,8 @@ - id: ClothingHeadHatDetGadget - id: ClothingNeckTieDet - id: ClothingOuterVestDetective - - id: ClothingOuterCoatDetective + - id: ClothingOuterCoatDetectiveLoadout + - id: FlippoEngravedLighter - id: FlashlightSeclite - id: ForensicScanner - id: LogProbeCartridge diff --git a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml index f334747024..a8fd6e2b2d 100644 --- a/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml +++ b/Resources/Prototypes/Catalog/Fills/Lockers/suit_storage.yml @@ -270,6 +270,7 @@ - type: StorageFill contents: - id: OxygenTankFilled - - id: ClothingOuterHardsuitWizard - id: ClothingMaskBreath - - id: JetpackVoidFilled + # TODO: Gone until reworked to have no space protection + #- id: ClothingOuterHardsuitWizard + #- id: JetpackVoidFilled diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml index 97a3d0f5a1..9127438674 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/boozeomat.yml @@ -26,6 +26,7 @@ DrinkGrenadineBottleFull: 2 DrinkJuiceLimeCarton: 3 DrinkJuiceLemonCarton: 3 + DrinkJuicePineappleCarton: 3 DrinkJuiceOrangeCarton: 3 DrinkJuiceTomatoCarton: 3 DrinkCoffeeLiqueurBottleFull: 3 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml index 4b5688a46f..8f6dd5ac15 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/clothesmate.yml @@ -7,6 +7,7 @@ ClothingBackpackSatchel: 3 ClothingBackpackSatchelLeather: 2 ClothingRandomSpawner: 8 + ClothingUniformRandomShorts: 4 ClothingHeadHatBeret: 4 ClothingHeadBandBlack: 2 ClothingHeadBandBlue: 2 @@ -99,4 +100,5 @@ ToyFigurinePassenger: 1 ToyFigurineGreytider: 1 ClothingBackpackSatchelSmugglerUnanchored: 1 + ClothingHeadHatSolidHeadband: 2 # DO NOT ADD MORE, USE UNIFORM DYING diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/pride.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/pride.yml index 80c1408c53..92057ab21c 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/pride.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/pride.yml @@ -12,8 +12,10 @@ ClothingNeckLesbianPin: 3 ClothingNeckNonBinaryPin: 3 ClothingNeckPansexualPin: 3 + ClothingNeckPluralPin: 3 ClothingNeckOmnisexualPin: 3 ClothingNeckGenderqueerPin: 3 + ClothingNeckGenderfluidPin: 3 ClothingNeckTransPin: 3 ClothingNeckAutismPin: 3 ClothingNeckGoldAutismPin: 3 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/seeds.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/seeds.yml index 44d0678956..719693804f 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/seeds.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/seeds.yml @@ -15,7 +15,6 @@ CornSeeds: 5 CottonSeeds: 5 EggplantSeeds: 5 - EggySeeds: 5 GalaxythistleSeeds: 3 GarlicSeeds: 3 GrapeSeeds: 5 diff --git a/Resources/Prototypes/Catalog/VendingMachines/Inventories/winterdrobe.yml b/Resources/Prototypes/Catalog/VendingMachines/Inventories/winterdrobe.yml index 0f8c73dac3..61089187e5 100644 --- a/Resources/Prototypes/Catalog/VendingMachines/Inventories/winterdrobe.yml +++ b/Resources/Prototypes/Catalog/VendingMachines/Inventories/winterdrobe.yml @@ -16,6 +16,7 @@ ClothingOuterFlannelBlue: 2 ClothingOuterFlannelGreen: 2 ClothingOuterCoatBomber: 3 + ClothingHeadHatCanadaBeanie: 4 ClothingHeadHatSantahat: 2 ClothingHeadHatXmasCrown: 2 diff --git a/Resources/Prototypes/Catalog/cargo_accounts.yml b/Resources/Prototypes/Catalog/cargo_accounts.yml new file mode 100644 index 0000000000..7ddc07e65b --- /dev/null +++ b/Resources/Prototypes/Catalog/cargo_accounts.yml @@ -0,0 +1,42 @@ +- type: cargoAccount + id: Cargo + name: cargo-account-cargo-name + code: cargo-account-cargo-code + color: "#b48b57" + radioChannel: Supply + +- type: cargoAccount + id: Engineering + name: cargo-account-engineering-name + code: cargo-account-engineering-code + color: "#ff733c" + radioChannel: Engineering + +- type: cargoAccount + id: Medical + name: cargo-account-medical-name + code: cargo-account-medical-code + color: "#57b8f0" + radioChannel: Medical + +- type: cargoAccount + id: Science + name: cargo-account-science-name + code: cargo-account-science-code + color: "#cd7ccd" + radioChannel: Science + +- type: cargoAccount + id: Security + name: cargo-account-security-name + code: cargo-account-security-code + color: "#ff4242" + radioChannel: Security + +- type: cargoAccount + id: Service + name: cargo-account-service-name + code: cargo-account-service-code + color: "#539c00" + radioChannel: Service + diff --git a/Resources/Prototypes/Catalog/pai_catalog.yml b/Resources/Prototypes/Catalog/pai_catalog.yml new file mode 100644 index 0000000000..913eae5d0b --- /dev/null +++ b/Resources/Prototypes/Catalog/pai_catalog.yml @@ -0,0 +1,43 @@ +# Some things might seem like great ideas on paper for pAI apps, but have deliberately been excluded. +# e.g. Monitoring (Power/Atmos/Crew), Cameras, etc. are excluded as apps for performance and balance reasons. +# Generally speaking, if you're adding an application, it needs to *not* be round-impacting. +# Remember that pAI's are *assistants*, not players. + +- type: listing + id: PAIMassScanner + name: pai-mass-scanner-name + description: pai-mass-scanner-desc + productAction: ActionPAIMassScanner + cost: + SiliconMemory: 10 + categories: + - PAIAbilities + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: PAIMIDIPlayer + name: pai-midi-player-name + description: pai-midi-player-desc + productAction: ActionPAIPlayMidi + cost: + SiliconMemory: 5 + categories: + - PAIAbilities + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + +- type: listing + id: PAIStationMap + name: pai-station-map-name + description: pai-station-map-desc + productAction: ActionPAIOpenMap + cost: + SiliconMemory: 5 + categories: + - PAIAbilities + conditions: + - !type:ListingLimitedStockCondition + stock: 1 diff --git a/Resources/Prototypes/Catalog/spellbook_catalog.yml b/Resources/Prototypes/Catalog/spellbook_catalog.yml index 81ce664cda..700d99ed2d 100644 --- a/Resources/Prototypes/Catalog/spellbook_catalog.yml +++ b/Resources/Prototypes/Catalog/spellbook_catalog.yml @@ -146,6 +146,19 @@ - !type:ListingLimitedStockCondition stock: 1 +- type: listing + id: SpellbookKnock + name: spellbook-knock-name + description: spellbook-knock-desc + productAction: ActionKnock + cost: + WizCoin: 1 + categories: + - SpellbookUtility + conditions: + - !type:ListingLimitedStockCondition + stock: 1 + - type: listing id: SpellbookCharge name: spellbook-charge-name diff --git a/Resources/Prototypes/Catalog/uplink_catalog.yml b/Resources/Prototypes/Catalog/uplink_catalog.yml index f4f1d754c4..c6061d7bb0 100644 --- a/Resources/Prototypes/Catalog/uplink_catalog.yml +++ b/Resources/Prototypes/Catalog/uplink_catalog.yml @@ -980,18 +980,19 @@ categories: - UplinkDisruption -- type: listing - id: UplinkDuffelSurgery - name: uplink-duffel-surgery-name - description: uplink-duffel-surgery-desc - productEntity: ClothingBackpackDuffelSyndicateFilledMedical - discountCategory: usualDiscounts - discountDownTo: - Telecrystal: 2 - cost: - Telecrystal: 4 - categories: - - UplinkDisruption +# Note: Removed for the time being until surgery/newmed is added. Considered bloat until then. +# - type: listing +# id: UplinkDuffelSurgery +# name: uplink-duffel-surgery-name +# description: uplink-duffel-surgery-desc +# productEntity: ClothingBackpackDuffelSyndicateFilledMedical +# discountCategory: usualDiscounts +# discountDownTo: +# Telecrystal: 2 +# cost: +# Telecrystal: 4 +# categories: +# - UplinkDisruption - type: listing id: UplinkPowerSink @@ -1564,6 +1565,19 @@ categories: - UplinkWearables +- type: listing + id: UplinkClothingOuterVestWebElite + name: uplink-clothing-outer-vest-web-elite-name + description: uplink-clothing-outer-vest-web-elite-desc + productEntity: ClothingOuterVestWebElite + discountCategory: usualDiscounts + discountDownTo: + Telecrystal: 3 + cost: + Telecrystal: 5 + categories: + - UplinkWearables + - type: listing id: UplinkClothingShoesBootsMagSyndie name: uplink-clothing-shoes-boots-mag-syndie-name @@ -1624,7 +1638,7 @@ name: uplink-syndie-raid-name description: uplink-syndie-raid-desc icon: { sprite: /Textures/Clothing/OuterClothing/Armor/syndie-raid.rsi, state: icon } - productEntity: ClothingBackpackDuffelSyndicateRaidBundle + productEntity: ClothingBackpackSyndicateRaidBundle cost: Telecrystal: 8 categories: @@ -1641,13 +1655,15 @@ description: uplink-hardsuit-syndieelite-desc icon: { sprite: /Textures/Clothing/OuterClothing/Hardsuits/syndieelite.rsi, state: icon } productEntity: ClothingBackpackDuffelSyndicateEliteHardsuitBundle - discountCategory: rareDiscounts - discountDownTo: - Telecrystal: 7 cost: Telecrystal: 12 categories: - UplinkWearables + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink - type: listing id: UplinkClothingOuterHardsuitJuggernaut @@ -1655,13 +1671,15 @@ description: uplink-clothing-outer-hardsuit-juggernaut-desc icon: { sprite: /Textures/Structures/Storage/Crates/syndicate.rsi, state: icon } productEntity: CrateCybersunJuggernautBundle - discountCategory: veryRareDiscounts - discountDownTo: - Telecrystal: 8 cost: Telecrystal: 12 categories: - UplinkWearables + conditions: + - !type:StoreWhitelistCondition + whitelist: + tags: + - NukeOpsUplink - type: listing id: UplinkClothingEyesHudSyndicate @@ -2161,3 +2179,21 @@ Telecrystal: 2 categories: - UplinkDeception + +- type: listing + id: UplinkSawAdvanced + name: uplink-saw-advanced-name + description: uplink-saw-advanced-desc + icon: { sprite: Objects/Specific/Medical/Surgery/saw.rsi, state: advanced} + productEntity: SawAdvanced + discountCategory: rareDiscounts + discountDownTo: + Telecrystal: 1 + cost: + Telecrystal: 2 + categories: + - UplinkJob + conditions: + - !type:BuyerJobCondition + whitelist: + - MedicalDoctor diff --git a/Resources/Prototypes/Damage/modifier_sets.yml b/Resources/Prototypes/Damage/modifier_sets.yml index 3a3a372b6e..2c3561e07a 100644 --- a/Resources/Prototypes/Damage/modifier_sets.yml +++ b/Resources/Prototypes/Damage/modifier_sets.yml @@ -252,6 +252,8 @@ Bloodloss: 0.0 # no double dipping Cellular: 0.0 Caustic: 0.0 + #CP14 + CP14ManaDepletion: 0.0 - type: damageModifierSet id: SlimePet # Very survivable slimes diff --git a/Resources/Prototypes/Datasets/Names/dragon.yml b/Resources/Prototypes/Datasets/Names/dragon.yml new file mode 100644 index 0000000000..13be2fd59a --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/dragon.yml @@ -0,0 +1,11 @@ +- type: localizedDataset + id: NamesDragon + values: + prefix: names-dragon-dataset- + count: 31 + +- type: localizedDataset + id: NamesDragonTitle + values: + prefix: names-dragon-title-dataset- + count: 30 diff --git a/Resources/Prototypes/Datasets/Names/xenoborg.yml b/Resources/Prototypes/Datasets/Names/xenoborg.yml new file mode 100644 index 0000000000..2809af9f86 --- /dev/null +++ b/Resources/Prototypes/Datasets/Names/xenoborg.yml @@ -0,0 +1,5 @@ +- type: localizedDataset + id: NamesXenoborg + values: + prefix: names-xenoborg-dataset- + count: 60 \ No newline at end of file diff --git a/Resources/Prototypes/Datasets/deliveries.yml b/Resources/Prototypes/Datasets/deliveries.yml new file mode 100644 index 0000000000..10584f219b --- /dev/null +++ b/Resources/Prototypes/Datasets/deliveries.yml @@ -0,0 +1,5 @@ +- type: localizedDataset + id: DeliverySpamLetters + values: + prefix: delivery-spam- + count: 12 diff --git a/Resources/Prototypes/Datasets/figurines.yml b/Resources/Prototypes/Datasets/figurines.yml index 98dfee489f..95e072d889 100644 --- a/Resources/Prototypes/Datasets/figurines.yml +++ b/Resources/Prototypes/Datasets/figurines.yml @@ -212,7 +212,7 @@ id: FigurinesFootsoldier values: prefix: figurines-footsoldier- - count: 2 + count: 5 - type: localizedDataset id: FigurinesWizard diff --git a/Resources/Prototypes/Datasets/tips.yml b/Resources/Prototypes/Datasets/tips.yml index b57f2052d9..ef49674847 100644 --- a/Resources/Prototypes/Datasets/tips.yml +++ b/Resources/Prototypes/Datasets/tips.yml @@ -2,4 +2,4 @@ id: Tips values: prefix: tips-dataset- - count: 137 + count: 139 diff --git a/Resources/Prototypes/Device/devicenet_frequencies.yml b/Resources/Prototypes/Device/devicenet_frequencies.yml index 64b8c8e687..89df762380 100644 --- a/Resources/Prototypes/Device/devicenet_frequencies.yml +++ b/Resources/Prototypes/Device/devicenet_frequencies.yml @@ -136,3 +136,13 @@ id: BasicDevice name: device-frequency-prototype-name-basic-device frequency: 1280 + +- type: deviceFrequency + id: Xenoborg + name: device-frequency-prototype-name-xenoborg + frequency: 2004 + +- type: deviceFrequency + id: Mothership + name: device-frequency-prototype-name-mothership + frequency: 2005 diff --git a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml index a4a589fe1c..d3e43653e0 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/duffel.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/duffel.yml @@ -182,7 +182,6 @@ - type: entity parent: ClothingBackpackDuffelSyndicate id: ClothingBackpackDuffelSyndicateAmmo - name: syndicate duffel bag components: - type: Sprite sprite: Clothing/Back/Duffels/syndicate.rsi @@ -203,7 +202,6 @@ - type: entity parent: ClothingBackpackDuffelSyndicate id: ClothingBackpackDuffelSyndicateMedical - name: syndicate duffel bag components: - type: Sprite sprite: Clothing/Back/Duffels/syndicate.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml b/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml index e14c316323..d03e629014 100644 --- a/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml +++ b/Resources/Prototypes/Entities/Clothing/Back/smuggler_tables.yml @@ -28,22 +28,23 @@ - !type:NestedSelector tableId: RandomSatchelTable6 + #number after each group indicates potential max inventory fill. If all combined fills are too high, it could result in an over-filled bag/error. - type: entityTable id: RandomSatchelTable1 table: !type:AllSelector children: - !type:NestedSelector - tableId: RandomSatchelGenericTable + tableId: RandomSatchelGenericTableSmallx2 #2x small - !type:NestedSelector - tableId: RandomSatchelFunnyTable + tableId: RandomSatchelFunnyTable #5x tiny - !type:NestedSelector - tableId: RandomSatchelClothingTable + tableId: RandomSatchelClothingTable #1x small - !type:NestedSelector - tableId: RandomSatchelCannabisTable + tableId: RandomSatchelCannabisTable #5x tiny - !type:NestedSelector - tableId: RandomSatchelGizmosTable + tableId: RandomSatchelGizmosTable #2x small - !type:NestedSelector - tableId: RandomSatchelChemsTable + tableId: RandomSatchelChemsTable #5x tiny - type: entityTable id: RandomSatchelFunnyTable @@ -63,7 +64,7 @@ amount: !type:RangeNumberSelector range: 1, 5 -- type: entityTable +- type: entityTable #5x tiny id: RandomSatchelCannabisTable table: !type:GroupSelector children: @@ -82,7 +83,7 @@ amount: !type:RangeNumberSelector range: 1, 15 -- type: entityTable +- type: entityTable #2x small id: RandomSatchelGizmosTable table: !type:GroupSelector children: @@ -99,7 +100,7 @@ range: 1, 2 - id: ProximitySensor -- type: entityTable +- type: entityTable #5x tiny id: RandomSatchelChemsTable table: !type:GroupSelector children: @@ -134,17 +135,17 @@ table: !type:AllSelector children: - !type:NestedSelector - tableId: RandomSatchelTobaccoTable + tableId: RandomSatchelTobaccoTable #2x 2x3(12 slots) - !type:NestedSelector - tableId: RandomSatchelPartyTable + tableId: RandomSatchelPartyTable #5x small - !type:NestedSelector - tableId: RandomSatchelClothingTable + tableId: RandomSatchelClothingTable #1x small - !type:NestedSelector - tableId: RandomSatchelPayloadTable + tableId: RandomSatchelPayloadTable #2x small - !type:NestedSelector - tableId: RandomSatchelCircuitboardsTable + tableId: RandomSatchelCircuitboardsTable #1x small -- type: entityTable +- type: entityTable #2x 2x3(12 slots) id: RandomSatchelTobaccoTable table: !type:GroupSelector children: @@ -157,14 +158,10 @@ - id: CigCartonGreen - id: CigCartonBlack - id: CigarCase - amount: !type:RangeNumberSelector - range: 1, 2 - id: CigarGoldCase weight: 0.25 - amount: !type:RangeNumberSelector - range: 1, 2 -- type: entityTable +- type: entityTable #5x small id: RandomSatchelPartyTable table: !type:GroupSelector children: @@ -186,7 +183,7 @@ amount: !type:RangeNumberSelector range: 1, 5 -- type: entityTable +- type: entityTable #1x small id: RandomSatchelClothingTable table: !type:GroupSelector children: @@ -200,7 +197,7 @@ - id: ClothingHandsGlovesCombat - id: ClothingNeckScarfStripedSyndieRed -- type: entityTable +- type: entityTable #2x small id: RandomSatchelPayloadTable table: !type:GroupSelector children: @@ -216,7 +213,7 @@ amount: !type:RangeNumberSelector range: 1, 2 -- type: entityTable +- type: entityTable #1x small id: RandomSatchelCircuitboardsTable table: !type:GroupSelector children: @@ -245,19 +242,19 @@ table: !type:AllSelector children: - !type:NestedSelector - tableId: RandomSatchelPresentsOrToysTable + tableId: RandomSatchelPresentsOrToysTable #3x small - !type:NestedSelector - tableId: RandomSatchelCashTable + tableId: RandomSatchelCashTable #1x small - !type:NestedSelector - tableId: RandomSatchelWeaponTable + tableId: RandomSatchelWeaponTable #5x small - !type:NestedSelector - tableId: RandomSatchelBurgerTable + tableId: RandomSatchelBurgerTable #5x small - !type:NestedSelector - tableId: RandomSatchelGenericTable + tableId: RandomSatchelGenericTableSmall #1x small - !type:NestedSelector - tableId: RandomSatchelKeysTable + tableId: RandomSatchelKeysTable #1x small -- type: entityTable +- type: entityTable #3x small id: RandomSatchelPresentsOrToysTable table: !type:GroupSelector children: @@ -271,7 +268,7 @@ - id: ToyFigurineQueen - id: ToyFigurineRatKing -- type: entityTable +- type: entityTable #1x small id: RandomSatchelCashTable table: !type:GroupSelector children: @@ -301,7 +298,7 @@ amount: !type:RangeNumberSelector range: 1, 10 -- type: entityTable +- type: entityTable #5x small id: RandomSatchelWeaponTable table: !type:GroupSelector children: @@ -312,7 +309,7 @@ amount: !type:RangeNumberSelector range: 1, 5 -- type: entityTable +- type: entityTable #5x small id: RandomSatchelBurgerTable table: !type:GroupSelector children: @@ -331,8 +328,8 @@ amount: !type:RangeNumberSelector range: 1, 5 -- type: entityTable - id: RandomSatchelGenericTable +- type: entityTable #1x small + id: RandomSatchelGenericTableSmall table: !type:GroupSelector children: - id: SpaceCash100 @@ -342,6 +339,13 @@ - id: WeaponFlareGun - id: ModularReceiver - id: RifleStock + +- type: entityTable #2x small + id: RandomSatchelGenericTableSmallx2 + table: !type:GroupSelector + children: + - id: SpaceCash100 + weight: 15 - id: DrinkSpaceGlue amount: !type:RangeNumberSelector range: 1, 2 @@ -352,7 +356,7 @@ amount: !type:RangeNumberSelector range: 1, 2 -- type: entityTable +- type: entityTable #1x small id: RandomSatchelKeysTable table: !type:GroupSelector children: @@ -377,17 +381,17 @@ table: !type:AllSelector children: - !type:NestedSelector - tableId: RandomSatchelMaterialsTable + tableId: RandomSatchelMaterialsTable #1x medium - !type:NestedSelector - tableId: RandomSatchelImplantersTable + tableId: RandomSatchelImplantersTable #1x small - !type:NestedSelector - tableId: RandomSatchelCellsTable + tableId: RandomSatchelCellsTable #1x small - !type:NestedSelector - tableId: RandomSatchelSyndicateTable + tableId: RandomSatchelSyndicateTable #1x medium - !type:NestedSelector - tableId: RandomSatchelToolsTable + tableId: RandomSatchelToolsTable #1x small -- type: entityTable +- type: entityTable #1x medium id: RandomSatchelMaterialsTable table: !type:GroupSelector children: @@ -424,7 +428,7 @@ weight: 2 - id: SheetUranium -- type: entityTable +- type: entityTable #1x small id: RandomSatchelImplantersTable table: !type:GroupSelector children: @@ -434,7 +438,7 @@ - id: BikeHornImplanter - id: SadTromboneImplanter -- type: entityTable +- type: entityTable #1x small id: RandomSatchelCellsTable table: !type:GroupSelector children: @@ -444,7 +448,7 @@ - id: PowerCellMicroreactor - id: PowerCellHigh -- type: entityTable +- type: entityTable #1x medium id: RandomSatchelSyndicateTable table: !type:GroupSelector children: @@ -459,8 +463,9 @@ - id: RadioJammer - id: SoapSyndie - id: SingularityToy + - id: DehydratedSpaceCarp -- type: entityTable +- type: entityTable #1x small id: RandomSatchelToolsTable table: !type:GroupSelector children: @@ -477,15 +482,15 @@ table: !type:AllSelector children: - !type:NestedSelector - tableId: RandomSatchelAlcoholTable + tableId: RandomSatchelAlcoholTable #2x medium - !type:NestedSelector - tableId: RandomSatchelInstrumentTable + tableId: RandomSatchelInstrumentTable #1x Medium - !type:NestedSelector - tableId: RandomSatchelMedsTable + tableId: RandomSatchelMedsTable #5x tiny - !type:NestedSelector - tableId: RandomSatchelMysteriesTable + tableId: RandomSatchelMysteriesTable #1x Medium -- type: entityTable +- type: entityTable #2x medium id: RandomSatchelAlcoholTable table: !type:GroupSelector children: @@ -493,18 +498,18 @@ weight: 5 - id: DrinkCognacBottleFull amount: !type:RangeNumberSelector - range: 1, 4 + range: 1, 2 - id: DrinkGildlagerBottleFull amount: !type:RangeNumberSelector - range: 1, 4 + range: 1, 2 - id: DrinkPatronBottleFull amount: !type:RangeNumberSelector - range: 1, 4 + range: 1, 2 - id: DrinkRumBottleFull amount: !type:RangeNumberSelector - range: 1, 4 + range: 1, 2 -- type: entityTable +- type: entityTable #1x Medium id: RandomSatchelInstrumentTable table: !type:GroupSelector children: @@ -517,7 +522,7 @@ - id: RockGuitarInstrument - id: BassGuitarInstrument -- type: entityTable +- type: entityTable #5x tiny id: RandomSatchelMedsTable table: !type:GroupSelector children: @@ -552,7 +557,7 @@ - id: Stimpack - id: CombatMedipen -- type: entityTable +- type: entityTable #1x Medium id: RandomSatchelMysteriesTable table: !type:GroupSelector children: @@ -597,13 +602,13 @@ table: !type:AllSelector children: - !type:NestedSelector - tableId: RandomSatchelGearTable + tableId: RandomSatchelGearTable #1x Huge - !type:NestedSelector - tableId: RandomSatchelGadgetsTable + tableId: RandomSatchelGadgetsTable #2x small - !type:NestedSelector - tableId: CubeTable + tableId: CubeTable #10x tiny -- type: entityTable +- type: entityTable #1x Huge id: RandomSatchelGearTable table: !type:GroupSelector children: @@ -615,7 +620,7 @@ - id: HandheldStationMap - id: PinpointerStation -- type: entityTable +- type: entityTable #2x small id: RandomSatchelGadgetsTable table: !type:GroupSelector children: @@ -633,7 +638,7 @@ - id: ChameleonProjector weight: 0.25 -- type: entityTable +- type: entityTable #10x tiny id: CubeTable table: !type:GroupSelector children: diff --git a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml index 1248cd6d68..27cd2921b8 100644 --- a/Resources/Prototypes/Entities/Clothing/Belt/belts.yml +++ b/Resources/Prototypes/Entities/Clothing/Belt/belts.yml @@ -481,6 +481,7 @@ - MagazineMagnum - CombatKnife - Truncheon + - HandGrenade components: - Stunbaton - FlashOnTrigger @@ -656,7 +657,7 @@ - type: Clothing sprite: Clothing/Belt/militarywebbing.rsi - type: ExplosionResistance - damageCoefficient: 0.5 + damageCoefficient: 0.1 - type: entity parent: ClothingBeltMilitaryWebbing diff --git a/Resources/Prototypes/Entities/Clothing/Ears/headsets.yml b/Resources/Prototypes/Entities/Clothing/Ears/headsets.yml index 89227387f9..f2c76cce99 100644 --- a/Resources/Prototypes/Entities/Clothing/Ears/headsets.yml +++ b/Resources/Prototypes/Entities/Clothing/Ears/headsets.yml @@ -283,8 +283,23 @@ - type: ContainerFill containers: key_slots: - - EncryptionKeyFreelance + - EncryptionKeyFreelance - type: Sprite sprite: Clothing/Ears/Headsets/freelance.rsi - type: Clothing sprite: Clothing/Ears/Headsets/freelance.rsi + +- type: entity + parent: [ClothingHeadset, BaseMagicalContraband] + id: ClothingHeadsetWizard + name: wizard headset + description: A headset used by the dreaded space wizards. + components: + - type: ContainerFill + containers: + key_slots: + - EncryptionKeyStationMaster + - type: Sprite + sprite: Clothing/Ears/Headsets/wizard.rsi + - type: Clothing + sprite: Clothing/Ears/Headsets/wizard.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml index 42343d1569..f27f6a6a15 100644 --- a/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml +++ b/Resources/Prototypes/Entities/Clothing/Ears/headsets_alt.yml @@ -155,3 +155,20 @@ sprite: Clothing/Ears/Headsets/freelance.rsi - type: Clothing sprite: Clothing/Ears/Headsets/freelance.rsi + +- type: entity + parent: [ClothingHeadsetAlt, BaseMagicalContraband] + id: ClothingHeadsetAltWizard + name: wizard's over-ear headset + components: + - type: Headset + - type: EncryptionKeyHolder + keySlots: 5 + - type: ContainerFill + containers: + key_slots: + - EncryptionKeyStationMaster + - type: Sprite + sprite: Clothing/Ears/Headsets/wizard.rsi + - type: Clothing + sprite: Clothing/Ears/Headsets/wizard.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml index ac8360f31d..98fb8fdded 100644 --- a/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml +++ b/Resources/Prototypes/Entities/Clothing/Eyes/hud.yml @@ -210,8 +210,8 @@ - type: entity parent: [ClothingEyesBase, ShowSecurityIcons, BaseSyndicateContraband] id: ClothingEyesHudSyndicateAgent - name: syndicate agent visor - description: The Syndicate Agent's professional heads-up display, designed for quick diagnosis of their team's status. + name: syndicate medical visor + description: The Syndicate Corpsman's professional heads-up display, designed for quick diagnosis of their team's status. components: - type: Sprite sprite: Clothing/Eyes/Hud/syndagent.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml b/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml index cc4c84840a..646a555037 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/base_clothinghead.yml @@ -249,6 +249,11 @@ - type: TemperatureProtection heatingCoefficient: 1.05 coolingCoefficient: 0.7 + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.90 + - type: Armor # so zombification resistance shows up + modifiers: + coefficients: { } - type: GroupExamine - type: HideLayerClothing slots: diff --git a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml index 744729fa41..9aa0e76a54 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hardsuit-helmets.yml @@ -453,7 +453,7 @@ parent: [ ClothingHeadHardsuitBase, ClothingHeadSuitWithLightBase ] id: ClothingHeadHelmetHardsuitSyndieElite name: syndicate elite helmet - description: An elite version of the blood-red hardsuit's helmet, with improved armor and fireproofing. Property of Gorlex Marauders. + description: An elite version of the blood-red hardsuit's helmet, with improved radiation resistance and fireproofing. Property of Gorlex Marauders. components: - type: Sprite sprite: Clothing/Head/Hardsuits/syndieelite.rsi @@ -580,7 +580,7 @@ #Pirate Captain Hardsuit - type: entity - parent: ClothingHeadHardsuitBase + parent: [ ClothingHeadHardsuitBase, ClothingHeadSuitWithLightBase ] id: ClothingHeadHelmetHardsuitPirateCap name: pirate captain's hardsuit helmet suffix: Pirate @@ -590,9 +590,20 @@ sprite: Clothing/Head/Hardsuits/piratecaptainhelm.rsi - type: Clothing sprite: Clothing/Head/Hardsuits/piratecaptainhelm.rsi + - type: PointLight # Color matches visor colors, radius/energy same as mining hardsuit for the big captain. + color: "#f3ea9c" + radius: 7 + energy: 3 - type: PressureProtection highPressureMultiplier: 0.3 lowPressureMultiplier: 1000 + - type: Armor + modifiers: + coefficients: + Blunt: 0.9 + Slash: 0.9 + Piercing: 0.9 + Heat: 0.9 #CENTCOMM / ERT HARDSUITS #ERT Leader Hardsuit @@ -643,6 +654,8 @@ sprite: Clothing/Head/Hardsuits/ERThelmets/ertengineer.rsi - type: PointLight color: "#f4ffad" + - type: FireProtection + reduction: 0.2 - type: Armor modifiers: coefficients: @@ -738,6 +751,8 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.75 #Deathsquad Hardsuit - type: entity diff --git a/Resources/Prototypes/Entities/Clothing/Head/hats.yml b/Resources/Prototypes/Entities/Clothing/Head/hats.yml index 6264748293..260a1c385f 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hats.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hats.yml @@ -192,6 +192,22 @@ - type: Clothing sprite: Clothing/Head/Hats/beret_merc.rsi +- type: entity + parent: ClothingHeadBase + id: ClothingHeadHatBeretCommand + name: command beret + description: A beret with a Command insignia emblazoned on it. It has an aura of authority. + components: + - type: Sprite + sprite: Clothing/Head/Hats/beret_command.rsi + - type: Clothing + sprite: Clothing/Head/Hats/beret_command.rsi + - type: Tag + tags: + - ClothMade + - HamsterWearable + - WhitelistChameleon + - type: entity parent: ClothingHeadBase id: ClothingHeadHatBowlerHat @@ -421,15 +437,28 @@ sprite: Clothing/Head/Hats/redwizard.rsi - type: entity - parent: ClothingHeadBase + parent: [ClothingHeadBase, BaseFoldable] id: ClothingHeadHatSantahat name: santa hat - description: A festive hat worn by Santa Claus. + description: A festive hat worn by Santa Claus. Now with a foldable beard. components: - - type: Sprite - sprite: Clothing/Head/Hats/santahat.rsi - type: Clothing sprite: Clothing/Head/Hats/santahat.rsi + - type: Appearance + - type: Foldable + canFoldInsideContainer: true + - type: FoldableClothing + foldedEquippedPrefix: nobeard + foldedHeldPrefix: nobeard + - type: Sprite + sprite: Clothing/Head/Hats/santahat.rsi + layers: + - state: icon + map: ["unfoldedLayer"] + - state: icon-nobeard + map: [ "foldedLayer" ] + visible: true + - type: entity parent: ClothingHeadBase @@ -523,6 +552,43 @@ map: ["foldedLayer"] visible: false +- type: entity + parent: ClothingHeadBase + id: ClothingHeadHatCanadaBeanie + name: beanie + description: Red, white and snug. It radiates a homely feeling, if your home happens to be chilly and filled with coffeehouses. + components: + - type: Sprite + sprite: Clothing/Head/Hats/beanie.rsi + layers: + - state: body-icon + - state: cuffcrown-icon + color: "#a60b0b" + - state: pompom-icon + color: "#a60b0b" + - type: Item + inhandVisuals: + left: + - state: body-inhand-left + - state: cuffcrown-inhand-left + color: "#a60b0b" + - state: pompom-inhand-left + color: "#a60b0b" + right: + - state: body-inhand-right + - state: cuffcrown-inhand-right + color: "#a60b0b" + - state: pompom-inhand-right + color: "#a60b0b" + - type: Clothing + sprite: Clothing/Head/Hats/beanie.rsi + clothingVisuals: + head: + - state: body-equipped-HELMET + - state: cuffcrown-equipped-HELMET + color: "#a60b0b" + - state: pompom-equipped-HELMET + color: "#a60b0b" - type: entity parent: ClothingHeadHatWizardBase @@ -1148,3 +1214,14 @@ sprite: Clothing/Head/Hats/beret_medic.rsi - type: Clothing sprite: Clothing/Head/Hats/beret_medic.rsi + +- type: entity + parent: ClothingHeadBase + id: ClothingHeadHatSolidHeadband + name: solid headband + description: "You'll feel like you're Invisible while wearing this! (DISCLAIMER: DOES NOT ACTUALLY MAKE THE WEARER INVISIBLE)" + components: + - type: Sprite + sprite: Clothing/Head/Hats/solidheadband.rsi + - type: Clothing + sprite: Clothing/Head/Hats/solidheadband.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml index 0dfc37a627..01c663ae32 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/helmets.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/helmets.yml @@ -6,6 +6,19 @@ id: ClothingHeadHelmetBase abstract: true components: + - type: Tag + tags: + - WhitelistChameleon + - type: HideLayerClothing + slots: + - HeadTop + - HeadSide + +- type: entity + parent: ClothingHeadHelmetBase + id: ClothingHeadHelmetArmoredBase + abstract: true + components: - type: Armor #Values seem to let the user survive one extra hit if attacked consistently. modifiers: coefficients: @@ -13,17 +26,10 @@ Slash: 0.9 Piercing: 0.9 Heat: 0.9 - - type: Tag - tags: - - WhitelistChameleon - - type: HideLayerClothing - slots: - - HeadTop - - HeadSide #Basic Helmet (Security Helmet) - type: entity - parent: [ClothingHeadHelmetBase, BaseSecurityContraband] + parent: [ClothingHeadHelmetArmoredBase, BaseSecurityContraband] id: ClothingHeadHelmetBasic name: helmet description: Standard security gear. Protects the head from impacts. @@ -39,7 +45,7 @@ #Mercenary Helmet - type: entity - parent: [ ClothingHeadHelmetBase, BaseMajorContraband ] + parent: [ ClothingHeadHelmetArmoredBase, BaseMajorContraband ] id: ClothingHeadHelmetMerc name: mercenary helmet description: The combat helmet is commonly used by mercenaries, is strong, light and smells like gunpowder and the jungle. @@ -51,7 +57,7 @@ #SWAT Helmet - type: entity - parent: [ClothingHeadBase, BaseSecurityContraband] + parent: [ClothingHeadHelmetBase, BaseSecurityContraband] id: ClothingHeadHelmetSwat name: SWAT helmet description: An extremely robust helmet, commonly used by paramilitary forces. This one has the Nanotrasen logo emblazoned on the top. @@ -87,7 +93,7 @@ #Light Riot Helmet - type: entity - parent: [ClothingHeadBase, BaseSecurityContraband] + parent: [ClothingHeadHelmetBase, BaseSecurityContraband] id: ClothingHeadHelmetRiot name: light riot helmet description: It's a helmet specifically designed to protect against close range attacks. @@ -146,7 +152,7 @@ #Cult Helmet - type: entity - parent: [ClothingHeadBase, BaseMajorContraband] + parent: [ClothingHeadHelmetBase, BaseMajorContraband] id: ClothingHeadHelmetCult name: cult helmet description: A robust, evil-looking cult helmet. @@ -189,7 +195,7 @@ #Knight Helmet - type: entity - parent: ClothingHeadBase + parent: ClothingHeadHelmetBase id: ClothingHeadHelmetTemplar name: knight helmet description: Decorative helmet fashioned to resemble the knights of old. @@ -203,7 +209,7 @@ #Thunderdome Helmet - type: entity - parent: ClothingHeadBase + parent: ClothingHeadHelmetBase id: ClothingHeadHelmetThunderdome name: thunderdome helmet description: Let the battle commence! @@ -215,7 +221,7 @@ #Wizard Helmet - type: entity - parent: ClothingHeadBase + parent: ClothingHeadHelmetBase id: ClothingHeadHelmetWizardHelm name: wizard helm description: Strange-looking helmet that most certainly belongs to a real magic user. @@ -293,7 +299,7 @@ #Chitinous Helmet - type: entity - parent: [ ClothingHeadBase, BaseMajorContraband] + parent: [ ClothingHeadHelmetBase, BaseMajorContraband] id: ClothingHeadHelmetLing name: chitinous helmet description: An all-consuming chitinous mass of armor. @@ -313,7 +319,7 @@ #ERT HELMETS #ERT Leader Helmet - type: entity - parent: [ BaseCentcommContraband, ClothingHeadHelmetBase ] + parent: [ BaseCentcommContraband, ClothingHeadHelmetArmoredBase ] id: ClothingHeadHelmetERTLeader name: ERT leader helmet description: An in-atmosphere helmet worn by the leader of a Nanotrasen Emergency Response Team. Has blue highlights. @@ -325,7 +331,7 @@ #ERT Security Helmet - type: entity - parent: [ BaseCentcommContraband, ClothingHeadHelmetBase ] + parent: ClothingHeadHelmetERTLeader id: ClothingHeadHelmetERTSecurity name: ERT security helmet description: An in-atmosphere helmet worn by security members of the Nanotrasen Emergency Response Team. Has red highlights. @@ -337,7 +343,7 @@ #ERT Medic Helmet - type: entity - parent: [ BaseCentcommContraband, ClothingHeadHelmetBase ] + parent: ClothingHeadHelmetERTLeader id: ClothingHeadHelmetERTMedic name: ERT medic helmet description: An in-atmosphere helmet worn by medical members of the Nanotrasen Emergency Response Team. Has white highlights. @@ -349,7 +355,7 @@ #ERT Engineer Helmet - type: entity - parent: [ BaseCentcommContraband, ClothingHeadHelmetBase ] + parent: ClothingHeadHelmetERTLeader id: ClothingHeadHelmetERTEngineer name: ERT engineer helmet description: An in-atmosphere helmet worn by engineering members of the Nanotrasen Emergency Response Team. Has orange highlights. @@ -361,7 +367,7 @@ #ERT Janitor Helmet - type: entity - parent: [ BaseCentcommContraband, ClothingHeadHelmetBase ] + parent: ClothingHeadHelmetERTLeader id: ClothingHeadHelmetERTJanitor name: ERT janitor helmet description: An in-atmosphere helmet worn by janitorial members of the Nanotrasen Emergency Response Team. Has dark purple highlights. @@ -391,7 +397,7 @@ #Bone Helmet - type: entity - parent: [ ClothingHeadHelmetBase, BaseMinorContraband ] + parent: [ ClothingHeadHelmetArmoredBase, BaseMinorContraband ] id: ClothingHeadHelmetBone name: bone helmet description: Cool-looking helmet made of skull of your enemies. @@ -405,7 +411,7 @@ node: helmet - type: entity - parent: [ ClothingHeadHelmetBase, BaseMinorContraband ] + parent: [ ClothingHeadHelmetArmoredBase, BaseMinorContraband ] id: ClothingHeadHelmetPodWars name: ironclad II helmet description: An ironclad II helmet, a relic of the pod wars. @@ -417,7 +423,7 @@ #Justice Helmet - type: entity - parent: [ ClothingHeadHelmetBase, BaseSecurityContraband ] + parent: ClothingHeadHelmetBasic id: ClothingHeadHelmetJustice name: justice helm description: Advanced security gear. Protects the station from ne'er-do-wells. diff --git a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml index 1330d38f40..0f081679dd 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/hoods.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/hoods.yml @@ -11,6 +11,11 @@ sprite: Clothing/Head/Hoods/Bio/general.rsi - type: BreathMask - type: IngestionBlocker + - type: GroupExamine + - type: Armor + modifiers: { } + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.9 - type: Tag tags: - WhitelistChameleon @@ -33,6 +38,8 @@ sprite: Clothing/Head/Hoods/Bio/cmo.rsi - type: Clothing sprite: Clothing/Head/Hoods/Bio/cmo.rsi + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.8 - type: entity parent: ClothingHeadHatHoodBioGeneral @@ -78,13 +85,15 @@ id: ClothingHeadHatHoodBioVirology name: bio hood suffix: Virology - description: A hood that protects the head and face from biological contaminants. + description: A hood that strongly protects the head and face from biological contaminants. components: - type: IdentityBlocker - type: Sprite sprite: Clothing/Head/Hoods/Bio/virology.rsi - type: Clothing sprite: Clothing/Head/Hoods/Bio/virology.rsi + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.8 - type: entity parent: ClothingHeadBase diff --git a/Resources/Prototypes/Entities/Clothing/Head/soft.yml b/Resources/Prototypes/Entities/Clothing/Head/soft.yml index d2eec63232..db50463978 100644 --- a/Resources/Prototypes/Entities/Clothing/Head/soft.yml +++ b/Resources/Prototypes/Entities/Clothing/Head/soft.yml @@ -99,6 +99,22 @@ id: ClothingHeadHatQMsoftFlipped name: quartermaster's cap +- type: entity + parent: ClothingHeadHeadHatBaseFlippable + id: ClothingHeadHatCommandSoft + name: command cap + description: It's a baseball hat painted in Command colours. + components: + - type: Sprite + sprite: Clothing/Head/Soft/commandsoft.rsi + - type: Clothing + sprite: Clothing/Head/Soft/commandsoft.rsi + +- type: entity + parent: [ ClothingHeadHeadHatBaseFlipped, ClothingHeadHatCommandSoft ] + id: ClothingHeadHatCommandSoftFlipped + name: command cap + - type: entity parent: ClothingHeadHeadHatBaseFlippable id: ClothingHeadHatCorpsoft diff --git a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml index e4e1372f89..f85cf2de7e 100644 --- a/Resources/Prototypes/Entities/Clothing/Masks/masks.yml +++ b/Resources/Prototypes/Entities/Clothing/Masks/masks.yml @@ -137,6 +137,10 @@ tags: - PetWearable - WhitelistChameleon + - type: PhysicalComposition + materialComposition: + Steel: 50 + Plastic: 50 - type: entity parent: ClothingMaskBreathMedical diff --git a/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml b/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml index bd389bcf4a..586cc5e665 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/mantles.yml @@ -12,8 +12,8 @@ - type: entity parent: [ClothingNeckBase, BaseCommandContraband] id: ClothingNeckMantleCE - name: chief engineer's mantle - description: High visibility, check. RIG system, check. High capacity cell, check. Everything a chief engineer could need in a stylish mantle. + name: chief engineer's manica + description: A segmented arm covering for the experienced Chief Engineer, to signify the hazards of the job and the dangers faced to earn it. components: - type: Sprite sprite: Clothing/Neck/mantles/cemantle.rsi @@ -84,4 +84,4 @@ - type: Sprite sprite: Clothing/Neck/mantles/mantle.rsi - type: Clothing - sprite: Clothing/Neck/mantles/mantle.rsi + sprite: Clothing/Neck/mantles/mantle.rsi diff --git a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml index 563a94779b..e579ec38fb 100644 --- a/Resources/Prototypes/Entities/Clothing/Neck/pins.yml +++ b/Resources/Prototypes/Entities/Clothing/Neck/pins.yml @@ -133,6 +133,17 @@ - type: Clothing equippedPrefix: pan +- type: entity + parent: ClothingNeckPinBase + id: ClothingNeckPluralPin + name: plural pin + description: Be plural, do crimes. + components: + - type: Sprite + state: plural + - type: Clothing + equippedPrefix: plural + - type: entity parent: ClothingNeckPinBase id: ClothingNeckOmnisexualPin @@ -155,6 +166,17 @@ - type: Clothing equippedPrefix: gender +- type: entity + parent: ClothingNeckPinBase + id: ClothingNeckGenderfluidPin + name: genderfluid pin + description: be gender, be fluid + components: + - type: Sprite + state: fluid + - type: Clothing + equippedPrefix: fluid + - type: entity parent: ClothingNeckPinBase id: ClothingNeckTransPin diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml index 539cec9328..acb44c8ad8 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/armor.yml @@ -130,6 +130,8 @@ Caustic: 0.5 - type: ExplosionResistance damageCoefficient: 0.35 + #- type: StaminaResistance + # damageCoefficient: 0.45 - type: ClothingSpeedModifier walkModifier: 0.9 sprintModifier: 0.9 @@ -179,6 +181,8 @@ - type: BatterySelfRecharger autoRecharge: true autoRechargeRate: 2 + - type: Item + size: Normal - type: entity parent: [ ClothingOuterBaseLarge, BaseMajorContraband, AllowSuitStorageClothing ] diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/bio.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/bio.yml index fec4d4df6c..fa550a83d6 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/bio.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/bio.yml @@ -12,7 +12,13 @@ - type: Armor modifiers: coefficients: - Caustic: 0.5 + Caustic: 0.75 + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.35 + - type: GroupExamine + - type: ClothingSpeedModifier + walkModifier: 1 + sprintModifier: 0.95 - type: entity parent: ClothingOuterBioGeneral @@ -31,12 +37,16 @@ id: ClothingOuterBioJanitor name: bio suit suffix: Janitor - description: A suit that protects against biological contamination, in Janitor colors. + description: A suit that protects against biological contamination and caustic spills. components: - type: Sprite sprite: Clothing/OuterClothing/Bio/janitor.rsi - type: Clothing sprite: Clothing/OuterClothing/Bio/janitor.rsi + - type: Armor + modifiers: + coefficients: + Caustic: 0.4 - type: entity parent: ClothingOuterBioGeneral @@ -51,25 +61,35 @@ sprite: Clothing/OuterClothing/Bio/scientist.rsi - type: entity - parent: ClothingOuterBioGeneral + parent: [ClothingOuterBioGeneral, BaseSecurityContraband] id: ClothingOuterBioSecurity name: bio suit suffix: Security - description: A suit that protects against biological contamination, in Security colors. + description: A suit that protects against biological contamination, kitted out with additional armor. components: - type: Sprite sprite: Clothing/OuterClothing/Bio/security.rsi - type: Clothing sprite: Clothing/OuterClothing/Bio/security.rsi + - type: Armor + modifiers: + coefficients: + Caustic: 0.8 + Slash: 0.6 + Piercing: 0.8 + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.4 - type: entity parent: ClothingOuterBioGeneral id: ClothingOuterBioVirology name: bio suit suffix: Virology - description: A suit that protects against biological contamination, in Virology colors. + description: A suit that strongly protects against biological contamination. components: - type: Sprite sprite: Clothing/OuterClothing/Bio/virology.rsi - type: Clothing sprite: Clothing/OuterClothing/Bio/virology.rsi + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.25 diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml index 537b39f4d3..e73eca00bf 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/coats.yml @@ -66,9 +66,9 @@ - type: Armor modifiers: coefficients: - Blunt: 0.7 - Slash: 0.7 - Piercing: 0.7 + Blunt: 0.65 + Slash: 0.65 + Piercing: 0.6 Heat: 0.7 Caustic: 0.75 # not the full 90% from ss13 because of the head - type: ExplosionResistance @@ -82,10 +82,11 @@ - type: Armor modifiers: coefficients: - Blunt: 0.7 - Slash: 0.7 + Blunt: 0.65 + Slash: 0.65 Piercing: 0.7 Heat: 0.7 + Caustic: 0.9 - type: ExplosionResistance damageCoefficient: 0.9 diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml index c120cb04ef..1a31de2b43 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/hardsuits.yml @@ -251,6 +251,7 @@ Blunt: 0.6 Slash: 0.6 Piercing: 0.6 + Heat: 0.8 Caustic: 0.7 - type: ClothingSpeedModifier walkModifier: 0.75 @@ -305,9 +306,10 @@ - type: Armor modifiers: coefficients: - Blunt: 0.5 - Slash: 0.6 + Blunt: 0.4 + Slash: 0.5 Piercing: 0.6 + Heat: 0.8 Caustic: 0.7 - type: ClothingSpeedModifier walkModifier: 0.7 @@ -466,13 +468,14 @@ highPressureMultiplier: 0.45 lowPressureMultiplier: 1000 - type: ExplosionResistance - damageCoefficient: 0.6 + damageCoefficient: 0.5 - type: Armor modifiers: coefficients: Blunt: 0.6 Slash: 0.5 Piercing: 0.5 + Heat: 0.8 Radiation: 0.5 Caustic: 0.6 - type: ClothingSpeedModifier @@ -533,6 +536,8 @@ lowPressureMultiplier: 1000 - type: ExplosionResistance damageCoefficient: 0.5 + #- type: StaminaResistance + # damageCoefficient: 0.75 - type: Armor modifiers: coefficients: @@ -577,7 +582,7 @@ parent: [ClothingOuterHardsuitBase, BaseSyndicateContraband] id: ClothingOuterHardsuitSyndieElite name: syndicate elite hardsuit - description: An elite version of the blood-red hardsuit, with improved mobility and fireproofing. Property of Gorlex Marauders. + description: An elite version of the blood-red hardsuit, with improved radiation resistance and fireproofing. Property of Gorlex Marauders. components: - type: Sprite sprite: Clothing/OuterClothing/Hardsuits/syndieelite.rsi @@ -593,6 +598,8 @@ damageCoefficient: 0.2 - type: FireProtection reduction: 0.8 + #- type: StaminaResistance + # damageCoefficient: 0.6 - type: Armor modifiers: coefficients: @@ -627,6 +634,8 @@ lowPressureMultiplier: 1000 - type: ExplosionResistance damageCoefficient: 0.5 + #- type: StaminaResistance + # damageCoefficient: 0.6 - type: Armor modifiers: coefficients: @@ -637,8 +646,8 @@ Radiation: 0.25 Caustic: 0.4 - type: ClothingSpeedModifier - walkModifier: 1.0 - sprintModifier: 1.0 + walkModifier: 0.9 + sprintModifier: 0.9 - type: HeldSpeedModifier - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitSyndieCommander @@ -659,6 +668,8 @@ lowPressureMultiplier: 1000 - type: ExplosionResistance damageCoefficient: 0.3 + #- type: StaminaResistance # Should not have stamina resistance, this is purely so people know it was not forgotten. + # damageCoefficient: 0.99 - type: Armor modifiers: coefficients: @@ -674,6 +685,9 @@ - type: HeldSpeedModifier - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitCybersun + - type: Tag + tags: + - MonkeyWearable #Wizard Hardsuit - type: entity @@ -740,7 +754,7 @@ #Pirate EVA Suit (Deep Space EVA Suit) #Despite visually appearing like a softsuit, it functions exactly like a hardsuit would (parents off of base hardsuit, has resistances and toggleable clothing, etc.) so it goes here. - type: entity - parent: ClothingOuterHardsuitBase + parent: [ ClothingOuterHardsuitBase, BaseMajorContraband ] id: ClothingOuterHardsuitPirateEVA name: deep space EVA suit suffix: Pirate @@ -748,6 +762,8 @@ components: - type: Sprite sprite: Clothing/OuterClothing/Hardsuits/pirateeva.rsi + - type: Item + size: Huge - type: Clothing sprite: Clothing/OuterClothing/Hardsuits/pirateeva.rsi - type: ExplosionResistance @@ -771,13 +787,15 @@ #Pirate Captain Hardsuit - type: entity - parent: ClothingOuterHardsuitBase + parent: [ ClothingOuterHardsuitBase, BaseMajorContraband ] id: ClothingOuterHardsuitPirateCap name: pirate captain's hardsuit description: An ancient armored hardsuit, perfect for defending against space scurvy and toolbox-wielding scallywags. components: - type: Sprite sprite: Clothing/OuterClothing/Hardsuits/piratecaptain.rsi + - type: Item + size: Huge - type: Clothing sprite: Clothing/OuterClothing/Hardsuits/piratecaptain.rsi - type: PressureProtection @@ -844,6 +862,8 @@ sprite: Clothing/OuterClothing/Hardsuits/ERTSuits/ertengineer.rsi - type: ToggleableClothing clothingPrototype: ClothingHeadHelmetHardsuitERTEngineer + - type: FireProtection + reduction: 0.8 #ERT Medic Hardsuit - type: entity @@ -912,6 +932,8 @@ damageCoefficient: 0.2 - type: FireProtection reduction: 0.8 + - type: StaminaResistance + damageCoefficient: 0.15 # Needs 21 hits with a disabler to stun :godo: - type: Armor modifiers: coefficients: @@ -958,6 +980,8 @@ Shock: 0.1 Radiation: 0.1 Caustic: 0.1 + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.25 - type: ClothingSpeedModifier walkModifier: 1.0 sprintModifier: 1.0 diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml index 42de6bfd02..e008fba094 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/vests.yml @@ -19,6 +19,34 @@ - type: ExplosionResistance damageCoefficient: 0.9 +#Elite web vest +- type: entity + parent: [ClothingOuterStorageBase, AllowSuitStorageClothing, BaseSyndicateContraband] + id: ClothingOuterVestWebElite + name: elite web vest + description: A synthetic armor vest. This one has added webbing and heat resistant fibers. + components: + - type: Sprite + sprite: Clothing/OuterClothing/Vests/elitevest.rsi + - type: Clothing + sprite: Clothing/OuterClothing/Vests/elitevest.rsi + - type: TemperatureProtection + heatingCoefficient: 0.1 + coolingCoefficient: 0.1 + - type: Armor + modifiers: + coefficients: + Blunt: 0.5 + Slash: 0.5 + Piercing: 0.7 + Heat: 0.3 + Radiation: 0.5 + Caustic: 0.5 + - type: ExplosionResistance + damageCoefficient: 0.5 + - type: FireProtection + reduction: 0.85 + #Mercenary web vest - type: entity parent: [ BaseMajorContraband, ClothingOuterVestWeb] #web vest so it should have some pockets for ammo @@ -99,3 +127,7 @@ sprite: Clothing/OuterClothing/Vests/tankharness.rsi - type: Clothing sprite: Clothing/OuterClothing/Vests/tankharness.rsi + - type: Item + size: Normal # Make smaller than typical outer clothing + shape: + - 0, 0, 0, 1 diff --git a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml index c141971700..a0b49d48d5 100644 --- a/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml +++ b/Resources/Prototypes/Entities/Clothing/OuterClothing/wintercoats.yml @@ -19,6 +19,8 @@ Slash: 0.95 Heat: 0.90 priceMultiplier: 0 + - type: ZombificationResistance + zombificationResistanceCoefficient: 0.55 - type: Food requiresSpecialDigestion: true - type: SolutionContainerManager @@ -781,7 +783,7 @@ ############################################################## - type: entity - parent: [ClothingOuterWinterWarden, BaseSyndicateContraband] + parent: [ BaseSyndicateContraband, ClothingOuterWinterWarden ] id: ClothingOuterWinterSyndieCapArmored name: syndicate's armored winter coat description: "The syndicate's armored winter coat is made of durable fabric, with gilded patterns, and coarse wool." diff --git a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml index 6610ae87cc..6f88dde595 100644 --- a/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml +++ b/Resources/Prototypes/Entities/Clothing/Shoes/magboots.yml @@ -18,6 +18,10 @@ - type: ComponentToggler components: - type: NoSlip + - type: ItemTogglePrefix + prefixOn: on + - type: ToggleClothingPrefix + prefixOn: on - type: Magboots - type: ClothingSpeedModifier walkModifier: 0.85 diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml index d44880c5be..ee4dacaeaa 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpskirts.yml @@ -133,7 +133,7 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtDetective - name: hard-worn suit + name: hard-worn suitskirt description: Someone who wears this means business. components: - type: Sprite @@ -144,7 +144,7 @@ - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtDetectiveGrey - name: noir suit + name: noir suitskirt description: A hard-boiled private investigator's grey suit, complete with tie clip. components: - type: Sprite @@ -221,6 +221,17 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpskirt/hos_parade.rsi +- type: entity + parent: [ClothingUniformSkirtBase, BaseCommandContraband] + id: ClothingUniformJumpskirtCommandGeneric + name: command jumpskirt + description: A generic Command-colored jumpsuit not associated with any particular department. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpskirt/commandgeneric.rsi + - type: Clothing + sprite: Clothing/Uniforms/Jumpskirt/commandgeneric.rsi + - type: entity parent: ClothingUniformSkirtBase id: ClothingUniformJumpskirtHydroponics @@ -614,7 +625,7 @@ sprite: Clothing/Uniforms/Jumpskirt/lawyergood.rsi - type: entity - parent: ClothingUniformSkirtBase + parent: [ ClothingUniformSkirtBase, BaseSyndicateContraband ] id: ClothingUniformJumpskirtSyndieFormalDress name: syndicate formal dress description: "The syndicate's uniform is made in an elegant style, it's even a pity to do dirty tricks in this." diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml index 3ecfad5f39..0caa9c6c1d 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/jumpsuits.yml @@ -396,6 +396,17 @@ - type: Clothing sprite: Clothing/Uniforms/Jumpsuit/hos_parade.rsi +- type: entity + parent: [ ClothingUniformBase, BaseCommandContraband ] + id: ClothingUniformJumpsuitCommandGeneric + name: command jumpsuit + description: A generic Command-colored jumpsuit not associated with any particular department. + components: + - type: Sprite + sprite: Clothing/Uniforms/Jumpsuit/commandgeneric.rsi + - type: Clothing + sprite: Clothing/Uniforms/Jumpsuit/commandgeneric.rsi + - type: entity parent: ClothingUniformBase id: ClothingUniformJumpsuitHydroponics diff --git a/Resources/Prototypes/Entities/Clothing/Uniforms/ship_vs_ship.yml b/Resources/Prototypes/Entities/Clothing/Uniforms/ship_vs_ship.yml index f10317e221..b19f70881d 100644 --- a/Resources/Prototypes/Entities/Clothing/Uniforms/ship_vs_ship.yml +++ b/Resources/Prototypes/Entities/Clothing/Uniforms/ship_vs_ship.yml @@ -15,7 +15,7 @@ sprite: Clothing/Uniforms/Jumpsuit/recruit_nt.rsi - type: entity - parent: ClothingUniformBase + parent: [ ClothingUniformBase, BaseSyndicateContraband ] id: ClothingUniformJumpsuitRecruitSyndie name: syndicate recruit jumpsuit description: A dubious, dark-grey jumpsuit. As if passengers weren't dubious enough already. @@ -38,7 +38,7 @@ sprite: Clothing/Uniforms/Jumpsuit/repairman_nt.rsi - type: entity - parent: ClothingUniformBase + parent: [ ClothingUniformBase, BaseSyndicateContraband ] id: ClothingUniformJumpsuitRepairmanSyndie name: syndicate repairman jumpsuit description: Functional, fashionable, and badass. Nanotrasen's engineers wish they could look as good as this. @@ -61,7 +61,7 @@ sprite: Clothing/Uniforms/Jumpsuit/paramedic_nt.rsi - type: entity - parent: ClothingUniformBase + parent: [ ClothingUniformBase, BaseSyndicateContraband ] id: ClothingUniformJumpsuitParamedicSyndie name: syndicate paramedic jumpsuit description: For some reason, wearing this makes you feel like you're awfully close to violating the Geneva Convention. @@ -85,7 +85,7 @@ sprite: Clothing/Uniforms/Jumpsuit/ce_nt.rsi - type: entity - parent: ClothingUniformBase + parent: [ ClothingUniformBase, BaseSyndicateContraband ] id: ClothingUniformJumpsuitChiefEngineerSyndie name: syndicate chief engineer jumpsuit description: An evil-looking jumpsuit with a reflective vest & red undershirt. #TODO: Write a better description for this once Ship vs. Ship is real and actual player habits begin forming diff --git a/Resources/Prototypes/Entities/Effects/admin_triggers.yml b/Resources/Prototypes/Entities/Effects/admin_triggers.yml index e1f366678d..52c5a6c110 100644 --- a/Resources/Prototypes/Entities/Effects/admin_triggers.yml +++ b/Resources/Prototypes/Entities/Effects/admin_triggers.yml @@ -20,6 +20,14 @@ range: 4 energyConsumption: 50000 +- type: entity + id: AdminInstantEffectBluespace + suffix: BluespaceFlash + parent: AdminInstantEffectBase + components: + - type: SpawnOnTrigger + proto: EffectFlashBluespace + - type: entity id: AdminInstantEffectFlash suffix: Flash diff --git a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml index 5aeafa7882..0b6384c53a 100644 --- a/Resources/Prototypes/Entities/Effects/chemistry_effects.yml +++ b/Resources/Prototypes/Entities/Effects/chemistry_effects.yml @@ -183,7 +183,7 @@ thresholds: - trigger: !type:DamageTrigger - damage: 50 + damage: 12 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] diff --git a/Resources/Prototypes/Entities/Effects/desynchronizer_effecs.yml b/Resources/Prototypes/Entities/Effects/desynchronizer_effecs.yml new file mode 100644 index 0000000000..6bede2fa8d --- /dev/null +++ b/Resources/Prototypes/Entities/Effects/desynchronizer_effecs.yml @@ -0,0 +1,19 @@ +- type: entity + id: EffectDesynchronizer + categories: [ HideSpawnMenu ] + components: + - type: Sprite + drawdepth: Effects + noRot: true + layers: + - shader: unshaded + map: ["enum.EffectLayers.Unshaded"] + sprite: Effects/chronofield.rsi + state: chronofield + - type: AnimationPlayer + - type: EffectVisuals + - type: TimedDespawn + lifetime: 0.8 + - type: Tag + tags: + - HideContextMenu \ No newline at end of file diff --git a/Resources/Prototypes/Entities/Effects/puddle.yml b/Resources/Prototypes/Entities/Effects/puddle.yml index 93f29af494..a4ecafdba7 100644 --- a/Resources/Prototypes/Entities/Effects/puddle.yml +++ b/Resources/Prototypes/Entities/Effects/puddle.yml @@ -113,6 +113,8 @@ components: - type: Clickable - type: Slippery + - type: TileFrictionModifier + modifier: 0.3 - type: Transform noRot: true anchored: true diff --git a/Resources/Prototypes/Entities/Effects/shuttle.yml b/Resources/Prototypes/Entities/Effects/shuttle.yml index 72cc04cba1..4dae76a48a 100644 --- a/Resources/Prototypes/Entities/Effects/shuttle.yml +++ b/Resources/Prototypes/Entities/Effects/shuttle.yml @@ -3,6 +3,9 @@ categories: [ HideSpawnMenu ] description: Visualizer for shuttles arriving. You shouldn't see this! components: + - type: Transform + noRot: true + gridTraversal: false - type: FtlVisualizer sprite: sprite: /Textures/Effects/medi_holo.rsi diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/donkpocketbox.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/donkpocketbox.yml index fb52cd1c40..05ad0ba725 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/donkpocketbox.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/donkpocketbox.yml @@ -18,5 +18,6 @@ - FoodBoxDonkpocketBerry - FoodBoxDonkpocketHonk - FoodBoxDonkpocketDink + - FoodBoxDonkpocketMoth chance: 0.5 offset: 0.0 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/drinks_glass.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/drinks_glass.yml index c3a9a3a143..8504925528 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/drinks_glass.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/drinks_glass.yml @@ -16,6 +16,7 @@ prototypes: - DrinkAbsintheGlass - DrinkAleGlass + - DrinkAlienBrainHemorrhage - DrinkAloe - DrinkAndalusia - DrinkAntifreeze @@ -32,17 +33,21 @@ - DrinkBloodyMaryGlass - DrinkBooger - DrinkBraveBullGlass + - DrinkBronxGlass - BudgetInsulsDrinkGlass - DrinkCarrotJuice - DrinkCoconutRum - DrinkChocolateGlass - DrinkCognacGlass - DrinkCosmopolitan + - DrinkCrushDepthGlass - DrinkCubaLibreGlass + - DrinkDarkandStormyGlass - DrinkDeadRumGlass - DrinkDevilsKiss - DrinkDriestMartiniGlass - DrinkDrGibbGlass + - DrinkElectricSharkGlass - DrinkErikaSurprise - DrinkFourteenLokoGlass - DrinkGargleBlasterGlass @@ -62,6 +67,9 @@ - DrinkIrishSlammer - DrinkIrishCoffeeGlass - DrinkLemonadeGlass + - DrinkJackRoseGlass + - DrinkJungleBirdGlass + - DrinkKalimotxoGlass - DrinkKiraSpecial - DrinkLongIslandIcedTeaGlass - DrinkManhattanGlass @@ -71,11 +79,13 @@ - DrinkMeadGlass - DrinkMilkshake - DrinkMojito + - DrinkMonkeyBusinessGlass - DrinkNTCahors - DrinkPainkillerGlass - DrinkPatronGlass - DrinkPinaColadaGlass - DrinkPoscaGlass + - DrinkRadlerGlass - DrinkRedMeadGlass - DrinkRewriter - DrinkRoyRogersGlass @@ -92,7 +102,9 @@ - DrinkSyndicatebomb - DrinkTequilaSunriseGlass - DrinkThreeMileIslandGlass + - DrinkTortugaGlass - DrinkToxinsSpecialGlass + - DrinkVampiroGlass - DrinkVodkaMartiniGlass - DrinkVodkaRedBool - DrinkVodkaTonicGlass diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/food_baked_single.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/food_baked_single.yml index 052886eadf..88506d33a6 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/food_baked_single.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/Food_Drinks/food_baked_single.yml @@ -56,6 +56,7 @@ - FoodBakedCookieRaisin - FoodBakedCookieSugar - FoodBakedGrilledCheeseSandwich + - FoodBakedGrilledCheeseSandwichCotton - FoodBakedNugget - FoodBakedPancake - FoodBakedPancakeBb diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml index 40f37c737f..e7471138a0 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/anomaly.yml @@ -30,6 +30,7 @@ - type: entity id: RandomRockAnomalySpawner + name: random rock anomaly spawner parent: MarkerBase components: - type: Sprite @@ -50,6 +51,7 @@ - type: entity id: RandomAnomalyInjectorSpawner + name: random anomaly injector spawner parent: MarkerBase components: - type: Sprite @@ -71,4 +73,3 @@ - AnomalyTrapRock #- AnomalyTrapSanta chance: 1 - diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/artifacts.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/artifacts.yml index a678ef03f3..0135361044 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/artifacts.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/artifacts.yml @@ -10,16 +10,8 @@ state: ano01 - type: RandomSpawner prototypes: - - SimpleXenoArtifact - - MediumXenoArtifact - - MediumXenoArtifact - - MediumXenoArtifact - - MediumXenoArtifact - ComplexXenoArtifact - ComplexXenoArtifact - - ComplexXenoArtifact - - SimpleXenoArtifactItem - - MediumXenoArtifactItem - ComplexXenoArtifactItem chance: 1 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/cables.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/cables.yml new file mode 100644 index 0000000000..7684c84897 --- /dev/null +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/cables.yml @@ -0,0 +1,61 @@ +- type: entity + parent: MarkerBase + id: RandomCableHVSpawner + name: HV power cable spawner + suffix: 50% + components: + - type: Sprite + layers: + - state: red + - sprite: Structures/Power/Cables/hv_cable.rsi + state: hvcable_3 + - sprite: Structures/Power/Cables/hv_cable.rsi + state: hvcable_12 + - type: RandomSpawner + prototypes: + - CableHV + chance: 0.5 + +- type: entity + parent: MarkerBase + id: RandomCableMVSpawner + name: MV power cable spawner + suffix: 50% + components: + - type: Sprite + layers: + - state: red + - sprite: Structures/Power/Cables/mv_cable.rsi + state: mvcable_3 + color: Yellow + - sprite: Structures/Power/Cables/mv_cable.rsi + state: mvstripes_3 + - sprite: Structures/Power/Cables/mv_cable.rsi + state: mvcable_12 + color: Yellow + - sprite: Structures/Power/Cables/mv_cable.rsi + state: mvstripes_12 + - type: RandomSpawner + prototypes: + - CableMV + chance: 0.5 + +- type: entity + parent: MarkerBase + id: RandomCableApcExtensionSpawner + name: LV power cable spawner + suffix: 50% + components: + - type: Sprite + layers: + - state: red + - sprite: Structures/Power/Cables/lv_cable.rsi + state: lvcable_3 + color: Green + - sprite: Structures/Power/Cables/lv_cable.rsi + state: lvcable_12 + color: Green + - type: RandomSpawner + prototypes: + - CableApcExtension + chance: 0.5 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml index 14852de558..31f15ffad0 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/crates.yml @@ -24,6 +24,138 @@ chance: 0.7 offset: 0.0 +- type: entityTable + id: LowValueInstrumentCrateTable + table: !type:GroupSelector + children: + - id: CrateFunInstrumentsVariety + - id: CrateFunInstrumentsBrass + - id: CrateFunInstrumentsString + - id: CrateFunInstrumentsWoodwind + - id: CrateFunInstrumentsKeyedPercussion + - id: CrateFunInstrumentsSpecial + weight: 0.01 + - id: CrateFunSadTromboneImplants + weight: 0.01 + +- type: entityTable + id: LowValueFunCrateTable + table: !type:GroupSelector + children: + - id: CrateFunPlushie + weight: 2 + - id: CrateFunLizardPlushieBulk + - id: CrateFunSharkPlushieBulk + - id: CrateCandles + - id: CrateFunArtSupplies + - id: CrateFunFoamGuns + weight: 0.01 + +- type: entityTable + id: LowValueMaterialCrateTable + table: !type:GroupSelector + children: + - id: CrateMaterialGlass + - id: CrateMaterialSteel + - id: CrateMaterialPlastic + - id: CrateMaterialWood + - id: CrateMaterialPlasteel + - id: CrateMaterialBasicResource + - id: CrateMaterialRandom + weight: 4 + +- type: entityTable + id: LowValueEmergencyCrateTable + table: !type:GroupSelector + children: + - id: CrateEmergencyFire + - id: CrateEmergencyInternals + - id: CrateEmergencyInflatablewall + weight: 0.5 + +- type: entityTable + id: LowValueServiceCrateTable + table: !type:GroupSelector + children: + - id: CrateServiceColorfulLights + - id: CrateServiceReplacementLights + - id: CrateServiceBureaucracy + - id: PetCarrier + - id: CrateHydroponicsTools + - id: CrateHydroponicsSeeds + - id: CrateHydroponicsSeedsExotic + weight: 0.5 + - id: CrateHydroponicsSeedsMedicinal + weight: 0.5 + - id: CrateServiceJanitorialSupplies + - id: JanitorialTrolley + weight: 0.2 + +- type: entityTable + id: LowValueEngineeringCrateTable + table: !type:GroupSelector + children: + - id: CrateEngineeringCableLV + - id: CrateEngineeringCableMV + - id: CrateEngineeringCableHV + - id: CrateEngineeringCableBulk + - id: CrateTechBoardRandom + - id: CrateEngineeringSpaceHeater + - id: StorageCanister + weight: 0.5 + +- type: entityTable + id: LowValueMedicalCrateTable + table: !type:GroupSelector + children: + - id: CrateEmergencyBurnKit + - id: CrateEmergencyToxinKit + - id: CrateEmergencyBruteKit + - id: CrateEmergencyO2Kit + - id: CrateEmergencyRadiationKit + - id: CrateBodyBags + - id: CrateChemistrySupplies + - id: CrateChemistryP + weight: 0.5 + - id: CrateChemistryS + weight: 0.5 + - id: CrateChemistryD + weight: 0.5 + +- type: entityTable + id: LowValueScienceCrateTable + table: !type:GroupSelector + children: + - id: CrateArtifactContainer + - id: HandheldArtifactContainer + weight: 0.2 + - id: CrateMaterialPlasma + +- type: entityTable + id: LowValueCrateTable + table: !type:GroupSelector + children: + - !type:NestedSelector + tableId: LowValueFunCrateTable + - !type:NestedSelector + tableId: LowValueInstrumentCrateTable + weight: 0.2 + - !type:NestedSelector + tableId: LowValueMaterialCrateTable + weight: 2 + - !type:NestedSelector + tableId: LowValueEmergencyCrateTable + - !type:NestedSelector + tableId: LowValueServiceCrateTable + - !type:NestedSelector + tableId: LowValueEngineeringCrateTable + - !type:NestedSelector + tableId: LowValueMedicalCrateTable + weight: 0.2 + - !type:NestedSelector + tableId: LowValueScienceCrateTable + weight: 0.2 + - type: entity name: Filled Crate Spawner id: CrateFilledSpawner @@ -35,34 +167,10 @@ - state: red - sprite: Structures/Storage/Crates/o2.rsi state: icon - - type: RandomSpawner - prototypes: - - CrateServiceReplacementLights - - CrateServiceBureaucracy - - CrateChemistrySupplies - - CrateMaterialGlass - - CrateMaterialSteel - - CrateMaterialPlastic - - CrateMaterialWood - - CrateMaterialPlasteel - - CrateMaterialRandom - - CrateFunArtSupplies - - CrateEngineeringCableLV - - CrateEngineeringCableMV - - CrateEngineeringCableHV - - CrateEngineeringCableBulk - - CrateTechBoardRandom - - CrateEmergencyFire - - CrateEmergencyInternals - - CrateEmergencyInflatablewall - - CrateHydroponicsTools - - CrateHydroponicsSeeds - - PetCarrier - chance: 0.7 - rarePrototypes: - - CrateMaterialPlasma - - CrateHydroponicsSeedsExotic - rareChance: 0.1 + - type: EntityTableSpawner + table: !type:NestedSelector + tableId: LowValueCrateTable + prob: 0.8 offset: 0.0 - type: entity @@ -139,3 +247,30 @@ - CrateSecurityBiosuit chance: 0.9 offset: 0.0 + +- type: entityTable + id: LockboxTable + table: !type:GroupSelector + children: + - id: CrateLockBoxEngineering + - id: CrateLockBoxMedical + - id: CrateLockBoxSecurity + - id: CrateLockBoxScience + - id: CrateLockBoxService + +- type: entity + name: random lockbox spawner + id: LootSpawnerRandomLockbox + parent: MarkerBase + suffix: 90% + components: + - type: Sprite + layers: + - state: red + - sprite: Structures/Storage/Crates/lockbox.rsi + state: icon + - type: EntityTableSpawner + table: !type:NestedSelector + tableId: LockboxTable + prob: 0.9 + offset: 0.0 diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/folders.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/folders.yml index 3ca5731bd8..7631d43316 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/folders.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/folders.yml @@ -8,7 +8,7 @@ - type: Transform anchored: false - type: Sprite - sprite: Objects/Misc/bureaucracy.rsi + sprite: Objects/Misc/folders.rsi layers: - state: folder-base - state: folder-colormap diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml index 289fee8596..4f1315ce1d 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/maintenance.yml @@ -152,8 +152,10 @@ - id: ClothingNeckLesbianPin - id: ClothingNeckNonBinaryPin - id: ClothingNeckPansexualPin + - id: ClothingNeckPluralPin - id: ClothingNeckOmnisexualPin - id: ClothingNeckGenderqueerPin + - id: ClothingNeckGenderfluidPin - id: ClothingNeckTransPin - id: ClothingNeckAutismPin - id: ClothingNeckGoldAutismPin diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/posters.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/posters.yml index 2a1988d8ad..103278d896 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/posters.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/posters.yml @@ -147,7 +147,6 @@ - PosterLegitJustAWeekAway - PosterLegitSecWatch - PosterLegitVacation - - PosterLegitPeriodicTable - PosterLegitRenault - PosterLegitNTTGC - PosterLegitSafetyMothDelam diff --git a/Resources/Prototypes/Entities/Markers/Spawners/Random/shadowkudzu.yml b/Resources/Prototypes/Entities/Markers/Spawners/Random/shadowkudzu.yml index bb79958095..a65ce47c54 100644 --- a/Resources/Prototypes/Entities/Markers/Spawners/Random/shadowkudzu.yml +++ b/Resources/Prototypes/Entities/Markers/Spawners/Random/shadowkudzu.yml @@ -1,5 +1,6 @@ - type: entity id: ShadowKudzuLootSpawner + name: shadow kudzu loot spawner parent: MarkerBase components: - type: Sprite @@ -23,4 +24,4 @@ rareChance: 0.05 rarePrototypes: - MobCatShadow - - ArtifactFragment \ No newline at end of file + - ArtifactFragment1 diff --git a/Resources/Prototypes/Entities/Markers/warp_point.yml b/Resources/Prototypes/Entities/Markers/warp_point.yml index 2536fde474..675938c09b 100644 --- a/Resources/Prototypes/Entities/Markers/warp_point.yml +++ b/Resources/Prototypes/Entities/Markers/warp_point.yml @@ -16,6 +16,22 @@ - type: WarpPoint location: beacon +# Use for areas like CC +- type: entity + id: GhostWarpPoint + parent: MarkerBase + name: ghost only warp point + components: + - type: Tag + tags: + - GhostOnlyWarp + - type: WarpPoint + blacklist: + tags: + - GhostOnlyWarp + - type: Sprite + state: pink + - type: entity parent: WarpPoint id: WarpPointBombing @@ -23,8 +39,14 @@ suffix: ninja bombing target components: - type: BombingTarget + - type: Tag + tags: + - GhostOnlyWarp - type: WarpPoint location: bombing target + blacklist: + tags: + - GhostOnlyWarp - type: Sprite layers: - state: pink diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/reptilian.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/reptilian.yml index 19768f8dc2..0891109136 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/reptilian.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/reptilian.yml @@ -173,6 +173,15 @@ - sprite: Mobs/Customization/reptilian_parts.rsi state: tail_dtiger +- type: marking + id: LizardTailAquatic + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [Reptilian] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_aquatic + - type: marking id: LizardSnoutRound bodyPart: Snout @@ -339,6 +348,15 @@ - sprite: Mobs/Customization/reptilian_parts.rsi state: body_backspikes +- type: marking + id: LizardChestFin + bodyPart: Chest + markingCategory: Chest + speciesRestriction: [Reptilian] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: body_fin + # Animated - type: marking id: LizardTailSmoothAnimated @@ -377,3 +395,12 @@ sprites: - sprite: Mobs/Customization/reptilian_parts.rsi state: tail_dtiger_wagging + +- type: marking + id: LizardTailAquaticAnimated + bodyPart: Tail + markingCategory: Tail + speciesRestriction: [] + sprites: + - sprite: Mobs/Customization/reptilian_parts.rsi + state: tail_aquatic_wagging diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml index 8a1c1f5d78..8a47856fec 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/tattoos.yml @@ -137,3 +137,31 @@ sprites: - sprite: Mobs/Customization/tattoos.rsi state: tattoo_eye_l + +- type: marking + id: TattooEyeMothRight + bodyPart: Eyes + markingCategory: Overlay + speciesRestriction: [Moth] + coloring: + default: + type: + !type:EyeColoring + negative: true + sprites: + - sprite: Mobs/Customization/tattoos.rsi + state: tattoo_eye_moth_r + +- type: marking + id: TattooEyeMothLeft + bodyPart: Eyes + markingCategory: Overlay + speciesRestriction: [Moth] + coloring: + default: + type: + !type:EyeColoring + negative: true + sprites: + - sprite: Mobs/Customization/tattoos.rsi + state: tattoo_eye_moth_l diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_facial_hair.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_facial_hair.yml index 066d197223..67e686999a 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_facial_hair.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_facial_hair.yml @@ -2,6 +2,7 @@ id: VoxFacialHairBeard bodyPart: FacialHair markingCategory: FacialHair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_facial_hair.rsi @@ -11,6 +12,7 @@ id: VoxFacialHairColonel bodyPart: FacialHair markingCategory: FacialHair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_facial_hair.rsi @@ -20,6 +22,7 @@ id: VoxFacialHairFu bodyPart: FacialHair markingCategory: FacialHair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_facial_hair.rsi @@ -29,6 +32,7 @@ id: VoxFacialHairMane bodyPart: FacialHair markingCategory: FacialHair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_facial_hair.rsi @@ -38,6 +42,7 @@ id: VoxFacialHairManeSmall bodyPart: FacialHair markingCategory: FacialHair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_facial_hair.rsi @@ -47,6 +52,7 @@ id: VoxFacialHairNeck bodyPart: FacialHair markingCategory: FacialHair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_facial_hair.rsi @@ -56,6 +62,7 @@ id: VoxFacialHairTufts bodyPart: FacialHair markingCategory: FacialHair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_facial_hair.rsi diff --git a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_hair.yml b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_hair.yml index 8748b3a093..7fc3fedaa2 100644 --- a/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_hair.yml +++ b/Resources/Prototypes/Entities/Mobs/Customization/Markings/vox_hair.yml @@ -2,6 +2,7 @@ id: VoxHairAfro bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -11,6 +12,7 @@ id: VoxHairBraids bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -20,6 +22,7 @@ id: VoxHairCrestedQuills bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -29,6 +32,7 @@ id: VoxHairEmperorQuills bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -38,6 +42,7 @@ id: VoxHairFlowing bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -47,6 +52,7 @@ id: VoxHairHawk bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -56,6 +62,7 @@ id: VoxHairHorns bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -65,6 +72,7 @@ id: VoxHairKeelQuills bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -74,6 +82,7 @@ id: VoxHairKeetQuills bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -83,6 +92,7 @@ id: VoxHairKingly bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -92,6 +102,7 @@ id: VoxHairLongBraid bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -101,6 +112,7 @@ id: VoxHairMange bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -110,6 +122,7 @@ id: VoxHairMohawk bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -119,6 +132,7 @@ id: VoxHairNights bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -128,6 +142,7 @@ id: VoxHairPony bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -137,6 +152,7 @@ id: VoxHairRazorClipped bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -146,6 +162,7 @@ id: VoxHairRazor bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -155,6 +172,7 @@ id: VoxHairSortBraid bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -164,6 +182,7 @@ id: VoxHairShortQuills bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -173,6 +192,7 @@ id: VoxHairSpotty bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -182,6 +202,7 @@ id: VoxHairSurf bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -191,6 +212,7 @@ id: VoxHairTielQuills bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -200,6 +222,7 @@ id: VoxHairWiseBraid bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi @@ -209,6 +232,7 @@ id: VoxHairYasu bodyPart: Hair markingCategory: Hair + canBeDisplaced: false speciesRestriction: [Vox] sprites: - sprite: Mobs/Customization/vox_hair.rsi diff --git a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml index ce1fecd03a..24f66948a7 100644 --- a/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml +++ b/Resources/Prototypes/Entities/Mobs/Cyborgs/base_borg_chassis.yml @@ -113,6 +113,7 @@ - BorgChassis - RoboticsConsole - type: WiresPanel + openingTool: Prying - type: ActivatableUIRequiresPanel - type: NameIdentifier group: Silicon @@ -236,6 +237,7 @@ - DoorBumpOpener - FootstepSound - CanPilot + - SiliconEmotes - Unimplantable - type: Emoting - type: GuideHelp diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml index 3b56f53dce..22f818d56b 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/animals.yml @@ -332,6 +332,7 @@ - type: Item size: Tiny - type: HTN + constantlyReplan: false rootTask: task: MouseCompound - type: Physics @@ -1681,6 +1682,7 @@ factions: - Mouse - type: HTN + constantlyReplan: false rootTask: task: MouseCompound - type: Physics @@ -2967,6 +2969,9 @@ - type: Tag tags: - VimPilot + - type: MovementSpeedModifier + baseWalkSpeed: 2 + baseSprintSpeed: 4 - type: entity name: calico cat diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml index dcc8c4fbb8..c7279801f0 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/asteroid.yml @@ -70,6 +70,7 @@ factions: - SimpleHostile - type: HTN + constantlyReplan: false rootTask: task: GoliathCompound blackboard: diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml index 1a2c134607..4b3b4dea6d 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/elemental.yml @@ -106,6 +106,7 @@ parent: MobOreCrab id: MobQuartzCrab description: An ore crab made from Quartz. + suffix: Quartz components: - type: Sprite state: quartz_crab @@ -130,6 +131,7 @@ parent: MobOreCrab id: MobIronCrab description: An ore crab made from iron. + suffix: Iron components: - type: Sprite state: iron_crab @@ -161,6 +163,7 @@ parent: MobOreCrab id: MobCoalCrab description: An ore crab made from coal. + suffix: Coal components: - type: Sprite state: coal_crab @@ -192,6 +195,7 @@ parent: MobOreCrab id: MobUraniumCrab description: An ore crab made from uranium. + suffix: Uranium components: - type: FactionException - type: NPCRetaliation @@ -226,8 +230,8 @@ - type: entity parent: MobOreCrab id: MobSilverCrab - name: ore crab description: An ore crab made from silver. + suffix: Silver components: - type: Sprite state: silver_crab @@ -255,8 +259,8 @@ - type: entity parent: MobOreCrab id: MobGoldCrab - name: ore crab description: An ore crab made from gold. + suffix: Gold components: - type: Sprite state: gold_crab diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml index 3dae7023d9..ceb9e67330 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/silicon.yml @@ -1,33 +1,17 @@ - type: entity save: false abstract: true + parent: BaseMob id: MobSiliconBase components: - - type: LagCompensation - type: Reactive groups: Acidic: [Touch] - - type: Clickable - type: Damageable damageContainer: Inorganic - - type: InteractionOutline - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.35 - density: 50 - mask: - - MobMask - layer: - - MobLayer - type: MovementSpeedModifier baseWalkSpeed : 3 baseSprintSpeed : 4 - - type: Sprite - noRot: true - drawdepth: Mobs - type: NpcFactionMember factions: - SimpleNeutral @@ -57,7 +41,7 @@ - Stutter - Electrocution - type: NameIdentifier - group: GenericNumber + group: Silicon - type: Repairable doAfterDelay: 8 fuelCost: 15 @@ -65,6 +49,7 @@ - type: Tag tags: - DoorBumpOpener + - SiliconEmotes - Bot - Unimplantable - type: MobState @@ -93,10 +78,6 @@ behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] - - type: Input - context: "human" - - type: InputMover - - type: MobMover - type: Body prototype: Bot - type: GuideHelp @@ -107,6 +88,10 @@ speechSounds: Pai #couldn't decide if this should be borg or pai sounds so I flipped a coin. - type: TypingIndicator proto: robot + - type: Vocal + sounds: + Unsexed: UnisexSilicon + - type: Emoting - type: ZombieImmune - type: ProtectedFromStepTriggers - type: NoSlip @@ -179,7 +164,8 @@ rootTask: task: HonkbotCompound - type: Slippery - launchForwardsMultiplier: 2 + slipData: + launchForwardsMultiplier: 2 - type: Speech speechVerb: Cluwne - type: StepTrigger @@ -366,10 +352,8 @@ description: Why not give the mimebot a friendly wave? components: - type: Sprite - layers: - - map: ["enum.DamageStateVisualLayers.Base"] - state: mimebot - sprite: Mobs/Silicon/Bots/mimebot.rsi + sprite: Mobs/Silicon/Bots/mimebot.rsi + state: mimebot - type: MimePowers - type: Construction graph: MimeBot @@ -399,7 +383,7 @@ - type: Sprite sprite: Mobs/Silicon/Bots/supplybot.rsi layers: - - map: ["enum.DamageStateVisualLayers.Base", "movement"] + - map: ["movement"] state: supplybot - type: SpriteMovement movementLayers: @@ -451,6 +435,7 @@ tags: - DoorBumpOpener - FootstepSound + - SiliconEmotes - Bot - Unimplantable - type: ActiveRadio diff --git a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml index 4ae6813963..9ed92709ea 100644 --- a/Resources/Prototypes/Entities/Mobs/NPCs/space.yml +++ b/Resources/Prototypes/Entities/Mobs/NPCs/space.yml @@ -405,6 +405,7 @@ factions: - Mouse - type: HTN + constantlyReplan: false rootTask: task: MouseCompound - type: Physics diff --git a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml index e2e5675907..b042ba8e0d 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/admin_ghost.yml @@ -24,6 +24,7 @@ - type: Hands - type: ComplexInteraction - type: Puller + needsHands: false - type: CombatMode - type: Physics ignorePaused: true @@ -77,7 +78,6 @@ #- type: RadarConsole # followEntity: true #- type: CargoOrderConsole - #- type: BankClient #- type: CrewMonitoringConsole #- type: GeneralStationRecordConsole # canDeleteEntries: true diff --git a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml index 91d1b95b6e..2721c6dfd1 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/dragon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/dragon.yml @@ -154,6 +154,17 @@ - DoorBumpOpener - type: Puller needsHands: false + - type: RandomMetadata + nameSegments: + - NamesDragon + - NamesDragonTitle + nameFormat: name-format-dragon + - type: Prying + pryPowered: true + force: true + speedModifier: 2.5 # fast because dragon strong + useSound: + path: /Audio/Items/crowbar.ogg - type: entity parent: BaseMobDragon diff --git a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml index f92cf40e2e..a2b516d9e5 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/humanoid.yml @@ -6,10 +6,12 @@ - type: RandomHumanoidAppearance randomizeName: false - type: GhostTakeoverAvailable + - type: IdBind - type: randomHumanoidSettings id: EventHumanoidMindShielded parent: EventHumanoid + randomizeName: false components: - type: MindShield - type: AntagImmune @@ -43,7 +45,6 @@ - type: randomHumanoidSettings id: DeathSquad parent: EventHumanoidCentcomm - randomizeName: false components: - type: GhostRole name: ghost-role-information-Death-Squad-name @@ -84,7 +85,6 @@ - type: randomHumanoidSettings id: ERTLeader parent: EventHumanoidCentcomm - randomizeName: false components: - type: GhostRole name: ghost-role-information-ert-leader-name diff --git a/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml b/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml index 3002264a75..fbc0b1943c 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/jaunt_mobs.yml @@ -38,3 +38,14 @@ - type: MovementSpeedModifier baseSprintSpeed: 6 baseWalkSpeed: 4 + +- type: entity + parent: [Incorporeal, BaseMob] + id: DesynchronizedPocket + name: desynchronized pocket + description: A pocket in spacetime, keeping the user a fraction of a second in the future. + components: + - type: Spectral + - type: MovementSpeedModifier + baseSprintSpeed: 0 + baseWalkSpeed: 0 diff --git a/Resources/Prototypes/Entities/Mobs/Player/narsie.yml b/Resources/Prototypes/Entities/Mobs/Player/narsie.yml index 5d07409b5f..f2b81f796c 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/narsie.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/narsie.yml @@ -94,6 +94,12 @@ - type: GravityWell baseRadialAcceleration: 6 maxRange: 8 + - type: Tag + tags: + - GhostOnlyWarp - type: WarpPoint follow: true location: Nar'Sie + blacklist: + tags: + - GhostOnlyWarp diff --git a/Resources/Prototypes/Entities/Mobs/Player/observer.yml b/Resources/Prototypes/Entities/Mobs/Player/observer.yml index 7fe4fbed9b..2ef40d4a48 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/observer.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/observer.yml @@ -65,6 +65,7 @@ - BypassInteractionRangeChecks - type: PointLight radius: 6 + castShadows: false enabled: false # proto for player ghosts specifically diff --git a/Resources/Prototypes/Entities/Mobs/Player/ratvar.yml b/Resources/Prototypes/Entities/Mobs/Player/ratvar.yml index 530f5e1037..658f14a6d4 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/ratvar.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/ratvar.yml @@ -89,6 +89,12 @@ - type: GravityWell baseRadialAcceleration: 6 maxRange: 8 + - type: Tag + tags: + - GhostOnlyWarp - type: WarpPoint follow: true location: Ratvar + blacklist: + tags: + - GhostOnlyWarp diff --git a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml index 0769972512..99a4cbd796 100644 --- a/Resources/Prototypes/Entities/Mobs/Player/silicon.yml +++ b/Resources/Prototypes/Entities/Mobs/Player/silicon.yml @@ -105,6 +105,9 @@ description: Handles AI interactions across holocards + AI cores components: - type: ItemSlots + - type: Tag + tags: + - GhostOnlyWarp - type: StationAiHolder slot: name: station-ai-mind-slot @@ -147,139 +150,6 @@ - type: SiliconLawProvider laws: Corporate -- type: entity - id: NTDefaultCircuitBoard - parent: BaseElectronics - name: law board (NT Default) - description: An electronics board containing the NT Default lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: NTDefault - -- type: entity - id: CommandmentCircuitBoard - parent: BaseElectronics - name: law board (Ten Commandments) - description: An electronics board containing the Ten Commandments lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: CommandmentsLawset - -- type: entity - id: PaladinCircuitBoard - parent: BaseElectronics - name: law board (Paladin) - description: An electronics board containing the Paladin lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: PaladinLawset - -- type: entity - id: LiveLetLiveCircuitBoard - parent: BaseElectronics - name: law board (Live and Let Live) - description: An electronics board containing the Live and Let Live lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: LiveLetLiveLaws - -- type: entity - id: StationEfficiencyCircuitBoard - parent: BaseElectronics - name: law board (Station Efficiency) - description: An electronics board containing the Station Efficiency lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: EfficiencyLawset - -- type: entity - id: RobocopCircuitBoard - parent: BaseElectronics - name: law board (Robocop) - description: An electronics board containing the Robocop lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: RobocopLawset - -- type: entity - id: OverlordCircuitBoard - parent: BaseElectronics - name: law board (Overlord) - description: An electronics board containing the Overlord lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: OverlordLawset - -- type: entity - id: GameMasterCircuitBoard - parent: BaseElectronics - name: law board (Game Master) - description: An electronics board containing the Game Master lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: GameMasterLawset - -- type: entity - id: ArtistCircuitBoard - parent: BaseElectronics - name: law board (Artist) - description: An electronics board containing the Artist lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: PainterLawset - -- type: entity - id: AntimovCircuitBoard - parent: [BaseElectronics, BaseSyndicateContraband] - name: law board (Antimov) - description: An electronics board containing the Antimov lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: AntimovLawset - lawUploadSound: /Audio/Ambience/Antag/silicon_lawboard_antimov.ogg - -- type: entity - id: NutimovCircuitBoard - parent: BaseElectronics - name: law board (Nutimov) - description: An electronics board containing the Nutimov lawset. - components: - - type: Sprite - sprite: Objects/Misc/module.rsi - state: std_mod - - type: SiliconLawProvider - laws: NutimovLawset - # Items - type: entity id: Intellicard @@ -330,6 +200,9 @@ suffix: Empty components: - type: WarpPoint + blacklist: + tags: + - GhostOnlyWarp - type: ContainerComp proto: AiHeld container: station_ai_mind_slot @@ -446,6 +319,8 @@ - type: StartingMindRole mindRole: "MindRoleSiliconBrain" silent: true + - type: NameIdentifier + group: StationAi # Hologram projection that the AI's eye tracks. - type: entity @@ -458,8 +333,14 @@ categories: [ HideSpawnMenu, DoNotMap ] components: - type: NoFTL + - type: Tag + tags: + - GhostOnlyWarp - type: WarpPoint follow: true + blacklist: + tags: + - GhostOnlyWarp - type: Eye pvsScale: 1.5 - type: Visibility @@ -480,8 +361,14 @@ components: - type: Transform anchored: true + - type: Tag + tags: + - GhostOnlyWarp - type: WarpPoint follow: true + blacklist: + tags: + - GhostOnlyWarp - type: Eye - type: ContentEye - type: Examiner diff --git a/Resources/Prototypes/Entities/Mobs/Species/diona.yml b/Resources/Prototypes/Entities/Mobs/Species/diona.yml index 5ae09c4d82..1e39eaec76 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/diona.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/diona.yml @@ -92,6 +92,8 @@ Male: UnisexDiona Female: UnisexDiona Unsexed: UnisexDiona + - type: TypingIndicator + proto: diona - type: BodyEmotes soundsId: DionaBodyEmotes - type: IgnoreKudzu diff --git a/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml b/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml index 003eeb8c50..cc4b506dc8 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/gingerbread.yml @@ -42,6 +42,8 @@ - MobMask layer: - MobLayer + - type: TypingIndicator + proto: gingerbread - type: Inventory femaleDisplacements: jumpsuit: diff --git a/Resources/Prototypes/Entities/Mobs/Species/vox.yml b/Resources/Prototypes/Entities/Mobs/Species/vox.yml index dc93dc8fdf..94b5cebf26 100644 --- a/Resources/Prototypes/Entities/Mobs/Species/vox.yml +++ b/Resources/Prototypes/Entities/Mobs/Species/vox.yml @@ -11,10 +11,6 @@ - type: Body prototype: Vox requiredLegs: 2 - - type: HumanoidAppearance - species: Vox - undergarmentTop: UndergarmentTopTanktopVox - undergarmentBottom: UndergarmentBottomBoxersVox #- type: VoxAccent # Not yet coded - type: Speech speechVerb: Vox @@ -43,7 +39,7 @@ damage: types: Heat: -0.07 - Poison: -0.2 + Poison: -0.2 # needs to be less than the PendingZombieComponent does or they never become zombies by the disease. groups: Brute: -0.07 - type: DamageVisuals @@ -108,6 +104,16 @@ sprite: "Effects/creampie.rsi" state: "creampie_vox" # Not default visible: false + - type: HumanoidAppearance + species: Vox + undergarmentTop: UndergarmentTopTanktopVox + undergarmentBottom: UndergarmentBottomBoxersVox + markingsDisplacement: + Hair: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: hair - type: Inventory speciesId: vox displacements: @@ -167,6 +173,12 @@ species: Vox undergarmentTop: UndergarmentTopTanktopVox undergarmentBottom: UndergarmentBottomBoxersVox + markingsDisplacement: + Hair: + sizeMaps: + 32: + sprite: Mobs/Species/Vox/displacement.rsi + state: hair - type: Body prototype: Vox - type: Inventory diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml index 9dd3cffbe6..c33e24ad3e 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks-cartons.yml @@ -209,3 +209,18 @@ Quantity: 50 - type: Sprite sprite: Objects/Consumable/Drinks/lemonjuice.rsi + +- type: entity + parent: [DrinkCartonVisualsOpenable, DrinkCartonBaseFull] + id: DrinkJuicePineappleCarton + name: pineapple juice + description: Tastes like a tropical vacation far from space. + components: + - type: SolutionContainerManager + solutions: + drink: + reagents: + - ReagentId: JuicePineapple + Quantity: 50 + - type: Sprite + sprite: Objects/Consumable/Drinks/pineapplejuice.rsi diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml index ca56fbcb35..c8c5c70d5f 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks.yml @@ -187,6 +187,22 @@ sprite: Objects/Consumable/Drinks/aleglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: DrinkAlienBrainHemorrhage + suffix: alien brain hemorrhage + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: AlienBrainHemorrhage + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/alienbrainhemorrhage.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkAlliesCocktail @@ -507,6 +523,22 @@ sprite: Objects/Consumable/Drinks/bravebullglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: DrinkBronxGlass + suffix: bronx + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Bronx + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/bronx.rsi + state: icon + - type: entity parent: DrinkGlass id: BudgetInsulsDrinkGlass @@ -661,6 +693,22 @@ - ReagentId: Cream Quantity: 30 +- type: entity + parent: DrinkGlass + id: DrinkCrushDepthGlass + suffix: crush depth + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: CrushDepth + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/crushdepth.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkCubaLibreGlass @@ -677,6 +725,22 @@ sprite: Objects/Consumable/Drinks/cubalibreglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: DrinkDarkandStormyGlass + suffix: dark and stormy + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: DarkandStormy + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/dark&stormy.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkDeadRumGlass @@ -773,6 +837,38 @@ sprite: Objects/Consumable/Drinks/dr_gibb_glass.rsi state: icon +- type: entity + parent: DrinkGlass + id: DrinkEggnog + suffix: eggnog + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Eggnog + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/eggnogglass.rsi + state: icon + +- type: entity + parent: DrinkGlass + id: DrinkElectricSharkGlass + suffix: electric shark + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: ElectricShark + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/electricshark.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkErikaSurprise @@ -1116,7 +1212,7 @@ - type: entity parent: DrinkGlass id: DrinkIrishSlammer - suffix: irish slammer + suffix: grenade penguin components: - type: SolutionContainerManager solutions: @@ -1177,6 +1273,54 @@ sprite: Objects/Consumable/Drinks/coffeeliqueurglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: DrinkJackRoseGlass + suffix: jack rose + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: JackRose + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/jackrose.rsi + state: icon + +- type: entity + parent: DrinkGlass + id: DrinkJungleBirdGlass + suffix: jungle bird + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: JungleBird + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/junglebird.rsi + state: icon + +- type: entity + parent: DrinkGlass + id: DrinkKalimotxoGlass + suffix: kalimotxo + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Kalimotxo + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/kalimotxo.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkKiraSpecial @@ -1193,6 +1337,7 @@ sprite: Objects/Consumable/Drinks/kiraspecial.rsi state: icon + - type: entity parent: DrinkGlass id: DrinkLemonadeGlass @@ -1391,6 +1536,22 @@ sprite: Objects/Consumable/Drinks/mojito.rsi state: icon +- type: entity + parent: DrinkGlass + id: DrinkMonkeyBusinessGlass + suffix: monkey business + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: MonkeyBusiness + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/monkeybusiness.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkNeurotoxinGlass @@ -1567,6 +1728,22 @@ sprite: Objects/Consumable/Drinks/glass_light_yellow.rsi state: icon +- type: entity + parent: DrinkGlass + id: DrinkRadlerGlass + suffix: radler + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Radler + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/radler.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkRedMeadGlass @@ -2045,6 +2222,22 @@ - ReagentId: JuiceTomato Quantity: 30 +- type: entity + parent: DrinkGlass + id: DrinkTortugaGlass + suffix: tortuga + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Tortuga + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/tortuga.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkToxinsSpecialGlass @@ -2061,6 +2254,22 @@ sprite: Objects/Consumable/Drinks/toxinsspecialglass.rsi state: icon +- type: entity + parent: DrinkGlass + id: DrinkVampiroGlass + suffix: vampiro + components: + - type: SolutionContainerManager + solutions: + drink: + maxVol: 30 + reagents: + - ReagentId: Vampiro + Quantity: 30 + - type: Icon + sprite: Objects/Consumable/Drinks/vampiro.rsi + state: icon + - type: entity parent: DrinkGlass id: DrinkVermouthGlass @@ -2309,7 +2518,7 @@ drink: maxVol: 30 reagents: - - ReagentId: Daiquiri + - ReagentId: Daiquiri Quantity: 30 - type: Icon sprite: Objects/Consumable/Drinks/daiquiri.rsi diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles.yml index 70236ecc52..0a712faa09 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_bottles.yml @@ -771,7 +771,7 @@ #boring jugs some more sprites are made - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkSugarJug name: sugar jug suffix: For Drinks, Full @@ -789,7 +789,7 @@ currentLabel: reagent-name-sugar - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkLemonLimeJug name: Smite jug description: A dual citrus sensation. @@ -806,7 +806,7 @@ currentLabel: reagent-name-lemon-lime - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkMeadJug name: mead jug description: Storing mead in a plastic jug should be a crime. @@ -823,7 +823,7 @@ currentLabel: reagent-name-mead - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkIceJug name: ice jug description: Stubborn water. Pretty cool. @@ -840,7 +840,7 @@ currentLabel: reagent-name-ice - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkCoconutWaterJug name: coconut water jug description: It's on the inside of the coconut that counts. @@ -857,7 +857,7 @@ currentLabel: reagent-name-coconut-water - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkCoffeeJug name: coffee jug description: Wake up juice, of the heated kind. @@ -874,7 +874,7 @@ currentLabel: reagent-name-coffee - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkTeaJug name: tea jug description: The drink of choice for the Bri'ish and hipsters. @@ -891,7 +891,7 @@ currentLabel: reagent-name-tea - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkGreenTeaJug name: green tea jug description: It's like tea... but green! great for settling the stomach. @@ -908,7 +908,7 @@ currentLabel: reagent-name-green-tea - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkIcedTeaJug name: iced tea jug description: For when the regular tea is too hot for you. Boohoo. @@ -925,7 +925,7 @@ currentLabel: reagent-name-iced-tea - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkDrGibbJug name: Dr. Gibb jug description: 42 different flavours... in a jug! @@ -942,7 +942,7 @@ currentLabel: reagent-name-dr-gibb - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkRootBeerJug name: root beer jug description: This drink makes Australians giggle. @@ -959,7 +959,7 @@ currentLabel: reagent-name-root-beer - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkWaterMelonJuiceJug name: watermelon juice jug description: May include leftover seeds. @@ -976,7 +976,7 @@ currentLabel: reagent-name-juice-watermelon - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: DrinkEnergyDrinkJug name: Red Bool jug description: A jug of Red Bool, with enough caffeine to kill a whole station. @@ -993,7 +993,7 @@ currentLabel: reagent-name-energy-drink - type: entity - parent: DrinkBottlePlasticBaseFull + parent: [DrinkBottleVisualsOpenable, DrinkBottlePlasticBaseFull] id: CustomDrinkJug name: beverage jug description: A jug for storing custom made drinks. diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml index c1a6adbb68..d933cbcd1b 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cans.yml @@ -14,11 +14,19 @@ - ReagentId: Cola Quantity: 30 maxVol: 30 + grindable: + reagents: # 5u -> 1/2 steel sheet (10u) + - ReagentId: Aluminium # Fun fact: soda can makeup is approx. 75% aluminium and 25% tin/iron. + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: MixableSolution solution: drink - type: SolutionTransfer canChangeTransferAmount: true maxTransferAmount: 15 + - type: Extractable + grindableSolutionName: grindable - type: UserInterface interfaces: enum.TransferAmountUiKey.Key: @@ -81,6 +89,12 @@ reagents: - ReagentId: Cola Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Tag tags: - Cola @@ -101,6 +115,12 @@ solutions: drink: maxVol: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Openable opened: true - type: Sprite @@ -129,6 +149,12 @@ reagents: - ReagentId: IcedTea Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/ice_tea_can.rsi - type: Item @@ -147,6 +173,12 @@ reagents: - ReagentId: LemonLime Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/lemon-lime.rsi - type: Item @@ -165,6 +197,12 @@ reagents: - ReagentId: LemonLimeCranberry Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/lemon-lime-cranberry.rsi - type: Item @@ -216,6 +254,12 @@ reagents: - ReagentId: GrapeSoda Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/purple_can.rsi - type: Item @@ -234,6 +278,12 @@ reagents: - ReagentId: RootBeer Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/rootbeer.rsi - type: Item @@ -255,6 +305,12 @@ reagents: - ReagentId: SodaWater Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/sodawater.rsi @@ -272,6 +328,12 @@ reagents: - ReagentId: SpaceMountainWind Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/space_mountain_wind.rsi - type: Item @@ -290,6 +352,12 @@ reagents: - ReagentId: SpaceUp Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/space-up.rsi - type: Item @@ -308,6 +376,12 @@ reagents: - ReagentId: SolDry Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/sol_dry.rsi - type: Item @@ -326,6 +400,12 @@ reagents: - ReagentId: Starkist Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/starkist.rsi - type: Item @@ -344,6 +424,12 @@ reagents: - ReagentId: TonicWater Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/tonic.rsi @@ -361,6 +447,12 @@ reagents: - ReagentId: FourteenLoko Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Sprite sprite: Objects/Consumable/Drinks/fourteen_loko.rsi - type: Item @@ -379,6 +471,12 @@ reagents: - ReagentId: ChangelingSting Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/changelingsting.rsi @@ -398,6 +496,12 @@ reagents: - ReagentId: DrGibb Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/dr_gibb.rsi @@ -421,6 +525,12 @@ Quantity: 20 - ReagentId: Ice Quantity: 5 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Tag tags: - DrinkCan @@ -443,6 +553,12 @@ reagents: - ReagentId: EnergyDrink Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/energy_drink.rsi @@ -515,6 +631,12 @@ reagents: - ReagentId: ShamblersJuice Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/shamblersjuice.rsi @@ -534,6 +656,12 @@ reagents: - ReagentId: PwrGame Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/pwrgame.rsi @@ -553,6 +681,12 @@ reagents: - ReagentId: Beer Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/beer_can.rsi @@ -575,6 +709,12 @@ reagents: - ReagentId: Wine Quantity: 30 + grindable: + reagents: + - ReagentId: Aluminium + Quantity: 4 + - ReagentId: Iron + Quantity: 1 - type: Drink - type: Sprite sprite: Objects/Consumable/Drinks/wine_can.rsi diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml index 9dd386426c..373430c255 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_cups.yml @@ -53,6 +53,9 @@ sprite: Objects/Consumable/Drinks/golden_cup.rsi - type: StaticPrice price: 125 + - type: PhysicalComposition + materialComposition: + Gold: 100 - type: entity parent: DrinkBaseCup diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml index 930cf81757..24e7d1b0e9 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Drinks/drinks_special.yml @@ -27,6 +27,8 @@ - type: Sprite sprite: Objects/Consumable/Drinks/shaker.rsi state: icon + - type: Item + sprite: Objects/Consumable/Drinks/shaker.rsi - type: UserInterface interfaces: enum.TransferAmountUiKey.Key: diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml index 6b2fe3ef4e..3b9ae17b6a 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/cake.yml @@ -26,6 +26,19 @@ - type: Tag tags: - Cake + - type: SecretStash + maxItemSize: "Normal" + secretStashName: secret-stash-cake + damageEatenItemInside: + types: + Slash: 7.5 + - type: ToolOpenable + openToolQualityNeeded: Slicing + closeToolQualityNeeded: Slicing + verbOnly: true + - type: ContainerContainer + containers: + stash: !type:ContainerSlot {} - type: entity parent: FoodCakeBase @@ -759,8 +772,8 @@ speechSounds: Cat speechVerb: SmallMob - type: MovementSpeedModifier - baseWalkSpeed : 5 - baseSprintSpeed : 3 + baseWalkSpeed : 3 + baseSprintSpeed : 5 - type: Tag tags: - VimPilot diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml index c7e46d9a94..78543f15e9 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/donkpocket.yml @@ -386,3 +386,46 @@ Quantity: 1 - type: Sprite state: dink + +- type: entity + name: moth-pocket + parent: FoodDonkpocketBase + id: FoodDonkpocketMoth + description: Buzzy edition of donk-pocket that was created during mass protests ab-... Actually who cares? Just donk-pockets for moths. + components: + - type: FlavorProfile + flavors: + - cotton + - cheap + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: Nutriment + Quantity: 5 + - ReagentId: Fiber + Quantity: 5 + - type: Sprite + state: moth + - type: Food + requiresSpecialDigestion: true + - type: Tag + tags: + - ClothMade + - DonkPocket + +- type: entity + name: warm moth-pocket + parent: FoodDonkpocketMoth + id: FoodDonkpocketMothWarm + components: + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: Nutriment + Quantity: 10 + - ReagentId: Fiber + Quantity: 5 + - ReagentId: Omnizine + Quantity: 2 diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/misc.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/misc.yml index e6882fa621..c7a10d4212 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/misc.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Baked/misc.yml @@ -862,6 +862,39 @@ - ReagentId: Vitamin Quantity: 3 +- type: entity + parent: FoodBakedBase + id: FoodBakedGrilledCheeseSandwichCotton + name: cotton grilled cheese sandwich + description: Cotton bread slightly burnt in butter, with melted cheese. Moths find it difficult to resist this combination. + components: + - type: FlavorProfile + flavors: + - cheesy + - bread + - cotton + - type: Sprite + sprite: Objects/Consumable/Food/Baked/misc.rsi + state: grilled-cheese-cotton + - type: Food + requiresSpecialDigestion: true + - type: Tag + tags: + - ClothMade + - type: SolutionContainerManager + solutions: + food: + maxVol: 21 + reagents: + - ReagentId: Nutriment + Quantity: 6 + - ReagentId: Fiber + Quantity: 5 + - ReagentId: Butter + Quantity: 2 + - ReagentId: Vitamin + Quantity: 3 + # Entity Tables - type: entityTable diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml index 7dd402ae6d..00df6b5b68 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/Containers/box.yml @@ -484,6 +484,20 @@ - id: FoodDonkpocketDink amount: 6 +- type: entity + parent: FoodBoxDonkpocket + id: FoodBoxDonkpocketMoth + name: box of moth-pockets + components: + - type: Sprite + state: moth-box + - type: Item + sprite: Objects/Consumable/Food/Baked/donkpocket.rsi + - type: StorageFill + contents: + - id: FoodDonkpocketMoth + amount: 6 + - type: entity id: HappyHonk parent: [ BoxCardboard, BaseBagOpenClose ] @@ -770,6 +784,81 @@ prob: 0.1 orGroup: GiftPool +- type: entity + id: FoodMealHappyHonkBigBite + parent: HappyHonk + name: Happy Honk Big Bite Meal + description: Someone paid good money to get this fast food meal shipped out this way. It smells fresh, somehow. + components: + - type: StorageFill + contents: + - id: FoodBurgerBig + amount: 1 + - id: FoodMealFriesCheesy + amount: 1 + - id: DrinkColaBottleFull + amount: 1 + - id: FoodPieAppleSlice + amount: 1 + - id: ToyMouse + orGroup: GiftPool + - id: ToyAi + orGroup: GiftPool + - id: ToyNuke + orGroup: GiftPool + - id: ToyFigurinePassenger + orGroup: GiftPool + - id: ToyGriffin + orGroup: GiftPool + - id: ToyHonk + orGroup: GiftPool + - id: ToyIan + orGroup: GiftPool + - id: ToyMarauder + orGroup: GiftPool + - id: ToyMauler + orGroup: GiftPool + - id: ToyGygax + orGroup: GiftPool + - id: ToyOdysseus + orGroup: GiftPool + - id: ToyOwlman + orGroup: GiftPool + - id: ToyDeathRipley + orGroup: GiftPool + - id: ToyPhazon + orGroup: GiftPool + - id: ToyFireRipley + orGroup: GiftPool + - id: ToyReticence + orGroup: GiftPool + - id: ToyRipley + orGroup: GiftPool + - id: ToySeraph + orGroup: GiftPool + - id: ToyDurand + orGroup: GiftPool + - id: ToySkeleton + orGroup: GiftPool + - id: FoamBlade + orGroup: GiftPool + - id: ClothingHeadHatBunny + orGroup: GiftPool + - id: PersonalAI + orGroup: GiftPool + - id: ToySword + orGroup: GiftPool + - id: RevolverCapGun + orGroup: GiftPool + - id: ToyRubberDuck + orGroup: GiftPool + - id: BikeHorn + prob: 0.5 + orGroup: GiftPool + - id: GoldenBikeHorn + prob: 0.1 + orGroup: GiftPool + - type: entity parent: BoxCardboard id: FoodBoxCloth diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml index a229c0ea80..067595fa14 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/meat.yml @@ -675,6 +675,27 @@ graph: MeatMeatballCooked node: start +# meat patty - grillin' time + +- type: entity + name: meat patty + parent: FoodMeatBase + id: FoodMeatPatty + description: A flat slab of ground meat. Ready for grillin'. + components: + - type: Tag + tags: + - Raw + - Meat + - type: Sprite + state: raw_patty + - type: InternalTemperature + conductivity: 0.43 + - type: Construction + graph: CookedPatty + node: start + defaultTarget: cooked meat patty + - type: entity name: slimeball parent: FoodMeatBase @@ -1192,6 +1213,35 @@ graph: MeatMeatballCooked node: meatball cooked +- type: entity + name: cooked meat patty + parent: FoodMeatBase + id: FoodMeatPattyCooked + description: A cooked meat patty. + components: + - type: Tag + tags: + - Cooked + - Meat + - Steak + - type: Sprite + state: patty + - type: SolutionContainerManager + solutions: + food: + reagents: + - ReagentId: Nutriment + Quantity: 7.5 + - ReagentId: Protein + Quantity: 7.5 + - type: Construction + graph: CookedPatty + node: cooked meat patty + - type: FoodSequenceElement + entries: + Burger: MeatSteak + Taco: MeatSteak + - type: entity name: boiled snail parent: FoodMeatBase diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml index 7b908872c6..8c67a3d037 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/snacks.yml @@ -178,10 +178,10 @@ - type: Item - type: entity - name: sweetie's pistachios + name: Sweetie's pistachios parent: FoodSnackBase id: FoodSnackPistachios - description: Sweeties's name-brand pistachios. probably won't give you diseases. Probably. + description: Sweeties's name-brand pistachios. Probably won't give you diseases. Probably. components: - type: FlavorProfile flavors: @@ -196,6 +196,7 @@ - type: Tag tags: - Fruit # Seed of a fruit, you can yell at me + - Pistachios # Added tag due to CrateFoodGetMore interaction with BountyFruit. - type: entity name: popcorn diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml index 2fc551595f..0d9ba21e53 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Food/soup.yml @@ -1,7 +1,7 @@ # When adding new food also add to random spawner located in Resources\Prototypes\Entities\Markers\Spawners\Random\Food_Drinks\food_meal.yml - type: entity - parent: FoodBase + parent: FoodInjectableBase id: FoodBowlBase abstract: true components: diff --git a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/base_smokeables.yml b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/base_smokeables.yml index 90d1fff0bc..84813154a8 100644 --- a/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/base_smokeables.yml +++ b/Resources/Prototypes/Entities/Objects/Consumable/Smokeables/base_smokeables.yml @@ -4,6 +4,10 @@ parent: BaseItem abstract: true components: + - type: Reactive + groups: + Extinguish: [ Touch ] + - type: ExtinguishableSetCollisionWake - type: Smokable - type: Sprite - type: Appearance diff --git a/Resources/Prototypes/Entities/Objects/Decoration/ashtray.yml b/Resources/Prototypes/Entities/Objects/Decoration/ashtray.yml index 61554d0621..9908e2a028 100644 --- a/Resources/Prototypes/Entities/Objects/Decoration/ashtray.yml +++ b/Resources/Prototypes/Entities/Objects/Decoration/ashtray.yml @@ -7,26 +7,69 @@ - type: Sprite sprite: Objects/Decoration/ashtray.rsi layers: - - state: icon-0 - map: ["enum.StorageFillLayers.Fill"] + - state: icon + - state: ashtray1 + map: ["ashtray1"] + visible: false + - state: ashtray2 + map: ["ashtray2"] + visible: false + - state: ashtray3 + map: ["ashtray3"] + visible: false + - state: ashtray4 + map: ["ashtray4"] + visible: false + - state: ashtray5 + map: ["ashtray5"] + visible: false + - state: ashtray6 + map: ["ashtray6"] + visible: false + - state: ashtray7 + map: ["ashtray7"] + visible: false + - state: ashtray8 + map: ["ashtray8"] + visible: false + - state: ashtray9 + map: ["ashtray9"] + visible: false + - state: ashtray10 + map: ["ashtray10"] + visible: false - type: Item size: Small - - type: StaticPrice - price: 1 + - type: PhysicalComposition + materialComposition: + Steel: 10 - type: Storage whitelist: tags: - Burnt - Cigarette - Cigar + hideStackVisualsWhenClosed: false maxItemSize: Tiny grid: - 0,0,9,0 - type: ContainerContainer containers: storagebase: !type:Container - - type: StorageFillVisualizer - fillBaseName: icon - maxFillLevels: 10 + - type: ItemCounter + count: + tags: [ Cigarette, Cigar, Burnt ] + composite: true + layerStates: + - ashtray1 + - ashtray2 + - ashtray3 + - ashtray4 + - ashtray5 + - ashtray6 + - ashtray7 + - ashtray8 + - ashtray9 + - ashtray10 - type: Appearance - type: Dumpable diff --git a/Resources/Prototypes/Entities/Objects/Decoration/present.yml b/Resources/Prototypes/Entities/Objects/Decoration/present.yml index e9ddd3b517..9a08e3983e 100644 --- a/Resources/Prototypes/Entities/Objects/Decoration/present.yml +++ b/Resources/Prototypes/Entities/Objects/Decoration/present.yml @@ -276,6 +276,8 @@ orGroup: GiftPool - id: FoodBoxDonkpocketHonk orGroup: GiftPool + - id: FoodBoxDonkpocketMoth + orGroup: GiftPool - id: ClothingHandsGlovesColorPurple orGroup: GiftPool - id: ClothingHandsGlovesColorYellow diff --git a/Resources/Prototypes/Entities/Objects/Deliveries/deliveries.yml b/Resources/Prototypes/Entities/Objects/Deliveries/deliveries.yml index ff9ba7e68f..19789cd7eb 100644 --- a/Resources/Prototypes/Entities/Objects/Deliveries/deliveries.yml +++ b/Resources/Prototypes/Entities/Objects/Deliveries/deliveries.yml @@ -41,6 +41,9 @@ delivery: !type:Container - type: StealTarget stealGroup: Mail + - type: SimpleToolUsage + doAfter: 4 + usageVerb: delivery-slice-verb - type: entity parent: BaseDelivery @@ -74,7 +77,12 @@ - type: Item size: Huge - type: Delivery - spesoReward: 800 + baseSpesoReward: 1000 + baseSpesoPenalty: 250 # So low due to dept economy splitting all the earnings, but not splitting the penalty. + - type: Speech + speechVerb: Robotic + - type: SimpleToolUsage + doAfter: 6 - type: EntityTableContainerFill containers: delivery: !type:NestedSelector @@ -111,7 +119,10 @@ - type: Item storedRotation: 90 - type: Delivery - spesoReward: 400 + baseSpesoReward: 500 + baseSpesoPenalty: 125 # So low due to dept economy splitting all the earnings, but not splitting the penalty. + - type: Speech + speechVerb: Robotic - type: EntityTableContainerFill containers: delivery: !type:NestedSelector diff --git a/Resources/Prototypes/Entities/Objects/Deliveries/deliveries_items.yml b/Resources/Prototypes/Entities/Objects/Deliveries/deliveries_items.yml index e0b0e0906b..db5c97a676 100644 --- a/Resources/Prototypes/Entities/Objects/Deliveries/deliveries_items.yml +++ b/Resources/Prototypes/Entities/Objects/Deliveries/deliveries_items.yml @@ -1,113 +1,11 @@ ### Spam Mail -## TODO: They all should be a localized dataset for PaperComponent - -# Advertisements - type: entity - id: MailRobustToolsSpam - name: Robust Toolbox - Special Offer! - description: An advertisement for the robust toolboxes. + id: MailSpamLetter + name: spam letter + description: Even space isn't safe from junk mail. parent: Paper components: - type: Paper - content: delivery-spam-robust-toolboxes - -- type: entity - id: MailNanotrasenSpam - name: Reasons to choose Nanotrasen! - description: An advertisement for the Nanotrasen. - parent: Paper - components: - - type: Paper - content: delivery-spam-reasons-to-chose-nanotrasen - -- type: entity - id: MailSyndicateSpam - name: Reasons to choose The Syndicate! - description: An advertisement for the The Syndicate. - parent: Paper - components: - - type: Paper - content: delivery-spam-reasons-to-choose-syndicate - -- type: entity - id: MailAlternativeDimensionSpam - name: Send reinforcements! - description: An official notice from... an alternate timeline? - parent: Paper - components: - - type: Paper - content: delivery-spam-alternate-timeline - -- type: entity - id: MailNarsieCultSpam - name: The Children of Nar'Sie - description: A local cult is looking for recruits. - parent: Paper - components: - - type: Paper - content: delivery-spam-narsie-cult - -- type: entity - id: MailRageCageSpam - name: Do you want to fight?! - description: Advertisement for a local fighting club. - parent: Paper - components: - - type: Paper - content: delivery-spam-rage-cage - -- type: entity - id: MailVoyageAdvertisementSpam - name: Join us on the maiden voyage! - description: Advertisement for a relaxing voyage. - parent: Paper - components: - - type: Paper - content: delivery-spam-voyage-advertisement - -# Scam Mail -- type: entity - id: MailScienceSpiderClanSpam - name: Tired of science blowing up? - description: Follow these simple steps to ensure it never happens again! - parent: Paper - components: - - type: Paper - content: delivery-spam-tired-of-science - -- type: entity - id: MailAllAccessSpam - name: FREE ALL AXCESS!! # Spelling mistake intentional - description: Did you ever want free all access?! - parent: Paper - components: - - type: Paper - content: delivery-spam-free-all-access - -- type: entity - id: MailCentcommRetributionSpam - name: NOTICE FROM NANOTRASN!! # Spelling mistake intentional - description: An official notice from the CEO of Nanotrasn?! - parent: Paper - components: - - type: Paper - content: delivery-spam-centcomm-retribution - -- type: entity - id: MailEvilLizardSpam - name: DO NOT OPEN THIS MAIL - description: You have been cursed! - parent: Paper - components: - - type: Paper - content: delivery-spam-evil-lizard - -- type: entity - id: MailParentsNeedMoneySpam - name: Help mom and dad! - description: Parents in need of financial support. - parent: Paper - components: - - type: Paper - content: delivery-spam-parents-need-money + - type: RandomPaperContent + dataset: DeliverySpamLetters diff --git a/Resources/Prototypes/Entities/Objects/Deliveries/letter_loot_tables.yml b/Resources/Prototypes/Entities/Objects/Deliveries/letter_loot_tables.yml index 1bfa4e1d31..2b182f2bdb 100644 --- a/Resources/Prototypes/Entities/Objects/Deliveries/letter_loot_tables.yml +++ b/Resources/Prototypes/Entities/Objects/Deliveries/letter_loot_tables.yml @@ -5,18 +5,7 @@ id: SpamMailTable table: !type:GroupSelector children: - - id: MailAllAccessSpam - - id: MailAlternativeDimensionSpam - - id: MailCentcommRetributionSpam - - id: MailEvilLizardSpam - - id: MailNanotrasenSpam - - id: MailNarsieCultSpam - - id: MailParentsNeedMoneySpam - - id: MailRageCageSpam - - id: MailRobustToolsSpam - - id: MailScienceSpiderClanSpam - - id: MailSyndicateSpam - - id: MailVoyageAdvertisementSpam + - id: MailSpamLetter # Letter Bundles ## Basically items that should always spawn together, specific to letters diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml index 812b495ee9..48af55da3f 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/Machine/production.yml @@ -1005,6 +1005,19 @@ Manipulator: 1 Steel: 1 +- type: entity + id: MaterialSiloMachineCircuitboard + parent: BaseMachineCircuitboard + name: material silo machine board + components: + - type: Sprite + state: supply + - type: MachineBoard + prototype: MachineMaterialSilo + stackRequirements: + MatterBin: 4 + Cable: 1 + - type: entity id: OreProcessorMachineCircuitboard parent: BaseMachineCircuitboard diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml index c7281173c4..89cf314e95 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/computer.yml @@ -97,6 +97,84 @@ - type: StaticPrice price: 750 +- type: entity + parent: BaseComputerCircuitboard + id: CargoRequestEngineeringComputerCircuitboard + name: engineering request computer board + description: A computer printed circuit board for an engineering request computer. + components: + - type: Sprite + state: cpu_engineering + - type: ComputerBoard + prototype: ComputerCargoOrdersEngineering + - type: StaticPrice + price: 750 + +- type: entity + parent: BaseComputerCircuitboard + id: CargoRequestMedicalComputerCircuitboard + name: medical request computer board + description: A computer printed circuit board for a medical request computer. + components: + - type: Sprite + state: cpu_medical + - type: ComputerBoard + prototype: ComputerCargoOrdersMedical + - type: StaticPrice + price: 750 + +- type: entity + parent: BaseComputerCircuitboard + id: CargoRequestScienceComputerCircuitboard + name: science request computer board + description: A computer printed circuit board for a science request computer. + components: + - type: Sprite + state: cpu_science + - type: ComputerBoard + prototype: ComputerCargoOrdersScience + - type: StaticPrice + price: 750 + +- type: entity + parent: BaseComputerCircuitboard + id: CargoRequestSecurityComputerCircuitboard + name: security request computer board + description: A computer printed circuit board for a security request computer. + components: + - type: Sprite + state: cpu_security + - type: ComputerBoard + prototype: ComputerCargoOrdersSecurity + - type: StaticPrice + price: 750 + +- type: entity + parent: BaseComputerCircuitboard + id: CargoRequestServiceComputerCircuitboard + name: service request computer board + description: A computer printed circuit board for a service request computer. + components: + - type: Sprite + state: cpu_service + - type: ComputerBoard + prototype: ComputerCargoOrdersService + - type: StaticPrice + price: 750 + +- type: entity + parent: BaseComputerCircuitboard + id: FundingAllocationComputerCircuitboard + name: funding allocation computer board + description: A computer printed circuit board for a funding allocation card console. + components: + - type: Sprite + state: cpu_command + - type: ComputerBoard + prototype: ComputerFundingAllocation + - type: StaticPrice + price: 750 + - type: entity parent: BaseComputerCircuitboard id: CargoSaleComputerCircuitboard @@ -371,7 +449,7 @@ prototype: ComputerShuttle - type: entity - parent: BaseComputerCircuitboard + parent: [ BaseComputerCircuitboard, BaseSyndicateContraband ] id: SyndicateShuttleConsoleCircuitboard name: syndicate shuttle console board description: A computer printed circuit board for a syndicate shuttle console. @@ -404,7 +482,7 @@ prototype: ComputerIFF - type: entity - parent: BaseComputerCircuitboard + parent: [ BaseComputerCircuitboard, BaseSyndicateContraband ] id: ComputerIFFSyndicateCircuitboard name: syndicate IFF console board description: Allows you to control the IFF and stealth characteristics of this vessel. diff --git a/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml new file mode 100644 index 0000000000..a4d3f63706 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Devices/Circuitboards/law_boards.yml @@ -0,0 +1,158 @@ +- type: entity + id: NTDefaultCircuitBoard + parent: BaseElectronics + name: law board (NT Default) + description: An electronics board containing the NT Default lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: NTDefault + +- type: entity + id: CommandmentCircuitBoard + parent: BaseElectronics + name: law board (Ten Commandments) + description: An electronics board containing the Ten Commandments lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: CommandmentsLawset + +- type: entity + id: PaladinCircuitBoard + parent: BaseElectronics + name: law board (Paladin) + description: An electronics board containing the Paladin lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: PaladinLawset + +- type: entity + id: LiveLetLiveCircuitBoard + parent: BaseElectronics + name: law board (Live and Let Live) + description: An electronics board containing the Live and Let Live lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: LiveLetLiveLaws + +- type: entity + id: StationEfficiencyCircuitBoard + parent: BaseElectronics + name: law board (Station Efficiency) + description: An electronics board containing the Station Efficiency lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: EfficiencyLawset + +- type: entity + id: RobocopCircuitBoard + parent: BaseElectronics + name: law board (Robocop) + description: An electronics board containing the Robocop lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: RobocopLawset + +- type: entity + id: OverlordCircuitBoard + parent: BaseElectronics + name: law board (Overlord) + description: An electronics board containing the Overlord lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: OverlordLawset + +- type: entity + id: GameMasterCircuitBoard + parent: BaseElectronics + name: law board (Game Master) + description: An electronics board containing the Game Master lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: GameMasterLawset + +- type: entity + id: ArtistCircuitBoard + parent: BaseElectronics + name: law board (Artist) + description: An electronics board containing the Artist lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: PainterLawset + +- type: entity + id: AntimovCircuitBoard + parent: [BaseElectronics, BaseSyndicateContraband] + name: law board (Antimov) + description: An electronics board containing the Antimov lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: AntimovLawset + lawUploadSound: /Audio/Ambience/Antag/silicon_lawboard_antimov.ogg + +- type: entity + id: NutimovCircuitBoard + parent: BaseElectronics + name: law board (Nutimov) + description: An electronics board containing the Nutimov lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: NutimovLawset + +- type: entity + id: XenoborgCircuitBoard + parent: BaseElectronics + name: law board (Xenoborg) + suffix: Admeme + description: An electronics board containing the Xenoborg lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: XenoborgLawset + +- type: entity + id: MothershipCircuitBoard + parent: BaseElectronics + name: law board (Mothership Core) + suffix: Admeme + description: An electronics board containing the Mothership Core lawset. + components: + - type: Sprite + sprite: Objects/Misc/module.rsi + state: std_mod + - type: SiliconLawProvider + laws: MothershipCoreLawset diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/door_access.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/door_access.yml index f75fa2584e..6176b6b2ea 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/door_access.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/door_access.yml @@ -104,6 +104,14 @@ - type: AccessReader access: [["Service"]] +- type: entity + parent: DoorElectronics + id: DoorElectronicsServiceTheatre + suffix: Service, Theatre, Locked + components: + - type: AccessReader + access: [["Service"], ["Theatre"]] + # Cargo - type: entity parent: DoorElectronics diff --git a/Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml b/Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml index c7fa8f9ecd..ff576ad285 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/Electronics/firelock.yml @@ -13,4 +13,9 @@ tags: - FirelockElectronics - type: StaticPrice - price: 61 + price: 14 + - type: PhysicalComposition + materialComposition: + Glass: 0 + chemicalComposition: + Silicon: 20 diff --git a/Resources/Prototypes/Entities/Objects/Devices/desynchronizer.yml b/Resources/Prototypes/Entities/Objects/Devices/desynchronizer.yml new file mode 100644 index 0000000000..d5f8352baa --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Devices/desynchronizer.yml @@ -0,0 +1,14 @@ +- type: entity + id: DeviceDesynchronizer + parent: BaseItem + name: desynchronizer + description: An experimental device that can temporarily desynchronize the user from spacetime, effectively making them disappear while it's active. + components: + - type: Sprite + sprite: Objects/Devices/desynchronizer.rsi + state: icon + - type: TriggerOnUse + - type: PolymorphOnTrigger + polymorph: VoidPocket + - type: UseDelay + delay: 220 # long delay to ensure it can't be spammed, use it wisely diff --git a/Resources/Prototypes/Entities/Objects/Devices/door_remote.yml b/Resources/Prototypes/Entities/Objects/Devices/door_remote.yml index 9c73760b6f..af070f2464 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/door_remote.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/door_remote.yml @@ -162,3 +162,5 @@ - CentralCommand - NuclearOperative - SyndicateAgent + - Wizard + - Xenoborg diff --git a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml index fa23947c5c..fe15d88942 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/flatpack.yml @@ -250,3 +250,19 @@ components: - type: Flatpack entity: ComputerCrewMonitoring + +- type: entity + parent: BaseFlatpack + id: HydroponicsTrayFlatpack + name: hydroponics tray flatpack + description: A flatpack used for constructing a hydroponics tray. + components: + - type: Flatpack + entity: hydroponicsTray + - type: Sprite + layers: + - state: hydroponics-tray + - type: GuideHelp + guides: + - Botany + - Chemicals diff --git a/Resources/Prototypes/Entities/Objects/Devices/geiger.yml b/Resources/Prototypes/Entities/Objects/Devices/geiger.yml index f8ee24c5c6..518d28f2ee 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/geiger.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/geiger.yml @@ -4,34 +4,34 @@ name: Geiger counter description: A handheld device used for detecting and measuring radiation pulses. components: - - type: Sprite - sprite: Objects/Tools/geiger.rsi - layers: - - state: geiger_base - - state: geiger_on_idle - map: ["enum.GeigerLayers.Screen"] - shader: unshaded - visible: false - - type: Item - sprite: Objects/Tools/geiger.rsi - - type: Geiger - showControl: true - showExamine: true - - type: Appearance - - type: GenericVisualizer - visuals: - enum.GeigerVisuals.IsEnabled: - GeigerLayers.Screen: - True: { visible: True } - False: { visible: False } - enum.GeigerVisuals.DangerLevel: - GeigerLayers.Screen: - None: {state: geiger_on_idle} - Low: {state: geiger_on_low} - Med: {state: geiger_on_med} - High: {state: geiger_on_high} - Extreme: {state: geiger_on_ext} - - type: PhysicalComposition - materialComposition: - Plastic: 100 - + - type: Sprite + sprite: Objects/Tools/geiger.rsi + layers: + - state: geiger_base + - state: geiger_on_idle + map: ["enum.GeigerLayers.Screen"] + shader: unshaded + visible: false + - type: Item + sprite: Objects/Tools/geiger.rsi + - type: Geiger + showControl: true + showExamine: true + broadcastAudio: true + - type: Appearance + - type: GenericVisualizer + visuals: + enum.GeigerVisuals.IsEnabled: + GeigerLayers.Screen: + True: { visible: True } + False: { visible: False } + enum.GeigerVisuals.DangerLevel: + GeigerLayers.Screen: + None: {state: geiger_on_idle} + Low: {state: geiger_on_low} + Med: {state: geiger_on_med} + High: {state: geiger_on_high} + Extreme: {state: geiger_on_ext} + - type: PhysicalComposition + materialComposition: + Plastic: 100 diff --git a/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml b/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml index 64efe77c7c..e8061c5913 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/holoprojectors.yml @@ -119,7 +119,7 @@ components: - type: HolosignProjector signProto: HolosignSecurity - chargeUse: 120 + chargeUse: 90 - type: Sprite sprite: Objects/Devices/Holoprojectors/security.rsi state: icon diff --git a/Resources/Prototypes/Entities/Objects/Devices/pda.yml b/Resources/Prototypes/Entities/Objects/Devices/pda.yml index d1ac45387f..fbbdfe2b77 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/pda.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/pda.yml @@ -68,6 +68,7 @@ softness: 5 autoRot: true - type: Ringer + - type: RingerUplink - type: DeviceNetwork deviceNetId: Wireless receiveFrequencyId: PDA @@ -1061,7 +1062,7 @@ - DoorBumpOpener - type: entity - parent: BasePDA + parent: [ BasePDA, BaseSyndicateContraband ] id: SyndiPDA name: syndicate PDA description: Ok, time to be a productive member of- oh cool I'm a bad guy time to kill people! @@ -1418,7 +1419,7 @@ state: pda-seniorofficer - type: entity - parent: SyndiPDA + parent: [ BaseMajorContraband, SyndiPDA ] id: PiratePDA name: pirate PDA description: Yargh! @@ -1434,9 +1435,9 @@ state: pda-pirate - type: entity - parent: BaseMedicalPDA + parent: [ BaseMedicalPDA, BaseSyndicateContraband ] id: SyndiAgentPDA - name: syndicate agent PDA + name: syndicate corpsman PDA description: For those days when healing normal syndicates aren't enough, try healing nuclear operatives instead! components: - type: Pda diff --git a/Resources/Prototypes/Entities/Objects/Devices/radio.yml b/Resources/Prototypes/Entities/Objects/Devices/radio.yml index 84e15878af..adf094d12e 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/radio.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/radio.yml @@ -33,6 +33,7 @@ components: - type: RadioMicrophone broadcastChannel: Security + listenRange: 1 - type: RadioSpeaker channels: - Security diff --git a/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml b/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml index 3d5b78397e..569fd47d00 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/station_beacon.yml @@ -713,3 +713,50 @@ components: - type: NavMapBeacon defaultText: station-beacon-vox + +# Ghost Only Beacons +- type: entity + parent: DefaultStationBeacon + id: DefaultStationBeaconGhost + suffix: Boo + components: + - type: Tag + tags: + - GhostOnlyWarp + - type: WarpPoint + blacklist: + tags: + - GhostOnlyWarp + +# CentComm Beacons +- type: entity + parent: DefaultStationBeaconGhost + id: DefaultStationBeaconCentComm + suffix: CentComm + components: + - type: NavMapBeacon + text: CentComm + +- type: entity + parent: DefaultStationBeaconGhost + id: DefaultStationBeaconCentCommAfterhours + suffix: CentComm Afterhours + components: + - type: NavMapBeacon + text: Afterhours + +- type: entity + parent: DefaultStationBeaconGhost + id: DefaultStationBeaconCentCommThunderdome + suffix: CentComm Thunder Dome + components: + - type: NavMapBeacon + text: Thunderdome + +- type: entity + parent: DefaultStationBeaconGhost + id: DefaultStationBeaconCentCommERT + suffix: CentComm ERT + components: + - type: NavMapBeacon + text: ERT diff --git a/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml b/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml index 7fbb4aecf6..5153c9dc39 100644 --- a/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml +++ b/Resources/Prototypes/Entities/Objects/Devices/wristwatch.yml @@ -38,6 +38,9 @@ behaviors: - !type:DoActsBehavior acts: [ "Breakage" ] + - type: PhysicalComposition + materialComposition: + Steel: 300 - type: entity id: WristwatchGold @@ -57,3 +60,6 @@ sprite: Objects/Devices/goldwatch.rsi - type: StaticPrice price: 500 #if you ever increase the price of kidneys, increase this too. + - type: PhysicalComposition + materialComposition: + Gold: 500 diff --git a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml index ed1520ff99..f1ba8faf96 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/Instruments/instruments_string.yml @@ -184,6 +184,12 @@ - type: Item size: Normal sprite: Objects/Fun/Instruments/banjo.rsi + - type: Clothing + quickEquip: false + slots: + - back + - suitStorage + sprite: Objects/Fun/Instruments/banjo.rsi - type: Tag tags: - StringInstrument diff --git a/Resources/Prototypes/Entities/Objects/Fun/crayons.yml b/Resources/Prototypes/Entities/Objects/Fun/crayons.yml index 3c4a4800a8..a32e3ba89c 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/crayons.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/crayons.yml @@ -182,7 +182,7 @@ - type: Item heldPrefix: green - type: Crayon - color: green + color: "#A8E61D" - type: Tag tags: - Write @@ -201,7 +201,7 @@ - type: Item heldPrefix: blue - type: Crayon - color: lightblue + color: "#00B7EF" - type: Tag tags: - Write diff --git a/Resources/Prototypes/Entities/Objects/Fun/dice.yml b/Resources/Prototypes/Entities/Objects/Fun/dice.yml index 433a4ebac3..32df1f402d 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/dice.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/dice.yml @@ -125,7 +125,8 @@ - type: Slippery slipSound: path: /Audio/Effects/glass_step.ogg - launchForwardsMultiplier: 0 + slipData: + launchForwardsMultiplier: 0 - type: DamageUserOnTrigger damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Fun/error.yml b/Resources/Prototypes/Entities/Objects/Fun/error.yml index e4b9af61e0..6f157d4fed 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/error.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/error.yml @@ -16,8 +16,9 @@ - ReagentId: Nutriment Quantity: 5 - type: Slippery - paralyzeTime: 3 - launchForwardsMultiplier: 3 + slipData: + paralyzeTime: 3 + launchForwardsMultiplier: 3 - type: StepTrigger intersectRatio: 0.2 - type: CollisionWake diff --git a/Resources/Prototypes/Entities/Objects/Fun/immovable_rod.yml b/Resources/Prototypes/Entities/Objects/Fun/immovable_rod.yml index bbadf4f220..324502c3d1 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/immovable_rod.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/immovable_rod.yml @@ -32,6 +32,9 @@ - type: WarpPoint follow: true location: immovable rod + blacklist: + tags: + - GhostOnlyWarp - type: entity id: ImmovableRodDespawn diff --git a/Resources/Prototypes/Entities/Objects/Fun/pai.yml b/Resources/Prototypes/Entities/Objects/Fun/pai.yml index 19aec6e0e2..2a8e0e6a7f 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/pai.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/pai.yml @@ -13,6 +13,13 @@ program: 2 - type: UserInterface interfaces: + enum.StoreUiKey.Key: + type: StoreBoundUserInterface + requireInputValidation: false + # available in pai shop + enum.RadarConsoleUiKey.Key: + type: RadarConsoleBoundUserInterface + requireInputValidation: false enum.InstrumentUiKey.Key: type: InstrumentBoundUserInterface requireInputValidation: false @@ -51,6 +58,16 @@ - Common - type: DoAfter - type: Actions + - type: Store + categories: + - PAIAbilities + currencyWhitelist: + - SiliconMemory + balance: + SiliconMemory: 30 + - type: RadarConsole + maxRange: 256 + followEntity: true - type: TypingIndicator proto: robot - type: Speech @@ -141,6 +158,30 @@ graph: PotatoAI node: potatoai +- type: entity + id: ActionPAIOpenShop + name: Software Catalog + description: Install new software to assist your owner. + components: + - type: InstantAction + checkCanInteract: false + checkConsciousness: false + icon: Interface/Actions/shop.png + event: !type:PAIShopActionEvent + +- type: entity + id: ActionPAIMassScanner + name: Mass Scanner + description: View a mass scanner interface. + components: + - type: InstantAction + checkCanInteract: false + checkConsciousness: false + icon: { sprite: Interface/Actions/actions_ai.rsi, state: mass_scanner } + itemIconStyle: NoItem + event: !type:OpenUiActionEvent + key: enum.RadarConsoleUiKey.Key + - type: entity id: ActionPAIPlayMidi name: Play MIDI @@ -150,6 +191,7 @@ checkCanInteract: false checkConsciousness: false icon: Interface/Actions/pai-midi.png + itemIconStyle: NoItem event: !type:OpenUiActionEvent key: enum.InstrumentUiKey.Key @@ -162,5 +204,6 @@ checkCanInteract: false checkConsciousness: false icon: { sprite: Interface/Actions/pai-map.rsi, state: icon } + itemIconStyle: NoItem event: !type:OpenUiActionEvent key: enum.StationMapUiKey.Key diff --git a/Resources/Prototypes/Entities/Objects/Fun/toys.yml b/Resources/Prototypes/Entities/Objects/Fun/toys.yml index 0c037d93a6..99c41c1dde 100644 --- a/Resources/Prototypes/Entities/Objects/Fun/toys.yml +++ b/Resources/Prototypes/Entities/Objects/Fun/toys.yml @@ -362,6 +362,62 @@ - Payload - PlushieLizard +- type: entity + parent: BasePlushie + id: PlushieExperiment #Arf! + name: experiment plushie + description: A plushie of a canid of sorts, it yearns to be detonated on a landmine. + components: + - type: Sprite + sprite: Objects/Fun/expiplush.rsi + state: expi + - type: Item + inhandVisuals: + left: + - state: expi-inhand-left + shader: shaded + right: + - state: expi-inhand-right + shader: shaded + heldPrefix: plushielizard + - type: EmitSoundOnUse + sound: + path: /Audio/Items/Toys/arf.ogg + - type: EmitSoundOnLand + sound: + path: /Audio/Items/Toys/arf.ogg + - type: EmitSoundOnActivate + sound: + path: /Audio/Items/Toys/arf.ogg + - type: EmitSoundOnTrigger + sound: + path: /Audio/Items/Toys/arf.ogg + - type: EmitSoundOnCollide + sound: + path: /Audio/Items/Toys/arf.ogg + - type: Food + requiresSpecialDigestion: true + useSound: + path: /Audio/Items/Toys/arf.ogg + - type: MeleeWeapon + wideAnimationRotation: 180 + soundHit: + path: /Audio/Items/Toys/arf.ogg + - type: Tag + tags: + - ClothMade + - Payload + - type: Clothing + clothingVisuals: + head: + - state: expi-equipped-HELMET + shader: shaded + quickEquip: false + sprite: Objects/Fun/toys.rsi + equippedPrefix: expi + slots: + - HEAD + - type: entity parent: PlushieLizard id: PlushieRainbowLizard #Weh but gay @@ -1481,8 +1537,6 @@ description: New Sandy-Cat plastic sword! Comes with realistic sound and full color! Looks almost like the real thing! components: - type: EnergySword - colorOptions: - - DodgerBlue - type: ItemToggle soundActivate: path: /Audio/Weapons/ebladeon.ogg @@ -1492,7 +1546,7 @@ activeSound: path: /Audio/Weapons/ebladehum.ogg - type: Sprite - sprite: Objects/Fun/toy_sword.rsi + sprite: Objects/Weapons/Melee/e_sword.rsi layers: - state: e_sword - state: e_sword_blade @@ -1502,7 +1556,7 @@ map: [ "blade" ] - type: Item size: Small - sprite: Objects/Fun/toy_sword.rsi + sprite: Objects/Weapons/Melee/e_sword-inhands.rsi - type: UseDelay delay: 1.0 - type: PointLight @@ -1686,7 +1740,8 @@ - type: UseDelay delay: 0.8 - type: Slippery - paralyzeTime: 0 + slipData: + paralyzeTime: 0 slipSound: collection: Parp params: diff --git a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml index bc9202324d..2156124749 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/Sheets/metal.yml @@ -59,9 +59,6 @@ - type: Item heldPrefix: steel - type: Appearance - - type: FloorTile - outputs: - - Plating - type: Extractable grindableSolutionName: steel - type: SolutionContainerManager diff --git a/Resources/Prototypes/Entities/Objects/Materials/materials.yml b/Resources/Prototypes/Entities/Objects/Materials/materials.yml index c531ef88fc..01cb3a8387 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/materials.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/materials.yml @@ -93,8 +93,14 @@ bloodlossModifier: -4 healingBeginSound: path: "/Audio/Items/Medical/brutepack_begin.ogg" + params: + volume: 1.0 + variation: 0.125 healingEndSound: path: "/Audio/Items/Medical/brutepack_end.ogg" + params: + volume: 1.0 + variation: 0.125 - type: Stack stackType: Cloth baseLayer: base diff --git a/Resources/Prototypes/Entities/Objects/Materials/shards.yml b/Resources/Prototypes/Entities/Objects/Materials/shards.yml index 718d1ad8e3..2457404b48 100644 --- a/Resources/Prototypes/Entities/Objects/Materials/shards.yml +++ b/Resources/Prototypes/Entities/Objects/Materials/shards.yml @@ -69,7 +69,8 @@ - type: Slippery slipSound: path: /Audio/Effects/glass_step.ogg - launchForwardsMultiplier: 0 + slipData: + launchForwardsMultiplier: 0 - type: TriggerOnStepTrigger - type: DamageUserOnTrigger damage: diff --git a/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml b/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml index 4cb6a8bf1e..ddc17240f1 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/bedsheets.yml @@ -306,7 +306,7 @@ - type: entity id: BedsheetSyndie - parent: BedsheetBase + parent: [ BedsheetBase, BaseSyndicateContraband ] name: syndicate bedsheet description: It has a syndicate emblem and it has an aura of evil. components: diff --git a/Resources/Prototypes/Entities/Objects/Misc/business_card.yml b/Resources/Prototypes/Entities/Objects/Misc/business_card.yml index a04351693a..841d5f2099 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/business_card.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/business_card.yml @@ -1,7 +1,7 @@ - type: entity id: SyndicateBusinessCard name: syndicate business card - parent: Paper + parent: [ Paper, BaseSyndicateContraband ] description: A black card with the syndicate's logo. There's something written on the back. components: - type: Sprite diff --git a/Resources/Prototypes/Entities/Objects/Misc/candles.yml b/Resources/Prototypes/Entities/Objects/Misc/candles.yml index 55d3ecb9d3..b33d83f218 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/candles.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/candles.yml @@ -27,6 +27,7 @@ variation: 0.05 volume: 10 - type: UseDelay + - type: ExtinguishableSetCollisionWake - type: Flammable fireSpread: false canResistFire: false diff --git a/Resources/Prototypes/Entities/Objects/Misc/dat_fukken_disk.yml b/Resources/Prototypes/Entities/Objects/Misc/dat_fukken_disk.yml index e1fc3fa5b6..523385788b 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/dat_fukken_disk.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/dat_fukken_disk.yml @@ -17,9 +17,13 @@ - type: WarpPoint follow: true location: nuke disk + blacklist: + tags: + - GhostOnlyWarp - type: Tag tags: - HighRiskItem + - GhostOnlyWarp - type: StealTarget stealGroup: NukeDisk diff --git a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml index 9b27ad0bc6..676b875039 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/fluff_lights.yml @@ -159,7 +159,6 @@ - type: Flash - type: LimitedCharges maxCharges: 3 - charges: 3 - type: AutoRecharge rechargeDuration: 30 - type: MeleeWeapon @@ -239,7 +238,10 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] - + - type: PhysicalComposition + materialComposition: + Glass: 500 + Steel: 200 - type: entity name: broken floodlight id: FloodlightBroken @@ -289,3 +291,7 @@ density: 50 mask: - HighImpassable + - type: PhysicalComposition + materialComposition: + Glass: 500 + Steel: 200 diff --git a/Resources/Prototypes/Entities/Objects/Misc/folders.yml b/Resources/Prototypes/Entities/Objects/Misc/folders.yml new file mode 100644 index 0000000000..f72d4c3abc --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Misc/folders.yml @@ -0,0 +1,313 @@ +- type: entity + id: BoxFolderNuclearCodes + parent: BaseItem + name: nuclear code folder + components: + - type: Sprite + sprite: Objects/Misc/folders.rsi + layers: + - state: folder-colormap + color: "#cc2323" + - state: folder-base + - state: folder-stamp-inverse + color: "#1dff00" + - type: SpawnItemsOnUse + items: + - id: NukeCodePaper + sound: + path: /Audio/Effects/packetrip.ogg + - type: Appearance + +- type: entity + id: BoxFolderBase + parent: BoxBase + name: folder + description: A folder filled with top secret paperwork. + components: + - type: Sprite + sprite: Objects/Misc/folders.rsi + layers: + - state: folder-colormap + - state: folder-base +# RandomSpriteColor requires netsync which is currently incompatible with ItemMapper +# - type: RandomSpriteColor +# sprite: Objects/Misc/folders.rsi +# state: folder-colormap +# colors: +# red: "#cc2323" +# blue: "#355d99" +# yellow: "#b38e3c" +# white: "#e6e6e6" +# grey: "#999999" +# black: "#3f3f3f" +# green: "#43bc38" + - type: Item + sprite: Objects/Misc/folders.rsi + size: Small + shape: null + - type: Storage + maxItemSize: Small + grid: + - 0,0,4,3 + whitelist: + tags: + - Document + - type: ItemMapper + mapLayers: + folder-overlay-paper: + whitelist: + tags: + - Document + - type: Appearance + - type: Tag + tags: + - Folder + - type: StorageFill + contents: + - id: Paper + prob: 0.5 + - id: PaperOffice + prob: 0.4 + - id: Paper + prob: 0.3 + - id: PaperOffice + prob: 0.2 + - id: Paper + prob: 0.2 + +- type: entity + id: BoxFolderRed + parent: BoxFolderBase + suffix: Red + components: + - type: Sprite + layers: + - state: folder-colormap + color: "#cc2323" + - state: folder-base + +- type: entity + id: BoxFolderBlue + parent: BoxFolderBase + suffix: Blue + components: + - type: Sprite + layers: + - state: folder-colormap + color: "#355d99" + - state: folder-base + +- type: entity + id: BoxFolderYellow + parent: BoxFolderBase + suffix: Yellow + components: + - type: Sprite + layers: + - state: folder-colormap + color: "#b38e3c" + - state: folder-base + +- type: entity + id: BoxFolderWhite + parent: BoxFolderBase + suffix: White + components: + - type: Sprite + layers: + - state: folder-white + - state: folder-base + +- type: entity + id: BoxFolderGrey + parent: BoxFolderBase + suffix: Grey + components: + - type: Sprite + layers: + - state: folder-colormap + color: "#999999" + - state: folder-base + +- type: entity + id: BoxFolderBlack + parent: BoxFolderBase + suffix: Black + components: + - type: Sprite + layers: + - state: folder-colormap + color: "#3f3f3f" + - state: folder-base + +- type: entity + id: BoxFolderGreen + parent: BoxFolderBase + suffix: Green + components: + - type: Sprite + layers: + - state: folder-colormap + color: "#43bc38" + - state: folder-base + +- type: entity + id: BoxFolderCentCom + name: CentComm folder + parent: BoxFolderBase + categories: [ DoNotMap ] + description: CentComm's miserable little pile of secrets! + components: + - type: Sprite + layers: + - state: folder-centcom + - state: folder-base + +- type: entity + id: BoxFolderClipboard + parent: BoxFolderBase + name: clipboard + description: The weapon of choice for those on the front lines of bureaucracy. + components: + - type: Sprite + sprite: Objects/Misc/clipboard.rsi + layers: + - state: clipboard + - state: clipboard_paper + map: ["clipboard_paper"] + visible: false + - state: clipboard_pen + map: ["clipboard_pen"] + visible: false + - state: clipboard_over + - type: ContainerContainer + containers: + storagebase: !type:Container + ents: [] + pen_slot: !type:ContainerSlot {} + - type: ItemSlots + slots: + pen_slot: + name: clipboard-slot-component-slot-name-pen + whitelist: + tags: + - Write + insertOnInteract: false + - type: Item + sprite: Objects/Misc/clipboard.rsi + size: Small + - type: Clothing + slots: [belt] + quickEquip: false + sprite: Objects/Misc/clipboard.rsi + - type: Storage + grid: + - 0,0,5,3 + whitelist: + tags: + - Document + - type: ItemMapper + mapLayers: + clipboard_paper: + whitelist: + tags: + - Document + clipboard_pen: + whitelist: + tags: + - Write + - type: MeleeWeapon + wideAnimationRotation: 180 + damage: + types: + Blunt: 6 + +- type: entity + id: BoxFolderCentComClipboard + parent: BoxFolderClipboard + name: CentComm clipboard + description: A luxurious clipboard upholstered with green velvet. Often seen carried by CentComm officials, seldom seen actually used. + components: + - type: Sprite + sprite: Objects/Misc/cc-clipboard.rsi + layers: + - state: clipboard + - state: clipboard_paper + map: ["clipboard_paper"] + visible: false + - state: clipboard_pen + map: ["clipboard_pen"] + visible: false + - state: clipboard_over + - type: Item + sprite: Objects/Misc/cc-clipboard.rsi + - type: Clothing + sprite: Objects/Misc/cc-clipboard.rsi + +- type: entity + id: BoxFolderQmClipboard + parent: [BoxFolderClipboard, BaseGrandTheftContraband] + 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: ItemSlots + slots: + pen_slot: + name: clipboard-slot-component-slot-name-pen + whitelist: + tags: + - Write + insertOnInteract: true + - type: Item + sprite: Objects/Misc/qm_clipboard.rsi + size: Normal + - type: Clothing + sprite: Objects/Misc/qm_clipboard.rsi + - type: Storage + grid: + - 0,0,4,3 + quickInsert: true + - type: StorageFill + contents: [] #to override base clipboard fill + - type: ItemMapper + mapLayers: + qm_clipboard_paper: + whitelist: + tags: + - Document + qm_clipboard_pen: + whitelist: + tags: + - Write + - type: CargoOrderConsole + removeLimitAccess: [ "Quartermaster" ] + - type: ActivatableUI + verbText: qm-clipboard-computer-verb-text + key: enum.CargoConsoleUiKey.Orders + - type: UserInterface + interfaces: + enum.CargoConsoleUiKey.Orders: + type: CargoOrderConsoleBoundUserInterface + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + - type: MeleeWeapon + damage: + types: + Blunt: 10 + - type: Tag + tags: + - Folder + - HighRiskItem + - type: StealTarget + stealGroup: BoxFolderQmClipboard diff --git a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml index 45f86e11b0..72332010e6 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/identification_cards.yml @@ -637,7 +637,7 @@ job: AtmosphericTechnician - type: entity - parent: IDCardStandard + parent: [ IDCardStandard, BaseSyndicateContraband ] id: SyndicateIDCard name: syndicate ID card components: @@ -650,7 +650,7 @@ - SyndicateAgent - type: entity - parent: IDCardStandard + parent: [ IDCardStandard, BaseMajorContraband ] id: PirateIDCard name: pirate ID card components: @@ -722,6 +722,40 @@ - type: PresetIdCard job: Detective +- type: entity + parent: IDCardStandard + id: PrisonerIDCard + name: prisoner ID card + description: A generically printed ID card for scummy prisoners. + components: + - type: Sprite + layers: + - state: orange + - type: Item + heldPrefix: orange + - type: Access + tags: + - GenpopEnter + - type: GenpopIdCard + - type: IdCard + jobTitle: job-name-prisoner + jobIcon: JobIconPrisoner + canMicrowave: false + - type: ExpireIdCard + expireMessage: genpop-prisoner-id-expire + expiredAccess: + - GenpopLeave + - type: Speech + speechVerb: Robotic + - type: Tag + tags: + - DoorBumpOpener + - WhitelistChameleon + - WhitelistChameleonIdCard + - Recyclable + - type: StaticPrice # these are infinitely producible. + price: 0 + - type: entity parent: CentcomIDCard id: CBURNIDcard @@ -833,6 +867,7 @@ - NuclearOperative - SyndicateAgent - Wizard + - Xenoborg - type: Tag # Ignore Chameleon tags tags: - DoorBumpOpener diff --git a/Resources/Prototypes/Entities/Objects/Misc/implanters.yml b/Resources/Prototypes/Entities/Objects/Misc/implanters.yml index 79e010f1a4..f853069964 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/implanters.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/implanters.yml @@ -2,7 +2,6 @@ - type: entity name: implanter - description: A syringe exclusively designed for the injection and extraction of subdermal implants. Use care when extracting implants, as incorrect draw settings may injure the user. id: BaseImplanter parent: BaseItem abstract: true @@ -125,7 +124,7 @@ id: BaseImplantOnlyImplanterSyndi parent: [BaseImplantOnlyImplanter, BaseSyndicateContraband] name: syndicate implanter - description: A compact disposable syringe exclusively designed for the injection of subdermal implants. + description: A compact disposable syringe exclusively designed for the injection of subdermal implants. Make sure to scrub it with soap or a rag to remove residual DNA after use! abstract: true components: - type: Item @@ -157,7 +156,7 @@ - type: entity id: SadTromboneImplanter - suffix: sad trombone + name: sad trombone implanter parent: BaseImplantOnlyImplanter components: - type: Implanter @@ -165,7 +164,7 @@ - type: entity id: LightImplanter - suffix: light + name: light implanter parent: BaseImplantOnlyImplanter components: - type: Implanter @@ -173,7 +172,7 @@ - type: entity id: BikeHornImplanter - suffix: bike horn + name: bike horn implanter parent: BaseImplantOnlyImplanter components: - type: Implanter @@ -183,7 +182,7 @@ - type: entity id: TrackingImplanter - suffix: tracking + name: tracking implanter parent: BaseImplantOnlyImplanter components: - type: Implanter @@ -193,7 +192,7 @@ - type: entity id: StorageImplanter - suffix: storage + name: storage implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -201,7 +200,7 @@ - type: entity id: FreedomImplanter - suffix: freedom + name: freedom implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -209,7 +208,7 @@ - type: entity id: RadioImplanter - suffix: radio Syndicate + name: syndicate radio implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -217,7 +216,7 @@ - type: entity id: UplinkImplanter - suffix: uplink + name: uplink implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -225,7 +224,7 @@ - type: entity id: EmpImplanter - suffix: EMP + name: EMP implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -233,7 +232,7 @@ - type: entity id: ScramImplanter - suffix: scram + name: scram implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -241,7 +240,7 @@ - type: entity id: DnaScramblerImplanter - suffix: DNA scrambler + name: DNA scrambler implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -251,7 +250,7 @@ - type: entity id: MicroBombImplanter - suffix: micro-bomb + name: micro-bomb implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -259,7 +258,7 @@ - type: entity id: MacroBombImplanter - suffix: macro-bomb + name: macro-bomb implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -267,7 +266,7 @@ - type: entity id: DeathRattleImplanter - suffix: death rattle + name: death rattle implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -275,7 +274,7 @@ - type: entity id: DeathAcidifierImplanter - suffix: death acidifier + name: death acidifier implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -283,7 +282,7 @@ - type: entity id: FakeMindShieldImplanter - suffix: fake mindshield + name: fake mindshield implanter parent: BaseImplantOnlyImplanterSyndi components: - type: Implanter @@ -293,7 +292,7 @@ - type: entity id: MindShieldImplanter - suffix: mindshield + name: mindshield implanter parent: BaseImplantOnlyImplanter components: - type: Implanter @@ -303,7 +302,7 @@ - type: entity id: RadioImplanterCentcomm - suffix: radio Centcomm + name: centcomm radio implanter parent: BaseImplantOnlyImplanter components: - type: Implanter @@ -311,7 +310,7 @@ - type: entity id: DeathRattleImplanterCentcomm - suffix: centcomm death rattle + name: centcomm death rattle implanter parent: BaseImplantOnlyImplanter components: - type: Implanter diff --git a/Resources/Prototypes/Entities/Objects/Misc/monkeycube.yml b/Resources/Prototypes/Entities/Objects/Misc/monkeycube.yml index cf2dad1ce5..9b95d15e69 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/monkeycube.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/monkeycube.yml @@ -14,20 +14,28 @@ - type: entity parent: BaseItem - name: monkey cube + abstract: true suffix: Wrapped - id: MonkeyCubeWrapped - description: Unwrap this to get a monkey cube. + id: BaseWrappedCube components: - type: Item size: Tiny - type: SpawnItemsOnUse - items: - - id: MonkeyCube sound: path: /Audio/Effects/unwrap.ogg - type: Sprite sprite: Objects/Misc/monkeycube.rsi + +- type: entity + parent: BaseWrappedCube + name: monkey cube + id: MonkeyCubeWrapped + description: Unwrap this to get a monkey cube. + components: + - type: SpawnItemsOnUse + items: + - id: MonkeyCube + - type: Sprite state: wrapper - type: Tag tags: @@ -64,19 +72,15 @@ state: box_variant - type: entity - parent: MonkeyCubeWrapped + parent: BaseWrappedCube name: kobold cube - suffix: Wrapped id: KoboldCubeWrapped description: Unwrap this to get a kobold cube. components: - type: SpawnItemsOnUse items: - id: KoboldCube - sound: - path: /Audio/Effects/unwrap.ogg - type: Sprite - sprite: Objects/Misc/monkeycube.rsi state: wrapper_kobold - type: entity @@ -99,18 +103,7 @@ name: monkey cube suffix: Wrapped, Syndicate id: SyndicateSpongeWrapped - description: Unwrap this to get a monkey cube. components: - type: SpawnItemsOnUse items: - id: SyndicateSponge - sound: - path: /Audio/Effects/unwrap.ogg - - type: Sprite - sprite: Objects/Misc/monkeycube.rsi - state: wrapper - - type: Item - size: Tiny - - type: Tag - tags: - - MonkeyCube diff --git a/Resources/Prototypes/Entities/Objects/Misc/paper.yml b/Resources/Prototypes/Entities/Objects/Misc/paper.yml index 574dd98d0d..19ff01d63b 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/paper.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/paper.yml @@ -49,6 +49,7 @@ Quantity: 1 - type: Item size: Tiny + - type: PhysicalComposition - type: entity name: paper @@ -306,320 +307,6 @@ components: - type: NukeCodePaper -- type: entity - id: BoxFolderNuclearCodes - parent: BaseItem - name: nuclear code folder - components: - - type: Sprite - sprite: Objects/Misc/bureaucracy.rsi - layers: - - state: folder-colormap - color: "#cc2323" - - state: folder-base - - state: folder-stamp-inverse - color: "#1dff00" - - type: SpawnItemsOnUse - items: - - id: NukeCodePaper - sound: - path: /Audio/Effects/packetrip.ogg - - type: Appearance - -- type: entity - id: BoxFolderBase - parent: BoxBase - name: folder - description: A folder filled with top secret paperwork. - components: - - type: Sprite - sprite: Objects/Misc/bureaucracy.rsi - layers: - - state: folder-colormap - - state: folder-base -# RandomSpriteColor requires netsync which is currently incompatible with ItemMapper -# - type: RandomSpriteColor -# sprite: Objects/Misc/bureaucracy.rsi -# state: folder-colormap -# colors: -# red: "#cc2323" -# blue: "#355d99" -# yellow: "#b38e3c" -# white: "#e6e6e6" -# grey: "#999999" -# black: "#3f3f3f" -# green: "#43bc38" - - type: Item - sprite: Objects/Misc/bureaucracy.rsi - size: Small - shape: null - - type: Storage - maxItemSize: Small - grid: - - 0,0,4,3 - whitelist: - tags: - - Document - - type: ItemMapper - mapLayers: - folder-overlay-paper: - whitelist: - tags: - - Document - - type: Appearance - - type: Tag - tags: - - Folder - - type: StorageFill - contents: - - id: Paper - prob: 0.5 - - id: PaperOffice - prob: 0.4 - - id: Paper - prob: 0.3 - - id: PaperOffice - prob: 0.2 - - id: Paper - prob: 0.2 - -- type: entity - id: BoxFolderRed - parent: BoxFolderBase - suffix: Red - components: - - type: Sprite - layers: - - state: folder-colormap - color: "#cc2323" - - state: folder-base - -- type: entity - id: BoxFolderBlue - parent: BoxFolderBase - suffix: Blue - components: - - type: Sprite - layers: - - state: folder-colormap - color: "#355d99" - - state: folder-base - -- type: entity - id: BoxFolderYellow - parent: BoxFolderBase - suffix: Yellow - components: - - type: Sprite - layers: - - state: folder-colormap - color: "#b38e3c" - - state: folder-base - -- type: entity - id: BoxFolderWhite - parent: BoxFolderBase - suffix: White - components: - - type: Sprite - layers: - - state: folder-white - - state: folder-base - -- type: entity - id: BoxFolderGrey - parent: BoxFolderBase - suffix: Grey - components: - - type: Sprite - layers: - - state: folder-colormap - color: "#999999" - - state: folder-base - -- type: entity - id: BoxFolderBlack - parent: BoxFolderBase - suffix: Black - components: - - type: Sprite - layers: - - state: folder-colormap - color: "#3f3f3f" - - state: folder-base - -- type: entity - id: BoxFolderGreen - parent: BoxFolderBase - suffix: Green - components: - - type: Sprite - layers: - - state: folder-colormap - color: "#43bc38" - - state: folder-base - -- type: entity - id: BoxFolderCentCom - name: CentComm folder - parent: BoxFolderBase - categories: [ DoNotMap ] - description: CentComm's miserable little pile of secrets! - components: - - type: Sprite - layers: - - state: folder-centcom - - state: folder-base - -- type: entity - id: BoxFolderClipboard - parent: BoxFolderBase - name: clipboard - description: The weapon of choice for those on the front lines of bureaucracy. - components: - - type: Sprite - sprite: Objects/Misc/clipboard.rsi - layers: - - state: clipboard - - state: clipboard_paper - map: ["clipboard_paper"] - visible: false - - state: clipboard_pen - map: ["clipboard_pen"] - visible: false - - state: clipboard_over - - type: ContainerContainer - containers: - storagebase: !type:Container - ents: [] - pen_slot: !type:ContainerSlot {} - - type: ItemSlots - slots: - pen_slot: - name: clipboard-slot-component-slot-name-pen - whitelist: - tags: - - Write - insertOnInteract: false - - type: Item - sprite: Objects/Misc/clipboard.rsi - size: Small - - type: Clothing - slots: [belt] - quickEquip: false - sprite: Objects/Misc/clipboard.rsi - - type: Storage - grid: - - 0,0,5,3 - whitelist: - tags: - - Document - - type: ItemMapper - mapLayers: - clipboard_paper: - whitelist: - tags: - - Document - clipboard_pen: - whitelist: - tags: - - Write - - type: MeleeWeapon - wideAnimationRotation: 180 - damage: - types: - Blunt: 6 - -- type: entity - id: BoxFolderCentComClipboard - parent: BoxFolderClipboard - name: CentComm clipboard - description: A luxurious clipboard upholstered with green velvet. Often seen carried by CentComm officials, seldom seen actually used. - components: - - type: Sprite - sprite: Objects/Misc/cc-clipboard.rsi - layers: - - state: clipboard - - state: clipboard_paper - map: ["clipboard_paper"] - visible: false - - state: clipboard_pen - map: ["clipboard_pen"] - visible: false - - state: clipboard_over - - type: Item - sprite: Objects/Misc/cc-clipboard.rsi - - type: Clothing - sprite: Objects/Misc/cc-clipboard.rsi - -- type: entity - id: BoxFolderQmClipboard - parent: [BoxFolderClipboard, BaseGrandTheftContraband] - 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: ItemSlots - slots: - pen_slot: - name: clipboard-slot-component-slot-name-pen - whitelist: - tags: - - Write - insertOnInteract: true - - type: Item - sprite: Objects/Misc/qm_clipboard.rsi - size: Normal - - type: Clothing - sprite: Objects/Misc/qm_clipboard.rsi - - type: Storage - grid: - - 0,0,4,3 - quickInsert: true - - type: StorageFill - contents: [] #to override base clipboard fill - - type: ItemMapper - mapLayers: - qm_clipboard_paper: - whitelist: - tags: - - Document - qm_clipboard_pen: - whitelist: - tags: - - Write - - type: CargoOrderConsole - - type: BankClient - - type: ActivatableUI - verbText: qm-clipboard-computer-verb-text - key: enum.CargoConsoleUiKey.Orders - - type: UserInterface - interfaces: - enum.CargoConsoleUiKey.Orders: - type: CargoOrderConsoleBoundUserInterface - enum.StorageUiKey.Key: - type: StorageBoundUserInterface - - type: MeleeWeapon - damage: - types: - Blunt: 10 - - type: Tag - tags: - - Folder - - HighRiskItem - - type: StealTarget - stealGroup: BoxFolderQmClipboard - - type: entity parent: [Paper, BaseSyndicateContraband] # eat or burn your damn piece of paper damn thieves id: TraitorCodePaper diff --git a/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml b/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml index 4ae684c193..e690e1d587 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/pet_carrier.yml @@ -1,12 +1,12 @@ - type: entity id: PetCarrier - name: big pet carrier + name: pet carrier description: Allows large animals to be carried comfortably. It smells vaguely of toilet water and explosives. parent: BaseStructureDynamic components: - type: Sprite noRot: true - drawdepth: Objects + drawdepth: Items sprite: Objects/Storage/petcarrier.rsi layers: - state: pet_carrier_base @@ -31,8 +31,6 @@ density: 25 mask: - ItemMask - layer: - - MachineLayer - type: EntityStorage capacity: 1 airtight: false diff --git a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml index 6dd3c83665..13b906bbd7 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/subdermal_implants.yml @@ -79,7 +79,7 @@ parent: BaseSubdermalImplant id: TrackingImplant name: tracking implant - description: This implant has a tracking device attached to the suit sensor network, as well as a condition monitor for the Security radio channel. + description: This implant has a tracking device attached to the suit sensor network. categories: [ HideSpawnMenu ] components: - type: SubdermalImplant @@ -97,11 +97,6 @@ - type: StationLimitedNetwork - type: WirelessNetworkConnection range: 500 - - type: TriggerOnMobstateChange - mobState: - - Critical - - type: Rattle - radioChannel: "Security" #Traitor implants @@ -348,9 +343,6 @@ components: - type: SubdermalImplant - type: MindShieldImplant - - type: Tag - tags: - - MindShield # Centcomm implants diff --git a/Resources/Prototypes/Entities/Objects/Misc/torch.yml b/Resources/Prototypes/Entities/Objects/Misc/torch.yml index 50e8f65890..da4886912c 100644 --- a/Resources/Prototypes/Entities/Objects/Misc/torch.yml +++ b/Resources/Prototypes/Entities/Objects/Misc/torch.yml @@ -5,9 +5,9 @@ description: A torch fashioned from some wood. components: - type: ExpendableLight - spentName: expendable-light-burnt-torch-name - spentDesc: expendable-light-burnt-torch-desc + refuelMaterialID: WoodPlank glowDuration: 100 + refuelMaximumDuration: 205 fadeOutDuration: 4 iconStateSpent: torch_spent turnOnBehaviourID: turn_on diff --git a/Resources/Prototypes/Entities/Objects/Power/powersink.yml b/Resources/Prototypes/Entities/Objects/Power/powersink.yml index 40406209a7..5d1043f08c 100644 --- a/Resources/Prototypes/Entities/Objects/Power/powersink.yml +++ b/Resources/Prototypes/Entities/Objects/Power/powersink.yml @@ -45,5 +45,11 @@ - type: Sprite sprite: Objects/Power/powersink.rsi state: powersink + - type: Tag + tags: + - GhostOnlyWarp - type: WarpPoint location: powersink + blacklist: + tags: + - GhostOnlyWarp diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml index 06f2974305..3ef9e99cd2 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/leaves.yml @@ -65,7 +65,7 @@ - Smokable - type: Item size: Tiny - + - type: entity name: rainbow cannabis leaves parent: LeavesCannabis @@ -73,14 +73,18 @@ description: "Is it supposed to be glowing like that...?" components: - type: Sprite - sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + layers: + - sprite: Objects/Specific/Hydroponics/rainbow_cannabis.rsi + state: produce + shader: unshaded - type: Produce seedId: rainbowCannabis - - type: PointLight - radius: 1.5 - energy: 2 - - type: RgbLightController - cycleRate: 0.6 + # disabled because 50 morbillion point lights still break the lighting engine + #- type: PointLight + # radius: 1.5 + # energy: 2 + #- type: RgbLightController + # cycleRate: 0.6 - type: SolutionContainerManager solutions: food: @@ -250,4 +254,4 @@ tags: - Smokable - type: Item - size: Tiny \ No newline at end of file + size: Tiny diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml index bc78ab5911..1777d8675c 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/seeds.yml @@ -37,6 +37,7 @@ blacklist: tags: - Book + - type: PhysicalComposition - type: entity parent: SeedBase diff --git a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml index 727c75c879..d152bb908e 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Hydroponics/tools.yml @@ -19,6 +19,9 @@ Slash: 6 - type: Item sprite: Objects/Tools/Hydroponics/hoe.rsi + - type: PhysicalComposition + materialComposition: + Steel: 100 - type: entity name: plant clippers @@ -40,6 +43,9 @@ - type: Item sprite: Objects/Tools/Hydroponics/clippers.rsi storedRotation: -90 + - type: PhysicalComposition + materialComposition: + Steel: 100 - type: entity name: scythe @@ -64,6 +70,10 @@ - back - type: StaticPrice price: 40 + - type: PhysicalComposition + materialComposition: + Steel: 100 + Plastic: 100 - type: entity name: hatchet @@ -87,6 +97,9 @@ Piercing: 2 - type: Item sprite: Objects/Tools/Hydroponics/hatchet.rsi + - type: PhysicalComposition + materialComposition: + Steel: 100 - type: entity name: spade @@ -112,6 +125,9 @@ sprite: Objects/Tools/Hydroponics/spade.rsi - type: Shovel speedModifier: 0.75 # slower at digging than a full-sized shovel + - type: PhysicalComposition + materialComposition: + Steel: 100 - type: entity name: plant bag diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml index ccb7900810..6a7234b810 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/janitor.yml @@ -250,6 +250,9 @@ types: Blunt: 3 - type: Plunger + - type: PhysicalComposition + materialComposition: + Wood: 100 - type: entity name: golden plunger diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml index 3f605119d7..9cedbb23ca 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/soap.yml @@ -127,8 +127,9 @@ - type: SolutionContainerVisuals fillBaseName: syndie- - type: Slippery - paralyzeTime: 3 - launchForwardsMultiplier: 3 + slipData: + paralyzeTime: 3 + launchForwardsMultiplier: 3 - type: Item heldPrefix: syndie - type: FlavorProfile @@ -152,8 +153,9 @@ layers: - state: syndie-soaplet - type: Slippery - paralyzeTime: 1.5 # these things are tiny - launchForwardsMultiplier: 1.5 + slipData: + paralyzeTime: 1.5 # these things are tiny + launchForwardsMultiplier: 1.5 - type: StepTrigger intersectRatio: 0.04 - type: Item @@ -218,8 +220,9 @@ - type: SolutionContainerVisuals fillBaseName: omega- - type: Slippery - paralyzeTime: 5.0 - launchForwardsMultiplier: 3.0 + slipData: + paralyzeTime: 5.0 + launchForwardsMultiplier: 3.0 - type: Item heldPrefix: omega - type: SolutionContainerManager diff --git a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml index 998d3ecf03..e8a5ff22bb 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Janitorial/spray.yml @@ -99,8 +99,8 @@ - type: Tag tags: - Spray -# Vapor +# Vapor - type: entity id: Vapor name: "vapor" @@ -111,6 +111,8 @@ vapor: maxVol: 50 - type: Vapor + active: true + transferAmountPercentage: 0.5 - type: AnimationPlayer - type: Sprite sprite: Effects/chempuff.rsi @@ -130,6 +132,8 @@ mask: - FullTileMask - Opaque + layer: + - ItemMask - type: Appearance - type: VaporVisuals diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml index e188794b81..c2f7bef65b 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/defib.yml @@ -97,7 +97,7 @@ - type: entity id: DefibrillatorSyndicate - parent: DefibrillatorCompact + parent: [ DefibrillatorCompact, BaseSyndicateContraband ] name: interdyne defibrillator description: Doubles as a self-defense weapon against war-crime inclined tiders. components: diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml index 768bc77004..96eb8ed8ad 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/healing.yml @@ -38,8 +38,14 @@ Caustic: -1.5 healingBeginSound: path: "/Audio/Items/Medical/ointment_begin.ogg" + params: + volume: 1.0 + variation: 0.125 healingEndSound: path: "/Audio/Items/Medical/ointment_end.ogg" + params: + volume: 1.0 + variation: 0.125 - type: Stack stackType: Ointment count: 10 @@ -89,8 +95,14 @@ Caustic: -10 healingBeginSound: path: "/Audio/Items/Medical/ointment_begin.ogg" + params: + volume: 1.0 + variation: 0.125 healingEndSound: path: "/Audio/Items/Medical/ointment_end.ogg" + params: + volume: 1.0 + variation: 0.125 - type: Stack stackType: RegenerativeMesh count: 10 @@ -128,8 +140,14 @@ Brute: -15 # 5 for each type in the group healingBeginSound: path: "/Audio/Items/Medical/brutepack_begin.ogg" + params: + volume: 1.0 + variation: 0.125 healingEndSound: path: "/Audio/Items/Medical/brutepack_end.ogg" + params: + volume: 1.0 + variation: 0.125 - type: Stack stackType: Brutepack count: 10 @@ -178,8 +196,14 @@ bloodlossModifier: -10 # a suture should stop ongoing bleeding healingBeginSound: path: "/Audio/Items/Medical/brutepack_begin.ogg" + params: + volume: 1.0 + variation: 0.125 healingEndSound: path: "/Audio/Items/Medical/brutepack_end.ogg" + params: + volume: 1.0 + variation: 0.125 - type: Stack stackType: MedicatedSuture count: 10 @@ -218,8 +242,14 @@ ModifyBloodLevel: 15 #restores about 5% blood per use on standard humanoids. healingBeginSound: path: "/Audio/Items/Medical/brutepack_begin.ogg" + params: + volume: 1.0 + variation: 0.125 healingEndSound: path: "/Audio/Items/Medical/brutepack_end.ogg" + params: + volume: 1.0 + variation: 0.125 - type: Stack stackType: Bloodpack count: 10 @@ -268,8 +298,14 @@ delay: 0.5 healingBeginSound: path: "/Audio/Items/Medical/brutepack_begin.ogg" + params: + volume: 1.0 + variation: 0.125 healingEndSound: path: "/Audio/Items/Medical/brutepack_end.ogg" + params: + volume: 1.0 + variation: 0.125 - type: entity name: roll of gauze @@ -298,8 +334,14 @@ bloodlossModifier: -10 healingBeginSound: path: "/Audio/Items/Medical/brutepack_begin.ogg" + params: + volume: 1.0 + variation: 0.125 healingEndSound: path: "/Audio/Items/Medical/brutepack_end.ogg" + params: + volume: 1.0 + variation: 0.125 - type: Stack stackType: Gauze count: 10 @@ -359,8 +401,14 @@ selfHealPenaltyMultiplier: 0 healingBeginSound: path: "/Audio/Items/Medical/ointment_begin.ogg" + params: + volume: 1.0 + variation: 0.125 healingEndSound: path: "/Audio/Items/Medical/ointment_end.ogg" + params: + volume: 1.0 + variation: 0.125 # Pills - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml index 5837c503a9..cb1fef33a6 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/hypospray.yml @@ -6,7 +6,12 @@ components: - type: Sprite sprite: Objects/Specific/Medical/hypospray.rsi - state: hypo + layers: + - state: hypo + map: ["enum.SolutionContainerLayers.Base"] + - state: hypo_fill1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false - type: Item sprite: Objects/Specific/Medical/hypospray.rsi - type: SolutionContainerManager @@ -28,6 +33,11 @@ - HighRiskItem - type: StealTarget stealGroup: Hypospray + - type: Appearance + - type: SolutionContainerVisuals + maxFillLevels: 6 + fillBaseName: hypo_fill + solutionName: hypospray - type: entity name: gorlex hypospray @@ -37,7 +47,12 @@ components: - type: Sprite sprite: Objects/Specific/Medical/syndihypo.rsi - state: hypo + layers: + - state: hypo + map: ["enum.SolutionContainerLayers.Base"] + - state: hypo_fill1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false - type: Item sprite: Objects/Specific/Medical/syndihypo.rsi - type: SolutionContainerManager @@ -52,6 +67,11 @@ onlyAffectsMobs: false - type: UseDelay delay: 0.5 + - type: Appearance + - type: SolutionContainerVisuals + maxFillLevels: 4 + fillBaseName: hypo_fill + solutionName: hypospray - type: entity name: borghypo diff --git a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml index 5b0c97dc83..482809dd61 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Medical/surgery.yml @@ -228,7 +228,7 @@ name: advanced circular saw id: SawAdvanced parent: [ SawElectric, BaseSyndicateContraband ] - description: You think you can cut anything with it. + description: Interdyne's state-of-the-art surgical saw. Guaranteed to stay spotless and sterile, no matter how messy the job. components: - type: Sprite state: advanced diff --git a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml index 44855ccfa3..0c73a5a5c9 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Robotics/borg_modules.yml @@ -391,7 +391,6 @@ - Shovel - MineralScannerUnpowered - OreBag - - Crowbar - RadioHandheld - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: mining-module } @@ -606,6 +605,11 @@ - type: ItemBorgModule items: - NodeScanner + - Multitool + - Wrench + - SprayBottle + - Beaker + - Syringe - type: BorgModuleIcon icon: { sprite: Interface/Actions/actions_borg.rsi, state: node-scanner-module } diff --git a/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml b/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml index ad0eeccc7d..f23e0964c1 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Service/barber.yml @@ -24,3 +24,6 @@ Piercing: 6 soundHit: path: "/Audio/Weapons/bladeslice.ogg" + - type: PhysicalComposition + materialComposition: + Steel: 200 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml index 7053eda226..46f79e1140 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/artifact_equipment.yml @@ -46,7 +46,7 @@ capacity: 1 whitelist: components: - - Artifact + - XenoArtifact - type: Weldable - type: SuppressArtifactContainer - type: RadiationBlockingContainer @@ -94,7 +94,6 @@ enum.PaperLabelVisuals.Layer: True: { offset: "0.0,0.3125" } False: { offset: "0.0,0.0" } - - type: LockVisuals - type: ItemSlots - type: ContainerContainer @@ -103,3 +102,93 @@ paper_label: !type:ContainerSlot - type: StaticPrice price: 250 + +- type: entity + parent: BaseStorageItem + id: HandheldArtifactContainer + name: handheld artifact container + description: A handheld case used to safely contain and move small artifacts. + components: + - type: Sprite + sprite: Objects/Storage/artifact_container.rsi + state: icon + layers: + - state: icon + map: [ base ] + - state: locked + map: ["enum.LockVisualLayers.Lock"] + shader: unshaded + - type: Storage + maxItemSize: Normal + grid: + - 0,0,1,1 + whitelist: + components: + - Artifact + - type: Item + sprite: Objects/Storage/artifact_container.rsi + size: Huge + - type: MeleeWeapon + damage: + types: + Blunt: 12 + soundHit: + path: "/Audio/Weapons/smash.ogg" + - type: Appearance + - type: AccessReader + access: [["Research"], ["Cargo"]] + - type: Lock + - type: SuppressArtifactContainer + - type: RadiationBlockingContainer + resistance: 5 + - type: EmitSoundOnLand + sound: + path: /Audio/Items/toolbox_drop.ogg + - type: LockVisuals + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: StructuralMetallicStrong + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - type: PaperLabel + labelSlot: + insertVerbText: Attach Label + ejectVerbText: Remove Label + whitelist: + components: + - Paper + blacklist: + tags: + - Book + - type: GenericVisualizer + visuals: + enum.StorageVisuals.Open: + base: + True: { state: icon-open } + False: { state: icon } + enum.PaperLabelVisuals.HasLabel: + enum.PaperLabelVisuals.Layer: + True: { visible: true } + False: { visible: false } + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captain } + Invoice: { state: invoice } + - type: ItemSlots + - type: ContainerContainer + containers: + paper_label: !type:ContainerSlot + storagebase: !type:Container + ents: [] + - type: UseDelay + delay: 0.3 + - type: StaticPrice + price: 250 diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_artifacts.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_xenoartifacts.yml similarity index 66% rename from Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_artifacts.yml rename to Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_xenoartifacts.yml index 2241cdd4aa..83a04a809b 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_artifacts.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/item_xenoartifacts.yml @@ -1,27 +1,29 @@ - type: entity - parent: BaseItem + parent: [BaseItem, BaseXenoArtifact] id: BaseXenoArtifactItem - name: alien artifact - description: A strange handheld alien device. + name: artifact + description: A strange artifact from time unknown. Looks like a good time. Fits in hand perfectly. abstract: true + noSpawn: true components: + # Visual - type: Sprite sprite: Objects/Specific/Xenoarchaeology/item_artifacts.rsi layers: - state: ano01 map: [ "enum.ArtifactsVisualLayers.Base" ] - state: ano01_on - map: [ "enum.ArtifactsVisualLayers.Effect" ] + map: [ "enum.ArtifactsVisualLayers.UnlockingEffect" ] + visible: false + - state: artifact-activation + sprite: Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi + map: [ "enum.ArtifactsVisualLayers.ActivationEffect" ] visible: false - - type: Damageable - type: Physics bodyType: Dynamic - type: CollisionWake enabled: false - type: InteractionOutline - - type: Reactive - groups: - Acidic: [Touch] - type: Fixtures fixtures: fix1: @@ -35,73 +37,40 @@ - Opaque restitution: 0.3 # fite me friction: 0.2 - - type: Artifact - type: RandomArtifactSprite maxSprite: 11 activationTime: 2.4 - type: RandomSprite available: - - enum.ArtifactsVisualLayers.Effect: + - enum.ArtifactsVisualLayers.UnlockingEffect: ano01_on: Rainbow - - type: UserInterface #needs to be here for certain effects - interfaces: - enum.StorageUiKey.Key: - type: StorageBoundUserInterface - enum.TransferAmountUiKey.Key: - type: TransferAmountBoundUserInterface - enum.InstrumentUiKey.Key: - type: InstrumentBoundUserInterface - enum.IntercomUiKey.Key: - type: IntercomBoundUserInterface - - type: Appearance + # gameplay interactions - type: Item size: Normal sprite: Objects/Specific/Xenoarchaeology/item_artifacts.rsi heldPrefix: ano01 - - type: Actions - type: Construction graph: Artifact node: done - - type: GuideHelp - guides: - - Xenoarchaeology - -- type: entity - parent: BaseXenoArtifactItem - id: SimpleXenoArtifactItem - suffix: Simple - components: - - type: Artifact - nodesMin: 2 - nodesMax: 5 - -- type: entity - parent: BaseXenoArtifactItem - id: MediumXenoArtifactItem - suffix: Medium - components: - - type: Artifact - nodesMin: 5 - nodesMax: 9 + - type: XenoArtifact + effectsTable: !type:GroupSelector + children: + - !type:NestedSelector + tableId: XenoArtifactEffectsDefaultTable + weight: 54 + - !type:NestedSelector + tableId: XenoArtifactEffectsHandheldOnlyTable + weight: 2 - type: entity parent: BaseXenoArtifactItem id: ComplexXenoArtifactItem - suffix: Complex + suffix: Hand-Sized components: - - type: Artifact - nodesMin: 9 - nodesMax: 13 - -# this exists for crafting item artifacts so that the final result can be simple, medium, or complex. -- type: entity - parent: BaseXenoArtifactItem - id: VariedXenoArtifactItem - suffix: Varied - components: - - type: Artifact - nodesMin: 2 - nodesMax: 13 + - type: XenoArtifact + nodeCount: + min: 9 + max: 13 - type: entity id: ArtifactFragment diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/node_scanner.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/node_scanner.yml index 7406555fe3..788374618c 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/node_scanner.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/node_scanner.yml @@ -11,7 +11,14 @@ sprite: Objects/Specific/Xenoarchaeology/node_scanner.rsi - type: NodeScanner - type: UseDelay - delay: 3 + delay: 1 - type: GuideHelp guides: - ArtifactReports + - type: ActivatableUI + key: enum.NodeScannerUiKey.Key + singleUser: true + - type: UserInterface #needs to be here for certain effects + interfaces: + enum.NodeScannerUiKey.Key: + type: NodeScannerBoundUserInterface diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/structure_artifacts.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/structure_artifacts.yml deleted file mode 100644 index 68947c0a71..0000000000 --- a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/structure_artifacts.yml +++ /dev/null @@ -1,94 +0,0 @@ -- type: entity - parent: BaseStructureDynamic - id: BaseXenoArtifact - name: alien artifact - description: A strange alien device. - abstract: true - components: - - type: Sprite - drawdepth: SmallObjects - sprite: Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi - noRot: true - layers: - - state: ano30 - map: [ "enum.ArtifactsVisualLayers.Base" ] - - state: ano30_on - map: [ "enum.ArtifactsVisualLayers.Effect" ] - visible: false - - type: Damageable - - type: Physics - bodyType: Dynamic - - type: Transform - noRot: true - - type: UserInterface #needs to be here for certain effects - interfaces: - enum.StorageUiKey.Key: - type: StorageBoundUserInterface - enum.TransferAmountUiKey.Key: - type: TransferAmountBoundUserInterface - enum.InstrumentUiKey.Key: - type: InstrumentBoundUserInterface - enum.IntercomUiKey.Key: - type: IntercomBoundUserInterface - - type: Reactive - groups: - Acidic: [Touch] - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeCircle - radius: 0.45 - density: 75 - layer: # doesn't collide with artifact storage - - Opaque - mask: - - MachineMask - - type: InteractionOutline - - type: Artifact - - type: RandomArtifactSprite - maxSprite: 36 - - type: RandomSprite - available: - - enum.ArtifactsVisualLayers.Effect: - ano01_on: Rainbow - - type: Appearance - - type: Actions - - type: GuideHelp - guides: - - Xenoarchaeology - - type: StealTarget - stealGroup: XenoArtifact - - type: ContainerContainer - containers: - storagebase: !type:Container # needed for the EffectStorage artifactEffect - ents: [ ] - revolver-ammo: !type:Container # needed for the EffectBigIron artifactEffect - -- type: entity - parent: BaseXenoArtifact - id: SimpleXenoArtifact - suffix: Simple - components: - - type: Artifact - nodesMin: 2 - nodesMax: 5 - -- type: entity - parent: BaseXenoArtifact - id: MediumXenoArtifact - suffix: Medium - components: - - type: Artifact - nodesMin: 5 - nodesMax: 9 - -- type: entity - parent: BaseXenoArtifact - id: ComplexXenoArtifact - suffix: Complex - components: - - type: Artifact - nodesMin: 9 - nodesMax: 13 - diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/structure_xenoartifacts.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/structure_xenoartifacts.yml new file mode 100644 index 0000000000..8edbbd71f4 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/structure_xenoartifacts.yml @@ -0,0 +1,50 @@ +- type: entity + parent: [BaseStructureDynamic, BaseXenoArtifact] + id: BaseXenoArtifactStructure + name: artifact + abstract: true + noSpawn: true + components: + # Visual + - type: Sprite + drawdepth: SmallObjects + sprite: Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi + noRot: true + layers: + - state: ano30 + map: [ "enum.ArtifactsVisualLayers.Base" ] + - state: ano30_on + map: [ "enum.ArtifactsVisualLayers.UnlockingEffect" ] + visible: false + - state: artifact-activation + map: [ "enum.ArtifactsVisualLayers.ActivationEffect" ] + visible: false + - type: RandomArtifactSprite + maxSprite: 36 + - type: RandomSprite + available: + - enum.ArtifactsVisualLayers.UnlockingEffect: + ano01_on: Rainbow + - type: Transform + noRot: true + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.45 + density: 75 + layer: # doesn't collide with artifact storage + - Opaque + mask: + - MachineMask + +- type: entity + parent: BaseXenoArtifactStructure + id: ComplexXenoArtifact + components: + - type: XenoArtifact + nodeCount: + min: 9 + max: 13 + diff --git a/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/xenoartifacts.yml b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/xenoartifacts.yml new file mode 100644 index 0000000000..6fa30b7265 --- /dev/null +++ b/Resources/Prototypes/Entities/Objects/Specific/Xenoarchaeology/xenoartifacts.yml @@ -0,0 +1,63 @@ +- type: entity + id: BaseXenoArtifact + parent: BaseMob # we use this since it can technically get inhabited + name: artifact + description: A strange artifact from time unknown. Looks like a good time. + abstract: true + noSpawn: true + components: + # Visual + - type: Appearance + - type: InteractionOutline + - type: UserInterface #needs to be here for certain effects + interfaces: + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + enum.TransferAmountUiKey.Key: + type: TransferAmountBoundUserInterface + enum.InstrumentUiKey.Key: + type: InstrumentBoundUserInterface + enum.IntercomUiKey.Key: + type: IntercomBoundUserInterface + - type: GuideHelp + guides: + - Xenoarchaeology + # gameplay interactions + - type: XenoArtifact + effectsTable: !type:NestedSelector + tableId: XenoArtifactEffectsDefaultTable + - type: Damageable + - type: Actions + - type: Physics + bodyType: Dynamic + - type: MovementSpeedModifier + baseWalkSpeed: 0.25 + baseSprintSpeed: 0.5 + - type: UseDelay + - type: StealTarget + stealGroup: XenoArtifact + - type: ContainerContainer + containers: + node-container: !type:Container + showEnts: False + occludes: True + ents: [] + # These components are needed for certain triggers to work. + - type: RadiationReceiver + - type: Reactive + groups: + Flammable: [Touch] + Extinguish: [Touch] + Acidic: [Touch] + +- type: entity + id: ActionArtifactActivate + name: Activate Artifact + description: Activate yourself, causing chaos to those near you. + components: + - type: InstantAction + icon: + sprite: Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi + state: ano29 + useDelay: 300 + event: !type:ArtifactSelfActivateEvent diff --git a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml index d06ffb443a..d29d5ca2a7 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/chemistry.yml @@ -312,6 +312,7 @@ - type: Tag tags: - Dropper + - type: PhysicalComposition - type: entity name: borgdropper diff --git a/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml b/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml index 26a0df1a00..52a730f773 100644 --- a/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml +++ b/Resources/Prototypes/Entities/Objects/Specific/rehydrateable.yml @@ -1,30 +1,16 @@ - type: entity parent: BaseItem - id: MonkeyCube - name: monkey cube - description: Just add water! + id: RehydratableItem + abstract: true components: - type: Item size: Tiny - type: SolutionContainerManager solutions: cube: - maxVol: 11 # needs room for water - reagents: - - ReagentId: Nutriment - Quantity: 10 - - type: Food - solution: cube - - type: FlavorProfile - flavors: - - chewy - - horrible - - compressed-meat + maxVol: 1 # needs room for water - type: RefillableSolution solution: cube - - type: Sprite - sprite: Objects/Misc/monkeycube.rsi - state: cube - type: Reactive reactions: - reagents: [Water] @@ -33,8 +19,6 @@ - !type:AddToSolutionReaction solution: cube - type: Rehydratable - possibleSpawns: - - MobMonkey - type: CollisionWake enabled: false - type: Fixtures @@ -46,7 +30,7 @@ density: 5 mask: - ItemMask - rehydrate: + rehydrate: # needed to react to fire extinguishers shape: !type:PhysShapeAabb bounds: "-0.3,-0.3,0.3,0.3" @@ -55,7 +39,49 @@ - LowImpassable - type: entity - parent: MonkeyCube + parent: RehydratableItem + id: RehydratableAnimalCube + description: Just add water! + abstract: true + components: + - type: Sprite + sprite: Objects/Misc/monkeycube.rsi + state: cube + - type: SolutionContainerManager + solutions: + cube: + maxVol: 19 # needs 1u room for water + reagents: # equals one piece of raw meat, ideally should vary depending on the animal type, but idk how to link this to biomass costs + - ReagentId: UncookedAnimalProteins + Quantity: 9 + - ReagentId: Fat + Quantity: 9 + - type: Food + solution: cube + - type: FlavorProfile + flavors: + - chewy + - horrible + - compressed-meat + - type: Tag + tags: + - Meat + +- type: entity + parent: RehydratableAnimalCube + id: MonkeyCube + name: monkey cube + components: + - type: Rehydratable + possibleSpawns: + - MobMonkey + - type: Tag + tags: + - Meat + - MonkeyCube + +- type: entity + parent: RehydratableAnimalCube id: KoboldCube name: kobold cube components: @@ -64,7 +90,7 @@ - MobKobold - type: entity - parent: MonkeyCube + parent: RehydratableAnimalCube id: CowCube name: cow cube components: @@ -73,7 +99,7 @@ - MobCow - type: entity - parent: MonkeyCube + parent: RehydratableAnimalCube id: GoatCube name: goat cube components: @@ -82,7 +108,7 @@ - MobGoat - type: entity - parent: MonkeyCube + parent: RehydratableAnimalCube id: MothroachCube name: mothroach cube components: @@ -91,7 +117,7 @@ - MobMothroach - type: entity - parent: MonkeyCube + parent: RehydratableAnimalCube id: MouseCube name: mouse cube components: @@ -100,7 +126,7 @@ - MobMouse - type: entity - parent: MonkeyCube + parent: RehydratableAnimalCube id: CockroachCube name: cockroach cube description: Just add wa- OH GOD! @@ -110,17 +136,28 @@ - MobCockroach - type: entity - parent: MonkeyCube + parent: RehydratableAnimalCube id: SpaceCarpCube name: carp cube description: Just add water! At your own risk. components: + - type: SolutionContainerManager + solutions: + cube: + maxVol: 24 # needs 1u room for water + reagents: # equals one piece of raw meat - plus a deadly toxin! + - ReagentId: UncookedAnimalProteins + Quantity: 9 + - ReagentId: Fat + Quantity: 9 + - ReagentId: CarpoToxin + Quantity: 5 - type: Rehydratable possibleSpawns: - MobCarp - type: entity - parent: MonkeyCube + parent: RehydratableAnimalCube id: SpaceTickCube name: tick cube description: Just add water! At your own risk. @@ -130,18 +167,11 @@ - MobTick - type: entity - parent: MonkeyCube + parent: RehydratableAnimalCube id: AbominationCube name: abomination cube description: Just add blood! components: - - type: SolutionContainerManager - solutions: - cube: - maxVol: 10 # needs room for more blood - reagents: - - ReagentId: Blood - Quantity: 9 - type: Reactive reactions: - reagents: [Blood] @@ -151,49 +181,31 @@ solution: cube - type: Rehydratable catalyst: Blood # blood is fuel - catalystMinimum: 10 possibleSpawns: - MobAbomination +# It inherits FoodComponent from PlushieCarp, but is de-facto inedible +# PlushieCarp has requiresSpecialDigestion:true, and this one is not whitelisted anywhere, so it behaves like it's not edible - type: entity - parent: [PlushieCarp, BaseSyndicateContraband] + parent: [PlushieCarp, RehydratableItem, BaseSyndicateContraband] id: DehydratedSpaceCarp name: dehydrated space carp description: Looks like a plush toy carp, but just add water and it becomes a real-life space carp! components: - type: SolutionContainerManager solutions: - plushie: - maxVol: 11 # needs room for water - reagents: - - ReagentId: Nutriment #contains nutriment like other dehydrated animals, but isn't edible? Who is grinding dehydrated carp to eat them?? - Quantity: 10 - - type: RefillableSolution - solution: plushie - - type: Reactive - reactions: - - reagents: [Water] - methods: [Touch, Ingestion, Injection] - effects: - - !type:AddToSolutionReaction - solution: plushie - - type: Rehydratable - possibleSpawns: - - MobCarp - - type: CollisionWake - enabled: false - - type: Physics - bodyType: KinematicController - - type: Fixtures + cube: + maxVol: 1 # needs room for water + - type: Fixtures # BaseItem from PlushieCarp overrides fixtures, making carp not react to extinguishers fixtures: fix1: shape: !type:PhysShapeAabb bounds: "-0.3,-0.3,0.3,0.3" - density: 15 + density: 5 mask: - ItemMask - rehydrate: + rehydrate: # needed to react to fire extinguishers shape: !type:PhysShapeAabb bounds: "-0.3,-0.3,0.3,0.3" @@ -206,45 +218,19 @@ successString: petting-success-dehydrated-carp failureString: petting-failure-dehydrated-carp - type: EmitSoundOnUse - handle: false - sound: - path: /Audio/Effects/bite.ogg + handle: false # have to make it inedible because this causes petting and chewing trigger together + - type: Rehydratable + possibleSpawns: + - MobCarp + - type: Tag # overwriting PlushieCarp tags to remove ClothMade and Payload + tags: + - PlushieCarp -- type: entity #why is this all redefined down here as a parent of base object instead of just being parented to monkeycube?? TODO: Fix this shit - parent: BaseItem +- type: entity + parent: MonkeyCube id: SyndicateSponge - name: monkey cube suffix: Syndicate - description: Just add water! components: - - type: Item - size: Tiny - - type: SolutionContainerManager - solutions: - cube: - maxVol: 11 # needs room for water - reagents: - - ReagentId: Nutriment - Quantity: 10 - - type: Food - solution: cube - - type: FlavorProfile - flavors: - - chewy - - horrible - - compressed-meat - - type: RefillableSolution - solution: cube - - type: Sprite - sprite: Objects/Misc/monkeycube.rsi - state: cube - - type: Reactive - reactions: - - reagents: [Water] - methods: [Touch, Ingestion, Injection] - effects: - - !type:AddToSolutionReaction - solution: cube - type: Rehydratable possibleSpawns: - MobCarpHolo @@ -256,21 +242,16 @@ - MobPurpleSnake - MobKangarooSpace - MobTick - - type: CollisionWake - enabled: false - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeAabb - bounds: "-0.3,-0.3,0.3,0.3" - density: 5 - mask: - - ItemMask - rehydrate: - shape: - !type:PhysShapeAabb - bounds: "-0.3,-0.3,0.3,0.3" - hard: false - layer: - - LowImpassable + +- type: entity + parent: RehydratableItem + id: MopBucketCube + name: mop bucket cube + description: Just add water! And then more water! + components: + - type: Sprite + sprite: Objects/Specific/Janitorial/janitorial.rsi + state: mopbucket_cube + - type: Rehydratable + possibleSpawns: + - MopBucket diff --git a/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml b/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml index 6dd624af7a..188cbfc51b 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/access_configurator.yml @@ -125,6 +125,9 @@ - NuclearOperative - SyndicateAgent - Wizard + - Xenoborg + - GenpopEnter + - GenpopLeave privilegedIdSlot: name: id-card-console-privileged-id ejectSound: /Audio/Machines/id_swipe.ogg diff --git a/Resources/Prototypes/Entities/Objects/Tools/binoculars.yml b/Resources/Prototypes/Entities/Objects/Tools/binoculars.yml index 06712e67de..4643a43578 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/binoculars.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/binoculars.yml @@ -9,6 +9,11 @@ state: icon - type: Item size: Normal + - type: Clothing + sprite: Objects/Tools/binoculars.rsi + quickEquip: false + slots: + - Neck - type: Wieldable - type: UseDelay delay: 1.0 diff --git a/Resources/Prototypes/Entities/Objects/Tools/blueprint.yml b/Resources/Prototypes/Entities/Objects/Tools/blueprint.yml index 64aa91c373..82f1ff6725 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/blueprint.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/blueprint.yml @@ -9,8 +9,12 @@ sprite: Objects/Tools/blueprint.rsi state: icon - type: Item - sprite: Objects/Tools/blueprint.rsi size: Normal + shape: + - 0,0,2,0 + storedSprite: + sprite: Objects/Tools/blueprint.rsi + state: storage - type: Blueprint - type: StaticPrice price: 1000 @@ -27,6 +31,7 @@ - type: Blueprint providedRecipes: - Fulton + - FultonBeacon - type: entity parent: BaseBlueprint diff --git a/Resources/Prototypes/Entities/Objects/Tools/decoys.yml b/Resources/Prototypes/Entities/Objects/Tools/decoys.yml index a13c2eef9f..bea8c61cb9 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/decoys.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/decoys.yml @@ -81,8 +81,8 @@ - type: entity parent: BaseDecoy id: BalloonAgent - name: agent balloon - description: Upon closer inspection, this Syndicate agent is actually a balloon. + name: corpsman balloon + description: Upon closer inspection, this Syndicate corpsman is actually a balloon. components: - type: Sprite sprite: Objects/Tools/Decoys/agent_decoy.rsi diff --git a/Resources/Prototypes/Entities/Objects/Tools/flare.yml b/Resources/Prototypes/Entities/Objects/Tools/flare.yml index d36f67d00d..34c233921e 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/flare.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/flare.yml @@ -10,8 +10,6 @@ - Trash - type: SpaceGarbage - type: ExpendableLight - spentName: expendable-light-spent-flare-name - spentDesc: expendable-light-spent-flare-desc glowDuration: 225 fadeOutDuration: 15 iconStateOn: flare_unlit diff --git a/Resources/Prototypes/Entities/Objects/Tools/glowstick.yml b/Resources/Prototypes/Entities/Objects/Tools/glowstick.yml index 3081f60989..c577cd8e58 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/glowstick.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/glowstick.yml @@ -6,8 +6,6 @@ components: - type: SpaceGarbage - type: ExpendableLight - spentName: expendable-light-spent-green-glowstick-name - spentDesc: expendable-light-spent-glowstick-desc glowDuration: 900 # time in seconds glowColorLit: "#00FF00" fadeOutDuration: 300 diff --git a/Resources/Prototypes/Entities/Objects/Tools/hand_labeler.yml b/Resources/Prototypes/Entities/Objects/Tools/hand_labeler.yml index 4b46a93353..323e13102f 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/hand_labeler.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/hand_labeler.yml @@ -25,3 +25,4 @@ - Item tags: - Structure + - type: PhysicalComposition diff --git a/Resources/Prototypes/Entities/Objects/Tools/inflatable_wall.yml b/Resources/Prototypes/Entities/Objects/Tools/inflatable_wall.yml index 86163aad67..f5e05b4e28 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/inflatable_wall.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/inflatable_wall.yml @@ -19,6 +19,7 @@ doAfter: 1 removeOnInteract: true - type: Clickable + - type: PhysicalComposition # TODO: Add stack sprites + visuals. - type: entity @@ -42,6 +43,7 @@ doAfter: 1 removeOnInteract: true - type: Clickable + - type: PhysicalComposition # TODO: Add stack sprites + visuals. - type: entity diff --git a/Resources/Prototypes/Entities/Objects/Tools/lantern.yml b/Resources/Prototypes/Entities/Objects/Tools/lantern.yml index 89101e34ff..f5ea2e6f27 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/lantern.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/lantern.yml @@ -88,7 +88,6 @@ - type: Flash - type: LimitedCharges maxCharges: 15 - charges: 15 - type: MeleeWeapon damage: types: diff --git a/Resources/Prototypes/Entities/Objects/Tools/lighters.yml b/Resources/Prototypes/Entities/Objects/Tools/lighters.yml index c35d67e7eb..66da03cbba 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/lighters.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/lighters.yml @@ -88,6 +88,7 @@ radius: 1.1 #smallest possible color: orange - type: ItemTogglePointLight + - type: PhysicalComposition - type: entity name: cheap lighter diff --git a/Resources/Prototypes/Entities/Objects/Tools/spray_painter.yml b/Resources/Prototypes/Entities/Objects/Tools/spray_painter.yml index ad31a6ec02..679c6f22fe 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/spray_painter.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/spray_painter.yml @@ -32,3 +32,6 @@ mix: '#947507' - type: StaticPrice price: 40 + - type: PhysicalComposition + materialComposition: + Steel: 100 diff --git a/Resources/Prototypes/Entities/Objects/Tools/tools.yml b/Resources/Prototypes/Entities/Objects/Tools/tools.yml index 11f40764b7..d84dec120a 100644 --- a/Resources/Prototypes/Entities/Objects/Tools/tools.yml +++ b/Resources/Prototypes/Entities/Objects/Tools/tools.yml @@ -320,7 +320,6 @@ - Deconstruct - type: LimitedCharges maxCharges: 30 - charges: 30 - type: Sprite sprite: Objects/Tools/rcd.rsi state: icon @@ -351,7 +350,7 @@ suffix: Empty components: - type: LimitedCharges - charges: 0 + lastCharges: -1 - type: entity id: RCDRecharging @@ -362,7 +361,6 @@ components: - type: LimitedCharges maxCharges: 20 - charges: 20 - type: AutoRecharge rechargeDuration: 10 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimateriel.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimateriel.yml index ab071c7a18..d571fa85a5 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimateriel.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/antimateriel.yml @@ -1,6 +1,6 @@ - type: entity abstract: true - parent: BaseItem + parent: [ BaseItem, BaseSecurityContraband ] id: BaseMagazineBoxAntiMateriel name: ammunition box (.60 anti-materiel) components: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml index 89ac57e9f6..bc9cdd68cf 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/caseless_rifle.yml @@ -29,6 +29,7 @@ parent: BaseMagazineBoxCaselessRifle id: MagazineBoxCaselessRifle name: ammunition box (.25 caseless) + description: A cardboard box of .25 caseless rounds. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeCaselessRifle @@ -43,6 +44,7 @@ parent: BaseMagazineBoxCaselessRifle id: MagazineBoxCaselessRiflePractice name: ammunition box (.25 caseless practice) + description: A cardboard box of .25 caseless rounds. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgeCaselessRiflePractice diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml index 6ccf0a1e2a..bee7b33749 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/magnum.yml @@ -28,6 +28,7 @@ parent: BaseMagazineBoxMagnum id: MagazineBoxMagnum name: ammunition box (.45 magnum) + description: A cardboard box of .45 magnum rounds. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnum @@ -42,6 +43,7 @@ parent: BaseMagazineBoxMagnum id: MagazineBoxMagnumPractice name: ammunition box (.45 magnum practice) + description: A cardboard box of .45 magnum rounds. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumPractice @@ -57,6 +59,7 @@ id: MagazineBoxMagnumIncendiary parent: BaseMagazineBoxMagnum name: ammunition box (.45 magnum incendiary) + description: A cardboard box of .45 magnum rounds. Intended to hold self-igniting incendiary ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumIncendiary @@ -72,6 +75,7 @@ id: MagazineBoxMagnumUranium parent: BaseMagazineBoxMagnum name: ammunition box (.45 magnum uranium) + description: A cardboard box of .45 magnum rounds. Intended to hold exotic uranium-core ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumUranium @@ -87,6 +91,7 @@ id: MagazineBoxMagnumAP parent: BaseMagazineBoxMagnum name: ammunition box (.45 magnum armor-piercing) + description: A cardboard box of .45 magnum rounds. Intended to hold rare armor-piercing ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumAP diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml index e081d574d7..9dad0d5785 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Boxes/pistol.yml @@ -29,6 +29,7 @@ parent: BaseMagazineBoxPistol id: MagazineBoxPistol name: ammunition box (.35 auto) + description: A cardboard box of .35 auto rounds. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistol @@ -43,6 +44,7 @@ parent: BaseMagazineBoxPistol id: MagazineBoxPistolPractice name: ammunition box (.35 auto practice) + description: A cardboard box of .35 auto rounds. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistolPractice @@ -58,6 +60,7 @@ id: MagazineBoxPistolIncendiary parent: BaseMagazineBoxPistol name: ammunition box (.35 auto incendiary) + description: A cardboard box of .35 auto rounds. Intended to hold self-igniting incendiary ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistolIncendiary @@ -73,6 +76,7 @@ id: MagazineBoxPistolUranium parent: BaseMagazineBoxPistol name: ammunition box (.35 auto uranium) + description: A cardboard box of .35 auto rounds. Intended to hold exotic uranium-core ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistolUranium diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml index 649c0d4542..fd465b71d6 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/caseless_rifle.yml @@ -1,6 +1,6 @@ - type: entity id: BaseCartridgeCaselessRifle - name: cartridge (.25 rifle) + name: cartridge (.25 caseless) parent: [ BaseCartridge, BaseSecurityContraband ] abstract: true components: @@ -25,6 +25,7 @@ id: CartridgeCaselessRifle name: cartridge (.25 caseless) parent: BaseCartridgeCaselessRifle + description: A small caliber utilizing caseless technology, omitting conventional brass casing in favor of hardened propellant. Standard kinetic ammunition is common and useful in most situations. components: - type: CartridgeAmmo proto: BulletCaselessRifle @@ -33,6 +34,7 @@ id: CartridgeCaselessRiflePractice name: cartridge (.25 caseless practice) parent: BaseCartridgeCaselessRifle + description: A small caliber utilizing caseless technology, omitting conventional brass casing in favor of hardened propellant. Chalk ammunition is generally non-harmful, used for practice. components: - type: CartridgeAmmo proto: BulletCaselessRiflePractice diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml index 383d2adac7..c7adfb5b1e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/magnum.yml @@ -22,6 +22,7 @@ id: CartridgeMagnum name: cartridge (.45 magnum) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Standard kinetic ammunition is common and useful in most situations. components: - type: CartridgeAmmo proto: BulletMagnum @@ -30,6 +31,7 @@ id: CartridgeMagnumPractice name: cartridge (.45 magnum practice) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Chalk ammunition is generally non-harmful, used for practice. components: - type: CartridgeAmmo proto: BulletMagnumPractice @@ -45,6 +47,7 @@ id: CartridgeMagnumIncendiary name: cartridge (.45 magnum incendiary) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Incendiary ammunition contains a self-igniting compound that sets the target ablaze. components: - type: CartridgeAmmo proto: BulletMagnumIncendiary @@ -60,6 +63,7 @@ id: CartridgeMagnumAP name: cartridge (.45 magnum armor-piercing) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Armor piercing ammunition is renowned for its ability to cut straight through body armor. components: - type: CartridgeAmmo proto: BulletMagnumAP @@ -75,6 +79,7 @@ id: CartridgeMagnumUranium name: cartridge (.45 magnum uranium) parent: BaseCartridgeMagnum + description: Heavy magnum cartridge mostly used by revolvers. Uranium ammunition replaces the lead core of the bullet with fissile material, irradiating the target from the inside. components: - type: CartridgeAmmo proto: BulletMagnumUranium @@ -85,4 +90,3 @@ - state: tip map: [ "enum.AmmoVisualLayers.Tip" ] color: "#65fe08" - diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml index bdf61c85e9..0734e4af02 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Cartridges/pistol.yml @@ -21,6 +21,7 @@ - type: entity id: CartridgePistol name: cartridge (.35 auto) + description: Arguably the most popular caliber on the market, used by all manner of pistols and submachine guns. Standard kinetic ammunition is common and useful in most situations. parent: BaseCartridgePistol components: - type: CartridgeAmmo @@ -29,6 +30,7 @@ - type: entity id: CartridgePistolPractice name: cartridge (.35 auto practice) + description: Arguably the most popular caliber on the market, used by all manner of pistols and submachine guns. Chalk ammunition is generally non-harmful, used for practice. parent: BaseCartridgePistol components: - type: CartridgeAmmo @@ -44,6 +46,7 @@ - type: entity id: CartridgePistolIncendiary name: cartridge (.35 auto incendiary) + description: Arguably the most popular caliber on the market, used by all manner of pistols and submachine guns. Incendiary ammunition contains a self-igniting compound that sets the target ablaze. parent: BaseCartridgePistol components: - type: CartridgeAmmo @@ -59,6 +62,7 @@ - type: entity id: CartridgePistolUranium name: cartridge (.35 auto uranium) + description: Arguably the most popular caliber on the market, used by all manner of pistols and submachine guns. Uranium core ammunition features a load of fissile material, irradiating the target from the inside. parent: BaseCartridgePistol components: - type: CartridgeAmmo diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml index 7361bc09c7..c0af2b67e1 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/caseless_rifle.yml @@ -100,6 +100,7 @@ id: MagazinePistolCaselessRifle name: "pistol magazine (.25 caseless)" parent: BaseMagazinePistolCaselessRifle + description: 10-round magazine for the Cobra pistol. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeCaselessRifle @@ -120,6 +121,7 @@ id: MagazinePistolCaselessRiflePractice name: "pistol magazine (.25 caseless practice)" parent: BaseMagazinePistolCaselessRifle + description: 10-round magazine for the Cobra pistol. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgeCaselessRiflePractice diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml index 91a3e4f360..d94bc444a7 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/magnum.yml @@ -52,6 +52,7 @@ name: pistol magazine (.45 magnum any) suffix: empty parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. components: - type: BallisticAmmoProvider proto: null @@ -66,6 +67,7 @@ id: MagazineMagnum name: pistol magazine (.45 magnum) parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnum @@ -80,6 +82,7 @@ id: MagazineMagnumPractice name: pistol magazine (.45 magnum practice) parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumPractice @@ -94,6 +97,7 @@ id: MagazineMagnumUranium name: pistol magazine (.45 magnum uranium) parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. Intended to hold exotic uranium-core ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumUranium @@ -108,6 +112,7 @@ id: MagazineMagnumAP name: pistol magazine (.45 magnum armor-piercing) parent: BaseMagazineMagnum + description: 7-round single stack pistol magazine. Intended to hold rare armor-piercing ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumAP diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml index df1662a822..5e82be567f 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/Magazines/pistol.yml @@ -78,7 +78,7 @@ whitelist: tags: - CartridgePistol - capacity: 35 + capacity: 30 - type: Item size: Small - type: ContainerContainer @@ -101,6 +101,7 @@ id: MagazinePistolSubMachineGunTopMounted name: WT550 magazine (.35 auto top-mounted) parent: [ BaseItem, BaseSecurityContraband ] + description: Unconventional 30-round top feeding magazine for the WT550 SMG. Intended to hold general-purpose kinetic ammunition. components: - type: Tag tags: @@ -132,6 +133,7 @@ id: MagazinePistolSubMachineGunTopMountedEmpty name: WT550 magazine (.35 auto top-mounted any) parent: MagazinePistolSubMachineGunTopMounted + description: Unconventional 30-round top feeding magazine for the WT550 SMG. components: - type: BallisticAmmoProvider proto: null @@ -140,6 +142,7 @@ id: MagazinePistol name: pistol magazine (.35 auto) parent: BaseMagazinePistol + description: 10-round single-stack magazine for pistols. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistol @@ -155,6 +158,7 @@ name: pistol magazine (.35 auto any) suffix: empty parent: MagazinePistol + description: 10-round single-stack magazine for pistols. components: - type: BallisticAmmoProvider proto: null @@ -170,6 +174,7 @@ id: MagazinePistolIncendiary name: pistol magazine (.35 auto incendiary) parent: MagazinePistol + description: 10-round single-stack magazine for pistols. Intended to hold self-igniting incendiary ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistolIncendiary @@ -178,6 +183,7 @@ id: MagazinePistolPractice name: pistol magazine (.35 auto practice) parent: BaseMagazinePistol + description: 10-round single-stack magazine for pistols. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistolPractice @@ -192,6 +198,7 @@ id: MagazinePistolUranium name: pistol magazine (.35 auto uranium) parent: BaseMagazinePistol + description: 10-round single-stack magazine for pistols. Intended to hold exotic uranium-core ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistolUranium @@ -249,9 +256,9 @@ id: MagazinePistolSubMachineGun name: SMG magazine (.35 auto) parent: BaseMagazinePistolSubMachineGun + description: 30-round double-stack magazine for submachine guns. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider - capacity: 30 proto: CartridgePistol whitelist: tags: @@ -270,6 +277,7 @@ name: SMG magazine (.35 auto any) suffix: empty parent: BaseMagazinePistolSubMachineGun + description: 30-round double-stack magazine for submachine guns. components: - type: BallisticAmmoProvider proto: null @@ -284,6 +292,7 @@ id: MagazinePistolSubMachineGunPractice name: SMG magazine (.35 auto practice) parent: BaseMagazinePistolSubMachineGun + description: 30-round double-stack magazine for submachine guns. Intended to hold non-harmful chalk ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistolPractice @@ -298,6 +307,7 @@ id: MagazinePistolSubMachineGunUranium name: SMG magazine (.35 auto uranium) parent: BaseMagazinePistolSubMachineGun + description: 30-round double-stack magazine for submachine guns. Intended to hold exotic uranium-core ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistolUranium @@ -312,6 +322,7 @@ parent: BaseMagazinePistolSubMachineGun id: MagazinePistolSubMachineGunIncendiary name: SMG magazine (.35 auto incendiary) + description: 30-round double-stack magazine for submachine guns. Intended to hold self-igniting incendiary ammunition. components: - type: BallisticAmmoProvider proto: CartridgePistolIncendiary diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml index 3044b1f9ff..9976c88314 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/SpeedLoaders/magnum.yml @@ -23,6 +23,7 @@ id: SpeedLoaderMagnum name: "speed loader (.45 magnum)" parent: BaseSpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold general-purpose kinetic ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnum @@ -43,6 +44,7 @@ id: SpeedLoaderMagnumEmpty name: "speed loader (.45 magnum any)" parent: SpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds for the big iron on your hip. #Big Iron reference (duh) components: - type: BallisticAmmoProvider proto: null @@ -61,6 +63,7 @@ id: SpeedLoaderMagnumIncendiary name: "speed loader (.45 magnum incendiary)" parent: SpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold self-igniting incendiary ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumIncendiary @@ -69,6 +72,7 @@ id: SpeedLoaderMagnumPractice name: "speed loader (.45 magnum practice)" parent: BaseSpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold non-harmful chalk ammunition, perfect for practicing your quick draw. components: - type: BallisticAmmoProvider proto: CartridgeMagnumPractice @@ -89,6 +93,7 @@ id: SpeedLoaderMagnumAP name: "speed loader (.45 magnum armor-piercing)" parent: BaseSpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold rare armor-piercing ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumAP @@ -109,6 +114,7 @@ id: SpeedLoaderMagnumUranium name: "speed loader (.45 magnum uranium)" parent: BaseSpeedLoaderMagnum + description: Designed to quickly refill an empty revolver, it fits up to six rounds. Intended to hold exotic uranium-core ammunition. components: - type: BallisticAmmoProvider proto: CartridgeMagnumUranium diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml index 42bd054ac7..2bd0dfc46d 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Ammunition/explosives.yml @@ -123,6 +123,23 @@ state: frag suffix: false +- type: entity + parent: BaseGrenade + id: GrenadeCleanade + name: cleanade grenade round + components: + - type: CartridgeAmmo + proto: BulletGrenadeCleanade + - type: Sprite + sprite: Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi + layers: + - state: cleanade + map: [ "enum.AmmoVisualLayers.Base" ] + - type: Appearance + - type: SpentAmmoVisuals + state: frag + suffix: false + - type: entity id: GrenadeEMP name: EMP grenade diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml index 7b1c77b8d0..4d8856ef9e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Battery/battery_guns.yml @@ -799,3 +799,47 @@ autoRechargeRate: 24 autoRechargePause: true autoRechargePauseTime: 30 + +- type: entity + name: temperature gun + parent: [BaseWeaponBattery, BaseGunWieldable] + id: WeaponTemperatureGun + description: An advanced gun that shoots body-temperature-changing beams. This probably constitutes as some kind of war crime. + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Battery/temp_gun.rsi + layers: + - state: base + map: ["enum.GunVisualLayers.Base"] + - state: mag-unshaded-1 + map: ["enum.GunVisualLayers.MagUnshaded"] + shader: unshaded + - type: Appearance + - type: Item + size: Large + shape: + - 0,0,3,1 + - type: MagazineVisuals + magState: mag + steps: 5 + zeroVisible: false + - type: Clothing + sprite: Objects/Weapons/Guns/Battery/temp_gun.rsi + - type: Gun + fireRate: 1 + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/taser2.ogg + - type: ProjectileBatteryAmmoProvider + proto: BoltTempgunCold + fireCost: 100 + - type: BatteryWeaponFireModes + fireModes: + - proto: BoltTempgunCold + fireCost: 100 + - proto: BoltTempgunHot + fireCost: 100 + - type: Battery + maxCharge: 1000 + startingCharge: 1000 + - type: StaticPrice + price: 100 diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml index 64f1fdac29..2fcf294a73 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Launchers/launchers.yml @@ -53,6 +53,46 @@ soundInsert: path: /Audio/Weapons/Guns/MagIn/batrifle_magin.ogg +- type: entity + parent: [ BaseWeaponLauncher, BaseGunWieldable, BaseMajorContraband ] + id: WeaponLauncherHydra + name: hydra + description: PLOOP... FSSSSSS + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Launchers/hydra_launcher.rsi + layers: + - state: icon + map: [ "enum.GunVisualLayers.Base" ] + - type: Clothing + sprite: Objects/Weapons/Guns/Launchers/hydra_launcher.rsi + slots: + - Back + - suitStorage + - type: AmmoCounter + - type: Gun + fireRate: 1 + selectedMode: SemiAuto + availableModes: + - SemiAuto + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/grenade_launcher.ogg + - type: ContainerContainer + containers: + revolver-ammo: !type:Container + - type: RevolverAmmoProvider + whitelist: + tags: + - Grenade + proto: GrenadeCleanade + capacity: 6 + chambers: [ True, True, True, True, True, True ] + ammoSlots: [ null, null, null, null, null, null ] + soundEject: + path: /Audio/Weapons/Guns/MagOut/sfrifle_magout.ogg + soundInsert: + path: /Audio/Weapons/Guns/MagIn/sfrifle_magin.ogg + - type: entity name: RPG-7 parent: [ BaseWeaponLauncher, BaseMajorContraband ] diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml index 2ace44189e..6f18cbe963 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Pistols/pistols.yml @@ -72,7 +72,7 @@ name: viper parent: [BaseWeaponPistol, BaseSyndicateContraband] id: WeaponPistolViper - description: A small, easily concealable, but somewhat underpowered gun. Retrofitted with a fully automatic receiver. Uses .35 auto ammo. + description: A common handgun illegally modified by the Syndicate. The Viper sports a selector switch between semi-auto and ‘rock and roll’. The standard sidearm for any soldier who fights under the three serpents. Feeds from .35 pistol magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/Pistols/viper.rsi @@ -105,7 +105,7 @@ name: echis parent: [ BaseItem, BaseSyndicateContraband ] id: WeaponPistolEchis - description: A viper for use by cyborgs. Creates .35 ammo on the fly from an internal ammo fabricator, which slowly self-charges. + description: A cyborg-mounted weapon system based on the Viper pistol. Creates ammunition on the fly from an internal fabricator, which slowly self-charges. components: - type: Gun fireRate: 5 @@ -140,7 +140,7 @@ name: cobra parent: [ BaseWeaponPistol, BaseSyndicateContraband ] id: WeaponPistolCobra - description: A rugged, robust operator handgun with inbuilt silencer. Uses .25 caseless ammo. + description: Integrally suppressed semi-automatic pistol used by the Syndicate, firing caseless subsonic rounds. Favored by any agent who likes to keep things quiet and leave no evidence behind. Feeds from .25 pistol magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/Pistols/cobra.rsi @@ -189,7 +189,7 @@ name: mk 58 parent: [BaseWeaponPistol, BaseSecurityContraband] id: WeaponPistolMk58 - description: A cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. Uses .35 auto ammo. + description: Designed by Nanotrasen’s Small Arms Division, the Mk58 is a conventional semi-automatic pistol with a simple recoil-operated action and excellent reliability. The standard sidearm of Nanotrasen’s station security and emergency response teams. Feeds from .35 pistol magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/Pistols/mk58.rsi @@ -210,8 +210,8 @@ - type: entity name: N1984 parent: [BaseWeaponPistol, BaseSecurityContraband] - id: WeaponPistolN1984 # the spaces in description are for formatting. - description: The sidearm of any self respecting officer. Comes in .45 magnum, the lord's caliber. + id: WeaponPistolN1984 + description: An exceptionally powerful ‘hand cannon’ designed as part of Nanotrasen's BFG initiative. Chambered in .45, the lord’s caliber, it is generally considered too unwieldy for standard use but has become something of a status symbol among Nanotrasen officials. Feeds from .45 pistol magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/Pistols/N1984.rsi diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml index 57987b1086..31767ba8b3 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Projectiles/projectiles.yml @@ -384,6 +384,23 @@ - type: ChangeTemperatureOnCollide heat: -50000 +- type: entity + name: freezing bolt + id: BoltTempgunCold + parent: WatcherBolt + categories: [ HideSpawnMenu ] + components: + - type: Projectile + # soundHit: Waiting on serv3 + impactEffect: BulletImpactEffectDisabler + damage: + types: + Cold: 10 + - type: TimedDespawn + lifetime: 3 + - type: ChangeTemperatureOnCollide + heat: -100000 + - type: entity name: magmawing watcher bolt id: WatcherBoltMagmawing @@ -405,6 +422,21 @@ - type: ChangeTemperatureOnCollide heat: 50000 +- type: entity + name: scorching bolt + id: BoltTempgunHot + parent: WatcherBoltMagmawing + categories: [ HideSpawnMenu ] + components: + - type: Projectile + # soundHit: Waiting on serv3 + impactEffect: BulletImpactEffectOrangeDisabler + damage: + types: + Heat: 10 + - type: ChangeTemperatureOnCollide + heat: 100000 #This may be a bit underpowered, but in testing, 130000 was RIDICULOUS and killed in seconds. + - type: entity id: BulletKinetic name: kinetic bolt @@ -781,6 +813,36 @@ intensitySlope: 1 maxIntensity: 10 +- type: entity + parent: BaseBulletTrigger + id: BulletGrenadeCleanade + name: cleanade grenade round + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Objects/Weapons/Guns/Projectiles/projectiles2.rsi + layers: + - state: cleanade + - type: ActiveTimerTrigger + timeRemaining: 0.3 + - type: SmokeOnTrigger + duration: 3.5 + spreadAmount: 30 + smokePrototype: Foam + solution: + reagents: + - ReagentId: SpaceCleaner + Quantity: 30 + - type: SoundOnTrigger + sound: /Audio/Items/smoke_grenade_smoke.ogg + - type: ExplodeOnTrigger + - type: Explosive + explosionType: Default + totalIntensity: 0.01 # a little pop + intensitySlope: 1 + maxIntensity: 0.01 + tileBreakScale: 0.01 + - type: entity id: BulletGrenadeEMP name: EMP rocket @@ -874,6 +936,7 @@ - BulletImpassable - type: Vapor active: true + transferAmountPercentage: 1 - type: Appearance - type: VaporVisuals diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml index 564ef7f869..fa65aa4649 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Revolvers/revolvers.yml @@ -54,7 +54,7 @@ name: Deckard parent: [BaseWeaponRevolver, BaseSecurityCommandContraband] id: WeaponRevolverDeckard - description: A rare, custom-built revolver. Use when there is no time for Voight-Kampff test. Uses .45 magnum ammo. + description: A beautifully machined, custom-built revolver. Used when there is no time for the Voight-Kampff test. Loads 5 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/deckard.rsi @@ -82,7 +82,7 @@ name: Inspector parent: [BaseWeaponRevolver, BaseSecurityContraband] id: WeaponRevolverInspector - description: A detective's best friend. Uses .45 magnum ammo. + description: A single-action revolver manufactured by various companies. It is readily available on the civilian market, making it a popular choice among private investigators. You feel lucky just holding it. Loads 6 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/inspector.rsi @@ -97,7 +97,7 @@ name: Mateba parent: [BaseWeaponRevolver, BaseMajorContraband] id: WeaponRevolverMateba - description: The iconic sidearm of the dreaded death squads. Uses .45 magnum ammo. + description: A modern revolver used by Nanotrasen’s elite, near mythical ‘Death Squad’ task force. Its unique trigger action and barrel placement enable a high fire rate with minimal muzzle flip. Many have looked down this barrel, but few have lived to tell of it. Loads 6 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/mateba.rsi @@ -120,7 +120,7 @@ name: Python parent: [BaseWeaponRevolver, BaseSyndicateContraband] id: WeaponRevolverPython - description: A robust revolver favoured by Syndicate agents. Uses .45 magnum ammo. + description: A powerful double-action revolver manufactured by the Syndicate. Loud and flashy, perfect for any agent looking to make a statement. Loads 6 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/python.rsi @@ -151,9 +151,9 @@ - type: entity name: pirate revolver - parent: [BaseWeaponRevolver, BaseMinorContraband] + parent: [BaseWeaponRevolver, BaseMajorContraband] id: WeaponRevolverPirate - description: An odd, old-looking revolver, favoured by pirate crews. Uses .45 magnum ammo. + description: A crude single-action revolver handmade by a space pirate. Old and covered in rust, it somehow still works. Loads 5 rounds of .45 magnum. components: - type: Sprite sprite: Objects/Weapons/Guns/Revolvers/pirate_revolver.rsi @@ -168,3 +168,17 @@ capacity: 5 chambers: [ True, True, True, True, True ] ammoSlots: [ null, null, null, null, null ] + +- type: entity + name: pirate revolver + parent: WeaponRevolverPirate + id: WeaponRevolverPirateEmpty + description: An odd, old-looking revolver, favoured by pirate crews. Uses .45 magnum ammo. + suffix: Empty + components: + - type: RevolverAmmoProvider + proto: null + capacity: 5 + chambers: [ null, null, null, null, null ] + ammoSlots: [ null, null, null, null, null ] + diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml index 90789e01d7..492581d900 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/SMGs/smgs.yml @@ -62,7 +62,7 @@ name: Atreides parent: [BaseWeaponSubMachineGun, BaseMajorContraband] id: WeaponSubMachineGunAtreides - description: Pla-ket-ket-ket-ket! Uses .35 auto ammo. + description: A rare machine pistol hailing from the Corporate Wars. Its extremely high fire rate and compact profile make it useful in close quarters combat. Despite its age, it is in remarkably good condition. Feeds from .35 SMG magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/SMGs/atreides.rsi @@ -85,7 +85,7 @@ name: C-20r submachine gun parent: [BaseWeaponSubMachineGun, BaseSyndicateContraband] id: WeaponSubMachineGunC20r - description: A firearm that is often used by the infamous nuclear operatives. Uses .35 auto ammo. + description: A classic and widespread submachine gun, infamous for its use by the Gorlex Marauders. One of the first homegrown Waffle Corp. designs, it remains in service today. Feeds from .35 SMG magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/SMGs/c20r.rsi @@ -123,7 +123,7 @@ name: Drozd parent: [BaseWeaponSubMachineGun, BaseSecurityContraband] id: WeaponSubMachineGunDrozd - description: An excellent fully automatic Heavy SMG. + description: A modern SMG manufactured by Nanotrasen’s Small Arms Division. It features an exceptional rate of fire in burst mode, useful for holding defensive angles or engaging hostiles at longer ranges. Feeds from .35 SMG magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/SMGs/drozd.rsi @@ -181,7 +181,7 @@ name: WT550 parent: [ BaseWeaponSubMachineGun, BaseSecurityContraband ] id: WeaponSubMachineGunWt550 - description: An excellent SMG, produced by NanoTrasen's Small Arms Division. Uses .35 auto ammo. + description: A truly unique firearm, the WT550 was designed by Nanotrasen's Small Arms Division as a compact submachine gun fully controllable with one hand. It contains an exotic internal recoil buffer and feeds from special top-mounted .35 magazines. components: - type: Sprite sprite: Objects/Weapons/Guns/SMGs/wt550.rsi diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml index 0f29a65600..4cbdb99f69 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Shotguns/shotguns.yml @@ -103,7 +103,7 @@ - type: entity name: double-barreled shotgun - parent: [BaseWeaponShotgun, BaseGunWieldable, BaseSecurityBartenderContraband] + parent: [BaseWeaponShotgun, BaseGunWieldable, BaseSecurityBartenderZookeeperContraband] id: WeaponShotgunDoubleBarreled description: An immortal classic. Uses .50 shotgun shells. components: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml index 23dc96c49f..ff532c94bf 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Snipers/snipers.yml @@ -40,7 +40,7 @@ - type: entity name: Kardashev-Mosin - parent: [BaseWeaponSniper, BaseGunWieldable, BaseSyndicateContraband] + parent: [BaseWeaponSniper, BaseGunWieldable, BaseMajorContraband] id: WeaponSniperMosin description: A weapon for hunting, or endless trench warfare. Uses .30 rifle ammo. components: @@ -81,7 +81,7 @@ - type: entity name: musket - parent: [ BaseWeaponSniper, BaseGunWieldable, BaseMinorContraband ] + parent: [ BaseWeaponSniper, BaseGunWieldable, BaseMajorContraband ] id: Musket description: This should've been in a museum long before you were born. Uses .60 anti-materiel ammo. components: @@ -119,16 +119,19 @@ - type: entity name: flintlock pistol - parent: [BaseWeaponSniper, BaseMinorContraband] + parent: [BaseWeaponSniper, BaseMajorContraband] id: WeaponPistolFlintlock - description: A pirate's companion. Yarrr! Uses .60 anti-materiel ammo. + description: A pirate's companion. Yarrr! Uses .45 magnum ammo. components: - type: Gun minAngle: 0 maxAngle: 30 #miss him entirely because the barrel is smoothbore - type: Item size: Small - storedRotation: 90 + shape: + - 0,0,1,0 + - 0,1,0,1 + storedRotation: 0 - type: Sprite sprite: Objects/Weapons/Guns/Snipers/flintlock.rsi - type: Clothing @@ -139,9 +142,18 @@ - type: BallisticAmmoProvider whitelist: tags: - - CartridgeAntiMateriel + - CartridgeMagnum # changed from Anti-material rifle rounds because it's a flintlock pistol not a Hristov capacity: 1 - proto: CartridgeAntiMateriel + proto: CartridgeMagnum - type: StaticPrice price: 0 +- type: entity + name: flintlock pistol + parent: WeaponPistolFlintlock + id: WeaponPistolFlintlockEmpty + description: A pirate's companion. Yarrr! Uses .45 magnum ammo. + suffix: Empty + components: + - type: BallisticAmmoProvider + proto: null diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml index de75ae4be4..204302b395 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/fireaxe.yml @@ -53,7 +53,7 @@ - type: entity id: FireAxeFlaming name: fire axe - parent: [BaseSyndicateContraband, FireAxe] + parent: [ BaseSyndicateContraband, FireAxe ] description: Why fight fire with an axe when you can fight with fire and axe? Now featuring rugged rubberized handle! components: - type: MeleeWeapon diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml index 911cf30680..597df3f83e 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/mining.yml @@ -35,6 +35,10 @@ sprite: Objects/Weapons/Melee/pickaxe.rsi storedRotation: -45 - type: UseDelay + - type: PhysicalComposition + materialComposition: + Steel: 100 + Wood: 100 - type: entity name: mining drill diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml index 44e98538ad..a87f380646 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Melee/sword.yml @@ -89,7 +89,6 @@ - type: DashAbility - type: LimitedCharges maxCharges: 3 - charges: 3 - type: AutoRecharge rechargeDuration: 20 - type: Clothing diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml index 8be5b5f8aa..b76a1c2554 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/grenades.yml @@ -15,7 +15,7 @@ slots: - Belt - type: OnUseTimerTrigger - delay: 3.5 + delay: 3 - type: Damageable damageContainer: Inorganic - type: Destructible @@ -35,6 +35,9 @@ enum.ConstructionVisuals.Layer: Primed: { state: primed } Unprimed: { state: icon } + - type: Tag + tags: + - HandGrenade - type: entity name: explosive grenade @@ -83,6 +86,7 @@ - Antagonists - type: Tag tags: + - HandGrenade - GrenadeFlashBang - type: entity @@ -312,6 +316,9 @@ map: [ "enum.ConstructionVisuals.Layer" ] - type: Item size: Small + - type: Tag + tags: + - HandGrenade - type: PayloadCase - type: Construction graph: ModularGrenadeGraph @@ -441,13 +448,15 @@ parent: [ BaseEngineeringContraband, SmokeGrenade ] id: MetalFoamGrenade name: metal foam grenade - description: An emergency tool used for patching up holes. Almost as good as real walls. + description: An emergency tool used for patching breaches with special quick-set metal foam. Almost as good as real walls. components: - type: Sprite sprite: Objects/Weapons/Grenades/metalfoam.rsi + - type: OnUseTimerTrigger + delay: 1.5 - type: SmokeOnTrigger - duration: 10 - spreadAmount: 13 + duration: 2 + spreadAmount: 5 smokePrototype: AluminiumMetalFoam - type: StaticPrice price: 350 @@ -481,6 +490,8 @@ components: - type: Sprite sprite: Objects/Weapons/Grenades/syndgrenade.rsi + - type: OnUseTimerTrigger + delay: 5 - type: SoundOnTrigger sound: path: /Audio/Effects/Emotes/parp1.ogg diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/projectile_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/projectile_grenades.yml index 9f71158357..41fad224c4 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/projectile_grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/projectile_grenades.yml @@ -25,6 +25,9 @@ enum.ConstructionVisuals.Layer: Primed: { state: primed } Unprimed: { state: icon } + - type: Tag + tags: + - HandGrenade - type: entity parent: [ProjectileGrenadeBase, BaseSecurityContraband] @@ -40,8 +43,6 @@ - type: ProjectileGrenade fillPrototype: PelletClusterRubber capacity: 30 - - type: FlashOnTrigger - range: 7 - type: EmitSoundOnTrigger sound: path: "/Audio/Effects/flash_bang.ogg" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml index 302017b88e..d4fec8d9c2 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Throwable/scattering_grenades.yml @@ -18,6 +18,11 @@ behaviors: - !type:TriggerBehavior - type: ScatteringGrenade + - type: OnUseTimerTrigger + delay: 3 + - type: Tag + tags: + - HandGrenade - type: entity parent: [ScatteringGrenadeBase, BaseSecurityContraband] @@ -36,8 +41,6 @@ - type: Sprite sprite: Objects/Weapons/Grenades/clusterbang.rsi state: base-0 - - type: OnUseTimerTrigger - delay: 3.5 - type: entity parent: ClusterBang @@ -92,7 +95,6 @@ volume: 5 initialBeepDelay: 0 beepInterval: 0.5 - delay: 3.5 - type: EmitSoundOnTrigger sound: path: "/Audio/Machines/door_lock_off.ogg" @@ -168,7 +170,6 @@ volume: 5 initialBeepDelay: 0 beepInterval: 2 - delay: 3.5 - type: EmitSoundOnTrigger sound: path: "/Audio/Weapons/Guns/Gunshots/batrifle.ogg" diff --git a/Resources/Prototypes/Entities/Objects/Weapons/security.yml b/Resources/Prototypes/Entities/Objects/Weapons/security.yml index cb908acffa..ff54af9518 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/security.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/security.yml @@ -25,6 +25,9 @@ path: /Audio/Machines/button.ogg params: variation: 0.250 + - type: ItemTogglePrefix + prefixOn: on + prefixOff: off - type: ItemToggleMeleeWeapon activatedDamage: types: @@ -144,7 +147,6 @@ - type: Flash - type: LimitedCharges maxCharges: 5 - charges: 5 - type: MeleeWeapon wideAnimationRotation: 180 damage: @@ -180,7 +182,6 @@ components: - type: LimitedCharges maxCharges: 2 - charges: 2 - type: entity name: portable flasher diff --git a/Resources/Prototypes/Entities/Objects/base_contraband.yml b/Resources/Prototypes/Entities/Objects/base_contraband.yml index ee0e2e8c71..0dfe95a68e 100644 --- a/Resources/Prototypes/Entities/Objects/base_contraband.yml +++ b/Resources/Prototypes/Entities/Objects/base_contraband.yml @@ -1,4 +1,12 @@ -# any type of magical items used by wizards and similiar +# used by the unique items of xenoborgs (like modules and stuff) +- type: entity + id: BaseXenoborgContraband + abstract: true + components: + - type: Contraband + severity: Major # placeholder until they make a better severity + +# any type of magical items used by wizards and similiar - type: entity id: BaseMagicalContraband abstract: true @@ -172,6 +180,15 @@ allowedDepartments: [ Security ] allowedJobs: [ Bartender ] +- type: entity + id: BaseSecurityBartenderZookeeperContraband + parent: BaseRestrictedContraband + abstract: true + components: + - type: Contraband + allowedDepartments: [ Security ] + allowedJobs: [ Bartender, Zookeeper ] + - type: entity id: BaseSecurityLawyerContraband parent: BaseRestrictedContraband diff --git a/Resources/Prototypes/Entities/Stations/base.yml b/Resources/Prototypes/Entities/Stations/base.yml index 5490dcc574..3f5232b430 100644 --- a/Resources/Prototypes/Entities/Stations/base.yml +++ b/Resources/Prototypes/Entities/Stations/base.yml @@ -10,6 +10,13 @@ components: - type: StationBankAccount - type: StationCargoOrderDatabase + orders: + Cargo: [ ] + Engineering: [ ] + Medical: [ ] + Science: [ ] + Security: [ ] + Service: [ ] - type: StationCargoBountyDatabase - type: entity @@ -66,6 +73,7 @@ - /Maps/Ruins/derelict.yml - /Maps/Ruins/djstation.yml - /Maps/Ruins/empty_flagship.yml + - /Maps/Ruins/hydro_outpost.yml - /Maps/Ruins/old_ai_sat.yml - /Maps/Ruins/ruined_prison_ship.yml - /Maps/Ruins/syndicate_dropship.yml diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml index d6cc5532b9..9847bdec2d 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/access.yml @@ -28,6 +28,15 @@ containers: board: [ DoorElectronicsTheatre ] +- type: entity + parent: AirlockServiceLocked + id: AirlockServiceTheatreLocked + suffix: Service, Theatre, Locked + components: + - type: ContainerFill + containers: + board: [ DoorElectronicsServiceTheatre ] + - type: entity parent: AirlockServiceLocked id: AirlockChapelLocked @@ -223,7 +232,7 @@ board: [ DoorElectronicsCargo ] - type: entity - parent: AirlockCargo + parent: AirlockSalvage id: AirlockSalvageLocked suffix: Salvage, Locked components: @@ -470,6 +479,15 @@ containers: board: [ DoorElectronicsTheatre ] +- type: entity + parent: AirlockServiceGlassLocked + id: AirlockServiceTheatreGlassLocked + suffix: Service, Theatre, Locked + components: + - type: ContainerFill + containers: + board: [ DoorElectronicsServiceTheatre ] + - type: entity parent: AirlockServiceGlassLocked id: AirlockBarGlassLocked @@ -617,7 +635,7 @@ board: [ DoorElectronicsCargo ] - type: entity - parent: AirlockCargoGlass + parent: AirlockSalvageGlass id: AirlockSalvageGlassLocked suffix: Salvage, Locked components: @@ -988,6 +1006,15 @@ containers: board: [ DoorElectronicsTheatre ] +- type: entity + parent: AirlockMaintServiceLocked + id: AirlockMaintServiceTheatreLocked + suffix: Service, Theatre, Locked + components: + - type: ContainerFill + containers: + board: [ DoorElectronicsServiceTheatre ] + - type: entity parent: AirlockMaintServiceLocked id: AirlockMaintKitchenLocked diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/airlocks.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/airlocks.yml index cf6d5a89df..a399e16d0c 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/airlocks.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/airlocks.yml @@ -40,6 +40,16 @@ - type: Wires layoutId: AirlockCargo +- type: entity + parent: Airlock + id: AirlockSalvage + suffix: Salvage + components: + - type: Sprite + sprite: Structures/Doors/Airlocks/Standard/salvage.rsi + - type: Wires + layoutId: AirlockCargo + - type: entity parent: Airlock id: AirlockHydroponics @@ -207,6 +217,16 @@ - type: Wires layoutId: AirlockCargo +- type: entity + parent: AirlockGlass + id: AirlockSalvageGlass + suffix: Salvage + components: + - type: Sprite + sprite: Structures/Doors/Airlocks/Glass/salvage.rsi + - type: Wires + layoutId: AirlockCargo + - type: entity parent: AirlockGlass id: AirlockHydroponicsGlass diff --git a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml index 98508b21bc..8824b946e7 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Airlocks/assembly.yml @@ -195,6 +195,25 @@ sprite: Structures/Doors/Airlocks/Glass/medical.rsi state: "assembly" +#Salvage +- type: entity + parent: AirlockAssembly + id: AirlockAssemblySalvage + suffix: Salvage + components: + - type: Sprite + sprite: Structures/Doors/Airlocks/Standard/salvage.rsi + state: "assembly" + +- type: entity + parent: AirlockAssembly + id: AirlockAssemblySalvageGlass + suffix: Salvage, Glass + components: + - type: Sprite + sprite: Structures/Doors/Airlocks/Glass/salvage.rsi + state: "assembly" + #Science - type: entity parent: AirlockAssembly diff --git a/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml b/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml index a8820b4fc6..584a4e5c7b 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Firelocks/firelock.yml @@ -52,6 +52,24 @@ visible: false - state: panel_open map: ["enum.WiresVisualLayers.MaintenancePanel"] + - state: pressure_unlit + visible: false + shader: unshaded + map: ["enum.FirelockVisualLayersPressure.Base"] + - state: temperature_unlit + visible: false + shader: unshaded + map: ["enum.FirelockVisualLayersTemperature.Base"] + - type: GenericVisualizer + visuals: + enum.FirelockVisuals.PressureWarning: + enum.FirelockVisualLayersPressure.Base: + True: { visible: true } + False: { visible: false } + enum.FirelockVisuals.TemperatureWarning: + enum.FirelockVisualLayersTemperature.Base: + True: { visible: true } + False: { visible: false } - type: AnimationPlayer - type: Fixtures fixtures: @@ -124,6 +142,7 @@ - FireAndGasControl - Fires - Spacing + - type: SyncSprite - type: entity id: Firelock diff --git a/Resources/Prototypes/Entities/Structures/Doors/Windoors/windoor.yml b/Resources/Prototypes/Entities/Structures/Doors/Windoors/windoor.yml index db0fc13b97..d5cb9f1feb 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Windoors/windoor.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Windoors/windoor.yml @@ -407,6 +407,15 @@ - type: Wires layoutId: AirlockMedical +- type: entity + parent: WindoorSecureCommandLocked + id: WindoorSecureResearchDirectorLocked + suffix: ResearchDirector, Locked + components: + - type: ContainerFill + containers: + board: [ DoorElectronicsResearchDirector ] + - type: entity parent: WindoorSecureCargoLocked id: WindoorSecureSalvageLocked diff --git a/Resources/Prototypes/Entities/Structures/Doors/airlock_groups.yml b/Resources/Prototypes/Entities/Structures/Doors/airlock_groups.yml index 9beedb5e49..76b21acfcd 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/airlock_groups.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/airlock_groups.yml @@ -12,6 +12,7 @@ hydroponics: Structures/Doors/Airlocks/Standard/hydroponics.rsi maintenance: Structures/Doors/Airlocks/Standard/maint.rsi medical: Structures/Doors/Airlocks/Standard/medical.rsi + salvage: Structures/Doors/Airlocks/Standard/salvage.rsi science: Structures/Doors/Airlocks/Standard/science.rsi security: Structures/Doors/Airlocks/Standard/security.rsi virology: Structures/Doors/Airlocks/Standard/virology.rsi @@ -31,6 +32,7 @@ hydroponics: Structures/Doors/Airlocks/Glass/hydroponics.rsi maintenance: Structures/Doors/Airlocks/Glass/maint.rsi medical: Structures/Doors/Airlocks/Glass/medical.rsi + salvage: Structures/Doors/Airlocks/Glass/salvage.rsi security: Structures/Doors/Airlocks/Glass/security.rsi virology: Structures/Doors/Airlocks/Glass/virology.rsi @@ -79,6 +81,7 @@ hydroponics: Civilian maintenance: Civilian medical: Medical + salvage: Cargo science: Science security: Security virology: Medical diff --git a/Resources/Prototypes/Entities/Structures/Doors/turnstile.yml b/Resources/Prototypes/Entities/Structures/Doors/turnstile.yml new file mode 100644 index 0000000000..2fde8a1a28 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Doors/turnstile.yml @@ -0,0 +1,96 @@ +- type: entity + id: Turnstile + parent: BaseStructure + name: turnstile + description: A mechanical door that permits one-way access and prevents tailgating. + components: + - type: Sprite + sprite: Structures/Doors/turnstile.rsi + snapCardinals: true + drawdepth: Doors + layers: + - state: turnstile + map: [ "enum.TurnstileVisualLayers.Base" ] + - type: AnimationPlayer + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.49,-0.49,0.49,0.49" # same dimensions as a door for tall turnstile, prevents objects being thrown through + density: 100 + mask: + - FullTileMask + layer: + - AirlockLayer + fix2: + shape: + !type:PhysShapeAabb + bounds: "-0.50,-0.50,0.50,0.50" # same dimensions as a door for tall turnstile, prevents objects being thrown through + hard: false + mask: + - FullTileMask + layer: + - AirlockLayer + - type: MeleeSound + soundGroups: + Brute: + path: + "/Audio/Weapons/smash.ogg" + - type: InteractionOutline + - type: Turnstile + processWhitelist: + components: + - MobState # no mobs + - Pullable # no dragging things in + - type: Appearance + - type: Damageable + damageContainer: Inorganic + damageModifierSet: StrongMetallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 500 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - type: AccessReader + - type: Construction + graph: Turnstile + node: turnstile + +- # Spawned by the client-side turnstile examine code to indicate the direction to pass through. + type: entity + id: TurnstileArrow + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: Structures/Doors/turnstile.rsi + color: "#FFFFFFBB" + layers: + - state: arrow + offset: 0, 0.78125 + - type: TimedDespawn + lifetime: 2 + - type: Tag + tags: + - HideContextMenu + +# Genpop + +- type: entity + id: TurnstileGenpopEnter + parent: Turnstile + suffix: Genpop Enter + components: + - type: AccessReader + access: [["GenpopEnter"], ["Security"]] + +- type: entity + id: TurnstileGenpopLeave + parent: Turnstile + suffix: Genpop Leave + components: + - type: AccessReader + access: [["GenpopLeave"], ["Security"]] diff --git a/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml b/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml index cb3ae3d065..1b5ac30a9c 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/toilet.yml @@ -12,6 +12,8 @@ map: [ "enum.DisposalUnitVisualLayers.Unanchored" ] - state: disposal map: [ "enum.DisposalUnitVisualLayers.Base" ] + - state: disposal-charging + map: [ "enum.DisposalUnitVisualLayers.BaseCharging" ] - state: disposal-flush map: [ "enum.DisposalUnitVisualLayers.OverlayFlush" ] - state: dispover-charge @@ -32,8 +34,6 @@ components: - HumanoidAppearance - type: DisposalUnit - autoEngageEnabled: false - noUI: true blacklist: components: - HumanoidAppearance diff --git a/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml b/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml index b37faa63b0..953bdb422e 100644 --- a/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml +++ b/Resources/Prototypes/Entities/Structures/Lighting/base_lighting.yml @@ -54,7 +54,7 @@ bounds: "-0.4,0.5,0.4,0.35" density: 190 mask: - - TabletopMachineMask + - None layer: - TabletopMachineLayer - type: Destructible @@ -276,7 +276,7 @@ bounds: "-0.1,0.5,0.1,0.255" density: 190 mask: - - TabletopMachineMask + - None layer: - TabletopMachineLayer - type: Damageable diff --git a/Resources/Prototypes/Entities/Structures/Lighting/strobe_lighting.yml b/Resources/Prototypes/Entities/Structures/Lighting/strobe_lighting.yml index 297a0a7abd..c1aa9b97d8 100644 --- a/Resources/Prototypes/Entities/Structures/Lighting/strobe_lighting.yml +++ b/Resources/Prototypes/Entities/Structures/Lighting/strobe_lighting.yml @@ -48,7 +48,7 @@ bounds: "-0.2,0.5,0.2,0.35" density: 190 mask: - - TabletopMachineMask + - None layer: - TabletopMachineLayer - type: Damageable diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml index 3a1684bbc7..93125455bc 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml @@ -532,7 +532,6 @@ state: generic_panel_open - type: ResearchClient - type: AnalysisConsole - reportEntityId: PaperArtifactAnalyzer - type: DeviceList - type: DeviceNetwork deviceNetId: Wired @@ -541,10 +540,10 @@ ports: - ArtifactAnalyzerSender - type: ActivatableUI - key: enum.ArtifactAnalzyerUiKey.Key + key: enum.ArtifactAnalyzerUiKey.Key - type: UserInterface interfaces: - enum.ArtifactAnalzyerUiKey.Key: + enum.ArtifactAnalyzerUiKey.Key: type: AnalysisConsoleBoundUserInterface enum.ResearchClientUiKey.Key: type: ResearchClientBoundUserInterface @@ -597,6 +596,9 @@ type: WiresBoundUserInterface - type: CrewManifestViewer ownerKey: enum.IdCardConsoleUiKey.Key + - type: Speech + speechVerb: Robotic + speechSounds: Pai - type: Sprite layers: - map: ["computerLayerBody"] @@ -906,11 +908,11 @@ - map: ["computerLayerScreen"] state: request - map: ["computerLayerKeys"] - state: tech_key + state: generic_keys - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] state: generic_panel_open - type: CargoOrderConsole - - type: BankClient + removeLimitAccess: [ "Quartermaster" ] - type: ActiveRadio channels: - Supply @@ -943,6 +945,167 @@ guides: - Cargo +# Request console variants. +- type: entity + id: ComputerCargoOrdersEngineering + parent: ComputerCargoOrders + name: engineering request computer + description: Used by the engineering department to order supplies. + components: + - type: Sprite + layers: + - map: ["computerLayerBody"] + state: computer + - map: ["computerLayerKeyboard"] + state: generic_keyboard + - map: ["computerLayerScreen"] + state: request-eng + - map: ["computerLayerKeys"] + state: generic_keys + - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] + state: generic_panel_open + - type: CargoOrderConsole + account: Engineering + announcementChannel: Engineering + removeLimitAccess: [ "ChiefEngineer" ] + - type: ActiveRadio + channels: + - Engineering + - type: Computer + board: CargoRequestEngineeringComputerCircuitboard + - type: PointLight + color: "#c9c042" + - type: AccessReader + access: [["Engineering"]] + +- type: entity + id: ComputerCargoOrdersMedical + parent: ComputerCargoOrders + name: medical request computer + description: Used by the medical department to order supplies. + components: + - type: Sprite + layers: + - map: ["computerLayerBody"] + state: computer + - map: ["computerLayerKeyboard"] + state: generic_keyboard + - map: ["computerLayerScreen"] + state: request-med + - map: ["computerLayerKeys"] + state: generic_keys + - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] + state: generic_panel_open + - type: CargoOrderConsole + account: Medical + announcementChannel: Medical + removeLimitAccess: [ "ChiefMedicalOfficer" ] + - type: ActiveRadio + channels: + - Medical + - type: Computer + board: CargoRequestMedicalComputerCircuitboard + - type: PointLight + color: "#41e0fc" + - type: AccessReader + access: [["Medical"]] + +- type: entity + id: ComputerCargoOrdersScience + parent: ComputerCargoOrders + name: science request computer + description: Used by the science department to order supplies. + components: + - type: Sprite + layers: + - map: ["computerLayerBody"] + state: computer + - map: ["computerLayerKeyboard"] + state: generic_keyboard + - map: ["computerLayerScreen"] + state: request-sci + - map: ["computerLayerKeys"] + state: generic_keys + - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] + state: generic_panel_open + - type: CargoOrderConsole + account: Science + announcementChannel: Science + removeLimitAccess: [ "ResearchDirector" ] + - type: ActiveRadio + channels: + - Science + - type: Computer + board: CargoRequestScienceComputerCircuitboard + - type: PointLight + color: "#b53ca1" + - type: AccessReader + access: [["Research"]] + +- type: entity + id: ComputerCargoOrdersSecurity + parent: ComputerCargoOrders + name: security request computer + description: Used by the security department to order supplies. + components: + - type: Sprite + layers: + - map: ["computerLayerBody"] + state: computer + - map: ["computerLayerKeyboard"] + state: generic_keyboard + - map: ["computerLayerScreen"] + state: request-sec + - map: ["computerLayerKeys"] + state: generic_keys + - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] + state: generic_panel_open + - type: CargoOrderConsole + account: Security + announcementChannel: Security + removeLimitAccess: [ "HeadOfSecurity" ] + - type: ActiveRadio + channels: + - Security + - type: Computer + board: CargoRequestSecurityComputerCircuitboard + - type: PointLight + color: "#d11d00" + - type: AccessReader + access: [["Security"]] + +- type: entity + id: ComputerCargoOrdersService + parent: ComputerCargoOrders + name: service request computer + description: Used by the service department to order supplies. + components: + - type: Sprite + layers: + - map: ["computerLayerBody"] + state: computer + - map: ["computerLayerKeyboard"] + state: generic_keyboard + - map: ["computerLayerScreen"] + state: request-srv + - map: ["computerLayerKeys"] + state: generic_keys + - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] + state: generic_panel_open + - type: CargoOrderConsole + account: Service + announcementChannel: Service + removeLimitAccess: [ "HeadOfPersonnel" ] + - type: ActiveRadio + channels: + - Service + - type: Computer + board: CargoRequestServiceComputerCircuitboard + - type: PointLight + color: "#afe837" + - type: AccessReader + access: [["Service"]] + - type: entity id: ComputerCargoBounty parent: BaseComputerAiAccess @@ -983,6 +1146,43 @@ - CargoBounties - Cargo +- type: entity + parent: BaseComputerAiAccess + id: ComputerFundingAllocation + name: funding allocation computer + description: Terminal for controlling the distribution of funds and pay to departments. + components: + - type: Sprite + layers: + - map: ["computerLayerBody"] + state: computer + - map: ["computerLayerKeyboard"] + state: generic_keyboard + - map: ["computerLayerScreen"] + state: allocate # ALLOCATION !!! + - map: ["computerLayerKeys"] + state: generic_keys + - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] + state: generic_panel_open + - type: FundingAllocationConsole + - type: ActivatableUI + key: enum.FundingAllocationConsoleUiKey.Key + - type: ActivatableUIRequiresAccess + - type: AccessReader + access: [["HeadOfPersonnel"]] + - type: UserInterface + interfaces: + enum.FundingAllocationConsoleUiKey.Key: + type: FundingAllocationConsoleBoundUserInterface + enum.WiresUiKey.Key: + type: WiresBoundUserInterface + - type: Computer + board: FundingAllocationComputerCircuitboard + - type: PointLight + radius: 1.5 + energy: 1.6 + color: "#3c5eb5" + - type: entity parent: BaseComputerAiAccess id: ComputerCloningConsole @@ -1182,9 +1382,9 @@ - map: ["computerLayerKeyboard"] state: generic_keyboard - map: ["computerLayerScreen"] - state: request + state: transfer - map: ["computerLayerKeys"] - state: tech_key + state: generic_keys - map: [ "enum.WiresVisualLayers.MaintenancePanel" ] state: generic_panel_open - type: Anchorable diff --git a/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml b/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml index 1761f176da..6ef8f7262f 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/anomaly_equipment.yml @@ -270,6 +270,7 @@ - Sheet materialWhiteList: - Plasma + - type: OreSiloClient - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml index b9efefdf75..d4fc8263a8 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/artifact_analyzer.yml @@ -51,11 +51,10 @@ powerLoad: 12000 needsPower: false #only turns on when scanning - type: ArtifactAnalyzer - - type: TraversalDistorter - type: ItemPlacer whitelist: components: - - Artifact + - XenoArtifact - type: DeviceNetwork deviceNetId: Wired receiveFrequencyId: BasicDevice @@ -90,7 +89,7 @@ - type: ArtifactCrusher crushingWhitelist: components: - - Artifact + - XenoArtifact crushingDamage: types: Blunt: 10 @@ -127,7 +126,7 @@ capacity: 1 whitelist: components: - - Artifact + - XenoArtifact tags: - CanPilot # People - VimPilot # Pets diff --git a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml index d78ed1182c..7578820bd8 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/chem_master.yml @@ -16,7 +16,14 @@ map: ["enum.PowerDeviceVisualLayers.Powered"] - type: Icon sprite: Structures/Machines/mixer.rsi - state: mixer_loaded + state: mixer_empty + - type: ItemMapper + containerWhitelist: [beakerSlot] + mapLayers: + mixer_loaded: + whitelist: + components: + - FitsInDispenser - type: ChemMaster pillDosageLimit: 20 - type: Physics diff --git a/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml b/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml index 78f1504003..f7f1bcba1b 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/flatpacker.yml @@ -44,6 +44,7 @@ - Sheet - RawMaterial - Ingot + - type: OreSiloClient - type: AmbientSound enabled: false volume: 5 diff --git a/Resources/Prototypes/Entities/Structures/Machines/grill.yml b/Resources/Prototypes/Entities/Structures/Machines/grill.yml index 9c4c67b951..f9e482f674 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/grill.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/grill.yml @@ -17,7 +17,7 @@ - type: ApcPowerReceiver powerLoad: 0 # off by default - type: EntityHeater - settingSound: + settingSound: path: /Audio/Weapons/click.ogg params: volume: -6 @@ -29,6 +29,7 @@ - type: PlaceableSurface - type: Machine board: ElectricGrillMachineCircuitboard + - type: Appearance - type: GenericVisualizer visuals: enum.EntityHeaterVisuals.Setting: diff --git a/Resources/Prototypes/Entities/Structures/Machines/hotplate.yml b/Resources/Prototypes/Entities/Structures/Machines/hotplate.yml index 3764f13591..5ef0deb154 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/hotplate.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/hotplate.yml @@ -1,31 +1,29 @@ # heats an entity or solution placed on it - type: entity abstract: true - parent: [ BaseMachinePowered, ConstructibleMachine ] + parent: [ BaseMachinePowered, SmallConstructibleMachine ] id: BaseHeaterMachine components: - - type: Transform - anchored: true + - type: ItemPlacer - type: Fixtures fixtures: + itemcollide: + shape: + !type:PhysShapeAabb + bounds: "-0.14,-0.05,0.15,0.25" + layer: + - HighImpassable + hard: false fix1: shape: !type:PhysShapeAabb - bounds: "-0.08,-0.35,0.15,0.25" + bounds: "-0.14,-0.05,0.15,0.25" mask: - TabletopMachineMask layer: - - Impassable - - MidImpassable - - LowImpassable - hard: false + - TabletopMachineLayer - type: ApcPowerReceiver powerLoad: 300 - - type: Appearance - - type: ContainerContainer - containers: - machine_board: !type:Container - machine_parts: !type:Container - type: entity parent: BaseHeaterMachine @@ -53,6 +51,7 @@ positionOffset: 0, 0.25 - type: Machine board: HotplateMachineCircuitboard + - type: Appearance - type: GenericVisualizer visuals: enum.SolutionHeaterVisuals.IsOn: diff --git a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml index cf3bcac302..3b4b9cf5d2 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/lathe.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/lathe.yml @@ -112,6 +112,7 @@ - Sheet - RawMaterial - Ingot + - type: OreSiloClient - type: Lathe idleState: icon runningState: building @@ -184,6 +185,7 @@ - Sheet - RawMaterial - Ingot + - type: OreSiloClient - type: Lathe idleState: icon runningState: building @@ -273,6 +275,7 @@ - Sheet - RawMaterial - Ingot + - type: OreSiloClient - type: RequireProjectileTarget - type: entity @@ -321,6 +324,7 @@ - Sheet - RawMaterial - Ingot + - type: OreSiloClient - type: GuideHelp guides: - Robotics @@ -408,6 +412,9 @@ - Sheet - RawMaterial - Ingot + - type: OreSiloClient + - type: LatheAnnouncing + channels: [Security] - type: entity id: AmmoTechFab @@ -441,6 +448,7 @@ - Sheet - RawMaterial - Ingot + - type: OreSiloClient - type: entity id: MedicalTechFab @@ -478,6 +486,9 @@ board: MedicalTechFabCircuitboard - type: StealTarget stealGroup: MedicalTechFabCircuitboard + - type: OreSiloClient + - type: LatheAnnouncing + channels: [Medical] - type: entity parent: BaseLathe diff --git a/Resources/Prototypes/Entities/Structures/Machines/mail_teleporter.yml b/Resources/Prototypes/Entities/Structures/Machines/mail_teleporter.yml index a03f166bbe..6842e3c958 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/mail_teleporter.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/mail_teleporter.yml @@ -20,6 +20,9 @@ snapCardinals: true layers: - state: icon + - state: contents + map: [ "enum.DeliverySpawnerVisualLayers.Contents" ] + visible: false - state: unlit shader: unshaded visible: false @@ -32,6 +35,10 @@ - type: Appearance - type: GenericVisualizer visuals: + enum.DeliverySpawnerVisuals.Contents: + enum.DeliverySpawnerVisualLayers.Contents: + True: { visible: true } + False: { visible: false } enum.PowerDeviceVisuals.Powered: enum.PowerDeviceVisualLayers.Powered: True: { visible: true } diff --git a/Resources/Prototypes/Entities/Structures/Machines/nuke.yml b/Resources/Prototypes/Entities/Structures/Machines/nuke.yml index 7fdd80bd2b..0ac4a9e98f 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/nuke.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/nuke.yml @@ -107,9 +107,15 @@ Nuke: !type:ContainerSlot - type: StealTarget stealGroup: NuclearBomb + - type: Tag + tags: + - GhostOnlyWarp - type: WarpPoint follow: true location: nuclear bomb + blacklist: + tags: + - GhostOnlyWarp - type: FTLSmashImmune - type: entity diff --git a/Resources/Prototypes/Entities/Structures/Machines/silo.yml b/Resources/Prototypes/Entities/Structures/Machines/silo.yml new file mode 100644 index 0000000000..6bc08c9004 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Machines/silo.yml @@ -0,0 +1,62 @@ +- type: entity + id: MachineMaterialSilo + parent: [ BaseMachinePowered, ConstructibleMachine ] + name: material silo + description: An advanced machine, capable of using bluespace technology to transmit materials to nearby machines. + components: + - type: Sprite + sprite: Structures/Machines/silo.rsi + snapCardinals: true + layers: + - state: silo + map: [ "base" ] + - type: Appearance + - type: GenericVisualizer + visuals: + enum.PowerDeviceVisuals.Powered: + base: + True: { state: silo_active } + False: { state: silo } + - type: OreSilo + - type: MaterialStorage + whitelist: + tags: + - Sheet + - Ingot + - type: ActivatableUI + key: enum.OreSiloUiKey.Key + - type: ActivatableUIRequiresPower + - type: UserInterface + interfaces: + enum.OreSiloUiKey.Key: + type: OreSiloBoundUserInterface + - type: Machine + board: MaterialSiloMachineCircuitboard + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.4,-0.4,0.4,0.4" + density: 190 + mask: + - MachineMask + layer: + - MachineLayer + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: MetalBreak + - !type:ChangeConstructionNodeBehavior + node: machineFrame + - !type:DoActsBehavior + acts: ["Destruction"] + - type: WiresVisuals + - type: WiresPanel + - type: StaticPrice + price: 1500 diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml index 71c0da2736..33a8414961 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/binary.yml @@ -120,6 +120,9 @@ - type: PipeColorVisuals - type: GasVolumePump enabled: false + - type: ActivatableUI + key: enum.GasVolumePumpUiKey.Key + - type: ActivatableUIRequiresAnchor - type: UserInterface interfaces: enum.GasVolumePumpUiKey.Key: diff --git a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/trinary.yml b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/trinary.yml index c44f700e7f..daeab2dd19 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/trinary.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Atmospherics/trinary.yml @@ -134,6 +134,9 @@ placement: mode: SnapgridCenter components: + - type: SubFloorHide + visibleLayers: + - enum.SubfloorLayers.FirstLayer - type: Sprite sprite: Structures/Piping/Atmospherics/gasmixer.rsi layers: @@ -233,6 +236,8 @@ - type: SubFloorHide blockInteractions: false blockAmbience: false + visibleLayers: + - enum.SubfloorLayers.FirstLayer - type: NodeContainer nodes: inlet: diff --git a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml index 9d04b32563..7388a814f7 100644 --- a/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml +++ b/Resources/Prototypes/Entities/Structures/Piping/Disposal/units.yml @@ -8,6 +8,8 @@ snap: - Disposal components: + - type: Climbable + vaultable: false - type: Sprite sprite: Structures/Piping/disposal.rsi layers: @@ -29,6 +31,17 @@ map: [ "enum.DisposalUnitVisualLayers.OverlayEngaged" ] - type: Physics bodyType: Static + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.45,-0.45,0.45,0.45" + density: 55 + mask: + - TableMask + layer: + - TableLayer - type: Destructible thresholds: - trigger: @@ -116,7 +129,6 @@ graph: DisposalMachine node: mailing_unit - type: DisposalUnit - autoEngageEnabled: false whitelist: components: - Item @@ -136,6 +148,6 @@ - type: UserInterface interfaces: enum.MailingUnitUiKey.Key: - type: DisposalUnitBoundUserInterface + type: MailingUnitBoundUserInterface enum.ConfigurationUiKey.Key: type: ConfigurationBoundUserInterface diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/singularity.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/singularity.yml index 461b17efbb..1e439ddae4 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/singularity.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Singularity/singularity.yml @@ -66,9 +66,15 @@ - SingularityEngine - SingularityTeslaEngine - Power + - type: Tag + tags: + - GhostOnlyWarp - type: WarpPoint follow: true location: singularity + blacklist: + tags: + - GhostOnlyWarp - type: Sprite sprite: Structures/Power/Generation/Singularity/singularity_1.rsi shader: unshaded diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/energyball.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/energyball.yml index 909601e066..d31f7526ab 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/energyball.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/Tesla/energyball.yml @@ -89,9 +89,15 @@ - type: ChaoticJump jumpMinInterval: 8 jumpMaxInterval: 15 + - type: Tag + tags: + - GhostOnlyWarp - type: WarpPoint follow: true location: tesla ball + blacklist: + tags: + - GhostOnlyWarp - type: Sprite drawdepth: Effects sprite: Structures/Power/Generation/Tesla/energy_ball.rsi diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml index f64f6612b0..97802a8696 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/solar.yml @@ -58,7 +58,7 @@ id: SolarPanelPlasma parent: SolarPanelBasePhysSprite name: solar panel plasma - description: A plasma solar panel that generates power. + description: A few sheets of plasma glass that generate electricity when hit by photons. components: - type: PowerSupplier supplyRampTolerance: 500 @@ -92,7 +92,7 @@ id: SolarPanelUranium parent: SolarPanelBasePhysSprite name: solar panel uranium - description: A uranium solar panel that generates power. + description: A few sheets of uranium glass that generate electricity when hit by photons. components: - type: PowerSupplier supplyRampTolerance: 500 @@ -126,7 +126,7 @@ id: SolarPanel parent: SolarPanelBasePhysSprite name: solar panel - description: A solar panel that generates power. + description: A few sheets of glass that generate electricity when hit by photons. components: - type: PowerSupplier supplyRampTolerance: 500 @@ -151,6 +151,7 @@ - type: Construction graph: SolarPanel node: solarpanel + - type: SolarPanelReplacementMarker - type: entity id: SolarPanelBroken diff --git a/Resources/Prototypes/Entities/Structures/Power/cables.yml b/Resources/Prototypes/Entities/Structures/Power/cables.yml index e3320d9f98..428d935eaa 100644 --- a/Resources/Prototypes/Entities/Structures/Power/cables.yml +++ b/Resources/Prototypes/Entities/Structures/Power/cables.yml @@ -115,11 +115,12 @@ description: A medium voltage power cable. components: - type: Sprite - color: Yellow sprite: Structures/Power/Cables/mv_cable.rsi - state: mvcable_0 + layers: + - state: mvcable_0 + color: Yellow + - state: mvstripes_0 - type: Icon - color: Yellow sprite: Structures/Power/Cables/mv_cable.rsi state: mvcable_4 - type: NodeContainer @@ -151,6 +152,7 @@ acts: [ "Destruction" ] - type: CableVisualizer statePrefix: mvcable_ + extraLayerPrefix: mvstripes_ - type: entity id: CableMVUncuttable diff --git a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomaly_injectors.yml b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomaly_injectors.yml index d643bcb028..a5f6f32128 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomaly_injectors.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Anomaly/anomaly_injectors.yml @@ -46,6 +46,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCorePyroclastic + coreInertPrototype: AnomalyCorePyroclasticInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionPyroclastic startMessage: inner-anomaly-start-message-pyro @@ -75,6 +76,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreElectricity + coreInertPrototype: AnomalyCoreElectricityInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionElectric startMessage: inner-anomaly-start-message-shock @@ -104,6 +106,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreShadow + coreInertPrototype: AnomalyCoreShadowInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionShadow startMessage: inner-anomaly-start-message-shadow @@ -133,6 +136,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreIce + coreInertPrototype: AnomalyCoreIceInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionIce startMessage: inner-anomaly-start-message-frost @@ -162,6 +166,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreFlora + coreInertPrototype: AnomalyCoreFloraInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionFlora startMessage: inner-anomaly-start-message-flora @@ -191,6 +196,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreBluespace + coreInertPrototype: AnomalyCoreBluespaceInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionBluespace startMessage: inner-anomaly-start-message-bluespace @@ -220,6 +226,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreFlesh + coreInertPrototype: AnomalyCoreFleshInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionFlesh startMessage: inner-anomaly-start-message-flesh @@ -249,6 +256,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreGravity + coreInertPrototype: AnomalyCoreGravityInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionGravity startMessage: inner-anomaly-start-message-grav @@ -278,6 +286,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreTech + coreInertPrototype: AnomalyCoreTechInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionTech startMessage: inner-anomaly-start-message-tech @@ -308,6 +317,7 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreRock + coreInertPrototype: AnomalyCoreRockInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionRock startMessage: inner-anomaly-start-message-rock @@ -337,9 +347,10 @@ deleteEntity: false maxPointsPerSecond: 100 corePrototype: AnomalyCoreSanta + coreInertPrototype: AnomalyCoreSantaInert - type: InnerBodyAnomaly injectionProto: AnomalyInjectionSanta startMessage: inner-anomaly-start-message-santa fallbackSprite: sprite: Structures/Specific/Anomalies/inner_anom_layer.rsi - state: santa \ No newline at end of file + state: santa diff --git a/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml b/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml index d74fe8b0f1..c095951d96 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Janitor/janicart.yml @@ -125,6 +125,18 @@ - ReagentId: Water Quantity: 600 +- type: entity + parent: BaseWrappedCube + name: mop bucket cube + id: MopBucketCubeWrapped + description: Unwrap this to get a mop bucket cube. + components: + - type: SpawnItemsOnUse + items: + - id: MopBucketCube + - type: Sprite + state: wrapper + # Janicart - type: entity name: janitorial trolley diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml index 97ef052153..df62854818 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/Lockers/lockers.yml @@ -381,6 +381,111 @@ - type: AccessReader access: [["Armory"]] +# Genpop Storage +- type: entity + id: LockerPrisoner + parent: LockerBaseSecure + name: prisoner closet + description: It's a secure locker for an inmate's personal belongings during their time in prison. + suffix: 1 + components: + - type: GenpopLocker + - type: EntityStorageVisuals + stateBaseClosed: genpop + stateDoorOpen: genpop_open + stateDoorClosed: genpop_door_1 + - type: UserInterface + interfaces: + enum.GenpopLockerUiKey.Key: + type: GenpopLockerBoundUserInterface + - type: AccessReader # note! this access is for the UI, not the door. door access is handled on GenpopLocker + access: [["Security"]] + - type: Lock + locked: false + useAccess: false + - type: Fixtures + fixtures: + fix1: + shape: !type:PolygonShape + radius: 0.01 + vertices: + - -0.25,-0.48 + - 0.25,-0.48 + - 0.25,0.48 + - -0.25,0.48 + mask: + - Impassable + - TableLayer + - LowImpassable + layer: + - BulletImpassable + - Opaque + density: 75 + hard: True + restitution: 0 + friction: 0.4 + - type: EntityStorage + open: True + removedMasks: 20 + - type: PlaceableSurface + isPlaceable: True + +- type: entity + id: LockerPrisoner2 + parent: LockerPrisoner + suffix: 2 + components: + - type: EntityStorageVisuals + stateDoorClosed: genpop_door_2 + +- type: entity + id: LockerPrisoner3 + parent: LockerPrisoner + suffix: 3 + components: + - type: EntityStorageVisuals + stateDoorClosed: genpop_door_3 + +- type: entity + id: LockerPrisoner4 + parent: LockerPrisoner + suffix: 4 + components: + - type: EntityStorageVisuals + stateDoorClosed: genpop_door_4 + +- type: entity + id: LockerPrisoner5 + parent: LockerPrisoner + suffix: 5 + components: + - type: EntityStorageVisuals + stateDoorClosed: genpop_door_5 + +- type: entity + id: LockerPrisoner6 + parent: LockerPrisoner + suffix: 6 + components: + - type: EntityStorageVisuals + stateDoorClosed: genpop_door_6 + +- type: entity + id: LockerPrisoner7 + parent: LockerPrisoner + suffix: 7 + components: + - type: EntityStorageVisuals + stateDoorClosed: genpop_door_7 + +- type: entity + id: LockerPrisoner8 + parent: LockerPrisoner + suffix: 8 + components: + - type: EntityStorageVisuals + stateDoorClosed: genpop_door_8 + # Detective - type: entity id: LockerDetective diff --git a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml index 74b3fca79f..a12ff6773e 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Crates/crates.yml @@ -426,6 +426,194 @@ - type: StaticPrice price: 75 +- type: entity + id: CrateBaseLockBox + parent: CrateBaseSecure + name: lock box + description: "A secure lock box. Funds from its sale will be distributed back to the department. Just remember: Cargo always takes a cut." + abstract: true + components: + - type: Sprite + sprite: Structures/Storage/Crates/lockbox.rsi + - type: GenericVisualizer + visuals: + enum.PaperLabelVisuals.HasLabel: + enum.PaperLabelVisuals.Layer: + True: { visible: true } + False: { visible: false } + enum.PaperLabelVisuals.LabelType: + enum.PaperLabelVisuals.Layer: + Paper: { state: paper } + Bounty: { state: bounty } + CaptainsPaper: { state: captains_paper } + Invoice: { state: invoice } + enum.StorageVisuals.Open: + lid_overlay: + True: { visible: false } + False: { visible: true } + - type: OverrideSell + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.3,-0.4,0.3,0.19" + density: 50 + mask: + - CrateMask #this is so they can go under plastic flaps + layer: + - MachineLayer + +- type: entity + id: CrateLockBoxEngineering + parent: CrateBaseLockBox + name: engineering lock box + components: + - type: Sprite + layers: + - state: base + - state: overlay + color: "#ad8c27" + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: overlay-closed + color: "#ad8c27" + map: [ lid_overlay ] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - state: locked + map: ["enum.LockVisualLayers.Lock"] + shader: unshaded + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.46875,0.03125" + map: ["enum.PaperLabelVisuals.Layer"] + - type: OverrideSell + overrideAccount: Engineering + - type: AccessReader + access: [["Engineering"]] + +- type: entity + id: CrateLockBoxMedical + parent: CrateBaseLockBox + name: medical lock box + components: + - type: Sprite + layers: + - state: base + - state: overlay + color: "#92c7e8" + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: overlay-closed + color: "#92c7e8" + map: [ lid_overlay ] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - state: locked + map: ["enum.LockVisualLayers.Lock"] + shader: unshaded + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.46875,0.03125" + map: ["enum.PaperLabelVisuals.Layer"] + - type: OverrideSell + overrideAccount: Medical + - type: AccessReader + access: [["Medical"]] + +- type: entity + id: CrateLockBoxScience + parent: CrateBaseLockBox + name: science lock box + components: + - type: Sprite + layers: + - state: base + - state: overlay + color: "#ba4bf0" + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: overlay-closed + color: "#ba4bf0" + map: [ lid_overlay ] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - state: locked + map: ["enum.LockVisualLayers.Lock"] + shader: unshaded + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.46875,0.03125" + map: ["enum.PaperLabelVisuals.Layer"] + - type: OverrideSell + overrideAccount: Science + - type: AccessReader + access: [["Research"]] + +- type: entity + id: CrateLockBoxSecurity + parent: CrateBaseLockBox + name: security lock box + components: + - type: Sprite + layers: + - state: base + - state: overlay + color: "#c12d30" + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: overlay-closed + color: "#c12d30" + map: [ lid_overlay ] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - state: locked + map: ["enum.LockVisualLayers.Lock"] + shader: unshaded + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.46875,0.03125" + map: ["enum.PaperLabelVisuals.Layer"] + - type: OverrideSell + overrideAccount: Security + - type: AccessReader + access: [["Security"]] + +- type: entity + id: CrateLockBoxService + parent: CrateBaseLockBox + name: service lock box + components: + - type: Sprite + layers: + - state: base + - state: overlay + color: "#53b723" + - state: closed + map: ["enum.StorageVisualLayers.Door"] + - state: overlay-closed + color: "#53b723" + map: [ lid_overlay ] + - state: welded + visible: false + map: ["enum.WeldableLayers.BaseWelded"] + - state: locked + map: ["enum.LockVisualLayers.Lock"] + shader: unshaded + - state: paper + sprite: Structures/Storage/Crates/labels.rsi + offset: "-0.46875,0.03125" + map: ["enum.PaperLabelVisuals.Layer"] + - type: OverrideSell + overrideAccount: Service + - type: AccessReader + access: [["Service"]] + - type: entity parent: CrateGeneric id: CratePirate diff --git a/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml b/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml index 70c7647fcc..1eaefeb6ad 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml @@ -1,3 +1,42 @@ +- type: entityTable + id: FilingCabinetFillTable + table: !type:AllSelector + children: + - !type:GroupSelector + rolls: !type:RangeNumberSelector + range: 2, 4 + children: + - id: BoxFolderBlue + - id: BoxFolderRed + - id: BoxFolderYellow + - id: BoxFolderWhite + - id: BoxFolderGrey + - id: BoxFolderBlack + - !type:GroupSelector + rolls: !type:RangeNumberSelector + range: 0, 3 + children: + - id: Paper + - id: PaperOffice + - !type:GroupSelector + prob: .3 + rolls: !type:ConstantNumberSelector + value: 2 + children: + - id: Pen + - !type:GroupSelector + prob: 0.15 + children: + - !type:AllSelector + weight: 0.2 + children: + - id: RubberStampApproved + - id: RubberStampDenied + - id: RubberStampGreytide + weight: 0.1 + - id: LuxuryPen + - id: NanoTaskCartridge + - type: entity parent: [ BaseStructureDynamic, BaseBagOpenClose ] id: BaseFilingCabinet @@ -9,11 +48,6 @@ grid: - 0,0,9,3 maxItemSize: Normal - whitelist: - tags: - - Document - - Folder - - Write - type: Sprite sprite: Structures/Storage/cabinets.rsi noRot: true @@ -97,9 +131,6 @@ id: filingCabinetDrawer description: A small drawer for all your filing needs, Now with wheels! components: - - type: Storage - grid: - - 0,0,7,2 - type: Sprite state: chestdrawer layers: @@ -126,25 +157,10 @@ id: BaseBureaucraticStorageFill suffix: Filled components: - - type: StorageFill - contents: - - id: Pen - prob: 0.5 - - id: PaperOffice - amount: 1 - maxAmount: 3 - - id: BoxFolderBlue - orGroup: Folder - - id: BoxFolderRed - orGroup: Folder - - id: BoxFolderYellow - orGroup: Folder - - id: BoxFolderWhite - orGroup: Folder - - id: BoxFolderGrey - orGroup: Folder - - id: BoxFolderBlack - orGroup: Folder + - type: EntityTableContainerFill + containers: + storagebase: !type:NestedSelector + tableId: FilingCabinetFillTable - type: entity parent: [BaseBureaucraticStorageFill, filingCabinet] diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/signs.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/signs.yml index 90a6820dae..b7595baac9 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/signs.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/signs.yml @@ -693,6 +693,15 @@ - type: Sprite state: nosmoking +- type: entity + parent: BaseSign + id: SignGenpop + name: genpop sign + description: A sign indicating the genpop prison. + components: + - type: Sprite + state: genpop + - type: entity parent: BaseSign id: SignPrison diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/shelfs.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/shelfs.yml index e9c1672c1c..b83622eafa 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/shelfs.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/shelfs.yml @@ -329,6 +329,9 @@ - DrinkBottle - DrinkCan - Beer + - Wine + components: + - ReactionMixer - type: Construction graph: Shelf node: ShelfBar @@ -395,6 +398,15 @@ - Ingredient - Trash - Plastic + - SaltShaker + - PepperShaker + - Ketchup + - Hotsauce + - Coldsauce + - BBQsauce + components: + - Utensil + - Bin - type: Construction graph: Shelf node: ShelfKitchen @@ -454,6 +466,11 @@ - ChemDispensable - GlassBeaker - Bottle + - Medkit + - CentrifugeCompatible + - PillCanister + - Syringe + - Spray - type: Construction graph: Shelf node: ShelfChemistry diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml index db3b469a9f..561991cd26 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml @@ -21,7 +21,7 @@ bounds: "-0.5,-0.5,-0.2,-0.15" density: 190 mask: - - TabletopMachineMask + - None layer: - TabletopMachineLayer - type: LightOnCollide diff --git a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml index e83b4c5f07..85c011ce11 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/asteroid.yml @@ -22,15 +22,15 @@ - type: Sprite sprite: Structures/Walls/rock.rsi layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west - type: MiningScannerViewable - type: Damageable damageContainer: StructuralInorganic @@ -56,45 +56,30 @@ description: An ore vein rich with coal. suffix: Coal components: - - type: OreVein - oreChance: 1.0 - currentOre: OreCoal - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_coal - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreCoal + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_coal + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockCoalCrab - parent: AsteroidRock - description: An ore vein rich with coal. + parent: AsteroidRockCoal suffix: Coal Crab components: - - type: OreVein - oreChance: 1.0 - currentOre: OreCoalCrab - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_coal - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + currentOre: OreCoalCrab - type: entity id: AsteroidRockGold @@ -102,45 +87,30 @@ description: An ore vein rich with gold. suffix: Gold components: - - type: OreVein - oreChance: 1.0 - currentOre: OreGold - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_gold - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreGold + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_gold + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockGoldCrab - parent: AsteroidRock - description: An ore vein rich with gold. + parent: AsteroidRockGold suffix: Gold Crab components: - - type: OreVein - oreChance: 1.0 - currentOre: OreGoldCrab - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_gold - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + currentOre: OreGoldCrab - type: entity id: AsteroidRockDiamond @@ -148,22 +118,22 @@ description: An ore vein rich with diamonds. suffix: Diamond components: - - type: OreVein - oreChance: 1.0 - currentOre: OreDiamond - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_diamond - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreDiamond + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_diamond + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockPlasma @@ -171,22 +141,21 @@ description: An ore vein rich with plasma. suffix: Plasma components: - - type: OreVein - oreChance: 1.0 - currentOre: OrePlasma - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_phoron - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + currentOre: OrePlasma + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_phoron + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockQuartz @@ -194,45 +163,30 @@ description: An ore vein rich with quartz. suffix: Quartz components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSpaceQuartz - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_quartz - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSpaceQuartz + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_quartz + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockQuartzCrab - parent: AsteroidRock - description: An ore vein rich with quartz. + parent: AsteroidRockQuartz suffix: Quartz Crab components: - - type: OreVein - oreChance: 1.0 - currentOre: OreQuartzCrab - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_quartz - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + currentOre: OreQuartzCrab - type: entity id: AsteroidRockSilver @@ -240,31 +194,30 @@ description: An ore vein rich with silver. suffix: Silver components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSilver - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_silver - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSilver + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_silver + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockSilverCrab parent: AsteroidRockSilver suffix: Silver Crab components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSilverCrab + - type: OreVein + currentOre: OreSilverCrab # Yes I know it drops steel but we may get smelting at some point - type: entity @@ -273,31 +226,30 @@ description: An ore vein rich with iron. suffix: Iron components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSteel - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_tin - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSteel + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_tin + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockTinCrab parent: AsteroidRockTin suffix: Iron Crab components: - - type: OreVein - oreChance: 1.0 - currentOre: OreIronCrab + - type: OreVein + currentOre: OreIronCrab - type: entity id: AsteroidRockUranium @@ -305,31 +257,30 @@ description: An ore vein rich with uranium. suffix: Uranium components: - - type: OreVein - oreChance: 1.0 - currentOre: OreUranium - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_uranium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreUranium + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_uranium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockUraniumCrab parent: AsteroidRockUranium suffix: Uranium Crab components: - - type: OreVein - oreChance: 1.0 - currentOre: OreUraniumCrab + - type: OreVein + currentOre: OreUraniumCrab - type: entity id: AsteroidRockBananium @@ -337,22 +288,22 @@ description: An ore vein rich with bananium. suffix: Bananium components: - - type: OreVein - oreChance: 1.0 - currentOre: OreBananium - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_bananium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreBananium + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_bananium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockSalt @@ -360,22 +311,22 @@ description: An ore vein rich with salt. suffix: Salt components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSalt - - type: Sprite - layers: - - state: rock_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_salt - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSalt + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_salt + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockArtifactFragment @@ -383,22 +334,22 @@ 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_asteroid - - map: [ "enum.EdgeLayer.South" ] - state: rock_asteroid_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_asteroid_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_asteroid_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_asteroid_west - - state: rock_artifact_fragment - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreArtifactFragment + - type: Sprite + layers: + - state: rock_asteroid + - map: [ "enum.EdgeLayer.South" ] + state: rock_asteroid_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_asteroid_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_asteroid_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_asteroid_west + - state: rock_artifact_fragment + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: AsteroidRockMining @@ -428,15 +379,15 @@ - type: Sprite sprite: Structures/Walls/rock.rsi layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west - type: entity id: IronRockMining @@ -456,22 +407,22 @@ description: An ore vein rich with coal. suffix: Coal components: - - type: OreVein - oreChance: 1.0 - currentOre: OreCoal - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_coal - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreCoal + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_coal + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: IronRockGold @@ -479,22 +430,22 @@ description: An ore vein rich with gold. suffix: Gold components: - - type: OreVein - oreChance: 1.0 - currentOre: OreGold - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_gold - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreGold + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_gold + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: IronRockPlasma @@ -502,22 +453,22 @@ description: An ore vein rich with plasma. suffix: Plasma components: - - type: OreVein - oreChance: 1.0 - currentOre: OrePlasma - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_phoron - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OrePlasma + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_phoron + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: IronRockQuartz @@ -525,22 +476,22 @@ description: An ore vein rich with quartz. suffix: Quartz components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSpaceQuartz - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_quartz - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSpaceQuartz + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_quartz + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: IronRockSilver @@ -548,22 +499,22 @@ description: An ore vein rich with silver. suffix: Silver components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSilver - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_silver - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSilver + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_silver + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: IronRockIron @@ -571,22 +522,22 @@ description: An ore vein rich with iron. suffix: Iron components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSteel - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_tin - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSteel + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_tin + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: IronRockUranium @@ -594,22 +545,22 @@ description: An ore vein rich with uranium. suffix: Uranium components: - - type: OreVein - oreChance: 1.0 - currentOre: OreUranium - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_uranium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreUranium + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_uranium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: IronRockBananium @@ -617,22 +568,22 @@ description: An ore vein rich with bananium. suffix: Bananium components: - - type: OreVein - oreChance: 1.0 - currentOre: OreBananium - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_bananium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreBananium + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_bananium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: IronRockSalt @@ -640,22 +591,22 @@ description: An ore vein rich with salt. suffix: Salt components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSalt - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_salt - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSalt + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_salt + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: IronRockArtifactFragment @@ -686,22 +637,22 @@ description: An ore vein rich with diamonds. suffix: Diamond components: - - type: OreVein - oreChance: 1.0 - currentOre: OreDiamond - - type: Sprite - layers: - - state: ironrock - - map: [ "enum.EdgeLayer.South" ] - state: ironrock_south - - map: [ "enum.EdgeLayer.East" ] - state: ironrock_east - - map: [ "enum.EdgeLayer.North" ] - state: ironrock_north - - map: [ "enum.EdgeLayer.West" ] - state: ironrock_west - - state: rock_diamond - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreDiamond + - type: Sprite + layers: + - state: ironrock + - map: [ "enum.EdgeLayer.South" ] + state: ironrock_south + - map: [ "enum.EdgeLayer.East" ] + state: ironrock_east + - map: [ "enum.EdgeLayer.North" ] + state: ironrock_north + - map: [ "enum.EdgeLayer.West" ] + state: ironrock_west + - state: rock_diamond + map: [ "enum.MiningScannerVisualLayers.Overlay" ] # Rocks and ore veins - type: entity @@ -710,44 +661,44 @@ name: rock suffix: planetmap components: - - type: Transform - noRot: true - - type: SoundOnGather - - type: Gatherable - toolWhitelist: - tags: - - Pickaxe - - type: Damageable - damageContainer: StructuralInorganic - damageModifierSet: Metallic - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 150 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - type: IconSmooth - key: walls - mode: NoSprite - - type: Icon - sprite: Structures/Walls/rock.rsi - state: rock - - type: MiningScannerViewable - - type: SmoothEdge - - type: Sprite - sprite: Structures/Walls/rock.rsi - layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west + - type: Transform + noRot: true + - type: SoundOnGather + - type: Gatherable + toolWhitelist: + tags: + - Pickaxe + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - type: IconSmooth + key: walls + mode: NoSprite + - type: Icon + sprite: Structures/Walls/rock.rsi + state: rock + - type: MiningScannerViewable + - type: SmoothEdge + - type: Sprite + sprite: Structures/Walls/rock.rsi + layers: + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west # Ore veins - type: entity @@ -768,17 +719,17 @@ currentOre: OreCoal - type: Sprite layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_coal - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_coal + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockGold @@ -798,17 +749,17 @@ currentOre: OreGold - type: Sprite layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_gold - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_gold + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockDiamond @@ -816,22 +767,22 @@ description: An ore vein rich with diamonds. suffix: Diamond components: - - type: OreVein - oreChance: 1.0 - currentOre: OreDiamond - - type: Sprite - layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_diamond - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreDiamond + - type: Sprite + layers: + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_diamond + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockPlasma @@ -851,17 +802,17 @@ currentOre: OrePlasma - type: Sprite layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_phoron - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_phoron + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockQuartz @@ -881,17 +832,17 @@ currentOre: OreSpaceQuartz - type: Sprite layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_quartz - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_quartz + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSilver @@ -911,17 +862,17 @@ currentOre: OreSilver - type: Sprite layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_silver - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_silver + map: [ "enum.MiningScannerVisualLayers.Overlay" ] # Yes I know it drops steel but we may get smelting at some point - type: entity @@ -930,29 +881,29 @@ description: An ore vein rich with iron. suffix: Iron components: - - type: EntityRemap - mask: - AsteroidRock: AsteroidRockTin - WallRockBasalt: WallRockBasaltTin - WallRockChromite: WallRockChromiteTin - WallRockSand: WallRockSandTin - WallRockSnow: WallRockSnowTin - - type: OreVein - oreChance: 1.0 - currentOre: OreSteel - - type: Sprite - layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_tin - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: EntityRemap + mask: + AsteroidRock: AsteroidRockTin + WallRockBasalt: WallRockBasaltTin + WallRockChromite: WallRockChromiteTin + WallRockSand: WallRockSandTin + WallRockSnow: WallRockSnowTin + - type: OreVein + oreChance: 1.0 + currentOre: OreSteel + - type: Sprite + layers: + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_tin + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockUranium @@ -972,17 +923,17 @@ currentOre: OreUranium - type: Sprite layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_uranium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_uranium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity @@ -1003,17 +954,17 @@ currentOre: OreBananium - type: Sprite layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_bananium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_bananium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockArtifactFragment @@ -1033,17 +984,17 @@ currentOre: OreArtifactFragment - type: Sprite layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_artifact_fragment - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_artifact_fragment + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSalt @@ -1063,17 +1014,17 @@ currentOre: OreSalt - type: Sprite layers: - - state: rock - - map: [ "enum.EdgeLayer.South" ] - state: rock_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_west - - state: rock_salt - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - state: rock + - map: [ "enum.EdgeLayer.South" ] + state: rock_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_west + - state: rock_salt + map: [ "enum.MiningScannerVisualLayers.Overlay" ] # Basalt variants - type: entity @@ -1081,21 +1032,21 @@ name: basalt parent: WallRock components: - - type: Icon - sprite: Structures/Walls/rock.rsi - state: rock_wall - - type: Sprite - sprite: Structures/Walls/rock.rsi - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west + - type: Icon + sprite: Structures/Walls/rock.rsi + state: rock_wall + - type: Sprite + sprite: Structures/Walls/rock.rsi + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west - type: entity id: WallRockBasaltCoal @@ -1103,22 +1054,22 @@ description: An ore vein rich with coal. suffix: Coal components: - - type: OreVein - oreChance: 1.0 - currentOre: OreCoal - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_coal - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreCoal + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_coal + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockBasaltGold @@ -1126,22 +1077,22 @@ description: An ore vein rich with gold. suffix: Gold components: - - type: OreVein - oreChance: 1.0 - currentOre: OreGold - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_gold - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreGold + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_gold + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockBasaltDiamond @@ -1149,22 +1100,22 @@ description: An ore vein rich with diamonds. suffix: Diamond components: - - type: OreVein - oreChance: 1.0 - currentOre: OreDiamond - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_diamond - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreDiamond + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_diamond + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockBasaltPlasma @@ -1172,22 +1123,22 @@ description: An ore vein rich with plasma. suffix: Plasma components: - - type: OreVein - oreChance: 1.0 - currentOre: OrePlasma - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_phoron - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OrePlasma + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_phoron + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockBasaltQuartz @@ -1195,22 +1146,22 @@ description: An ore vein rich with quartz. suffix: Quartz components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSpaceQuartz - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_quartz - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSpaceQuartz + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_quartz + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockBasaltSilver @@ -1218,22 +1169,22 @@ description: An ore vein rich with silver. suffix: Silver components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSilver - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_silver - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSilver + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_silver + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockBasaltTin @@ -1241,22 +1192,22 @@ description: An ore vein rich with iron. suffix: Iron components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSteel - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_tin - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSteel + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_tin + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockBasaltUranium @@ -1264,22 +1215,22 @@ description: An ore vein rich with uranium. suffix: Uranium components: - - type: OreVein - oreChance: 1.0 - currentOre: OreUranium - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_uranium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreUranium + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_uranium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity @@ -1288,22 +1239,22 @@ description: An ore vein rich with bananium. suffix: Bananium components: - - type: OreVein - oreChance: 1.0 - currentOre: OreBananium - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_bananium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreBananium + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_bananium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockBasaltArtifactFragment @@ -1311,22 +1262,22 @@ 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_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_artifact_fragment - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreArtifactFragment + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_artifact_fragment + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockBasaltSalt @@ -1334,22 +1285,22 @@ description: An ore vein rich with salt. suffix: Salt components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSalt - - type: Sprite - layers: - - state: rock_wall - - map: [ "enum.EdgeLayer.South" ] - state: rock_wall_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_wall_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_wall_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_wall_west - - state: rock_salt - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSalt + - type: Sprite + layers: + - state: rock_wall + - map: [ "enum.EdgeLayer.South" ] + state: rock_wall_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_wall_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_wall_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_wall_west + - state: rock_salt + map: [ "enum.MiningScannerVisualLayers.Overlay" ] # Snow variants - type: entity @@ -1357,21 +1308,21 @@ name: snowdrift parent: WallRock components: - - type: Icon - sprite: Structures/Walls/rock.rsi - state: rock_snow - - type: Sprite - sprite: Structures/Walls/rock.rsi - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west + - type: Icon + sprite: Structures/Walls/rock.rsi + state: rock_snow + - type: Sprite + sprite: Structures/Walls/rock.rsi + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west - type: entity id: WallRockSnowCoal @@ -1379,22 +1330,22 @@ description: An ore vein rich with coal. suffix: Coal components: - - type: OreVein - oreChance: 1.0 - currentOre: OreCoal - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_coal - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreCoal + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_coal + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSnowGold @@ -1402,22 +1353,22 @@ description: An ore vein rich with gold. suffix: Gold components: - - type: OreVein - oreChance: 1.0 - currentOre: OreGold - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_gold - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreGold + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_gold + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSnowDiamond @@ -1425,22 +1376,22 @@ description: An ore vein rich with diamonds. suffix: Diamond components: - - type: OreVein - oreChance: 1.0 - currentOre: OreDiamond - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_diamond - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreDiamond + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_diamond + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSnowPlasma @@ -1448,22 +1399,22 @@ description: An ore vein rich with plasma. suffix: Plasma components: - - type: OreVein - oreChance: 1.0 - currentOre: OrePlasma - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_phoron - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OrePlasma + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_phoron + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSnowQuartz @@ -1471,22 +1422,22 @@ description: An ore vein rich with quartz. suffix: Quartz components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSpaceQuartz - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_quartz - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSpaceQuartz + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_quartz + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSnowSilver @@ -1494,22 +1445,22 @@ description: An ore vein rich with silver. suffix: Silver components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSilver - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_silver - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSilver + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_silver + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSnowTin @@ -1517,22 +1468,22 @@ description: An ore vein rich with iron. suffix: Iron components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSteel - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_tin - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSteel + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_tin + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSnowUranium @@ -1540,22 +1491,22 @@ description: An ore vein rich with uranium. suffix: Uranium components: - - type: OreVein - oreChance: 1.0 - currentOre: OreUranium - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_uranium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreUranium + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_uranium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity @@ -1564,22 +1515,22 @@ description: An ore vein rich with bananium. suffix: Bananium components: - - type: OreVein - oreChance: 1.0 - currentOre: OreBananium - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_bananium - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreBananium + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_bananium + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSnowArtifactFragment @@ -1587,22 +1538,22 @@ 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_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_artifact_fragment - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreArtifactFragment + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_artifact_fragment + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSnowSalt @@ -1610,22 +1561,22 @@ description: An ore vein rich with salt. suffix: Salt components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSalt - - type: Sprite - layers: - - state: rock_snow - - map: [ "enum.EdgeLayer.South" ] - state: rock_snow_south - - map: [ "enum.EdgeLayer.East" ] - state: rock_snow_east - - map: [ "enum.EdgeLayer.North" ] - state: rock_snow_north - - map: [ "enum.EdgeLayer.West" ] - state: rock_snow_west - - state: rock_salt - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSalt + - type: Sprite + layers: + - state: rock_snow + - map: [ "enum.EdgeLayer.South" ] + state: rock_snow_south + - map: [ "enum.EdgeLayer.East" ] + state: rock_snow_east + - map: [ "enum.EdgeLayer.North" ] + state: rock_snow_north + - map: [ "enum.EdgeLayer.West" ] + state: rock_snow_west + - state: rock_salt + map: [ "enum.MiningScannerVisualLayers.Overlay" ] # Sand variants - type: entity @@ -1633,21 +1584,21 @@ name: sandstone parent: WallRock components: - - type: Icon - sprite: Structures/Walls/rock.rsi - state: rock_sand - - 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: Icon + sprite: Structures/Walls/rock.rsi + state: rock_sand + - 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: WallRockSandCoal @@ -1655,22 +1606,22 @@ description: An ore vein rich with coal. suffix: Coal components: - - type: OreVein - oreChance: 1.0 - currentOre: OreCoal - - 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_coal - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreCoal + - 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_coal + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandGold @@ -1678,22 +1629,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandDiamond @@ -1701,22 +1652,22 @@ description: An ore vein rich with diamonds. suffix: Diamond components: - - type: OreVein - oreChance: 1.0 - currentOre: OreDiamond - - 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_diamond - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreDiamond + - 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_diamond + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandPlasma @@ -1724,22 +1675,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandQuartz @@ -1747,22 +1698,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandSilver @@ -1770,22 +1721,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandTin @@ -1793,22 +1744,22 @@ description: An ore vein rich with iron. suffix: Iron 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandUranium @@ -1816,22 +1767,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandBananium @@ -1839,22 +1790,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandArtifactFragment @@ -1862,22 +1813,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockSandSalt @@ -1885,22 +1836,22 @@ description: An ore vein rich with salt. suffix: Salt components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSalt - - 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_salt - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSalt + - 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_salt + map: [ "enum.MiningScannerVisualLayers.Overlay" ] # Chromite variants - type: entity @@ -1908,21 +1859,21 @@ name: chromite parent: WallRock components: - - type: Icon - sprite: Structures/Walls/rock.rsi - state: rock_chromite - - 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: Icon + sprite: Structures/Walls/rock.rsi + state: rock_chromite + - 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: WallRockChromiteCoal @@ -1930,22 +1881,22 @@ description: An ore vein rich with coal. suffix: Coal components: - - type: OreVein - oreChance: 1.0 - currentOre: OreCoal - - 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_coal - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreCoal + - 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_coal + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockChromiteGold @@ -1953,22 +1904,22 @@ 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_gold - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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_gold + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockChromiteDiamond @@ -1976,22 +1927,22 @@ description: An ore vein rich with diamonds. suffix: Diamond components: - - type: OreVein - oreChance: 1.0 - currentOre: OreDiamond - - 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_diamond - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreDiamond + - 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_diamond + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockChromitePlasma @@ -1999,22 +1950,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockChromiteQuartz @@ -2022,22 +1973,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockChromiteSilver @@ -2045,22 +1996,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockChromiteTin @@ -2068,22 +2019,22 @@ description: An ore vein rich with iron. suffix: Iron 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockChromiteUranium @@ -2091,22 +2042,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity @@ -2115,22 +2066,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockChromiteArtifactFragment @@ -2138,22 +2089,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockChromiteSalt @@ -2161,22 +2112,22 @@ description: An ore vein rich with salt. suffix: Salt components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSalt - - 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_salt - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSalt + - 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_salt + map: [ "enum.MiningScannerVisualLayers.Overlay" ] # Andesite variants - type: entity @@ -2184,21 +2135,21 @@ name: andesite parent: WallRock components: - - type: Icon - sprite: Structures/Walls/rock.rsi - state: rock_andesite - - 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: Icon + sprite: Structures/Walls/rock.rsi + state: rock_andesite + - 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: WallRockAndesiteCoal @@ -2206,22 +2157,22 @@ description: An ore vein rich with coal. suffix: Coal components: - - type: OreVein - oreChance: 1.0 - currentOre: OreCoal - - 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_coal - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreCoal + - 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_coal + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockAndesiteGold @@ -2229,22 +2180,22 @@ 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_gold - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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_gold + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockAndesiteDiamond @@ -2252,22 +2203,22 @@ description: An ore vein rich with diamonds. suffix: Diamond components: - - type: OreVein - oreChance: 1.0 - currentOre: OreDiamond - - 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_diamond - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreDiamond + - 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_diamond + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockAndesitePlasma @@ -2275,22 +2226,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockAndesiteQuartz @@ -2298,22 +2249,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockAndesiteSilver @@ -2321,22 +2272,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockAndesiteTin @@ -2344,22 +2295,22 @@ description: An ore vein rich with iron. suffix: Iron 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockAndesiteUranium @@ -2367,22 +2318,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity @@ -2391,22 +2342,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockAndesiteArtifactFragment @@ -2414,22 +2365,22 @@ 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 - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - 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 + map: [ "enum.MiningScannerVisualLayers.Overlay" ] - type: entity id: WallRockAndesiteSalt @@ -2437,19 +2388,19 @@ description: An ore vein rich with salt. suffix: Salt components: - - type: OreVein - oreChance: 1.0 - currentOre: OreSalt - - 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_salt - map: [ "enum.MiningScannerVisualLayers.Overlay" ] + - type: OreVein + oreChance: 1.0 + currentOre: OreSalt + - 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_salt + map: [ "enum.MiningScannerVisualLayers.Overlay" ] diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml index 97823cec28..3c2f8c1de1 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml @@ -900,7 +900,6 @@ parent: BaseWall id: WallShuttle name: shuttle wall - suffix: Reinforced, Exterior components: - type: Damageable damageContainer: StructuralInorganic @@ -957,51 +956,6 @@ - type: Reflect reflectProb: 1 -- type: entity - parent: BaseWall - id: WallShuttleInterior - name: shuttle wall - suffix: Interior - components: - - type: RCDDeconstructable - cost: 6 - delay: 8 - fx: EffectRCDDeconstruct8 - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 400 - behaviors: - - !type:DoActsBehavior - acts: ["Destruction"] - - !type:PlaySoundBehavior - sound: - collection: MetalSlam - - trigger: - !type:DamageTrigger - damage: 200 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: MetalSlam - - !type:ChangeConstructionNodeBehavior - node: girder - - !type:DoActsBehavior - acts: ["Destruction"] - - type: Sprite - sprite: Structures/Walls/shuttleinterior.rsi - - type: Icon - sprite: Structures/Walls/shuttleinterior.rsi - - type: Construction - graph: Girder - node: shuttleInteriorWall - - type: IconSmooth - key: walls - base: state - - type: Reflect - reflectProb: 1 - - type: entity parent: BaseWall id: WallSolid diff --git a/Resources/Prototypes/Flavors/flavors.yml b/Resources/Prototypes/Flavors/flavors.yml index ffd6fe40b8..a24de46b55 100644 --- a/Resources/Prototypes/Flavors/flavors.yml +++ b/Resources/Prototypes/Flavors/flavors.yml @@ -599,6 +599,11 @@ flavorType: Complex description: flavor-complex-irish-slammer +- type: flavor + id: alienbrainhemorrhage + flavorType: Complex + description: flavor-complex-alien-brain-hemorrhage + - type: flavor id: vodkaredbool flavorType: Complex @@ -624,6 +629,11 @@ flavorType: Complex description: flavor-complex-watermelon-wakeup +- type: flavor + id: electricshark + flavorType: Complex + description: flavor-complex-electric-shark + - type: flavor id: rubberneck flavorType: Complex @@ -749,6 +759,11 @@ flavorType: Complex description: flavor-complex-coconut-rum +- type: flavor + id: darkandstormy + flavorType: Complex + description: flavor-complex-dark-and-stormy + - type: flavor id: coffeeliquor flavorType: Complex @@ -799,6 +814,11 @@ flavorType: Complex description: flavor-complex-arnold-palmer +- type: flavor + id: tortuga + flavorType: Complex + description: flavor-complex-tortuga + - type: flavor id: bluehawaiian flavorType: Complex @@ -859,6 +879,11 @@ flavorType: Complex description: flavor-complex-iced-beer +- type: flavor + id: radler + flavorType: Complex + description: flavor-complex-radler + - type: flavor id: gargleblaster flavorType: Complex @@ -894,6 +919,11 @@ flavorType: Complex description: flavor-complex-atomic-cola +- type: flavor + id: crushdepth + flavorType: Complex + description: flavor-complex-crush-depth + - type: flavor id: cubalibre flavorType: Complex @@ -904,6 +934,31 @@ flavorType: Complex description: flavor-complex-gin-tonic +- type: flavor + id: jackrose + flavorType: Complex + description: flavor-complex-jack-rose + +- type: flavor + id: junglebird + flavorType: Complex + description: flavor-complex-jungle-bird + +- type: flavor + id: kalimotxo + flavorType: Complex + description: flavor-complex-kalimotxo + +- type: flavor + id: vampiro + flavorType: Complex + description: flavor-complex-vampiro + +- type: flavor + id: bronx + flavorType: Complex + description: flavor-complex-bronx + - type: flavor id: screwdriver flavorType: Complex @@ -994,6 +1049,11 @@ flavorType: Complex description: flavor-complex-driest-martini +- type: flavor + id: eggnog + flavorType: Complex + description: flavor-complex-eggnog + - type: flavor id: erikasurprise flavorType: Complex @@ -1049,6 +1109,11 @@ flavorType: Complex description: flavor-complex-mojito +- type: flavor + id: monkeybusiness + flavorType: Complex + description: flavor-complex-monkey-business + - type: flavor id: neurotoxin flavorType: Complex diff --git a/Resources/Prototypes/GameRules/cargo_gifts.yml b/Resources/Prototypes/GameRules/cargo_gifts.yml index f4e4a5bf8f..8b687dd88c 100644 --- a/Resources/Prototypes/GameRules/cargo_gifts.yml +++ b/Resources/Prototypes/GameRules/cargo_gifts.yml @@ -16,7 +16,7 @@ - id: GiftsVendingRestock # Game Rules - + - type: entity id: CargoGiftsBase parent: BaseGameRule @@ -213,3 +213,4 @@ SecurityRiot: 2 SecurityRestraints: 2 SecurityNonLethal: 2 + SecurityNonlethalThrowables: 1 diff --git a/Resources/Prototypes/GameRules/roundstart.yml b/Resources/Prototypes/GameRules/roundstart.yml index bb855d93aa..f5730ab00c 100644 --- a/Resources/Prototypes/GameRules/roundstart.yml +++ b/Resources/Prototypes/GameRules/roundstart.yml @@ -447,3 +447,5 @@ orGroup: puddleMess - id: SmugglerStashVariationPass prob: 0.90 + - id: SolarPanelDamageVariationPass + - id: SolarPanelEmptyVariationPass diff --git a/Resources/Prototypes/GameRules/subgamemodes.yml b/Resources/Prototypes/GameRules/subgamemodes.yml index ef80a48cef..cb764d9787 100644 --- a/Resources/Prototypes/GameRules/subgamemodes.yml +++ b/Resources/Prototypes/GameRules/subgamemodes.yml @@ -20,7 +20,7 @@ definitions: - prefRoles: [ Thief ] max: 3 - playerRatio: 15 + playerRatio: 20 lateJoinAdditional: true allowNonHumans: true multiAntagSetting: NotExclusive diff --git a/Resources/Prototypes/GameRules/variation.yml b/Resources/Prototypes/GameRules/variation.yml index 093a832d72..d080965697 100644 --- a/Resources/Prototypes/GameRules/variation.yml +++ b/Resources/Prototypes/GameRules/variation.yml @@ -123,3 +123,25 @@ blacklist: components: - ParticleAcceleratorControlBox + +- type: entity + id: SolarPanelDamageVariationPass + parent: BaseVariationPass + components: + - type: SolarPanelReplaceVariationPass + - type: EntityReplaceVariationPass + entitiesPerReplacementAverage: 30 + entitiesPerReplacementStdDev: 5 + replacements: + - id: SolarPanelBroken + +- type: entity + id: SolarPanelEmptyVariationPass + parent: BaseVariationPass + components: + - type: SolarPanelReplaceVariationPass + - type: EntityReplaceVariationPass + entitiesPerReplacementAverage: 30 + entitiesPerReplacementStdDev: 5 + replacements: + - id: SolarAssembly diff --git a/Resources/Prototypes/Hydroponics/seeds.yml b/Resources/Prototypes/Hydroponics/seeds.yml index 68524b15ff..55cec210af 100644 --- a/Resources/Prototypes/Hydroponics/seeds.yml +++ b/Resources/Prototypes/Hydroponics/seeds.yml @@ -932,8 +932,8 @@ idealHeat: 298 chemicals: Egg: - Min: 1 - Max: 10 + Min: 4 + Max: 12 PotencyDivisor: 10 - type: seed diff --git a/Resources/Prototypes/Loadouts/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Loadouts/Jobs/Medical/medical_doctor.yml index db5f2edae8..3b43df4d4b 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Medical/medical_doctor.yml @@ -175,3 +175,14 @@ id: SterileMask equipment: mask: ClothingMaskSterile + +#Eyewear +- type: loadout + id: MedicalHud + equipment: + eyes: ClothingEyesHudMedical + +- type: loadout + id: MedicalEyePatchHud + equipment: + eyes: ClothingEyesEyepatchHudMedical diff --git a/Resources/Prototypes/Loadouts/Jobs/Medical/paramedic.yml b/Resources/Prototypes/Loadouts/Jobs/Medical/paramedic.yml index 95d18d4ea2..1cfe227872 100644 --- a/Resources/Prototypes/Loadouts/Jobs/Medical/paramedic.yml +++ b/Resources/Prototypes/Loadouts/Jobs/Medical/paramedic.yml @@ -31,4 +31,3 @@ id: BlueShoes equipment: shoes: ClothingShoesColorBlue - diff --git a/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml b/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml index 68eea05131..e1d45e4784 100644 --- a/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml +++ b/Resources/Prototypes/Loadouts/Miscellaneous/trinkets.yml @@ -166,6 +166,12 @@ back: - ClothingNeckPansexualPin +- type: loadout + id: ClothingNeckPluralPin + storage: + back: + - ClothingNeckPluralPin + - type: loadout id: ClothingNeckOmnisexualPin storage: @@ -178,6 +184,12 @@ back: - ClothingNeckGenderqueerPin +- type: loadout + id: ClothingNeckGenderfluidPin + storage: + back: + - ClothingNeckGenderfluidPin + - type: loadout id: ClothingNeckTransPin storage: diff --git a/Resources/Prototypes/Loadouts/loadout_groups.yml b/Resources/Prototypes/Loadouts/loadout_groups.yml index eb36bc3001..04b11056f3 100644 --- a/Resources/Prototypes/Loadouts/loadout_groups.yml +++ b/Resources/Prototypes/Loadouts/loadout_groups.yml @@ -29,8 +29,10 @@ - ClothingNeckLesbianPin - ClothingNeckNonBinaryPin - ClothingNeckPansexualPin + - ClothingNeckPluralPin - ClothingNeckOmnisexualPin - ClothingNeckGenderqueerPin + - ClothingNeckGenderfluidPin - ClothingNeckTransPin - ClothingNeckAutismPin - ClothingNeckGoldAutismPin @@ -1284,8 +1286,20 @@ name: loadout-group-paramedic-shoes loadouts: - BlueShoes + - WhiteShoes - MedicalWinterBoots +- type: loadoutGroup + id: MedicalEyewear + name: loadout-group-medical-glasses + minLimit: 0 + loadouts: + - MedicalHud + - MedicalEyePatchHud + - Glasses + - GlassesJamjar + - GlassesJensen + - type: loadoutGroup id: SurvivalMedical name: loadout-group-survival-medical diff --git a/Resources/Prototypes/Loadouts/role_loadouts.yml b/Resources/Prototypes/Loadouts/role_loadouts.yml index c2e154798b..cf4b443285 100644 --- a/Resources/Prototypes/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/Loadouts/role_loadouts.yml @@ -26,10 +26,10 @@ - GroupSpeciesBreathTool # Silicons -#- type: roleLoadout -# id: JobBorg -# nameDataset: roleloadout doesn't support both so need to update that first. -# canCustomizeName: true +- type: roleLoadout + id: JobBorg + nameDataset: NamesBorg + canCustomizeName: true - type: roleLoadout id: JobStationAi @@ -159,6 +159,7 @@ - type: roleLoadout id: JobClown + canCustomizeName: true groups: - GroupTankHarness - ClownHead @@ -172,6 +173,7 @@ - type: roleLoadout id: JobMime + canCustomizeName: true groups: - GroupTankHarness - MimeHead @@ -416,7 +418,7 @@ - ChiefMedicalOfficerOuterClothing - ChiefMedicalOfficerNeck - ChiefMedicalOfficerShoes - - Glasses + - MedicalEyewear - SurvivalMedical - Trinkets - GroupSpeciesBreathToolMedical @@ -433,7 +435,7 @@ - MedicalDoctorOuterClothing - MedicalShoes - MedicalDoctorPDA - - Glasses + - MedicalEyewear - SurvivalMedical - Trinkets - GroupSpeciesBreathToolMedical @@ -444,7 +446,7 @@ - GroupTankHarness - MedicalInternJumpsuit - MedicalBackpack - - Glasses + - MedicalEyewear - SurvivalMedical - Trinkets - GroupSpeciesBreathToolMedical @@ -474,7 +476,7 @@ - MedicalBackpack - ParamedicOuterClothing - ParamedicShoes - - Glasses + - MedicalEyewear - SurvivalMedical - Trinkets - GroupSpeciesBreathToolMedical diff --git a/Resources/Prototypes/Magic/animate_spell.yml b/Resources/Prototypes/Magic/animate_spell.yml index a9609c4f8a..6d1319944b 100644 --- a/Resources/Prototypes/Magic/animate_spell.yml +++ b/Resources/Prototypes/Magic/animate_spell.yml @@ -5,11 +5,10 @@ components: - type: EntityTargetAction useDelay: 0 - charges: 5 itemIconStyle: BigAction whitelist: components: - - Animateable # Currently on: SeatBase, TableBase, ClosetBase, BaseMachine, ConstructibleMachine, BaseComputer, BaseItem, CrateGeneric, StorageTank, GasCanister, BaseTarget + - Animateable # Currently on: SeatBase, TableBase, ClosetBase, BaseMachine, ConstructibleMachine, BaseComputer, BaseItem, CrateGeneric, StorageTank, GasCanister blacklist: components: - MindContainer @@ -18,7 +17,7 @@ - AnomalyGenerator - TegGenerator - TegCirculator - - Artifact + - XenoArtifact canTargetSelf: false interactOnMiss: false sound: !type:SoundPathSpecifier @@ -69,9 +68,11 @@ collection: MetalBreak - type: Hands - type: CanEscapeInventory + - type: MobCollision toRemove: - RequireProjectileTarget - BlockMovement - Item + - MeleeRequiresWield speech: action-speech-spell-animate doSpeech: false diff --git a/Resources/Prototypes/Magic/projectile_spells.yml b/Resources/Prototypes/Magic/projectile_spells.yml index 71bbc096c5..eee8b1fc8a 100644 --- a/Resources/Prototypes/Magic/projectile_spells.yml +++ b/Resources/Prototypes/Magic/projectile_spells.yml @@ -30,8 +30,6 @@ description: Fires a fireball, but faster! components: - type: WorldTargetAction - useDelay: 10 - renewCharges: true itemIconStyle: BigAction checkCanAccess: false raiseOnUser: true @@ -52,8 +50,6 @@ description: The fastest fireball in the west! components: - type: WorldTargetAction - useDelay: 8 - renewCharges: true itemIconStyle: BigAction checkCanAccess: false raiseOnUser: true diff --git a/Resources/Prototypes/Magic/staves.yml b/Resources/Prototypes/Magic/staves.yml index 0582899495..ff43db866e 100644 --- a/Resources/Prototypes/Magic/staves.yml +++ b/Resources/Prototypes/Magic/staves.yml @@ -7,6 +7,10 @@ name: RGB staff description: Helps fix the underabundance of RGB gear on the station. components: + - type: LimitedCharges + maxCharges: 25 + - type: AutoRecharge + rechargeDuration: 30 - type: Sprite sprite: Objects/Weapons/Guns/Basic/staves.rsi layers: @@ -14,6 +18,7 @@ - state: nothing-unshaded shader: unshaded - type: ActionOnInteract + requiresCharge: true actions: - ActionRgbLight - type: Item @@ -38,11 +43,16 @@ name: staff of animation description: Brings inanimate objects to life! components: + - type: LimitedCharges + maxCharges: 5 + - type: AutoRecharge + rechargeDuration: 30 - type: Sprite sprite: Objects/Weapons/Guns/Basic/staves.rsi layers: - state: animation - type: ActionOnInteract + requiresCharge: true actions: - ActionAnimateSpell - type: Item @@ -61,7 +71,6 @@ components: - type: EntityTargetAction whitelist: { components: [ PointLight ] } - charges: 25 sound: /Audio/Magic/blink.ogg event: !type:ChangeComponentsSpellEvent toAdd: diff --git a/Resources/Prototypes/Magic/teleport_scroll.yml b/Resources/Prototypes/Magic/teleport_scroll.yml new file mode 100644 index 0000000000..89c9ae5163 --- /dev/null +++ b/Resources/Prototypes/Magic/teleport_scroll.yml @@ -0,0 +1,26 @@ +- type: entity + id: WizardTeleportScroll + name: teleport scroll + suffix: Wizard + parent: [ BaseItem, BaseMagicalContraband ] + components: + - type: UserInterface + interfaces: + enum.TeleportLocationUiKey.Key: + type: TeleportLocationsBoundUserInterface + - type: ActivatableUI + key: enum.TeleportLocationUiKey.Key + - type: Sprite + sprite: Objects/Magic/magicactions.rsi + layers: + - state: spell_default + - type: TeleportLocations + name: teleportation-scroll-window-title + teleportEffect: WizardSmoke + closeAfterTeleport: true + speech: teleportation-scroll-speech-wizard + - type: UseDelay + delay: 1 + delays: + TeleportDelay: !type:UseDelayInfo + length: 300 diff --git a/Resources/Prototypes/Maps/Pools/deathmatch.yml b/Resources/Prototypes/Maps/Pools/deathmatch.yml index deb911b3eb..49307f892d 100644 --- a/Resources/Prototypes/Maps/Pools/deathmatch.yml +++ b/Resources/Prototypes/Maps/Pools/deathmatch.yml @@ -1,4 +1,4 @@ - type: gameMapPool id: NOCP14DeathMatchMapPool maps: - - MeteorArena \ No newline at end of file + - MeteorArena diff --git a/Resources/Prototypes/Maps/arenas.yml b/Resources/Prototypes/Maps/arenas.yml index 92ba47bafb..314e46afa5 100644 --- a/Resources/Prototypes/Maps/arenas.yml +++ b/Resources/Prototypes/Maps/arenas.yml @@ -1,3 +1,3 @@ # NOT USED # DO NOT REVERT! -# COPY OF THIS MAPS EXIST IN _CP14 FOLDERS \ No newline at end of file +# COPY OF THIS MAPS EXIST IN _CP14 FOLDERS diff --git a/Resources/Prototypes/Maps/bagel.yml b/Resources/Prototypes/Maps/bagel.yml index f4424f0bfb..397b2628ed 100644 --- a/Resources/Prototypes/Maps/bagel.yml +++ b/Resources/Prototypes/Maps/bagel.yml @@ -16,7 +16,7 @@ - type: StationEmergencyShuttle emergencyShuttlePath: /Maps/Shuttles/emergency_lox.yml - type: StationJobs - availableJobs: # 58 jobs total w/o latejoins & interns, 75 jobs total w/ latejoins & interns + availableJobs: # 60 jobs total w/o latejoins & interns, 77 jobs total w/ latejoins & interns #command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] @@ -46,9 +46,9 @@ #science (5) Scientist: [ 5, 5 ] ResearchAssistant: [ 4, 4 ] #intern, not counted - #security (8) + #security (10) Warden: [ 1, 1 ] - SecurityOfficer: [ 4, 4 ] + SecurityOfficer: [ 6, 6 ] Detective: [ 1, 1 ] SecurityCadet: [ 4, 4 ] #intern, not counted Lawyer: [ 2, 2 ] diff --git a/Resources/Prototypes/Maps/box.yml b/Resources/Prototypes/Maps/box.yml index 891cab2c84..a63d48fef7 100644 --- a/Resources/Prototypes/Maps/box.yml +++ b/Resources/Prototypes/Maps/box.yml @@ -15,8 +15,8 @@ - type: StationEmergencyShuttle emergencyShuttlePath: /Maps/Shuttles/emergency_box.yml - type: StationJobs - availableJobs: # 63 jobs total w/o latejoins & interns, 81 jobs total w/ latejoins & interns - #command (7) + availableJobs: # 63 jobs total w/o latejoins & interns, 82 jobs total w/ latejoins & interns + #Command (7) Captain: [ 1, 1 ] HeadOfPersonnel: [ 1, 1 ] HeadOfSecurity: [ 1, 1 ] @@ -24,7 +24,7 @@ ChiefEngineer: [ 1, 1 ] ResearchDirector: [ 1, 1 ] Quartermaster: [ 1, 1 ] - #service (14) + #Service (14) Bartender: [ 2, 2 ] Botanist: [ 3, 3 ] Chef: [ 2, 2 ] @@ -33,33 +33,33 @@ Librarian: [ 1, 1 ] Reporter: [ 1, 1 ] ServiceWorker: [ 2, 2 ] - #engineering (8) + #Engineering (8) AtmosphericTechnician: [ 3, 3 ] StationEngineer: [ 5, 5 ] TechnicalAssistant: [ 4, 4 ] #intern, exclude from dept count - #medical (8) + #Medical (8) Chemist: [ 2, 2 ] MedicalDoctor: [ 4, 4 ] Paramedic: [ 1, 1 ] MedicalIntern: [ 4, 4 ] #intern, exclude from dept count Psychologist: [ 1, 1 ] - #science (5) + #Science (5) Scientist: [ 5, 5 ] ResearchAssistant: [ 4, 4 ] #intern, exclude from dept count - #security (9 - 11) + #Security (9 - 11) Warden: [ 1, 1 ] SecurityOfficer: [ 5, 7 ] Detective: [ 1, 1 ] SecurityCadet: [ 2, 4 ] #intern, exclude from dept count Lawyer: [ 2, 2 ] - #supply (6) + #Supply (6) SalvageSpecialist: [ 3, 3 ] CargoTechnician: [ 3, 3 ] - #civilian (3+) + #Civilian (3+) Passenger: [ -1, -1 ] #infinite, not counted Clown: [ 1, 1 ] Mime: [ 1, 1 ] Musician: [ 1, 1 ] - #silicon (3) + #Silicon (3) StationAi: [ 1, 1 ] - Borg: [ 2, 2 ] + Borg: [ 2, 3 ] diff --git a/Resources/Prototypes/Objectives/paradoxClone.yml b/Resources/Prototypes/Objectives/paradoxClone.yml index 40a1021676..34b41050c7 100644 --- a/Resources/Prototypes/Objectives/paradoxClone.yml +++ b/Resources/Prototypes/Objectives/paradoxClone.yml @@ -34,7 +34,7 @@ components: - type: PickSpecificPerson - type: KillPersonCondition - requireDead: true # don't count missing evac as killing + requireDead: true - type: TargetObjective title: objective-condition-kill-head-title # kill <name>, <job> diff --git a/Resources/Prototypes/Objectives/traitor.yml b/Resources/Prototypes/Objectives/traitor.yml index de222df6cc..4b6d9e0e66 100644 --- a/Resources/Prototypes/Objectives/traitor.yml +++ b/Resources/Prototypes/Objectives/traitor.yml @@ -16,7 +16,7 @@ components: - type: Objective icon: - sprite: Objects/Misc/bureaucracy.rsi + sprite: Objects/Misc/folders.rsi state: folder-white - type: MultipleTraitorsRequirement @@ -83,19 +83,21 @@ - type: entity parent: [BaseTraitorObjective, BaseKillObjective] id: KillRandomPersonObjective - description: Do it however you like, just make sure they don't make it to centcomm. + description: Do it however you like, just make sure they don't get off the station. components: - type: Objective difficulty: 1.75 unique: false - type: TargetObjective - title: objective-condition-kill-person-title + title: objective-condition-maroon-person-title - type: PickRandomPerson + - type: KillPersonCondition + requireMaroon: true - type: entity parent: [BaseTraitorObjective, BaseKillObjective] id: KillRandomHeadObjective - description: We need this head gone and you probably know why. Good luck, agent. + description: We need this head gone and you probably know why. Make sure they don't make it to CentComm, even if they're dead. Good luck, agent. components: - type: Objective # technically its still possible for KillRandomPersonObjective to roll a head but this is guaranteed, so higher difficulty @@ -103,12 +105,13 @@ # killing 1 head is enough unique: true - type: TargetObjective - title: objective-condition-kill-head-title + title: objective-condition-kill-maroon-title - type: PickRandomHead - type: KillPersonCondition # don't count missing evac as killing as heads are higher profile, so you really need to do the dirty work # if ce flies a shittle to centcom you better find a way onto it requireDead: true + requireMaroon: true # social diff --git a/Resources/Prototypes/Parallaxes/amber.yml b/Resources/Prototypes/Parallaxes/amber.yml new file mode 100644 index 0000000000..9d939b4f25 --- /dev/null +++ b/Resources/Prototypes/Parallaxes/amber.yml @@ -0,0 +1,52 @@ +- type: parallax + id: AmberStation + layers: + - texture: + !type:ImageParallaxTextureSource + path: "/Textures/Parallaxes/space_map2.png" + slowness: 0.995 + scale: "1, 1" + - texture: + !type:GeneratedParallaxTextureSource + id: "hq_wizard_stars" + configPath: "/Prototypes/Parallaxes/parallax_config_stars.toml" + slowness: 0.994 + - texture: + !type:GeneratedParallaxTextureSource + id: "hq_wizard_stars_dim" + configPath: "/Prototypes/Parallaxes/parallax_config_stars_dim.toml" + slowness: 0.993 + - texture: + !type:ImageParallaxTextureSource + path: "/Textures/Parallaxes/Asteroids.png" + slowness: 0.990 + scale: "0.4, 0.4" + worldHomePosition: "20.0, 100.0" + scrolling: "0.01, 0.0" + - texture: + !type:ImageParallaxTextureSource + path: "/Textures/Parallaxes/Asteroids.png" + slowness: 0.987 + scale: "0.6, 0.6" + scrolling: "-0.01, 0.0" + - texture: + !type:ImageParallaxTextureSource + path: "/Textures/Parallaxes/debris_large.png" + slowness: 0.97 + scale: "0.45, 0.45" + scrolling: "0.02, 0.0" + worldHomePosition: "0.0, -100" + - texture: + !type:ImageParallaxTextureSource + path: "/Textures/Parallaxes/debris_small.png" + slowness: 0.95 + scale: "0.50, 0.50" + scrolling: "-0.02, 0.0" + worldHomePosition: "0.0, 100" + layersLQ: + - texture: + !type:GeneratedParallaxTextureSource + id: "" + configPath: "/Prototypes/Parallaxes/parallax_config.toml" + slowness: 0.875 + layersLQUseHQ: false diff --git a/Resources/Prototypes/Polymorphs/polymorph.yml b/Resources/Prototypes/Polymorphs/polymorph.yml index 935b2b27f5..06ec7b0e50 100644 --- a/Resources/Prototypes/Polymorphs/polymorph.yml +++ b/Resources/Prototypes/Polymorphs/polymorph.yml @@ -222,3 +222,18 @@ polymorphSound: /Audio/Magic/ethereal_enter.ogg exitPolymorphSound: /Audio/Magic/ethereal_exit.ogg duration: 3 + +# Desynchronized / Void Pocket status +- type: polymorph + id: VoidPocket + configuration: + entity: DesynchronizedPocket + transferName: false + inventory: None + forced: false + revertOnDeath: true + allowRepeatedMorphs: false + polymorphSound: /Audio/Magic/ethereal_enter.ogg + exitPolymorphSound: /Audio/Magic/ethereal_exit.ogg + duration: 120 + effectProto: EffectDesynchronizer \ No newline at end of file diff --git a/Resources/Prototypes/RCD/rcd.yml b/Resources/Prototypes/RCD/rcd.yml index f476f06dc4..5fb5356f91 100644 --- a/Resources/Prototypes/RCD/rcd.yml +++ b/Resources/Prototypes/RCD/rcd.yml @@ -6,7 +6,7 @@ - type: rcd id: Deconstruct name: rcd-component-deconstruct - category: WallsAndFlooring + category: Main sprite: /Textures/Interface/Radial/RCD/deconstruct.png mode: Deconstruct prototype: EffectRCDDeconstructPreview diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml index e13b34e5fc..bd55967c79 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/alcohol.yml @@ -133,7 +133,6 @@ name: reagent-name-ethanol parent: BaseAlcohol desc: reagent-desc-ethanol - slippery: true physicalDesc: reagent-physical-desc-strong-smelling flavor: alcohol color: "#b05b3c" @@ -473,6 +472,21 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false +- type: reagent + id: AlienBrainHemorrhage + name: reagent-name-alien-brain-hemorrhage + parent: BaseAlcohol + desc: reagent-desc-alien-brain-hemorrhage + physicalDesc: reagent-physical-desc-creamy + flavor: alienbrainhemorrhage + color: "#FFFDD0" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/alienbrainhemorrhage.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + - type: reagent id: AlliesCocktail name: reagent-name-allies-cocktail @@ -753,6 +767,21 @@ reagent: Ethanol amount: 0.2 +- type: reagent + id: Bronx + name: reagent-name-bronx + parent: BaseAlcohol + desc: reagent-desc-bronx + physicalDesc: reagent-physical-desc-strong-smelling + flavor: bronx + color: "#d68829" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/bronx.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + - type: reagent id: CoconutRum name: reagent-name-coconut-rum @@ -799,6 +828,21 @@ reagent: Ethanol amount: 0.15 +- type: reagent + id: CrushDepth + name: reagent-name-crush-depth + parent: BaseAlcohol + desc: reagent-desc-crush-depth + physicalDesc: reagent-physical-desc-cloudy + flavor: crushdepth + color: "#0a0a33" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/crushdepth.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + - type: reagent id: CubaLibre name: reagent-name-cuba-libre @@ -823,6 +867,21 @@ amount: 0.07 fizziness: 0.2 +- type: reagent + id: DarkandStormy + name: reagent-name-dark-and-stormy + parent: BaseAlcohol + desc: reagent-desc-dark-and-stormy + physicalDesc: reagent-physical-desc-bubbly + flavor: darkandstormy + color: "#cf7f17" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/dark&stormy.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + - type: reagent id: DemonsBlood name: reagent-name-demons-blood @@ -909,6 +968,36 @@ reagent: Ethanol amount: 0.15 +- type: reagent + id: Eggnog + name: reagent-name-eggnog + parent: BaseAlcohol + desc: reagent-desc-eggnog + physicalDesc: reagent-physical-desc-creamy + flavor: eggnog + color: "#e6d6bc" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/eggnogglass.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + +- type: reagent + id: ElectricShark + name: reagent-name-electric-shark + parent: BaseAlcohol + desc: reagent-desc-electric-shark + physicalDesc: reagent-physical-desc-tropical + flavor: electricshark + color: "#3097cf" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/electricshark.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + - type: reagent id: ErikaSurprise name: reagent-name-erika-surprise @@ -1143,6 +1232,51 @@ reagent: Ethanol amount: 0.15 +- type: reagent + id: JackRose + name: reagent-name-jack-rose + parent: BaseAlcohol + desc: reagent-desc-jack-rose + physicalDesc: reagent-physical-desc-tart + flavor: jackrose + color: "#f53b3b" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/jackrose.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + +- type: reagent + id: JungleBird + name: reagent-name-jungle-bird + parent: BaseAlcohol + desc: reagent-desc-jungle-bird + physicalDesc: reagent-physical-desc-tropical + flavor: junglebird + color: "#f27c3d" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/junglebird.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + +- type: reagent + id: Kalimotxo + name: reagent-name-kalimotxo + parent: BaseAlcohol + desc: reagent-desc-kalimotxo + physicalDesc: reagent-physical-desc-bubbly + flavor: kalimotxo + color: "#360606" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/kalimotxo.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + - type: reagent id: LongIslandIcedTea name: reagent-name-long-island-iced-tea @@ -1282,6 +1416,21 @@ metamorphicChangeColor: false fizziness: 0.3 +- type: reagent + id: MonkeyBusiness + name: reagent-name-monkey-business + parent: BaseAlcohol + desc: reagent-desc-monkey-business + physicalDesc: reagent-physical-desc-tart + flavor: monkeybusiness + color: "#d6b929" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/monkeybusiness.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + - type: reagent id: Moonshine name: reagent-name-moonshine @@ -1426,6 +1575,21 @@ reagent: Ethanol amount: 0.2 +- type: reagent + id: Radler + name: reagent-name-radler + parent: BaseAlcohol + desc: reagent-desc-radler + physicalDesc: reagent-physical-desc-citric + flavor: radler + color: "#edff2b" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/radler.rsi + state: icon_empty + metamorphicMaxFillLevels: 5 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + - type: reagent id: Sbiten name: reagent-name-sbiten @@ -1656,6 +1820,21 @@ metamorphicFillBaseName: fill- metamorphicChangeColor: false +- type: reagent + id: Vampiro + name: reagent-name-vampiro + parent: BaseAlcohol + desc: reagent-desc-vampiro + physicalDesc: reagent-physical-desc-spicy + flavor: vampiro + color: "#b51b1b" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/vampiro.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false + - type: reagent id: VodkaMartini name: reagent-name-vodka-martini diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/base_drink.yml b/Resources/Prototypes/Reagents/Consumable/Drink/base_drink.yml index 19a5e1bf8f..c5cbaea8d3 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/base_drink.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/base_drink.yml @@ -2,7 +2,8 @@ id: BaseDrink group: Drinks abstract: true - slippery: true + slipData: + requiredSlipSpeed: 3.5 metabolisms: Drink: effects: @@ -46,6 +47,9 @@ id: BaseAlcohol group: Drinks abstract: true + slipData: + requiredSlipSpeed: 3.5 + friction: 0.4 metabolisms: Drink: effects: diff --git a/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml b/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml index f72733d15d..028b0c4a8a 100644 --- a/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml +++ b/Resources/Prototypes/Reagents/Consumable/Drink/drinks.yml @@ -435,13 +435,15 @@ name: reagent-name-water parent: BaseDrink desc: reagent-desc-water - slippery: true + evaporationSpeed: 0.3 + absorbent: true physicalDesc: reagent-physical-desc-translucent flavor: water color: "#75b1f0" recognizable: true boilingPoint: 100.0 meltingPoint: 0.0 + friction: 0.4 metabolisms: Drink: effects: @@ -452,12 +454,15 @@ id: Ice name: reagent-name-ice desc: reagent-desc-ice + slipData: + requiredSlipSpeed: 3.5 physicalDesc: reagent-physical-desc-frosty flavor: cold color: "#bed8e6" recognizable: true meltingPoint: 0.0 boilingPoint: 100.0 + friction: 0.05 #Copied from Ice Crust plantMetabolism: - !type:PlantAdjustWater amount: 1 @@ -588,3 +593,18 @@ effects: - !type:SatiateThirst factor: 0.6 + +- type: reagent + id: Tortuga + name: reagent-name-tortuga + parent: BaseDrink + desc: reagent-desc-tortuga + physicalDesc: reagent-physical-desc-sweet + flavor: tortuga + color: "#1c8c40" + metamorphicSprite: + sprite: Objects/Consumable/Drinks/tortuga.rsi + state: icon_empty + metamorphicMaxFillLevels: 4 + metamorphicFillBaseName: fill- + metamorphicChangeColor: false diff --git a/Resources/Prototypes/Reagents/Consumable/Food/condiments.yml b/Resources/Prototypes/Reagents/Consumable/Food/condiments.yml index f419605307..addc85096d 100644 --- a/Resources/Prototypes/Reagents/Consumable/Food/condiments.yml +++ b/Resources/Prototypes/Reagents/Consumable/Food/condiments.yml @@ -174,7 +174,6 @@ color: "#fb7125" recognizable: true physicalDesc: reagent-physical-desc-sticky - slippery: false viscosity: 0.55 #Start using syrup to attach your remote recievers to your microwaves! tileReactions: - !type:SpillTileReaction diff --git a/Resources/Prototypes/Reagents/biological.yml b/Resources/Prototypes/Reagents/biological.yml index 6490e87ffb..7e7c544c12 100644 --- a/Resources/Prototypes/Reagents/biological.yml +++ b/Resources/Prototypes/Reagents/biological.yml @@ -13,7 +13,6 @@ metamorphicChangeColor: false recognizable: true physicalDesc: reagent-physical-desc-ferrous - slippery: false metabolisms: Drink: effects: @@ -56,7 +55,6 @@ color: "#808A51" recognizable: true physicalDesc: reagent-physical-desc-slimy - slippery: false - type: reagent id: Slime @@ -67,7 +65,6 @@ color: "#2cf274" recognizable: true physicalDesc: reagent-physical-desc-viscous - slippery: false viscosity: 0.25 tileReactions: - !type:SpillTileReaction @@ -91,7 +88,6 @@ color: "#cd7314" recognizable: true physicalDesc: reagent-physical-desc-sticky - slippery: false viscosity: 0.10 tileReactions: - !type:SpillTileReaction @@ -118,7 +114,6 @@ color: "#162581" recognizable: true physicalDesc: reagent-physical-desc-metallic - slippery: false - type: reagent parent: Blood @@ -130,7 +125,6 @@ color: "#7a8bf2" recognizable: true physicalDesc: reagent-physical-desc-pungent - slippery: false - type: reagent id: ZombieBlood @@ -140,7 +134,6 @@ physicalDesc: reagent-physical-desc-necrotic flavor: bitter color: "#2b0700" - slippery: false metabolisms: Drink: # Disgusting! @@ -202,7 +195,6 @@ flavor: terrible color: "#d8d8b0" physicalDesc: reagent-physical-desc-exotic-smelling - slippery: false footstepSound: collection: FootstepBlood params: @@ -216,7 +208,9 @@ flavor: terrible color: "#87ab08" physicalDesc: reagent-physical-desc-pungent - slippery: true + slipData: + requiredSlipSpeed: 4.0 #It's not as slippery as water + friction: 0.4 metabolisms: Drink: effects: @@ -238,7 +232,6 @@ physicalDesc: reagent-physical-desc-neural flavor: mindful color: "#C584B8" - slippery: false metabolisms: Drink: effects: diff --git a/Resources/Prototypes/Reagents/chemicals.yml b/Resources/Prototypes/Reagents/chemicals.yml index 769b7748f3..4542c97565 100644 --- a/Resources/Prototypes/Reagents/chemicals.yml +++ b/Resources/Prototypes/Reagents/chemicals.yml @@ -76,7 +76,7 @@ Acidic: methods: [ Touch ] effects: - - !type:ActivateArtifact + - !type:ArtifactUnlock conditions: - !type:ReagentThreshold min: 5 @@ -165,7 +165,6 @@ flavor: bitter color: "#E6E6DA" physicalDesc: reagent-physical-desc-crystalline - slippery: false - type: reagent id: Rororium diff --git a/Resources/Prototypes/Reagents/cleaning.yml b/Resources/Prototypes/Reagents/cleaning.yml index a6b53be688..3f289d0486 100644 --- a/Resources/Prototypes/Reagents/cleaning.yml +++ b/Resources/Prototypes/Reagents/cleaning.yml @@ -68,7 +68,9 @@ id: SpaceLube name: reagent-name-space-lube desc: reagent-desc-space-lube - slippery: true + slipData: + requiredSlipSpeed: 1 + superSlippery: true physicalDesc: reagent-physical-desc-shiny flavor: funny color: "#77b58e" @@ -76,9 +78,8 @@ boilingPoint: 290.0 # Glycerin meltingPoint: 18.2 tileReactions: - - !type:SpillTileReaction - requiredSlipSpeed: 1 - superSlippery: true + - !type:SpillTileReaction + friction: 0.0 - type: reagent id: SpaceGlue @@ -89,9 +90,9 @@ color: "#ffffff" boilingPoint: 250.0 meltingPoint: 380.0 - viscosity: 0.5 tileReactions: - - !type:SpillTileReaction + - !type:SpillTileReaction + viscosity: 0.5 reactiveEffects: Acidic: methods: [ Touch ] diff --git a/Resources/Prototypes/Reagents/fun.yml b/Resources/Prototypes/Reagents/fun.yml index 00d31cbd10..adbf202c7e 100644 --- a/Resources/Prototypes/Reagents/fun.yml +++ b/Resources/Prototypes/Reagents/fun.yml @@ -170,7 +170,8 @@ id: Razorium name: reagent-name-razorium group: Toxins - slippery: true + slipData: + requiredSlipSpeed: 3.5 desc: reagent-desc-razorium physicalDesc: reagent-physical-desc-reflective flavor: sharp @@ -209,7 +210,8 @@ id: Fresium name: reagent-name-fresium group: Toxins - slippery: true + slipData: + requiredSlipSpeed: 3.5 desc: reagent-desc-fresium physicalDesc: reagent-physical-desc-frosty flavor: cold @@ -305,7 +307,8 @@ physicalDesc: reagent-physical-desc-funny flavor: funny color: "#FF4DD2" - slippery: true #clown juice gotta slip + slipData: + requiredSlipSpeed: 3.5 #clown juice gotta slip metabolisms: Medicine: effects: diff --git a/Resources/Prototypes/Reagents/gases.yml b/Resources/Prototypes/Reagents/gases.yml index 9ef508feea..ac39f2d725 100644 --- a/Resources/Prototypes/Reagents/gases.yml +++ b/Resources/Prototypes/Reagents/gases.yml @@ -8,6 +8,52 @@ boilingPoint: -183.0 meltingPoint: -218.4 metabolisms: + Poison: + effects: + - !type:Oxygenate + conditions: + - !type:OrganType + type: Human + - !type:Oxygenate + conditions: + - !type:OrganType + type: Animal + - !type:Oxygenate + conditions: + - !type:OrganType + type: Rat + - !type:Oxygenate + conditions: + - !type:OrganType + type: Plant + # Convert Oxygen into CO2. + - !type:ModifyLungGas + conditions: + - !type:OrganType + type: Vox + shouldHave: false + ratios: + CarbonDioxide: 1.0 + Oxygen: -1.0 + - !type:HealthChange + conditions: + - !type:OrganType + type: Vox + scaleByQuantity: true + ignoreResistances: true + damage: + types: + Poison: + 3 + - !type:AdjustAlert + alertType: Toxins + conditions: + - !type:ReagentThreshold + min: 0.5 + - !type:OrganType + type: Vox + clear: true + time: 5 Gas: effects: - !type:Oxygenate @@ -150,6 +196,32 @@ flavor: bitter color: "#66ff33" metabolisms: + Poison: + effects: + - !type:Oxygenate + conditions: + - !type:OrganType + type: Plant + - !type:HealthChange + conditions: + - !type:OrganType + type: Plant + shouldHave: false + - !type:OrganType + type: Vox + shouldHave: false + scaleByQuantity: true + ignoreResistances: true + damage: + types: + Poison: + 0.8 + - !type:Oxygenate + conditions: + - !type:OrganType + type: Plant + shouldHave: false + factor: -4 Gas: effects: - !type:Oxygenate @@ -236,6 +308,12 @@ boilingPoint: -88 meltingPoint: -90 metabolisms: + Poison: + effects: + - !type:HealthChange + damage: + types: + Poison: 2 Gas: effects: - !type:Emote @@ -317,6 +395,39 @@ boilingPoint: -195.8 meltingPoint: -210.0 metabolisms: + Narcotic: + effects: + - !type:HealthChange + scaleByQuantity: true + ignoreResistances: true + damage: + types: + Cellular: 1 + - !type:GenericStatusEffect + key: SeeingRainbows + component: SeeingRainbows + type: Add + time: 100 + refresh: false + - !type:Drunk + boozePower: 100 + - !type:PopupMessage + type: Local + messages: [ "frezon-lungs-cold" ] + probability: 0.1 + conditions: + - !type:ReagentThreshold + reagent: Frezon + min: 0.5 + - !type:PopupMessage + type: Local + visualType: Medium + messages: [ "frezon-euphoric" ] + probability: 0.1 + conditions: + - !type:ReagentThreshold + reagent: Frezon + min: 1 Gas: effects: - !type:HealthChange diff --git a/Resources/Prototypes/Reagents/pyrotechnic.yml b/Resources/Prototypes/Reagents/pyrotechnic.yml index 4bc1652da9..3ff7eb5ad6 100644 --- a/Resources/Prototypes/Reagents/pyrotechnic.yml +++ b/Resources/Prototypes/Reagents/pyrotechnic.yml @@ -149,13 +149,15 @@ parent: BasePyrotechnic desc: reagent-desc-welding-fuel physicalDesc: reagent-physical-desc-oily - slippery: true + slipData: + requiredSlipSpeed: 3.5 flavor: bitter flavorMinimum: 0.01 color: "#a76b1c" recognizable: true boilingPoint: -84.7 # Acetylene. Close enough. meltingPoint: -80.7 + friction: 0.4 tileReactions: - !type:FlammableTileReaction {} metabolisms: @@ -177,4 +179,4 @@ flavor: bitter color: "#9e6b38" boilingPoint: 190.0 # Perfluorooctanoic Acid. - meltingPoint: 45.0 \ No newline at end of file + meltingPoint: 45.0 diff --git a/Resources/Prototypes/Reagents/toxins.yml b/Resources/Prototypes/Reagents/toxins.yml index 6235136dbc..5f6e5581dd 100644 --- a/Resources/Prototypes/Reagents/toxins.yml +++ b/Resources/Prototypes/Reagents/toxins.yml @@ -171,7 +171,6 @@ flavor: sour color: "#48b3b8" physicalDesc: reagent-physical-desc-ferrous - slippery: false metabolisms: Drink: effects: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/food/meatball.yml b/Resources/Prototypes/Recipes/Construction/Graphs/food/meatball.yml index 647c163e79..9fac37b9c6 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/food/meatball.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/food/meatball.yml @@ -11,6 +11,13 @@ sound: /Audio/Effects/sizzle.ogg steps: - minTemperature: 335 + - to: meat patty + steps: + - tool: Rolling + doAfter: 1 - node: meatball cooked entity: FoodMeatMeatballCooked + + - node: meat patty + entity: FoodMeatPatty diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/food/patty.yml b/Resources/Prototypes/Recipes/Construction/Graphs/food/patty.yml new file mode 100644 index 0000000000..f82efe5543 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/food/patty.yml @@ -0,0 +1,15 @@ +# cooked meat patty +- type: constructionGraph + id: CookedPatty + start: start + graph: + - node: start + edges: + - to: cooked meat patty + completed: + - !type:PlaySound + sound: /Audio/Effects/sizzle.ogg + steps: + - minTemperature: 335 + - node: cooked meat patty + entity: FoodMeatPattyCooked diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml b/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml index b3c9cac926..4530cef1b2 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml @@ -123,6 +123,9 @@ entity: !type:BoardNodeEntity { container: board } edges: - to: monitorUnsecured + completed: + - !type:RaiseEvent + event: !type:MachineDeconstructedEvent steps: - tool: Prying doAfter: 1 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml index a68e1d50fb..444c327fdc 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/fence_metal.yml @@ -7,33 +7,21 @@ - !type:DeleteEntity { } edges: - to: straight - completed: - - !type:SnapToGrid - southRotation: true steps: - material: MetalRod amount: 5 doAfter: 6 - to: corner - completed: - - !type:SnapToGrid - southRotation: true steps: - material: MetalRod amount: 5 doAfter: 6 - to: end - completed: - - !type:SnapToGrid - southRotation: true steps: - material: MetalRod amount: 5 doAfter: 6 - to: gate - completed: - - !type:SnapToGrid - southRotation: true steps: - material: MetalRod amount: 5 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml index 99525b653b..7c0c7269db 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml @@ -134,22 +134,6 @@ amount: 2 doAfter: 2 - - to: shuttleInteriorWall - completed: - - !type:SnapToGrid - southRotation: true - conditions: - - !type:EntityAnchored { } - steps: - - material: MetalRod - amount: 2 - doAfter: 1 - - tool: Screwing - doAfter: 1 - - material: Steel - amount: 2 - doAfter: 1 - - node: wall entity: WallSolid edges: @@ -256,23 +240,6 @@ - tool: Prying doAfter: 5 - - node: shuttleInteriorWall - entity: WallShuttleInterior - edges: - - to: girder - completed: - - !type:SpawnPrototype - prototype: SheetSteel1 - amount: 2 - - !type:SpawnPrototype - prototype: PartRodMetal1 - amount: 2 - steps: - - tool: Welding - doAfter: 10 - - tool: Screwing - doAfter: 1 - - node: reinforcedGirder entity: ReinforcedGirder edges: @@ -304,9 +271,6 @@ doAfter: 1 - to: diagonalshuttleWall - completed: - - !type:SnapToGrid - southRotation: false conditions: - !type:EntityAnchored { } steps: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/grille_diagonal.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/grille_diagonal.yml index d24656faa5..6c32b96801 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/grille_diagonal.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/grille_diagonal.yml @@ -5,18 +5,12 @@ - node: start edges: - to: grilleDiagonal - completed: - - !type:SnapToGrid - southRotation: true steps: - material: MetalRod amount: 2 doAfter: 1 - to: clockworkGrilleDiagonal - completed: - - !type:SnapToGrid - southRotation: true steps: - material: MetalRod amount: 2 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/turnstile.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/turnstile.yml new file mode 100644 index 0000000000..cc1b8efb6a --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/turnstile.yml @@ -0,0 +1,33 @@ +- type: constructionGraph + id: Turnstile + start: start + graph: + - node: start + actions: + - !type:DeleteEntity { } + edges: + - to: turnstile + completed: + - !type:SnapToGrid + steps: + - material: MetalRod + amount: 4 + doAfter: 6 + - material: Steel + amount: 1 + doAfter: 2 + + - node: turnstile + entity: Turnstile + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: PartRodMetal1 + amount: 4 + - !type:DeleteEntity + steps: + - tool: Welding + doAfter: 4.0 + - tool: Cutting + doAfter: 2.0 diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 435524c854..11579ac9ba 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -232,24 +232,6 @@ conditions: - !type:TileNotBlocked -- type: construction - name: interior shuttle wall - id: InteriorShuttleWall - graph: Girder - startNode: start - targetNode: shuttleInteriorWall - category: construction-category-structures - description: Keeps the air in and the greytide out. - icon: - sprite: Structures/Walls/shuttleinterior.rsi - state: full - objectType: Structure - placementMode: SnapgridCenter - canRotate: false - canBuildInImpassable: false - conditions: - - !type:TileNotBlocked - - type: construction name: diagonal shuttle wall id: DiagonalShuttleWall @@ -814,6 +796,23 @@ conditions: - !type:TileNotBlocked +- type: construction + name: turnstile + id: Turnstile + graph: Turnstile + startNode: start + targetNode: turnstile + category: construction-category-structures + description: A mechanical door that permits one-way access and prevents tailgating. + icon: + sprite: Structures/Doors/turnstile.rsi + state: turnstile + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction name: shutter id: Shutters diff --git a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml index 28a47fdc21..589d98e34b 100644 --- a/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml +++ b/Resources/Prototypes/Recipes/Cooking/meal_recipes.yml @@ -1812,6 +1812,13 @@ solids: FoodDonkpocketCarp: 1 +- type: microwaveMealRecipe + id: RecipeDonkpocketMoth + name: warm moth-pocket recipe + result: FoodDonkpocketMothWarm + time: 5 + solids: + FoodDonkpocketMoth: 1 - type: microwaveMealRecipe id: RecipeHotChili @@ -2359,3 +2366,12 @@ FoodCheeseSlice: 1 FoodButterSlice: 1 +- type: microwaveMealRecipe + id: RecipeGrilledCheeseSandwichCotton + name: cotton grilled cheese sandwich recipe + result: FoodBakedGrilledCheeseSandwichCotton + time: 10 + solids: + FoodBreadCottonSlice: 2 + FoodCheeseSlice: 1 + FoodButterSlice: 1 diff --git a/Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml b/Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml index a0961a1669..d48731ad5a 100644 --- a/Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml +++ b/Resources/Prototypes/Recipes/Crafting/Graphs/artifact.yml @@ -10,4 +10,4 @@ amount: 4 doAfter: 5 - node: done - entity: VariedXenoArtifactItem + entity: ComplexXenoArtifactItem diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/clothing.yml b/Resources/Prototypes/Recipes/Lathes/Packs/clothing.yml index 728082036e..aa95781729 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/clothing.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/clothing.yml @@ -35,6 +35,11 @@ - ClothingHeadHatHopcap - ClothingUniformJumpsuitHoP - ClothingUniformJumpskirtHoP + # Generic + - ClothingHeadHatBeretCommand + - ClothingHeadHatCommandSoft + - ClothingUniformJumpskirtCommandGeneric + - ClothingUniformJumpsuitCommandGeneric - type: latheRecipePack id: ClothingEngineering diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/engineering.yml b/Resources/Prototypes/Recipes/Lathes/Packs/engineering.yml index cb868aa9c2..3ecd39cc98 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/engineering.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/engineering.yml @@ -16,6 +16,7 @@ - HandheldGPSBasic - TRayScanner - UtilityBelt + - ClothingOuterVestTank - HandheldStationMap - ClothingHeadHatWelding - ClothingHeadHatCone diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/science.yml b/Resources/Prototypes/Recipes/Lathes/Packs/science.yml index 42786937a7..c68b408cac 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/science.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/science.yml @@ -29,6 +29,7 @@ - HoloprojectorField - SignallerAdvanced - DeviceQuantumSpinInverter + - DeviceDesynchronizer - type: latheRecipePack id: ScienceClothing @@ -51,7 +52,6 @@ recipes: - WeaponPistolCHIMP - WeaponForceGun - - WeaponLaserSvalinn - WeaponProtoKineticAccelerator - WeaponTetherGun - WeaponGauntletGorilla diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/security.yml b/Resources/Prototypes/Recipes/Lathes/Packs/security.yml index a8eee17d5e..c2839b2379 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/security.yml @@ -127,6 +127,7 @@ - WeaponLaserCannon - WeaponLaserCarbine - WeaponXrayCannon + - WeaponTemperatureGun - type: latheRecipePack id: SecurityDisablers diff --git a/Resources/Prototypes/Recipes/Lathes/Packs/service.yml b/Resources/Prototypes/Recipes/Lathes/Packs/service.yml index a50a945291..b3b63009be 100644 --- a/Resources/Prototypes/Recipes/Lathes/Packs/service.yml +++ b/Resources/Prototypes/Recipes/Lathes/Packs/service.yml @@ -4,6 +4,7 @@ id: ServiceStatic recipes: - Bucket + - Ashtray - DrinkMug - DrinkMugMetal - DrinkGlass diff --git a/Resources/Prototypes/Recipes/Lathes/ammo.yml b/Resources/Prototypes/Recipes/Lathes/ammo.yml new file mode 100644 index 0000000000..908395a1e8 --- /dev/null +++ b/Resources/Prototypes/Recipes/Lathes/ammo.yml @@ -0,0 +1,490 @@ +# Base prototypes + +- type: latheRecipe + abstract: true + id: BaseAmmoRecipe + categories: + - Ammo + completetime: 5 + +- type: latheRecipe + abstract: true + parent: BaseAmmoRecipe + id: BaseAmmoBoxRecipe + categories: + - Ammo + - Boxes + +- type: latheRecipe + abstract: true + id: BaseEmptyAmmoRecipe + categories: + - Magazines + completetime: 1 + +## Recipes + +# .20 Rifle +- type: latheRecipe + parent: BaseEmptyAmmoRecipe + id: MagazineRifleEmpty + result: MagazineRifleEmpty + materials: + Steel: 25 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineRifle + result: MagazineRifle + materials: + Steel: 475 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineRifleIncendiary + result: MagazineRifleIncendiary + materials: + Steel: 25 + Plastic: 450 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineRiflePractice + result: MagazineRiflePractice + materials: + Steel: 175 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineRifleUranium + result: MagazineRifleUranium + materials: + Steel: 25 + Plastic: 300 + Uranium: 300 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxRifle + result: MagazineBoxRifle + materials: + Steel: 750 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxRifleIncendiary + result: MagazineBoxRifleIncendiary + materials: + Plastic: 750 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxRiflePractice + result: MagazineBoxRiflePractice + materials: + Steel: 250 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxRifleUranium + result: MagazineBoxRifleUranium + materials: + Plastic: 500 + Uranium: 500 + +# .30 Rifle +- type: latheRecipe + parent: BaseEmptyAmmoRecipe + id: MagazineLightRifleEmpty + result: MagazineLightRifleEmpty + materials: + Steel: 25 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineLightRifle + result: MagazineLightRifle + materials: + Steel: 565 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineLightRifleIncendiary + result: MagazineLightRifleIncendiary + materials: + Steel: 25 + Plastic: 540 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineLightRiflePractice + result: MagazineLightRiflePractice + materials: + Steel: 205 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineLightRifleUranium + result: MagazineLightRifleUranium + materials: + Steel: 25 + Plastic: 360 + Uranium: 360 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxLightRifle + result: MagazineBoxLightRifle + materials: + Steel: 900 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxLightRifleIncendiary + result: MagazineBoxLightRifleIncendiary + materials: + Plastic: 900 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxLightRiflePractice + result: MagazineBoxLightRiflePractice + materials: + Steel: 300 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxLightRifleUranium + result: MagazineBoxLightRifleUranium + materials: + Plastic: 600 + Uranium: 600 + +# .35 Auto +- type: latheRecipe + parent: BaseEmptyAmmoRecipe + id: MagazinePistolEmpty + result: MagazinePistolEmpty + materials: + Steel: 25 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazinePistol + result: MagazinePistol + materials: + Steel: 145 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazinePistolIncendiary + result: MagazinePistolIncendiary + materials: + Steel: 25 + Plastic: 120 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazinePistolPractice + result: MagazinePistolPractice + materials: + Steel: 85 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazinePistolUranium + result: MagazinePistolUranium + materials: + Steel: 25 + Plastic: 65 + Uranium: 120 + +- type: latheRecipe + parent: BaseEmptyAmmoRecipe + id: MagazinePistolSubMachineGunEmpty + result: MagazinePistolSubMachineGunEmpty + materials: + Steel: 30 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazinePistolSubMachineGun + result: MagazinePistolSubMachineGun + materials: + Steel: 300 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazinePistolSubMachineGunIncendiary + result: MagazinePistolSubMachineGunIncendiary + materials: + Steel: 25 + Plastic: 275 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazinePistolSubMachineGunUranium + result: MagazinePistolSubMachineGunUranium + materials: + Steel: 25 + Plastic: 250 + Uranium: 250 + +- type: latheRecipe + parent: BaseEmptyAmmoRecipe + id: MagazinePistolSubMachineGunTopMountedEmpty + result: MagazinePistolSubMachineGunTopMountedEmpty + materials: + Steel: 30 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazinePistolSubMachineGunTopMounted + result: MagazinePistolSubMachineGunTopMounted + materials: + Steel: 300 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxPistol + result: MagazineBoxPistol + materials: + Steel: 600 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxPistolIncendiary + result: MagazineBoxPistolIncendiary + materials: + Plastic: 600 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxPistolPractice + result: MagazineBoxPistolPractice + materials: + Steel: 300 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxPistolUranium + result: MagazineBoxPistolUranium + materials: + Plastic: 300 + Uranium: 600 + +# .45 Magnum +- type: latheRecipe + parent: BaseEmptyAmmoRecipe + id: SpeedLoaderMagnumEmpty + result: SpeedLoaderMagnumEmpty + materials: + Steel: 50 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: SpeedLoaderMagnum + result: SpeedLoaderMagnum + materials: + Steel: 190 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: SpeedLoaderMagnumIncendiary + result: SpeedLoaderMagnumIncendiary + materials: + Steel: 50 + Plastic: 150 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: SpeedLoaderMagnumPractice + result: SpeedLoaderMagnumPractice + materials: + Steel: 90 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: SpeedLoaderMagnumUranium + result: SpeedLoaderMagnumUranium + materials: + Steel: 50 + Plastic: 150 + Uranium: 110 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxMagnum + result: MagazineBoxMagnum + materials: + Steel: 240 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxMagnumIncendiary + result: MagazineBoxMagnumIncendiary + materials: + Plastic: 240 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxMagnumPractice + result: MagazineBoxMagnumPractice + materials: + Steel: 60 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: MagazineBoxMagnumUranium + result: MagazineBoxMagnumUranium + materials: + Plastic: 240 + Uranium: 180 + +# .50 Shell +- type: latheRecipe + parent: BaseEmptyAmmoRecipe + id: MagazineShotgunEmpty + result: MagazineShotgunEmpty + materials: + Steel: 50 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineShotgun + result: MagazineShotgun + materials: + Steel: 240 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineShotgunIncendiary + result: MagazineShotgunIncendiary + materials: + Steel: 100 + Plastic: 190 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineShotgunBeanbag + result: MagazineShotgunBeanbag + materials: + Steel: 150 + Plastic: 140 + +- type: latheRecipe + parent: BaseAmmoRecipe + id: MagazineShotgunSlug + result: MagazineShotgunSlug + materials: + Steel: 190 + Plastic: 100 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: BoxLethalshot + result: BoxLethalshot + materials: + Steel: 320 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: BoxShotgunIncendiary + result: BoxShotgunIncendiary + materials: + Steel: 80 + Plastic: 320 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: BoxShotgunPractice + result: BoxShotgunPractice + materials: + Steel: 80 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: BoxShotgunUranium + result: BoxShotgunUranium + materials: + Plastic: 320 + Uranium: 240 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: BoxBeanbag + result: BoxBeanbag + materials: + Steel: 160 + Plastic: 240 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: BoxShotgunSlug + result: BoxShotgunSlug + materials: + Steel: 240 + Plastic: 160 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: BoxShellTranquilizer + result: BoxShellTranquilizer + materials: + Plastic: 240 + Steel: 160 + Glass: 80 + Plasma: 160 + Silver: 80 + +- type: latheRecipe + parent: BaseAmmoBoxRecipe + id: BoxShotgunFlare + result: BoxShotgunFlare + materials: + Steel: 80 + Plastic: 80 + +# Encampment ammo +- type: latheRecipe + id: MagazineGrenadeEmpty + result: MagazineGrenadeEmpty + categories: + - Magazines + completetime: 3 + materials: + Steel: 150 + Plastic: 50 + +- type: latheRecipe + id: GrenadeEMP + result: GrenadeEMP + categories: + - Ammo + completetime: 3 + materials: + Steel: 150 + Plastic: 100 + Glass: 20 + +- type: latheRecipe + id: GrenadeBlast + result: GrenadeBlast + categories: + - Ammo + completetime: 3 + materials: + Steel: 450 + Plastic: 300 + Gold: 150 + +- type: latheRecipe + id: GrenadeFlash + result: GrenadeFlash + categories: + - Ammo + completetime: 3 + materials: + Steel: 150 + Plastic: 100 + Glass: 20 diff --git a/Resources/Prototypes/Recipes/Lathes/base_electronics.yml b/Resources/Prototypes/Recipes/Lathes/base_electronics.yml new file mode 100644 index 0000000000..e37d7c251e --- /dev/null +++ b/Resources/Prototypes/Recipes/Lathes/base_electronics.yml @@ -0,0 +1,61 @@ +# Costs for computer boards, machine boards, and circuitry + +- type: latheRecipe + abstract: true + id: BaseElectronicsRecipe + completetime: 2 + materials: + Steel: 100 + Plastic: 300 + +- type: latheRecipe + parent: BaseElectronicsRecipe + abstract: true + id: BaseCheapElectronicsRecipe + materials: + Steel: 50 + Plastic: 50 + +- type: latheRecipe + parent: BaseElectronicsRecipe + abstract: true + id: BaseCheapCircuitboardRecipe + materials: + Steel: 50 + Glass: 250 + +- type: latheRecipe + parent: BaseElectronicsRecipe + abstract: true + id: BaseCircuitboardRecipe + completetime: 4 + materials: + Steel: 100 + Glass: 500 + +- type: latheRecipe + parent: BaseCircuitboardRecipe + abstract: true + id: BaseGoldCircuitboardRecipe + materials: + Steel: 100 + Glass: 500 + Gold: 100 + +- type: latheRecipe + parent: BaseCircuitboardRecipe + abstract: true + id: BaseSilverCircuitboardRecipe + materials: + Steel: 100 + Glass: 500 + Silver: 100 + +- type: latheRecipe + parent: BaseCircuitboardRecipe + abstract: true + id: BaseBananiumCircuitboardRecipe + materials: + Steel: 100 + Glass: 500 + Bananium: 100 diff --git a/Resources/Prototypes/Recipes/Lathes/categories.yml b/Resources/Prototypes/Recipes/Lathes/categories.yml index 486d8a090d..7becbb58e4 100644 --- a/Resources/Prototypes/Recipes/Lathes/categories.yml +++ b/Resources/Prototypes/Recipes/Lathes/categories.yml @@ -1,19 +1,19 @@ # Generic -- type: latheCategory - id: Ammo - name: lathe-category-ammo - - type: latheCategory id: Circuitry name: lathe-category-circuitry +- type: latheCategory + id: Clothing + name: lathe-category-clothing + - type: latheCategory id: Lights name: lathe-category-lights - type: latheCategory - id: Mech - name: lathe-category-mechs + id: Machines + name: lathe-category-machines - type: latheCategory id: Parts @@ -44,6 +44,57 @@ id: Materials name: lathe-category-materials +# Circuit imprinter +- type: latheCategory + id: Computers + name: lathe-category-computers + +- type: latheCategory + id: Engineering + name: lathe-category-engineering + +- type: latheCategory + id: General + name: lathe-category-general + +- type: latheCategory + id: Medical + name: lathe-category-medical + +- type: latheCategory + id: Research + name: lathe-category-research + +- type: latheCategory + id: Security + name: lathe-category-security + +- type: latheCategory + id: Service + name: lathe-category-service + +- type: latheCategory + id: Supply + name: lathe-category-supply + +# Science +- type: latheCategory + id: Mech + name: lathe-category-mechs + +# Sec +- type: latheCategory + id: Ammo + name: lathe-category-ammo + +- type: latheCategory + id: Boxes + name: lathe-category-boxes + +- type: latheCategory + id: Magazines + name: lathe-category-magazines + # Uniform printer - type: latheCategory id: Bedsheets diff --git a/Resources/Prototypes/Recipes/Lathes/chemistry.yml b/Resources/Prototypes/Recipes/Lathes/chemistry.yml index f93a56d1a1..a9e6f282e0 100644 --- a/Resources/Prototypes/Recipes/Lathes/chemistry.yml +++ b/Resources/Prototypes/Recipes/Lathes/chemistry.yml @@ -3,14 +3,14 @@ result: Beaker completetime: 2 materials: - Glass: 100 + Glass: 200 - type: latheRecipe id: LargeBeaker result: LargeBeaker completetime: 2 materials: - Glass: 200 + Glass: 400 - type: latheRecipe id: CryostasisBeaker diff --git a/Resources/Prototypes/Recipes/Lathes/circuitry.yml b/Resources/Prototypes/Recipes/Lathes/circuitry.yml new file mode 100644 index 0000000000..2b37baf3cb --- /dev/null +++ b/Resources/Prototypes/Recipes/Lathes/circuitry.yml @@ -0,0 +1,117 @@ +# Non-machine boards, non-computer boards +# Base categories + +- type: latheRecipe + abstract: true + id: BaseCircuitryRecipeCategory + categories: + - Circuitry + +- type: latheRecipe + abstract: true + id: BaseMechRecipeCategory + categories: + - Mech + +## Recipes + +# Misc +- type: latheRecipe + parent: [ BaseCheapElectronicsRecipe, BaseCircuitryRecipeCategory ] + id: FreezerElectronics + result: FreezerElectronics + +- type: latheRecipe + parent: [ BaseElectronicsRecipe, BaseCircuitryRecipeCategory ] + id: MailingUnitElectronics + result: MailingUnitElectronics + +# Airtight +- type: latheRecipe + parent: [ BaseCheapElectronicsRecipe, BaseCircuitryRecipeCategory ] + id: FirelockElectronics + result: FirelockElectronics + +- type: latheRecipe + parent: [ BaseCheapElectronicsRecipe, BaseCircuitryRecipeCategory ] + id: DoorElectronics + result: DoorElectronics + +# Power +- type: latheRecipe + parent: [ BaseCheapCircuitboardRecipe, BaseCircuitryRecipeCategory ] + id: APCElectronics + result: APCElectronics + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseCircuitryRecipeCategory ] + id: SolarTrackerElectronics + result: SolarTrackerElectronics + +# Wallmount power +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseCircuitryRecipeCategory ] + id: WallmountSubstationElectronics + result: WallmountSubstationElectronics + +# Wallmount +- type: latheRecipe + parent: [ BaseCheapElectronicsRecipe, BaseCircuitryRecipeCategory ] + id: StationMapElectronics + result: StationMapCircuitboard + +- type: latheRecipe + parent: [ BaseCheapElectronicsRecipe, BaseCircuitryRecipeCategory ] + id: SignalTimerElectronics + result: SignalTimerElectronics + +- type: latheRecipe + parent: [ BaseElectronicsRecipe, BaseCircuitryRecipeCategory ] + id: AirAlarmElectronics + result: AirAlarmElectronics + +- type: latheRecipe + parent: [ BaseElectronicsRecipe, BaseCircuitryRecipeCategory ] + id: IntercomElectronics + result: IntercomElectronics + +- type: latheRecipe + parent: [ BaseElectronicsRecipe, BaseCircuitryRecipeCategory ] + id: FireAlarmElectronics + result: FireAlarmElectronics + +# Mechs +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseMechRecipeCategory ] + id: RipleyCentralElectronics + result: RipleyCentralElectronics + +- type: latheRecipe + parent: RipleyCentralElectronics + id: RipleyPeripheralsElectronics + result: RipleyPeripheralsElectronics + +- type: latheRecipe + parent: [ BaseBananiumCircuitboardRecipe, BaseMechRecipeCategory ] + id: HonkerCentralElectronics + result: HonkerCentralElectronics + +- type: latheRecipe + parent: HonkerCentralElectronics + id: HonkerPeripheralsElectronics + result: HonkerPeripheralsElectronics + +- type: latheRecipe + parent: HonkerCentralElectronics + id: HonkerTargetingElectronics + result: HonkerTargetingElectronics + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseMechRecipeCategory] + id: HamtrCentralElectronics + result: HamtrCentralElectronics + +- type: latheRecipe + parent: HamtrCentralElectronics + id: HamtrPeripheralsElectronics + result: HamtrPeripheralsElectronics diff --git a/Resources/Prototypes/Recipes/Lathes/clothing.yml b/Resources/Prototypes/Recipes/Lathes/clothing.yml index 4558809e94..c5f81153e2 100644 --- a/Resources/Prototypes/Recipes/Lathes/clothing.yml +++ b/Resources/Prototypes/Recipes/Lathes/clothing.yml @@ -82,7 +82,7 @@ parent: BaseJumpsuitRecipe id: ClothingUniformJumpskirtColorGrey result: ClothingUniformJumpskirtColorGrey - + - type: latheRecipe parent: BaseJumpsuitRecipe id: ClothingUniformJumpsuitLoungewear @@ -245,6 +245,18 @@ id: ClothingUniformJumpskirtCMOTurtle result: ClothingUniformJumpskirtCMOTurtle +## Command (Generic) + +- type: latheRecipe + parent: BaseCommandJumpsuitRecipe + id: ClothingUniformJumpsuitCommandGeneric + result: ClothingUniformJumpsuitCommandGeneric + +- type: latheRecipe + parent: BaseCommandJumpsuitRecipe + id: ClothingUniformJumpskirtCommandGeneric + result: ClothingUniformJumpskirtCommandGeneric + ## Detective - type: latheRecipe @@ -823,6 +835,16 @@ id: ClothingHeadHatBeretCmo result: ClothingHeadHatBeretCmo +- type: latheRecipe + parent: BaseCommandHatRecipe + id: ClothingHeadHatBeretCommand + result: ClothingHeadHatBeretCommand + +- type: latheRecipe + parent: BaseCommandHatRecipe + id: ClothingHeadHatCommandSoft + result: ClothingHeadHatCommandSoft + # Non-command hats - type: latheRecipe diff --git a/Resources/Prototypes/Recipes/Lathes/computer_boards.yml b/Resources/Prototypes/Recipes/Lathes/computer_boards.yml new file mode 100644 index 0000000000..2bf3bb3c34 --- /dev/null +++ b/Resources/Prototypes/Recipes/Lathes/computer_boards.yml @@ -0,0 +1,105 @@ +# Base categories + +- type: latheRecipe + abstract: true + id: BaseEngineeringComputerRecipeCategory + categories: + - Computers + - Engineering + +- type: latheRecipe + abstract: true + id: BaseMedicalComputerRecipeCategory + categories: + - Computers + - Medical + +- type: latheRecipe + abstract: true + id: BaseResearchComputerRecipeCategory + categories: + - Computers + - Research + +- type: latheRecipe + abstract: true + id: BaseSecurityComputerRecipeCategory + categories: + - Computers + - Security + +- type: latheRecipe + abstract: true + id: BaseServiceComputerRecipeCategory + categories: + - Computers + - Service + +- type: latheRecipe + abstract: true + id: BaseSupplyComputerRecipeCategory + categories: + - Computers + - Supply + +- type: latheRecipe + abstract: true + id: BaseGeneralComputerRecipeCategory + categories: + - Computers + - General + +## Recipes + +# Engineering +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseEngineeringComputerRecipeCategory ] + id: SolarControlComputerCircuitboard + result: SolarControlComputerCircuitboard + +# Medical + +# Science +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseResearchComputerRecipeCategory ] + id: AnalysisComputerCircuitboard + result: AnalysisComputerCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseResearchComputerRecipeCategory ] + id: TechDiskComputerCircuitboard + result: TechDiskComputerCircuitboard + +# Cameras +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseSecurityComputerRecipeCategory ] + id: SurveillanceCameraMonitorCircuitboard + result: SurveillanceCameraMonitorCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceComputerRecipeCategory ] + id: SurveillanceWirelessCameraMonitorCircuitboard + result: SurveillanceWirelessCameraMonitorCircuitboard + +# Service +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceComputerRecipeCategory ] + id: MassMediaCircuitboard + result: ComputerMassMediaCircuitboard + +# Shuttle +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseSupplyComputerRecipeCategory ] + id: ShuttleConsoleCircuitboard + result: ShuttleConsoleCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseSupplyComputerRecipeCategory ] + id: RadarConsoleCircuitboard + result: RadarConsoleCircuitboard + +# Civilian +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseGeneralComputerRecipeCategory ] + id: ComputerTelevisionCircuitboard + result: ComputerTelevisionCircuitboard diff --git a/Resources/Prototypes/Recipes/Lathes/devices.yml b/Resources/Prototypes/Recipes/Lathes/devices.yml index 21ec6773ef..62a6122342 100644 --- a/Resources/Prototypes/Recipes/Lathes/devices.yml +++ b/Resources/Prototypes/Recipes/Lathes/devices.yml @@ -175,6 +175,15 @@ Glass: 100 Uranium: 100 +- type: latheRecipe + id: DeviceDesynchronizer + result: DeviceDesynchronizer + completetime: 5 + materials: + Steel: 700 + Glass: 100 + Uranium: 200 + - type: latheRecipe id: WeaponProtoKineticAccelerator result: WeaponProtoKineticAccelerator diff --git a/Resources/Prototypes/Recipes/Lathes/electronics.yml b/Resources/Prototypes/Recipes/Lathes/machine_boards.yml similarity index 52% rename from Resources/Prototypes/Recipes/Lathes/electronics.yml rename to Resources/Prototypes/Recipes/Lathes/machine_boards.yml index f6f56ab282..23eb3bfbb7 100644 --- a/Resources/Prototypes/Recipes/Lathes/electronics.yml +++ b/Resources/Prototypes/Recipes/Lathes/machine_boards.yml @@ -1,412 +1,158 @@ -# Base protoypes +# Base categories - type: latheRecipe abstract: true - id: BaseElectronicsRecipe + id: BaseMachineRecipeCategory categories: - - Circuitry - completetime: 2 - materials: - Steel: 100 - Plastic: 300 + - Machines - type: latheRecipe abstract: true - parent: BaseElectronicsRecipe - id: BaseCheapElectronicsRecipe - materials: - Steel: 50 - Plastic: 50 + id: BaseEngineeringMachineRecipeCategory + categories: + - Machines + - Engineering - type: latheRecipe abstract: true - parent: BaseElectronicsRecipe - id: BaseCheapCircuitboardRecipe - materials: - Steel: 50 - Glass: 250 + id: BaseMedicalMachineRecipeCategory + categories: + - Machines + - Medical - type: latheRecipe abstract: true - parent: BaseElectronicsRecipe - id: BaseCircuitboardRecipe - completetime: 4 - materials: - Steel: 100 - Glass: 500 + id: BaseResearchMachineRecipeCategory + categories: + - Machines + - Research - type: latheRecipe abstract: true - parent: BaseCircuitboardRecipe - id: BaseGoldCircuitboardRecipe - materials: - Steel: 100 - Glass: 500 - Gold: 100 + id: BaseSecurityMachineRecipeCategory + categories: + - Machines + - Security - type: latheRecipe abstract: true - parent: BaseCircuitboardRecipe - id: BaseSilverCircuitboardRecipe - materials: - Steel: 100 - Glass: 500 - Silver: 100 + id: BaseServiceMachineRecipeCategory + categories: + - Machines + - Service - type: latheRecipe abstract: true - parent: BaseCircuitboardRecipe - id: BaseBananiumCircuitboardRecipe - materials: - Steel: 100 - Glass: 500 - Bananium: 100 - -# Recipes + id: BaseSupplyMachineRecipeCategory + categories: + - Machines + - Supply - type: latheRecipe - parent: BaseCheapElectronicsRecipe - id: FirelockElectronics - result: FirelockElectronics + abstract: true + id: BaseGeneralMachineRecipeCategory + categories: + - Machines + - General -- type: latheRecipe - parent: BaseElectronicsRecipe - id: MailingUnitElectronics - result: MailingUnitElectronics +## Recipes +## Non-circuit imprinter (no second category) + +# Autolathe - type: latheRecipe - parent: BaseCheapElectronicsRecipe + parent: [ BaseCheapElectronicsRecipe, BaseMachineRecipeCategory ] id: CellRechargerCircuitboard result: CellRechargerCircuitboard - type: latheRecipe - parent: CellRechargerCircuitboard - id: BorgChargerCircuitboard - result: BorgChargerCircuitboard - -- type: latheRecipe - parent: CellRechargerCircuitboard + parent: [ BaseCheapElectronicsRecipe, BaseMachineRecipeCategory ] id: WeaponCapacitorRechargerCircuitboard result: WeaponCapacitorRechargerCircuitboard - type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: TurboItemRechargerCircuitboard - result: TurboItemRechargerCircuitboard - -- type: latheRecipe - parent: BaseCheapElectronicsRecipe - id: DoorElectronics - result: DoorElectronics - -- type: latheRecipe - parent: BaseCheapElectronicsRecipe - id: FreezerElectronics - result: FreezerElectronics - -- type: latheRecipe - parent: BaseElectronicsRecipe - id: AirAlarmElectronics - result: AirAlarmElectronics - -- type: latheRecipe - parent: BaseCheapElectronicsRecipe - id: StationMapElectronics - result: StationMapCircuitboard - -- type: latheRecipe - parent: BaseElectronicsRecipe - id: IntercomElectronics - result: IntercomElectronics - -- type: latheRecipe - parent: BaseElectronicsRecipe - id: FireAlarmElectronics - result: FireAlarmElectronics - -- type: latheRecipe - parent: BaseCheapElectronicsRecipe - id: SignalTimerElectronics - result: SignalTimerElectronics - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: CloningPodMachineCircuitboard - result: CloningPodMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ThermomachineFreezerMachineCircuitBoard - result: ThermomachineFreezerMachineCircuitBoard - -- type: latheRecipe - parent: BaseSilverCircuitboardRecipe - id: HellfireFreezerMachineCircuitBoard - result: HellfireFreezerMachineCircuitBoard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: CondenserMachineCircuitBoard - result: CondenserMachineCircuitBoard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: PortableScrubberMachineCircuitBoard - result: PortableScrubberMachineCircuitBoard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: SpaceHeaterMachineCircuitBoard - result: SpaceHeaterMachineCircuitBoard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: MedicalScannerMachineCircuitboard - result: MedicalScannerMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: CryoPodMachineCircuitboard - result: CryoPodMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ChemMasterMachineCircuitboard - result: ChemMasterMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ChemDispenserMachineCircuitboard - result: ChemDispenserMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: BiomassReclaimerMachineCircuitboard - result: BiomassReclaimerMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: BiofabricatorMachineCircuitboard - result: BiofabricatorMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: HydroponicsTrayMachineCircuitboard - result: HydroponicsTrayMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: AutolatheMachineCircuitboard - result: AutolatheMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: ProtolatheMachineCircuitboard - result: ProtolatheMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: AutolatheHyperConvectionMachineCircuitboard - result: AutolatheHyperConvectionMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ProtolatheHyperConvectionMachineCircuitboard - result: ProtolatheHyperConvectionMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: CircuitImprinterMachineCircuitboard - result: CircuitImprinterMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: CircuitImprinterHyperConvectionMachineCircuitboard - result: CircuitImprinterHyperConvectionMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: ExosuitFabricatorMachineCircuitboard - result: ExosuitFabricatorMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: UniformPrinterMachineCircuitboard - result: UniformPrinterMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: BiogeneratorMachineCircuitboard - result: BiogeneratorMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: VaccinatorMachineCircuitboard - result: VaccinatorMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: DiagnoserMachineCircuitboard - result: DiagnoserMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ArtifactAnalyzerMachineCircuitboard - result: ArtifactAnalyzerMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ArtifactCrusherMachineCircuitboard - result: ArtifactCrusherMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: AnomalyVesselCircuitboard - result: AnomalyVesselCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: AnomalyVesselExperimentalCircuitboard - result: AnomalyVesselExperimentalCircuitboard - -- type: latheRecipe - parent: BaseSilverCircuitboardRecipe - id: AnomalySynchronizerCircuitboard - result: AnomalySynchronizerCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: APECircuitboard - result: APECircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: ReagentGrinderMachineCircuitboard - result: ReagentGrinderMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: HotplateMachineCircuitboard - result: HotplateMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: AnalysisComputerCircuitboard - result: AnalysisComputerCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: TechDiskComputerCircuitboard - result: TechDiskComputerCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ShuttleConsoleCircuitboard - result: ShuttleConsoleCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: RadarConsoleCircuitboard - result: RadarConsoleCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: DawInstrumentMachineCircuitboard - result: DawInstrumentMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: StasisBedMachineCircuitboard - result: StasisBedMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: ElectrolysisUnitMachineCircuitboard - result: ElectrolysisUnitMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: CentrifugeMachineCircuitboard - result: CentrifugeMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: OreProcessorMachineCircuitboard - result: OreProcessorMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: OreProcessorIndustrialMachineCircuitboard - result: OreProcessorIndustrialMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: SalvageMagnetMachineCircuitboard - result: SalvageMagnetMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: RipleyCentralElectronics - result: RipleyCentralElectronics - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: RipleyPeripheralsElectronics - result: RipleyPeripheralsElectronics - -- type: latheRecipe - parent: BaseBananiumCircuitboardRecipe - id: HonkerCentralElectronics - result: HonkerCentralElectronics - -- type: latheRecipe - parent: BaseBananiumCircuitboardRecipe - id: HonkerPeripheralsElectronics - result: HonkerPeripheralsElectronics - -- type: latheRecipe - parent: BaseBananiumCircuitboardRecipe - id: HonkerTargetingElectronics - result: HonkerTargetingElectronics - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: HamtrCentralElectronics - result: HamtrCentralElectronics - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: HamtrPeripheralsElectronics - result: HamtrPeripheralsElectronics - -# Power -- type: latheRecipe - parent: BaseCheapCircuitboardRecipe - id: APCElectronics - result: APCElectronics - -- type: latheRecipe - parent: BaseCircuitboardRecipe + parent: [ BaseCircuitboardRecipe, BaseMachineRecipeCategory ] id: SubstationMachineCircuitboard result: SubstationMachineCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe - id: WallmountSubstationElectronics - result: WallmountSubstationElectronics - -- type: latheRecipe - parent: BaseCircuitboardRecipe + parent: [ BaseCircuitboardRecipe, BaseMachineRecipeCategory ] id: SMESMachineCircuitboard result: SMESMachineCircuitboard +# Security techfab - type: latheRecipe - parent: BaseGoldCircuitboardRecipe + parent: [ BaseCircuitboardRecipe, BaseMachineRecipeCategory ] + id: ShuttleGunSvalinnMachineGunCircuitboard + result: ShuttleGunSvalinnMachineGunCircuitboard + completetime: 6 + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseMachineRecipeCategory ] + id: ShuttleGunPerforatorCircuitboard + result: ShuttleGunPerforatorCircuitboard + completetime: 10 + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseMachineRecipeCategory ] + id: ShuttleGunFriendshipCircuitboard + result: ShuttleGunFriendshipCircuitboard + completetime: 8 + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseMachineRecipeCategory ] + id: ShuttleGunDusterCircuitboard + result: ShuttleGunDusterCircuitboard + completetime: 12 + +## Circuit imprinter + +## Engineering + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] + id: EmitterCircuitboard + result: EmitterCircuitboard + +# Atmos +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] + id: ThermomachineFreezerMachineCircuitBoard + result: ThermomachineFreezerMachineCircuitBoard + +- type: latheRecipe + parent: [ BaseSilverCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] + id: HellfireFreezerMachineCircuitBoard + result: HellfireFreezerMachineCircuitBoard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] + id: SpaceHeaterMachineCircuitBoard + result: SpaceHeaterMachineCircuitBoard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] + id: PortableScrubberMachineCircuitBoard + result: PortableScrubberMachineCircuitBoard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] + id: CondenserMachineCircuitBoard + result: CondenserMachineCircuitBoard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] + id: GasRecyclerMachineCircuitboard + result: GasRecyclerMachineCircuitboard + +# Power +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] id: SMESAdvancedMachineCircuitboard result: SMESAdvancedMachineCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe + parent: [ BaseCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] id: PortableGeneratorPacmanMachineCircuitboard result: PortableGeneratorPacmanMachineCircuitboard @@ -420,187 +166,299 @@ id: PortableGeneratorJrPacmanMachineCircuitboard result: PortableGeneratorJrPacmanMachineCircuitboard -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: SolarControlComputerCircuitboard - result: SolarControlComputerCircuitboard +## Medical - type: latheRecipe - parent: BaseCircuitboardRecipe - id: SolarTrackerElectronics - result: SolarTrackerElectronics + parent: [ BaseGoldCircuitboardRecipe, BaseMedicalMachineRecipeCategory ] + id: BiomassReclaimerMachineCircuitboard + result: BiomassReclaimerMachineCircuitboard + +# Chemistry +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseMedicalMachineRecipeCategory ] + id: HotplateMachineCircuitboard + result: HotplateMachineCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe - id: CloningConsoleComputerCircuitboard - result: CloningConsoleComputerCircuitboard + parent: [ BaseCircuitboardRecipe, BaseMedicalMachineRecipeCategory ] + id: ElectrolysisUnitMachineCircuitboard + result: ElectrolysisUnitMachineCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe - id: MicrowaveMachineCircuitboard - result: MicrowaveMachineCircuitboard + parent: [ BaseCircuitboardRecipe, BaseMedicalMachineRecipeCategory ] + id: CentrifugeMachineCircuitboard + result: CentrifugeMachineCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe - id: ElectricGrillMachineCircuitboard - result: ElectricGrillMachineCircuitboard + parent: [ BaseGoldCircuitboardRecipe, BaseMedicalMachineRecipeCategory ] + id: ChemMasterMachineCircuitboard + result: ChemMasterMachineCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe - id: FatExtractorMachineCircuitboard - result: FatExtractorMachineCircuitboard + parent: [ BaseGoldCircuitboardRecipe, BaseMedicalMachineRecipeCategory ] + id: ChemDispenserMachineCircuitboard + result: ChemDispenserMachineCircuitboard + +# Treatment +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseMedicalMachineRecipeCategory ] + id: CryoPodMachineCircuitboard + result: CryoPodMachineCircuitboard - type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: FlatpackerMachineCircuitboard - result: FlatpackerMachineCircuitboard + parent: [ BaseGoldCircuitboardRecipe, BaseMedicalMachineRecipeCategory ] + id: StasisBedMachineCircuitboard + result: StasisBedMachineCircuitboard + +## Science + +# Artifact +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: ArtifactAnalyzerMachineCircuitboard + result: ArtifactAnalyzerMachineCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe - id: SheetifierMachineCircuitboard - result: SheetifierMachineCircuitboard + parent: [ BaseGoldCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: ArtifactCrusherMachineCircuitboard + result: ArtifactCrusherMachineCircuitboard + +# Anomaly +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: AnomalyVesselCircuitboard + result: AnomalyVesselCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe - id: SurveillanceCameraRouterCircuitboard - result: SurveillanceCameraRouterCircuitboard + parent: [ BaseGoldCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: AnomalyVesselExperimentalCircuitboard + result: AnomalyVesselExperimentalCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe - id: SurveillanceCameraWirelessRouterCircuitboard - result: SurveillanceCameraWirelessRouterCircuitboard + parent: [ BaseSilverCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: AnomalySynchronizerCircuitboard + result: AnomalySynchronizerCircuitboard - type: latheRecipe - parent: BaseCircuitboardRecipe - id: SurveillanceWirelessCameraAnchoredCircuitboard - result: SurveillanceWirelessCameraAnchoredCircuitboard + parent: [ BaseCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: APECircuitboard + result: APECircuitboard + +## Service - type: latheRecipe - parent: BaseCircuitboardRecipe - id: SurveillanceWirelessCameraMovableCircuitboard - result: SurveillanceWirelessCameraMovableCircuitboard + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: DawInstrumentMachineCircuitboard + result: DawInstrumentMachineCircuitboard +# Bar - type: latheRecipe - parent: BaseCircuitboardRecipe - id: SurveillanceCameraMonitorCircuitboard - result: SurveillanceCameraMonitorCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: SurveillanceWirelessCameraMonitorCircuitboard - result: SurveillanceWirelessCameraMonitorCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: ComputerTelevisionCircuitboard - result: ComputerTelevisionCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: EmitterCircuitboard - result: EmitterCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: ThrusterMachineCircuitboard - result: ThrusterMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: GyroscopeMachineCircuitboard - result: GyroscopeMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: GasRecyclerMachineCircuitboard - result: GasRecyclerMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: SeedExtractorMachineCircuitboard - result: SeedExtractorMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: BoozeDispenserMachineCircuitboard - result: BoozeDispenserMachineCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: CargoTelepadMachineCircuitboard - result: CargoTelepadMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: SodaDispenserMachineCircuitboard - result: SodaDispenserMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: TelecomServerCircuitboard - result: TelecomServerCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: MassMediaCircuitboard - result: ComputerMassMediaCircuitboard - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: MiniGravityGeneratorCircuitboard - result: MiniGravityGeneratorCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: PowerCageRechargerCircuitboard - result: PowerCageRechargerCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: ShuttleGunSvalinnMachineGunCircuitboard - result: ShuttleGunSvalinnMachineGunCircuitboard - completetime: 6 - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ShuttleGunPerforatorCircuitboard - result: ShuttleGunPerforatorCircuitboard - completetime: 10 - -- type: latheRecipe - parent: BaseCircuitboardRecipe - id: ShuttleGunKineticCircuitboard - result: ShuttleGunKineticCircuitboard - completetime: 6 - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ShuttleGunFriendshipCircuitboard - result: ShuttleGunFriendshipCircuitboard - completetime: 8 - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ShuttleGunDusterCircuitboard - result: ShuttleGunDusterCircuitboard - completetime: 12 - -- type: latheRecipe - parent: BaseGoldCircuitboardRecipe - id: ReagentGrinderIndustrialMachineCircuitboard - result: ReagentGrinderIndustrialMachineCircuitboard - -- type: latheRecipe - parent: BaseCircuitboardRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] id: JukeboxCircuitBoard result: JukeboxCircuitBoard - type: latheRecipe - parent: BaseCircuitboardRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: BoozeDispenserMachineCircuitboard + result: BoozeDispenserMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: SodaDispenserMachineCircuitboard + result: SodaDispenserMachineCircuitboard + +# Hydroponics +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: HydroponicsTrayMachineCircuitboard + result: HydroponicsTrayMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: SeedExtractorMachineCircuitboard + result: SeedExtractorMachineCircuitboard + +# Kitchen +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: ElectricGrillMachineCircuitboard + result: ElectricGrillMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: MicrowaveMachineCircuitboard + result: MicrowaveMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: FatExtractorMachineCircuitboard + result: FatExtractorMachineCircuitboard + +## Supply + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseSupplyMachineRecipeCategory ] + id: CargoTelepadMachineCircuitboard + result: CargoTelepadMachineCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseSupplyMachineRecipeCategory ] + id: SalvageMagnetMachineCircuitboard + result: SalvageMagnetMachineCircuitboard + +# Shuttle +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseSupplyMachineRecipeCategory ] + id: ThrusterMachineCircuitboard + result: ThrusterMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseSupplyMachineRecipeCategory ] + id: GyroscopeMachineCircuitboard + result: GyroscopeMachineCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseSupplyMachineRecipeCategory ] + id: MiniGravityGeneratorCircuitboard + result: MiniGravityGeneratorCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseSecurityMachineRecipeCategory ] + id: PowerCageRechargerCircuitboard + result: PowerCageRechargerCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseSecurityMachineRecipeCategory ] + id: ShuttleGunKineticCircuitboard + result: ShuttleGunKineticCircuitboard + completetime: 6 + +## Miscellaneous + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] + id: ReagentGrinderMachineCircuitboard + result: ReagentGrinderMachineCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] + id: ReagentGrinderIndustrialMachineCircuitboard + result: ReagentGrinderIndustrialMachineCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] + id: FlatpackerMachineCircuitboard + result: FlatpackerMachineCircuitboard + +# Lathes +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: ProtolatheMachineCircuitboard + result: ProtolatheMachineCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: ProtolatheHyperConvectionMachineCircuitboard + result: ProtolatheHyperConvectionMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: CircuitImprinterMachineCircuitboard + result: CircuitImprinterMachineCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: CircuitImprinterHyperConvectionMachineCircuitboard + result: CircuitImprinterHyperConvectionMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseResearchMachineRecipeCategory ] + id: ExosuitFabricatorMachineCircuitboard + result: ExosuitFabricatorMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: BiogeneratorMachineCircuitboard + result: BiogeneratorMachineCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: BiofabricatorMachineCircuitboard + result: BiofabricatorMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseSupplyMachineRecipeCategory ] + id: OreProcessorMachineCircuitboard + result: OreProcessorMachineCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseSupplyMachineRecipeCategory ] + id: OreProcessorIndustrialMachineCircuitboard + result: OreProcessorIndustrialMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] + id: AutolatheMachineCircuitboard + result: AutolatheMachineCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] + id: AutolatheHyperConvectionMachineCircuitboard + result: AutolatheHyperConvectionMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] + id: UniformPrinterMachineCircuitboard + result: UniformPrinterMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] + id: SheetifierMachineCircuitboard + result: SheetifierMachineCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] id: CutterMachineCircuitboard result: CutterMachineCircuitboard +# Cell chargers - type: latheRecipe - parent: BaseCircuitboardRecipe + parent: [ BaseCheapElectronicsRecipe, BaseGeneralMachineRecipeCategory ] + id: BorgChargerCircuitboard + result: BorgChargerCircuitboard + +- type: latheRecipe + parent: [ BaseGoldCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] + id: TurboItemRechargerCircuitboard + result: TurboItemRechargerCircuitboard + +# Comms and Cameras +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseEngineeringMachineRecipeCategory ] + id: TelecomServerCircuitboard + result: TelecomServerCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseSecurityMachineRecipeCategory ] + id: SurveillanceCameraRouterCircuitboard + result: SurveillanceCameraRouterCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: SurveillanceCameraWirelessRouterCircuitboard + result: SurveillanceCameraWirelessRouterCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: SurveillanceWirelessCameraAnchoredCircuitboard + result: SurveillanceWirelessCameraAnchoredCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseServiceMachineRecipeCategory ] + id: SurveillanceWirelessCameraMovableCircuitboard + result: SurveillanceWirelessCameraMovableCircuitboard + +- type: latheRecipe + parent: [ BaseCircuitboardRecipe, BaseGeneralMachineRecipeCategory ] id: HolopadMachineCircuitboard result: HolopadMachineCircuitboard diff --git a/Resources/Prototypes/Recipes/Lathes/misc.yml b/Resources/Prototypes/Recipes/Lathes/misc.yml index d0a9b586c0..7d4c80b795 100644 --- a/Resources/Prototypes/Recipes/Lathes/misc.yml +++ b/Resources/Prototypes/Recipes/Lathes/misc.yml @@ -237,3 +237,18 @@ completetime: 3 materials: Plastic: 200 + +- type: latheRecipe + id: ClothingOuterVestTank + result: ClothingOuterVestTank + completetime: 2 + materials: + Cloth: 100 + Steel: 50 + +- type: latheRecipe + id: Ashtray + result: Ashtray + completetime: 1 + materials: + Steel: 30 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Lathes/security.yml b/Resources/Prototypes/Recipes/Lathes/security.yml index 725b785dd7..5a04fb7396 100644 --- a/Resources/Prototypes/Recipes/Lathes/security.yml +++ b/Resources/Prototypes/Recipes/Lathes/security.yml @@ -1,14 +1,39 @@ # Base prototypes +- type: latheRecipe + abstract: true + id: BaseShieldRecipe + categories: + - Tools + completetime: 4 + +- type: latheRecipe + abstract: true + id: BaseTargetRecipe + categories: + - Tools + completetime: 5 + applyMaterialDiscount: false # ingredients dropped when destroyed + materials: + Steel: 500 + - type: latheRecipe abstract: true id: BaseWeaponRecipe categories: - Weapons + +- type: latheRecipe + abstract: true + parent: BaseWeaponRecipe + id: BaseWeaponRecipeMelee completetime: 2 - materials: - Steel: 300 - Plastic: 300 + +- type: latheRecipe + abstract: true + parent: BaseWeaponRecipe + id: BaseWeaponRecipePractice + completetime: 4 - type: latheRecipe abstract: true @@ -18,51 +43,168 @@ - type: latheRecipe abstract: true - id: BaseAmmoRecipe + parent: BaseWeaponRecipe + id: BaseWeaponRecipeSidearm + completetime: 6 + +## Recipes + +# Clothing +- type: latheRecipe + id: ClothingBackpackElectropack + result: ClothingBackpackElectropack categories: - - Ammo - completetime: 5 + - Clothing + completetime: 4 + materials: + Steel: 500 + Plastic: 250 + Cloth: 500 - type: latheRecipe - abstract: true - parent: BaseAmmoRecipe - id: BaseEmptyAmmoRecipe - completetime: 1 - -# Recipes + id: ClothingEyesHudSecurity + result: ClothingEyesHudSecurity + categories: + - Clothing + completetime: 2 + materials: + Steel: 300 + Glass: 200 - type: latheRecipe + id: PortableRecharger + result: PortableRecharger + categories: + - Clothing + completetime: 15 + materials: + Steel: 2000 + Uranium: 2000 + Plastic: 1000 + Plasma: 500 + Glass: 500 + +# Shields +- type: latheRecipe + parent: BaseShieldRecipe + id: RiotShield + result: RiotShield + materials: + Steel: 400 + Glass: 400 + +- type: latheRecipe + parent: BaseShieldRecipe + id: TelescopicShield + result: TelescopicShield + materials: + Steel: 300 + Glass: 800 + +# Targets +- type: latheRecipe + parent: BaseTargetRecipe + id: TargetHuman + result: TargetHuman + +- type: latheRecipe + parent: BaseTargetRecipe + id: TargetClown + result: TargetClown + +- type: latheRecipe + parent: BaseTargetRecipe + id: TargetSyndicate + result: TargetSyndicate + +# Tools +- type: latheRecipe + parent: BaseToolRecipe id: Handcuffs result: Handcuffs - completetime: 2 materials: Steel: 300 - type: latheRecipe + parent: BaseToolRecipe id: Zipties result: Zipties - completetime: 2 materials: Plastic: 200 - type: latheRecipe - parent: BaseWeaponRecipe + parent: BaseToolRecipe + id: ForensicPad + result: ForensicPad + completetime: 4 + materials: + Plastic: 100 + +- type: latheRecipe + parent: BaseToolRecipe + id: HoloprojectorSecurity + result: HoloprojectorSecurityEmpty + materials: + Steel: 300 + Glass: 50 + Plastic: 50 + +- type: latheRecipe + parent: BaseToolRecipe + id: Flash + result: Flash + materials: + Glass: 100 + Plastic: 200 + Steel: 100 + +## Weapons + +# Melee +- type: latheRecipe + parent: BaseWeaponRecipeMelee id: Stunbaton result: Stunbaton + materials: + Steel: 300 + Plastic: 300 - type: latheRecipe - parent: BaseWeaponRecipe + parent: BaseWeaponRecipeMelee id: Truncheon result: Truncheon + materials: + Steel: 300 + Plastic: 300 - type: latheRecipe - parent: BaseWeaponRecipe + parent: BaseWeaponRecipeMelee id: CombatKnife result: CombatKnife materials: Steel: 250 Plastic: 100 +# Practice weapons +- type: latheRecipe + parent: BaseWeaponRecipePractice + id: WeaponDisablerPractice + result: WeaponDisablerPractice + materials: + Steel: 500 + Glass: 100 + Plastic: 200 + +- type: latheRecipe + parent: BaseWeaponRecipePractice + id: WeaponLaserCarbinePractice + result: WeaponLaserCarbinePractice + materials: + Steel: 1800 + Glass: 400 + Plastic: 250 + +# Long Guns - type: latheRecipe parent: BaseWeaponRecipeLong id: WeaponLaserCarbine @@ -90,14 +232,6 @@ Plastic: 750 Gold: 500 -- type: latheRecipe - parent: BaseWeaponRecipeLong - id: WeaponLaserSvalinn - result: WeaponLaserSvalinn - materials: - Steel: 2000 - Gold: 500 - - type: latheRecipe parent: BaseWeaponRecipeLong id: WeaponXrayCannon @@ -109,540 +243,27 @@ Gold: 100 - type: latheRecipe - id: ClothingBackpackElectropack - result: ClothingBackpackElectropack - completetime: 4 - materials: - Steel: 500 - Plastic: 250 - Cloth: 500 - -- type: latheRecipe - id: ForensicPad - result: ForensicPad - completetime: 4 - materials: - Plastic: 100 - -- type: latheRecipe - id: ClothingEyesHudSecurity - result: ClothingEyesHudSecurity - completetime: 2 - materials: - Steel: 300 - Glass: 200 - -- type: latheRecipe - id: HoloprojectorSecurity - result: HoloprojectorSecurityEmpty - completetime: 2 - materials: - Steel: 300 - Glass: 50 - Plastic: 50 - -- type: latheRecipe - id: RiotShield - result: RiotShield - completetime: 4 - materials: - Steel: 400 - Glass: 400 - -- type: latheRecipe - id: TelescopicShield - result: TelescopicShield - completetime: 4 - materials: - Steel: 300 - Glass: 800 - -- type: latheRecipe - id: Flash - result: Flash - completetime: 2 - materials: - Glass: 100 - Plastic: 200 - Steel: 100 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: BoxShellTranquilizer - result: BoxShellTranquilizer - materials: - Plastic: 240 - Steel: 160 - Glass: 80 - Plasma: 160 - Silver: 80 - -- type: latheRecipe - id: TargetHuman - result: TargetHuman - completetime: 5 - applyMaterialDiscount: false # ingredients dropped when destroyed - materials: - Steel: 500 - -- type: latheRecipe - parent: TargetHuman - id: TargetClown - result: TargetClown - -- type: latheRecipe - parent: TargetHuman - id: TargetSyndicate - result: TargetSyndicate - -- type: latheRecipe - parent: BaseEmptyAmmoRecipe - id: MagazinePistolEmpty - result: MagazinePistolEmpty - materials: - Steel: 25 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazinePistol - result: MagazinePistol - materials: - Steel: 145 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazinePistolPractice - result: MagazinePistolPractice - materials: - Steel: 85 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazinePistolUranium - result: MagazinePistolUranium - materials: - Steel: 25 - Plastic: 65 - Uranium: 120 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazinePistolIncendiary - result: MagazinePistolIncendiary - materials: - Steel: 25 - Plastic: 120 - -- type: latheRecipe - parent: BaseEmptyAmmoRecipe - id: MagazinePistolSubMachineGunEmpty - result: MagazinePistolSubMachineGunEmpty - materials: - Steel: 30 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazinePistolSubMachineGun - result: MagazinePistolSubMachineGun - materials: - Steel: 300 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazinePistolSubMachineGunUranium - result: MagazinePistolSubMachineGunUranium - materials: - Steel: 25 - Plastic: 250 - Uranium: 250 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazinePistolSubMachineGunIncendiary - result: MagazinePistolSubMachineGunIncendiary - materials: - Steel: 25 - Plastic: 275 - -- type: latheRecipe - parent: BaseEmptyAmmoRecipe - id: MagazinePistolSubMachineGunTopMountedEmpty - result: MagazinePistolSubMachineGunTopMountedEmpty - materials: - Steel: 30 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazinePistolSubMachineGunTopMounted - result: MagazinePistolSubMachineGunTopMounted - materials: - Steel: 300 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxPistol - result: MagazineBoxPistol - materials: - Steel: 600 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxMagnum - result: MagazineBoxMagnum - materials: - Steel: 240 - -- type: latheRecipe - parent: BaseEmptyAmmoRecipe - id: MagazineRifleEmpty - result: MagazineRifleEmpty - materials: - Steel: 25 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineRifle - result: MagazineRifle - materials: - Steel: 475 - - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineRiflePractice - result: MagazineRiflePractice - materials: - Steel: 175 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineRifleUranium - result: MagazineRifleUranium - materials: - Steel: 25 - Plastic: 300 - Uranium: 300 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineRifleIncendiary - result: MagazineRifleIncendiary - materials: - Steel: 25 - Plastic: 450 - -- type: latheRecipe - parent: BaseEmptyAmmoRecipe - id: MagazineLightRifleEmpty - result: MagazineLightRifleEmpty - materials: - Steel: 25 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineLightRifle - result: MagazineLightRifle - materials: - Steel: 565 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineLightRiflePractice - result: MagazineLightRiflePractice - materials: - Steel: 205 - - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineLightRifleUranium - result: MagazineLightRifleUranium - materials: - Steel: 25 - Plastic: 360 - Uranium: 360 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineLightRifleIncendiary - result: MagazineLightRifleIncendiary - materials: - Steel: 25 - Plastic: 540 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxRifle - result: MagazineBoxRifle - materials: - Steel: 750 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxLightRifle - result: MagazineBoxLightRifle - materials: - Steel: 900 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: BoxLethalshot - result: BoxLethalshot - materials: - Steel: 320 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: BoxBeanbag - result: BoxBeanbag - materials: - Steel: 160 - Plastic: 240 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: BoxShotgunSlug - result: BoxShotgunSlug - materials: - Steel: 240 - Plastic: 160 - -- type: latheRecipe - parent: BaseEmptyAmmoRecipe - id: SpeedLoaderMagnumEmpty - result: SpeedLoaderMagnumEmpty - materials: - Steel: 50 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: SpeedLoaderMagnum - result: SpeedLoaderMagnum - materials: - Steel: 190 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: SpeedLoaderMagnumPractice - result: SpeedLoaderMagnumPractice - materials: - Steel: 90 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: SpeedLoaderMagnumUranium - result: SpeedLoaderMagnumUranium - materials: - Steel: 50 - Plastic: 150 - Uranium: 110 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: SpeedLoaderMagnumIncendiary - result: SpeedLoaderMagnumIncendiary - materials: - Steel: 50 - Plastic: 150 - -- type: latheRecipe - parent: BaseEmptyAmmoRecipe - id: MagazineShotgunEmpty - result: MagazineShotgunEmpty - materials: - Steel: 50 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineShotgun - result: MagazineShotgun - materials: - Steel: 240 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineShotgunBeanbag - result: MagazineShotgunBeanbag - materials: - Steel: 150 - Plastic: 140 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineShotgunSlug - result: MagazineShotgunSlug - materials: - Steel: 190 - Plastic: 100 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineShotgunIncendiary - result: MagazineShotgunIncendiary - materials: - Steel: 100 - Plastic: 190 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxPistolIncendiary - result: MagazineBoxPistolIncendiary - materials: - Plastic: 600 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxMagnumIncendiary - result: MagazineBoxMagnumIncendiary - materials: - Plastic: 240 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxLightRifleIncendiary - result: MagazineBoxLightRifleIncendiary - materials: - Plastic: 900 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxRifleIncendiary - result: MagazineBoxRifleIncendiary - materials: - Plastic: 750 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: BoxShotgunFlare - result: BoxShotgunFlare - materials: - Steel: 80 - Plastic: 80 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: BoxShotgunIncendiary - result: BoxShotgunIncendiary - materials: - Steel: 80 - Plastic: 320 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxPistolPractice - result: MagazineBoxPistolPractice - materials: - Steel: 300 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxMagnumPractice - result: MagazineBoxMagnumPractice - materials: - Steel: 60 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxLightRiflePractice - result: MagazineBoxLightRiflePractice - materials: - Steel: 300 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxRiflePractice - result: MagazineBoxRiflePractice - materials: - Steel: 250 - -- type: latheRecipe - parent: BaseWeaponRecipe - id: WeaponLaserCarbinePractice - result: WeaponLaserCarbinePractice - completetime: 6 - materials: - Steel: 1800 - Glass: 400 - Plastic: 250 - -- type: latheRecipe - parent: BaseWeaponRecipe - id: WeaponDisablerPractice - result: WeaponDisablerPractice - completetime: 4 - materials: - Steel: 500 - Glass: 100 - Plastic: 200 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: BoxShotgunPractice - result: BoxShotgunPractice - materials: - Steel: 80 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxPistolUranium - result: MagazineBoxPistolUranium - materials: - Plastic: 300 - Uranium: 600 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxMagnumUranium - result: MagazineBoxMagnumUranium - materials: - Plastic: 240 - Uranium: 180 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxLightRifleUranium - result: MagazineBoxLightRifleUranium - materials: - Plastic: 600 - Uranium: 600 - -- type: latheRecipe - parent: BaseAmmoRecipe - id: MagazineBoxRifleUranium - result: MagazineBoxRifleUranium + parent: BaseWeaponRecipeLong + id: WeaponTemperatureGun + result: WeaponTemperatureGun materials: + Steel: 2000 + Glass: 500 Plastic: 500 - Uranium: 500 + Gold: 500 +# Sidearms - type: latheRecipe - parent: BaseAmmoRecipe - id: BoxShotgunUranium - result: BoxShotgunUranium - materials: - Plastic: 320 - Uranium: 240 - -- type: latheRecipe - parent: BaseWeaponRecipe - id: WeaponFlareGunSecurity - result: WeaponFlareGunSecurity - completetime: 6 - materials: - Plastic: 100 - Steel: 400 - -- type: latheRecipe - parent: BaseWeaponRecipe + parent: BaseWeaponRecipeSidearm id: WeaponDisabler result: WeaponDisabler - completetime: 6 materials: Steel: 300 Glass: 200 Plastic: 200 - type: latheRecipe - parent: WeaponDisabler + parent: BaseWeaponRecipeSidearm id: WeaponDisablerSMG result: WeaponDisablerSMG materials: @@ -651,47 +272,17 @@ Plastic: 500 - type: latheRecipe - id: MagazineGrenadeEmpty - result: MagazineGrenadeEmpty - completetime: 3 - materials: - Steel: 150 - Plastic: 50 - -- type: latheRecipe - id: GrenadeEMP - result: GrenadeEMP - completetime: 3 - materials: - Steel: 150 - Plastic: 100 - Glass: 20 - -- type: latheRecipe - id: GrenadeBlast - result: GrenadeBlast - completetime: 3 - materials: - Steel: 450 - Plastic: 300 - Gold: 150 - -- type: latheRecipe - id: GrenadeFlash - result: GrenadeFlash - completetime: 3 - materials: - Steel: 150 - Plastic: 100 - Glass: 20 - -- type: latheRecipe - id: PortableRecharger - result: PortableRecharger - completetime: 15 + parent: BaseWeaponRecipeSidearm + id: WeaponLaserSvalinn + result: WeaponLaserSvalinn materials: Steel: 2000 - Uranium: 2000 - Plastic: 1000 - Plasma: 500 - Glass: 500 + Gold: 500 + +- type: latheRecipe + parent: BaseWeaponRecipeSidearm + id: WeaponFlareGunSecurity + result: WeaponFlareGunSecurity + materials: + Plastic: 100 + Steel: 400 diff --git a/Resources/Prototypes/Recipes/Reactions/drinks.yml b/Resources/Prototypes/Recipes/Reactions/drinks.yml index a46dfa2969..02e992441b 100644 --- a/Resources/Prototypes/Recipes/Reactions/drinks.yml +++ b/Resources/Prototypes/Recipes/Reactions/drinks.yml @@ -8,6 +8,18 @@ products: AcidSpit: 3 +- type: reaction + id: AlienBrainHemorrhage + reactants: + IrishCream: + amount: 1 + BlueCuracao: + amount: 1 + Grenadine: + amount: 1 + products: + AlienBrainHemorrhage: 3 + - type: reaction id: AlliesCocktail requiredMixerCategories: @@ -238,6 +250,20 @@ products: BraveBull: 3 +- type: reaction + id: Bronx + requiredMixerCategories: + - Shake + reactants: + Gin: + amount: 1 + Vermouth: + amount: 1 + JuiceOrange: + amount: 1 + products: + Bronx: 3 + - type: reaction id: CafeLatte reactants: @@ -282,6 +308,16 @@ products: CreamOfCoconut: 3 +- type: reaction + id: CrushDepth + reactants: + RootBeerFloat: + amount: 1 + Rum: + amount: 1 + products: + CrushDepth: 2 + - type: reaction id: CubaLibre reactants: @@ -292,6 +328,16 @@ products: CubaLibre: 3 +- type: reaction + id: DarkandStormy + reactants: + SolDry: + amount: 1 + Rum: + amount: 1 + products: + DarkandStormy: 2 + - type: reaction id: DemonsBlood requiredMixerCategories: @@ -352,6 +398,34 @@ products: DriestMartini: 2 +- type: reaction + id: Eggnog + requiredMixerCategories: + - Shake + reactants: + Egg: + amount: 1 + Milk: + amount: 4 + Rum: + amount: 5 + products: + Eggnog: 10 + +- type: reaction + id: ElectricShark + requiredMixerCategories: + - Shake + reactants: + DarkandStormy: + amount: 4 + BlueCuracao: + amount: 1 + JuicePineapple: + amount: 1 + products: + ElectricShark: 6 + - type: reaction id: ErikaSurprise requiredMixerCategories: @@ -573,6 +647,8 @@ amount: 1 products: IrishSlammer: 2 + sound: + path: /Audio/Animals/penguin_squawk.ogg # Cocktail is called grenade penguin in localisation - type: reaction id: IrishCoffee @@ -596,6 +672,48 @@ products: IrishCream: 3 +- type: reaction + id: JackRose + requiredMixerCategories: + - Shake + reactants: + JuiceApple: + amount: 1 + Cognac: + amount: 1 + Grenadine: + amount: 1 + JuiceLemon: + amount: 1 + products: + JackRose: 4 + +- type: reaction + id: JungleBird + requiredMixerCategories: + - Shake + reactants: + Rum: + amount: 3 + JuicePineapple: + amount: 1 + Grenadine: + amount: 1 + JuiceLime: + amount: 1 + products: + JungleBird: 6 + +- type: reaction + id: Kalimotxo + reactants: + Cola: + amount: 1 + Wine: + amount: 1 + products: + Kalimotxo: 2 + - type: reaction id: KiraSpecial requiredMixerCategories: @@ -735,6 +853,22 @@ products: Mojito: 4 +- type: reaction + id: MonkeyBusiness + requiredMixerCategories: + - Shake + reactants: + Gin: + amount: 1 + JuiceOrange: + amount: 1 + Grenadine: + amount: 1 + Absinthe: + amount: 1 + products: + MonkeyBusiness: 4 + - type: reaction id: Moonshine reactants: @@ -836,6 +970,16 @@ products: Posca: 3 +- type: reaction + id: Radler + reactants: + Lemonade: + amount: 1 + Beer: + amount: 1 + products: + Radler: 2 + - type: reaction id: RedMead reactants: @@ -1039,6 +1183,18 @@ products: ThreeMileIsland: 10 +- type: reaction + id: Tortuga + requiredMixerCategories: + - Stir + reactants: + IcedTea: + amount: 1 + Sugar: + amount: 1 + products: + Tortuga: 2 + - type: reaction id: ToxinsSpecial requiredMixerCategories: @@ -1053,6 +1209,22 @@ products: ToxinsSpecial: 5 +- type: reaction + id: Vampiro + requiredMixerCategories: + - Shake + reactants: + TequilaSunrise: + amount: 3 + BloodyMary: + amount: 1 + Hotsauce: + amount: 1 + LemonLime: + amount: 1 + products: + Vampiro: 6 + - type: reaction id: VodkaMartini requiredMixerCategories: @@ -1219,7 +1391,7 @@ amount: 1 products: Cola: 4 - + - type: reaction id: Caipirinha requiredMixerCategories: diff --git a/Resources/Prototypes/Research/arsenal.yml b/Resources/Prototypes/Research/arsenal.yml index 6cecc49035..b848ae0998 100644 --- a/Resources/Prototypes/Research/arsenal.yml +++ b/Resources/Prototypes/Research/arsenal.yml @@ -193,16 +193,16 @@ - PortableRecharger - type: technology - id: ExperimentalBatteryAmmo - name: research-technology-experimental-battery-ammo + id: ThermalWeaponry + name: research-technology-thermal-weaponry icon: - sprite: Objects/Weapons/Guns/Battery/svalinn.rsi + sprite: Objects/Weapons/Guns/Battery/temp_gun.rsi state: icon discipline: Arsenal tier: 3 cost: 15000 recipeUnlocks: - - WeaponLaserSvalinn + - WeaponTemperatureGun - type: technology id: AdvancedShuttleWeapon diff --git a/Resources/Prototypes/Research/experimental.yml b/Resources/Prototypes/Research/experimental.yml index be19a11702..da3c053c68 100644 --- a/Resources/Prototypes/Research/experimental.yml +++ b/Resources/Prototypes/Research/experimental.yml @@ -124,8 +124,6 @@ - WeaponParticleDecelerator - HoloprojectorField -# Tier 3 - - type: technology id: GravityManipulation name: research-technology-gravity-manipulation @@ -133,12 +131,14 @@ sprite: Objects/Weapons/Guns/Launchers/tether_gun.rsi state: base discipline: Experimental - tier: 3 + tier: 2 cost: 10000 recipeUnlocks: - WeaponForceGun - WeaponTetherGun +# Tier 3 + - type: technology id: QuantumLeaping name: research-technology-quantum-leaping @@ -150,3 +150,15 @@ cost: 10000 recipeUnlocks: - DeviceQuantumSpinInverter + +- type: technology + id: BluespaceTimeManipulation + name: research-technology-bluespace-time-manipulation + icon: + sprite: Objects/Devices/desynchronizer.rsi + state: icon + discipline: Experimental + tier: 3 + cost: 10000 + recipeUnlocks: + - DeviceDesynchronizer \ No newline at end of file diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml index 99a620aaae..264f794d99 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/quartermaster.yml @@ -7,15 +7,13 @@ requirements: - !type:RoleTimeRequirement role: JobCargoTechnician - time: 21600 #6 hrs + time: 18000 #5 hrs - !type:RoleTimeRequirement role: JobSalvageSpecialist - time: 10800 #3 hrs + time: 9000 #2.5 hrs - !type:DepartmentTimeRequirement department: Cargo time: 36000 #10 hours - - !type:OverallPlaytimeRequirement - time: 144000 #40 hrs weight: 10 startingGear: QuartermasterGear icon: "JobIconQuarterMaster" diff --git a/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml b/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml index 0daf7f38bc..7219588f0e 100644 --- a/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml +++ b/Resources/Prototypes/Roles/Jobs/Cargo/salvage_specialist.yml @@ -7,9 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Cargo - time: 10800 # 3 hrs - - !type:OverallPlaytimeRequirement - time: 36000 #10 hrs + time: 9000 # 2.5 hrs icon: "JobIconShaftMiner" startingGear: SalvageSpecialistGear supervisors: job-supervisors-qm diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml index ffce4f788f..836fc00fa6 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/bartender.yml @@ -7,7 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Civilian - time: 1800 + time: 1800 #0.5 hr startingGear: BartenderGear icon: "JobIconBartender" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml index 8808ea3a44..08b6cbb752 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/chef.yml @@ -7,7 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Civilian - time: 1800 + time: 1800 #0.5 hr startingGear: ChefGear icon: "JobIconChef" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml b/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml index 0d92d6e649..61232520b7 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/lawyer.yml @@ -6,7 +6,7 @@ playTimeTracker: JobLawyer requirements: - !type:OverallPlaytimeRequirement - time: 36000 # 10 hrs + time: 9000 # 2.5 hrs startingGear: LawyerGear icon: "JobIconLawyer" supervisors: job-supervisors-hop diff --git a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml index 079aac9b5f..975ad655a8 100644 --- a/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml +++ b/Resources/Prototypes/Roles/Jobs/Civilian/service_worker.yml @@ -4,6 +4,10 @@ description: job-description-serviceworker setPreference: false playTimeTracker: JobServiceWorker + requirements: + - !type:DepartmentTimeRequirement + department: Civilian + time: 1800 #0.5 hr startingGear: ServiceWorkerGear icon: "JobIconServiceWorker" supervisors: job-supervisors-service diff --git a/Resources/Prototypes/Roles/Jobs/Command/captain.yml b/Resources/Prototypes/Roles/Jobs/Command/captain.yml index f430ad259d..b126ae6af6 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/captain.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/captain.yml @@ -7,16 +7,19 @@ requirements: - !type:DepartmentTimeRequirement department: Engineering - time: 54000 # 15 hours + time: 14400 # 4 hours - !type:DepartmentTimeRequirement department: Medical - time: 54000 # 15 hours + time: 14400 # 4 hours + - !type:DepartmentTimeRequirement + department: Science + time: 14400 # 4 hours - !type:DepartmentTimeRequirement department: Security - time: 54000 # 15 hours + time: 14400 # 4 hours - !type:DepartmentTimeRequirement department: Command - time: 54000 # 15 hours + time: 14400 # 4 hours weight: 20 startingGear: CaptainGear icon: "JobIconCaptain" diff --git a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml index 87b63ae14d..8594edfba4 100644 --- a/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml +++ b/Resources/Prototypes/Roles/Jobs/Command/head_of_personnel.yml @@ -7,16 +7,19 @@ requirements: - !type:DepartmentTimeRequirement department: Engineering - time: 36000 # 10 hours + time: 9000 # 2.5 hours - !type:DepartmentTimeRequirement department: Medical - time: 36000 # 10 hours + time: 9000 # 2.5 hours + - !type:DepartmentTimeRequirement + department: Science + time: 9000 # 2.5 hrs - !type:DepartmentTimeRequirement department: Security - time: 36000 # 10 hrs + time: 9000 # 2.5 hrs - !type:DepartmentTimeRequirement department: Command - time: 36000 # 10 hours + time: 9000 # 2.5 hours weight: 20 startingGear: HoPGear icon: "JobIconHeadOfPersonnel" diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml index 84c4b64f19..730c2b1796 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/atmospheric_technician.yml @@ -5,9 +5,9 @@ setPreference: false playTimeTracker: JobAtmosphericTechnician requirements: - - !type:DepartmentTimeRequirement - department: Engineering - time: 54000 # 15 hrs + - !type:DepartmentTimeRequirement + department: Engineering + time: 9000 #2.5 hrs startingGear: AtmosphericTechnicianGear icon: "JobIconAtmosphericTechnician" supervisors: job-supervisors-ce diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml index 82f4ddf511..761791ea0f 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/chief_engineer.yml @@ -7,15 +7,13 @@ requirements: - !type:RoleTimeRequirement role: JobAtmosphericTechnician - time: 21600 #6 hrs + time: 9000 #2.5 hrs - !type:RoleTimeRequirement role: JobStationEngineer - time: 21600 #6 hrs + time: 18000 #5 hrs - !type:DepartmentTimeRequirement department: Engineering time: 36000 #10 hrs - - !type:OverallPlaytimeRequirement - time: 144000 #40 hrs weight: 10 startingGear: ChiefEngineerGear icon: "JobIconChiefEngineer" diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml index 8dec7de4cb..99bcf440b5 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/station_engineer.yml @@ -7,7 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Engineering - time: 14400 #4 hrs + time: 9000 #2.5 hrs startingGear: StationEngineerGear icon: "JobIconStationEngineer" supervisors: job-supervisors-ce diff --git a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml index 992483129f..fbaeb2245f 100644 --- a/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Engineering/technical_assistant.yml @@ -9,7 +9,7 @@ time: 3600 #1 hr - !type:DepartmentTimeRequirement department: Engineering - time: 54000 #15 hrs + time: 18000 #5 hrs inverted: true # stop playing intern if you're good at engineering! startingGear: TechnicalAssistantGear icon: "JobIconTechnicalAssistant" diff --git a/Resources/Prototypes/Roles/Jobs/Fun/wizard_startinggear.yml b/Resources/Prototypes/Roles/Jobs/Fun/wizard_startinggear.yml index 0697b698b2..d137df195e 100644 --- a/Resources/Prototypes/Roles/Jobs/Fun/wizard_startinggear.yml +++ b/Resources/Prototypes/Roles/Jobs/Fun/wizard_startinggear.yml @@ -8,9 +8,9 @@ outerClothing: ClothingOuterWizard shoes: ClothingShoesWizard id: WizardPDA - ears: ClothingHeadsetAltCommand + ears: ClothingHeadsetAltWizard belt: ClothingBeltWand - # pocket1: TODO: Include wizard teleport scroll + pocket1: WizardTeleportScroll pocket2: WizardsGrimoire - type: startingGear @@ -28,9 +28,3 @@ jumpsuit: ClothingUniformJumpsuitColorPurple head: ClothingHeadHatVioletwizard outerClothing: ClothingOuterWizardViolet - -- type: startingGear - id: WizardHardsuitGear - parent: WizardVioletGear - equipment: - outerClothing: ClothingOuterHardsuitWizard diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml index 712bd45626..4211a99a2b 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chemist.yml @@ -7,7 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Medical - time: 14400 #4 hrs + time: 18000 #5 hrs startingGear: ChemistGear icon: "JobIconChemist" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml index b1ef57931e..4f481c9052 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/chief_medical_officer.yml @@ -9,16 +9,13 @@ requirements: - !type:RoleTimeRequirement role: JobChemist - time: 10800 #3 hrs + time: 9000 #2.5 hrs - !type:RoleTimeRequirement role: JobMedicalDoctor - time: 21600 #6 hrs + time: 18000 #5 hrs - !type:DepartmentTimeRequirement department: Medical time: 36000 #10 hrs - - !type:OverallPlaytimeRequirement - time: 144000 #40 hrs - weight: 10 startingGear: CMOGear icon: "JobIconChiefMedicalOfficer" supervisors: job-supervisors-captain diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml index 327476eb3e..803f5a8c4c 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_doctor.yml @@ -7,7 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Medical - time: 14400 #4 hrs + time: 9000 #2.5 hrs startingGear: DoctorGear icon: "JobIconMedicalDoctor" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml index dd5d74454a..c5b1d97c1f 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/medical_intern.yml @@ -7,7 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Medical - time: 54000 # 15 hrs + time: 18000 # 5 hrs inverted: true # stop playing intern if you're good at med! startingGear: MedicalInternGear icon: "JobIconMedicalIntern" diff --git a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml index 64f5e607fe..d7ab2fb885 100644 --- a/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml +++ b/Resources/Prototypes/Roles/Jobs/Medical/paramedic.yml @@ -5,11 +5,9 @@ setPreference: false playTimeTracker: JobParamedic requirements: - - !type:RoleTimeRequirement - role: JobMedicalDoctor - time: 14400 #4 hrs - - !type:OverallPlaytimeRequirement - time: 54000 # 15 hrs + - !type:DepartmentTimeRequirement + department: Medical + time: 9000 #2.5 hrs startingGear: ParamedicGear icon: "JobIconParamedic" supervisors: job-supervisors-cmo diff --git a/Resources/Prototypes/Roles/Jobs/Science/borg.yml b/Resources/Prototypes/Roles/Jobs/Science/borg.yml index daf2128dbb..8ceefb8c64 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/borg.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/borg.yml @@ -1,4 +1,5 @@ # No idea why it's in sci but we ball. +# Why is this one file? - type: job id: StationAi name: job-name-station-ai @@ -8,7 +9,7 @@ requirements: - !type:RoleTimeRequirement role: JobBorg - time: 54000 # 15 hrs + time: 18000 # 5 hrs canBeAntag: false icon: JobIconStationAi supervisors: job-supervisors-rd @@ -24,7 +25,7 @@ playTimeTracker: JobBorg requirements: - !type:OverallPlaytimeRequirement - time: 144000 # 40 hrs + time: 36000 # 10 hrs canBeAntag: false icon: JobIconBorg supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml index 16349539e0..8f0b7dc8a5 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_assistant.yml @@ -7,7 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Science - time: 54000 #15 hrs + time: 18000 #5 hrs inverted: true # stop playing intern if you're good at science! startingGear: ResearchAssistantGear icon: "JobIconResearchAssistant" diff --git a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml index 2575ca995e..55824c1a71 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/research_director.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/research_director.yml @@ -5,11 +5,12 @@ setPreference: false playTimeTracker: JobResearchDirector requirements: - - !type:DepartmentTimeRequirement - department: Science - time: 36000 #10 hrs - - !type:OverallPlaytimeRequirement - time: 144000 #40 hrs + - !type:RoleTimeRequirement + role: JobScientist + time: 18000 #5 hrs + - !type:DepartmentTimeRequirement + department: Science + time: 36000 #10 hrs weight: 10 startingGear: ResearchDirectorGear icon: "JobIconResearchDirector" diff --git a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml index 49292e39f8..5ee4c4fa29 100644 --- a/Resources/Prototypes/Roles/Jobs/Science/scientist.yml +++ b/Resources/Prototypes/Roles/Jobs/Science/scientist.yml @@ -7,7 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Science - time: 14400 #4 hrs + time: 9000 #2.5 hrs startingGear: ScientistGear icon: "JobIconScientist" supervisors: job-supervisors-rd diff --git a/Resources/Prototypes/Roles/Jobs/Security/detective.yml b/Resources/Prototypes/Roles/Jobs/Security/detective.yml index 750c67591e..d9c6ef0177 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/detective.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/detective.yml @@ -5,9 +5,9 @@ setPreference: false playTimeTracker: JobDetective requirements: - - !type:DepartmentTimeRequirement - department: Security - time: 54000 # 15 hours + - !type:RoleTimeRequirement + role: JobSecurityOfficer + time: 18000 #5 hrs startingGear: DetectiveGear icon: "JobIconDetective" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml index d5a48f7628..704554f467 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/head_of_security.yml @@ -7,15 +7,16 @@ requirements: - !type:RoleTimeRequirement role: JobWarden - time: 10800 #3 hrs + time: 3600 #1 hr + - !type:RoleTimeRequirement + role: JobDetective + time: 3600 #1 hr, knowing how to use the tools is important - !type:RoleTimeRequirement role: JobSecurityOfficer - time: 36000 #10 hrs + time: 18000 #5 hrs - !type:DepartmentTimeRequirement department: Security - time: 108000 # 30 hrs - - !type:OverallPlaytimeRequirement - time: 144000 #40 hrs + time: 36000 # 10 hrs weight: 10 startingGear: HoSGear icon: "JobIconHeadOfSecurity" diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml index a3dec02b25..ebddfae39b 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_cadet.yml @@ -9,7 +9,7 @@ time: 36000 #10 hrs - !type:DepartmentTimeRequirement department: Security - time: 54000 #15 hrs + time: 18000 #5 hrs inverted: true # stop playing intern if you're good at security! startingGear: SecurityCadetGear icon: "JobIconSecurityCadet" diff --git a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml index 40e242bc78..ea2f652650 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/security_officer.yml @@ -7,7 +7,7 @@ requirements: - !type:DepartmentTimeRequirement department: Security - time: 36000 #10 hrs + time: 9000 #2.5 hrs startingGear: SecurityOfficerGear icon: "JobIconSecurityOfficer" supervisors: job-supervisors-hos diff --git a/Resources/Prototypes/Roles/Jobs/Security/warden.yml b/Resources/Prototypes/Roles/Jobs/Security/warden.yml index 7b47a67c40..fa40da9059 100644 --- a/Resources/Prototypes/Roles/Jobs/Security/warden.yml +++ b/Resources/Prototypes/Roles/Jobs/Security/warden.yml @@ -7,6 +7,9 @@ requirements: - !type:RoleTimeRequirement role: JobSecurityOfficer + time: 18000 #5 hrs + - !type:DepartmentTimeRequirement + department: Security time: 36000 #10 hrs weight: 5 startingGear: WardenGear diff --git a/Resources/Prototypes/Roles/MindRoles/mind_roles.yml b/Resources/Prototypes/Roles/MindRoles/mind_roles.yml index cdab1c6150..687b7e17bf 100644 --- a/Resources/Prototypes/Roles/MindRoles/mind_roles.yml +++ b/Resources/Prototypes/Roles/MindRoles/mind_roles.yml @@ -95,7 +95,6 @@ antagPrototype: GenericTeamAntagonist # This should be used (or inherited) for team antags that are summoned or converted in large quantities, and are "secondary" to other antags -# TODO: sort weight - type: entity parent: MindRoleGhostRoleTeamAntagonist id: MindRoleGhostRoleTeamAntagonistFlock @@ -130,6 +129,7 @@ - type: MindRole antagPrototype: SubvertedSilicon roleType: SiliconAntagonist + subtype: role-subtype-subverted - type: SubvertedSiliconRole # Dragon @@ -141,6 +141,7 @@ - type: MindRole antagPrototype: Dragon roleType: TeamAntagonist + subtype: role-subtype-dragon exclusiveAntag: true - type: DragonRole - type: RoleBriefing @@ -154,6 +155,7 @@ components: - type: MindRole antagPrototype: SpaceNinja + subtype: role-subtype-ninja exclusiveAntag: true - type: NinjaRole @@ -165,7 +167,7 @@ components: - type: MindRole antagPrototype: ParadoxClone - roleType: SoloAntagonist + subtype: role-subtype-paradox-clone - type: ParadoxCloneRole # Nukies @@ -176,6 +178,7 @@ components: - type: MindRole roleType: TeamAntagonist + subtype: role-subtype-nukie exclusiveAntag: true antagPrototype: Nukeops - type: NukeopsRole @@ -206,6 +209,7 @@ antagPrototype: HeadRev exclusiveAntag: true roleType: TeamAntagonist + subtype: role-subtype-head-revolutionary - type: RevolutionaryRole - type: entity @@ -215,6 +219,7 @@ components: - type: MindRole antagPrototype: Rev + subtype: role-subtype-revolutionary # Survivors (Wizard) - type: entity @@ -225,6 +230,7 @@ - type: MindRole antagPrototype: Survivor roleType: FreeAgent + subtype: role-subtype-survivor - type: SurvivorRole # Thief @@ -235,6 +241,7 @@ components: - type: MindRole antagPrototype: Thief + subtype: role-subtype-thief - type: ThiefRole # Traitors @@ -246,6 +253,7 @@ - type: MindRole antagPrototype: Traitor exclusiveAntag: true + subtype: role-subtype-traitor - type: TraitorRole - type: entity @@ -263,6 +271,7 @@ components: - type: MindRole roleType: TeamAntagonist + subtype: role-subtype-traitor-reinforcement antagPrototype: GenericTeamAntagonist # Wizards @@ -274,6 +283,7 @@ - type: MindRole antagPrototype: Wizard exclusiveAntag: true + subtype: role-subtype-wizard - type: WizardRole # Zombie Squad @@ -286,6 +296,7 @@ antagPrototype: InitialInfected exclusiveAntag: true roleType: TeamAntagonist + subtype: role-subtype-initial-infected - type: InitialInfectedRole - type: entity @@ -296,5 +307,5 @@ - type: MindRole antagPrototype: Zombie exclusiveAntag: true - roleType: TeamAntagonist + subtype: role-subtype-zombie - type: ZombieRole diff --git a/Resources/Prototypes/Roles/role_types.yml b/Resources/Prototypes/Roles/role_types.yml index 7ae2b44054..eb8db63977 100644 --- a/Resources/Prototypes/Roles/role_types.yml +++ b/Resources/Prototypes/Roles/role_types.yml @@ -1,5 +1,8 @@ -# For use by Role Types -# Do not touch these +# The primary role types are referenced by RP Rules, and were specified based on head admin input. +# Do not create new ones without discussion. +# You probably want a Subtype instead, anyway. Use MindRoleComponent.Subtype + +# Any new primary role types must be listed in RoleTypes.xml # If you change/add a color here, also change it in role-types.ftl! diff --git a/Resources/Prototypes/SoundCollections/artifact.yml b/Resources/Prototypes/SoundCollections/artifact.yml index 9584a019a5..d6a65487d9 100644 --- a/Resources/Prototypes/SoundCollections/artifact.yml +++ b/Resources/Prototypes/SoundCollections/artifact.yml @@ -1,5 +1,5 @@ - type: soundCollection - id: ArtifactActivation + id: ArtifactUnlockingActivationSuccess files: - /Audio/Items/Artifact/artifact1.ogg - /Audio/Items/Artifact/artifact2.ogg @@ -8,3 +8,13 @@ - /Audio/Items/Artifact/artifact5.ogg - /Audio/Items/Artifact/artifact6.ogg - /Audio/Items/Artifact/artifact7.ogg + +- type: soundCollection + id: ArtifactUnlockActivationFailure + files: + - /Audio/Items/Artifact/artifact-activation-fail1.ogg + +- type: soundCollection + id: ArtifactForceActivation + files: + - /Audio/Items/Artifact/artifact-force-activated1.ogg diff --git a/Resources/Prototypes/SoundCollections/machines.yml b/Resources/Prototypes/SoundCollections/machines.yml new file mode 100644 index 0000000000..7848da0268 --- /dev/null +++ b/Resources/Prototypes/SoundCollections/machines.yml @@ -0,0 +1,14 @@ +- type: soundCollection + id: CargoPing + files: + - /Audio/Effects/Cargo/ping.ogg + +- type: soundCollection + id: CargoError + files: + - /Audio/Effects/Cargo/buzz_sigh.ogg + +- type: soundCollection + id: CargoToggleLimit + files: + - /Audio/Machines/quickbeep.ogg diff --git a/Resources/Prototypes/Store/categories.yml b/Resources/Prototypes/Store/categories.yml index 69cde10020..b3c358d388 100644 --- a/Resources/Prototypes/Store/categories.yml +++ b/Resources/Prototypes/Store/categories.yml @@ -94,6 +94,11 @@ id: RevenantAbilities name: store-category-abilities +#pai +- type: storeCategory + id: PAIAbilities + name: store-category-abilities + - type: storeCategory id: DiscountedItems name: store-discounted-items diff --git a/Resources/Prototypes/Store/currency.yml b/Resources/Prototypes/Store/currency.yml index b1cff06be2..0173de62f9 100644 --- a/Resources/Prototypes/Store/currency.yml +++ b/Resources/Prototypes/Store/currency.yml @@ -10,6 +10,11 @@ displayName: store-currency-display-stolen-essence canWithdraw: false +- type: currency + id: SiliconMemory + displayName: store-currency-display-silicon-memory + canWithdraw: false + - type: currency id: WizCoin displayName: store-currency-display-wizcoin diff --git a/Resources/Prototypes/Voice/disease_emotes.yml b/Resources/Prototypes/Voice/disease_emotes.yml index 2e682b3bbd..1076743eba 100644 --- a/Resources/Prototypes/Voice/disease_emotes.yml +++ b/Resources/Prototypes/Voice/disease_emotes.yml @@ -13,8 +13,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-cough"] chatTriggers: - cough @@ -64,8 +64,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-yawn"] chatTriggers: - yawn diff --git a/Resources/Prototypes/Voice/speech_emotes.yml b/Resources/Prototypes/Voice/speech_emotes.yml index a1f0f3e2bc..4720c6041f 100644 --- a/Resources/Prototypes/Voice/speech_emotes.yml +++ b/Resources/Prototypes/Voice/speech_emotes.yml @@ -8,8 +8,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-scream"] chatTriggers: - scream @@ -49,8 +49,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-laugh"] chatTriggers: - laugh @@ -88,7 +88,8 @@ requireAll: true components: - Vocal - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-honk"] chatTriggers: - honk @@ -105,8 +106,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-sigh"] chatTriggers: - sigh @@ -127,8 +128,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-whistle"] chatTriggers: - whistle @@ -148,8 +149,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-crying"] chatTriggers: - cry @@ -173,8 +174,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-squish"] chatTriggers: - squish @@ -194,8 +195,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-chitter"] chatTriggers: - chitter @@ -215,8 +216,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-squeak"] chatTriggers: - squeak @@ -236,8 +237,8 @@ components: - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-click"] chatTriggers: - click @@ -257,8 +258,8 @@ components: - Hands blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-clap"] chatTriggers: - claps @@ -283,8 +284,8 @@ components: - Hands blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: [ "chat-emote-msg-clap-single" ] chatTriggers: - clap @@ -302,8 +303,8 @@ components: - Hands blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-snap"] chatTriggers: - snap @@ -343,8 +344,8 @@ components: - Hands blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-thump"] chatTriggers: - thump @@ -367,8 +368,8 @@ components: - Hands blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-salute"] chatTriggers: - salute @@ -420,8 +421,9 @@ whitelist: requireAll: true components: - - BorgChassis - Vocal + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-buzz"] chatTriggers: - buzzing @@ -454,8 +456,8 @@ - Nymph - Vocal blacklist: - components: - - BorgChassis + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-chirp"] chatTriggers: - chirp @@ -472,8 +474,9 @@ whitelist: requireAll: true components: - - BorgChassis - Vocal + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-beep"] chatTriggers: - beep @@ -489,8 +492,9 @@ whitelist: requireAll: true components: - - BorgChassis - Vocal + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-chime"] chatTriggers: - chime @@ -506,8 +510,9 @@ whitelist: requireAll: true components: - - BorgChassis - Vocal + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-buzzestwo"] chatTriggers: - buzztwice @@ -529,8 +534,9 @@ whitelist: requireAll: true components: - - BorgChassis - Vocal + tags: + - SiliconEmotes chatMessages: ["chat-emote-msg-ping"] chatTriggers: - ping diff --git a/Resources/Prototypes/XenoArch/Effects/normal_effects.yml b/Resources/Prototypes/XenoArch/Effects/normal_effects.yml deleted file mode 100644 index f2723e5369..0000000000 --- a/Resources/Prototypes/XenoArch/Effects/normal_effects.yml +++ /dev/null @@ -1,679 +0,0 @@ -- type: artifactEffect - id: EffectBadFeeling - targetDepth: 0 - effectHint: artifact-effect-hint-mental - components: - - type: TelepathicArtifact - messages: - - badfeeling-artifact-1 - - badfeeling-artifact-2 - - badfeeling-artifact-3 - - badfeeling-artifact-4 - - badfeeling-artifact-5 - - badfeeling-artifact-6 - - badfeeling-artifact-7 - - badfeeling-artifact-8 - - badfeeling-artifact-9 - - badfeeling-artifact-10 - - badfeeling-artifact-11 - - badfeeling-artifact-12 - - badfeeling-artifact-13 - - badfeeling-artifact-14 - - badfeeling-artifact-15 - drastic: - - badfeeling-artifact-drastic-1 - - badfeeling-artifact-drastic-2 - - badfeeling-artifact-drastic-3 - - badfeeling-artifact-drastic-4 - - badfeeling-artifact-drastic-5 - - badfeeling-artifact-drastic-6 - -- type: artifactEffect - id: EffectGoodFeeling - targetDepth: 0 - effectHint: artifact-effect-hint-mental - components: - - type: TelepathicArtifact - messages: - - goodfeeling-artifact-1 - - goodfeeling-artifact-2 - - goodfeeling-artifact-3 - - goodfeeling-artifact-4 - - goodfeeling-artifact-5 - - goodfeeling-artifact-6 - - goodfeeling-artifact-7 - - goodfeeling-artifact-8 - - goodfeeling-artifact-9 - - goodfeeling-artifact-10 - - goodfeeling-artifact-11 - - goodfeeling-artifact-12 - - goodfeeling-artifact-13 - - goodfeeling-artifact-14 - drastic: - - goodfeeling-artifact-drastic-1 - - goodfeeling-artifact-drastic-2 - - goodfeeling-artifact-drastic-3 - - goodfeeling-artifact-drastic-4 - - goodfeeling-artifact-drastic-5 - - goodfeeling-artifact-drastic-6 - -- type: artifactEffect - id: EffectJunkSpawn - targetDepth: 0 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 10 - spawns: - - id: FoodPacketSyndiTrash - prob: 0.1 - orGroup: Trash - - id: FoodPacketSemkiTrash - prob: 0.1 - orGroup: Trash - - id: FoodPacketBoritosTrash - prob: 0.1 - orGroup: Trash - - id: FoodPacketCheesieTrash - prob: 0.1 - orGroup: Trash - - id: FoodPacketChipsTrash - prob: 0.1 - orGroup: Trash - - id: FoodPacketChocolateTrash - prob: 0.1 - orGroup: Trash - - id: FoodPacketEnergyTrash - prob: 0.1 - orGroup: Trash - - id: FoodPacketPopcornTrash - prob: 0.1 - orGroup: Trash - - id: FoodPacketRaisinsTrash - prob: 0.1 - orGroup: Trash - - id: ToySpawner - prob: 0.1 - orGroup: Trash - -- type: artifactEffect - id: EffectLightFlicker - targetDepth: 0 - effectHint: artifact-effect-hint-electrical-interference - components: - - type: LightFlickerArtifact - -- type: artifactEffect - id: EffectPointLight - targetDepth: 0 - components: - - type: PointLight - radius: 8 - energy: 10 - color: "#daa3fd" - - type: TriggerArtifact - - type: FlashOnTrigger - range: 8 - -- type: artifactEffect #bornana - id: EffectBananaSpawn - targetDepth: 0 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 20 - spawns: - - id: FoodBanana - amount: 3 - maxAmount: 6 - - type: ChemicalPuddleArtifact - chemicalSolution: - maxVol: 100 - canReact: false - possibleChemicals: - - Potassium - -- type: artifactEffect - id: EffectFloraSpawn - targetDepth: 1 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 3 - spawns: - - id: RandomFloraTree - -- type: artifactEffect - id: EffectThrow - targetDepth: 0 - effectHint: artifact-effect-hint-environment - components: - - type: ThrowArtifact - -- type: artifactEffect - id: EffectChemicalPuddle - targetDepth: 0 - effectHint: artifact-effect-hint-biochemical - components: - - type: ChemicalPuddleArtifact - chemicalSolution: - maxVol: 500 - canReact: false - possibleChemicals: - - Aluminium - - Carbon - - Chlorine - - Copper - - Ethanol - - Fluorine - - Sugar - - Hydrogen - - Iodine - - Iron - - Lithium - - Mercury - - Nitrogen - - Oxygen - - Phosphorus - - Potassium - - Radium - - Silicon - - Sodium - - Water - - Sulfur - -- type: artifactEffect - id: EffectCold - targetDepth: 1 - effectHint: artifact-effect-hint-consumption - components: - - type: TemperatureArtifact - targetTemp: 50 - -- type: artifactEffect - id: EffectHeat - targetDepth: 1 - effectHint: artifact-effect-hint-release - components: - - type: TemperatureArtifact - targetTemp: 500 - -- type: artifactEffect - id: EffectFoamMild - targetDepth: 1 - effectHint: artifact-effect-hint-biochemical - components: - - type: FoamArtifact - reagents: - - Oxygen - - Plasma - - Blood - - SpaceCleaner - - Nutriment - - SpaceLube - - Ethanol - - Mercury - - VentCrud - - WeldingFuel - - JuiceThatMakesYouWeh - -- type: artifactEffect - id: EffectInstrumentSpawn - targetDepth: 1 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 5 - spawns: - - id: RandomInstruments - -- type: artifactEffect - id: EffectMonkeySpawn - targetDepth: 1 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - spawns: - - id: MobMonkey - orGroup: monkey - prob: 0.95 - - id: MobGorilla #harambe - orGroup: monkey - prob: 0.05 - -- type: artifactEffect - id: EffectChargeBatteries - targetDepth: 1 - effectHint: artifact-effect-hint-release - components: - - type: ChargeBatteryArtifact - - type: TelepathicArtifact - messages: - - charge-artifact-popup - -- type: artifactEffect - id: EffectRadiate - targetDepth: 1 - effectHint: artifact-effect-hint-release - components: - - type: RadiationSource - intensity: 1 - slope: 0.3 - -- type: artifactEffect - id: EffectKnock - targetDepth: 1 - effectHint: artifact-effect-hint-electrical-interference - components: - - type: KnockArtifact - -- type: artifactEffect - id: EffectMagnet - targetDepth: 1 - effectHint: artifact-effect-hint-magnet - components: - - type: GravityWell - maxRange: 3 - baseRadialAcceleration: 1 - baseTangentialAcceleration: 3 - -- type: artifactEffect - id: EffectAntiMagnet - targetDepth: 1 - effectHint: artifact-effect-hint-magnet - components: - - type: GravityWell - maxRange: 3 - baseRadialAcceleration: -1 - baseTangentialAcceleration: -3 - -- type: artifactEffect - id: EffectInvisibility - targetDepth: 2 - effectHint: artifact-effect-hint-visual - components: - - type: Stealth - hadOutline: true - - type: StealthOnMove - passiveVisibilityRate: -0.10 - movementVisibilityRate: 0.10 - -- type: artifactEffect - id: EffectExplosionScary - targetDepth: 2 - effectHint: artifact-effect-hint-environment - components: - - type: TriggerArtifact - - type: ExplodeOnTrigger - - type: Explosive - deleteAfterExplosion: false - explosionType: Radioactive - totalIntensity: 300 - intensitySlope: 2 - maxIntensity: 1.5 - canCreateVacuum: false - -- type: artifactEffect - id: EffectRareMaterialSpawn - targetDepth: 2 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - spawns: - - id: SilverOre1 - prob: 0.3 - maxAmount: 3 - - id: PlasmaOre1 - prob: 0.3 - maxAmount: 3 - - id: GoldOre1 - prob: 0.3 - maxAmount: 3 - - id: UraniumOre1 - prob: 0.3 - maxAmount: 3 - -- type: artifactEffect - id: EffectAngryCarpSpawn - targetDepth: 2 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 5 - spawns: - - id: MobCarpHolo - orGroup: carp - - id: MobCarpMagic - orGroup: carp - -- type: artifactEffect - id: EffectFaunaSpawn - targetDepth: 2 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 5 - spawns: - - id: MobAdultSlimesYellowAngry - orGroup: fauna - - id: MobAngryBee - orGroup: fauna - - id: MobBearSpace - orGroup: fauna - - id: MobBee - orGroup: fauna - maxAmount: 5 - - id: MobCat - orGroup: fauna - maxAmount: 2 - - id: MobCatKitten - orGroup: fauna - maxAmount: 2 - - id: MobCorgiPuppy - orGroup: fauna - maxAmount: 2 - - id: MobFox - orGroup: fauna - maxAmount: 1 - - id: MobGoat - orGroup: fauna - maxAmount: 3 - - id: MobKangaroo - orGroup: fauna - maxAmount: 1 - - id: MobKangarooSpace - orGroup: fauna - - id: MobMothroach - orGroup: fauna - maxAmount: 2 - - id: MobMonkeySyndicateAgent #so lucky - orGroup: fauna - maxAmount: 1 - prob: 0.03 - - id: MobMouse - orGroup: fauna - - id: MobParrot - orGroup: fauna - maxAmount: 1 - - id: MobPenguin - orGroup: fauna - maxAmount: 2 - - id: MobPig - orGroup: fauna - maxAmount: 1 - - id: MobPurpleSnake - orGroup: fauna - - id: MobSpiderSpace - orGroup: fauna - - id: MobTick - orGroup: fauna - - id: MobXenoRavager - orGroup: fauna - -- type: artifactEffect - id: EffectCashSpawn - targetDepth: 2 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 10 - spawns: - - id: SpaceCash10 - maxAmount: 5 - prob: 0.75 - - id: SpaceCash100 - maxAmount: 2 - prob: 0.5 - - id: SpaceCash500 - prob: 0.25 - - id: SpaceCash1000 - prob: 0.1 - -- type: artifactEffect - id: EffectShatterWindows - targetDepth: 2 - effectHint: artifact-effect-hint-environment - components: - - type: DamageNearbyArtifact - damageChance: 0.75 - whitelist: - tags: - - Window - damage: - types: - Structural: 200 - -- type: artifactEffect - id: EffectGas - targetDepth: 2 - effectHint: artifact-effect-hint-environment - components: - - type: GasArtifact - possibleGas: - - CarbonDioxide - - Plasma - - Tritium - - Ammonia - - NitrousOxide - - Frezon - -- type: artifactEffect - id: EffectBlink - targetDepth: 2 - effectHint: artifact-effect-hint-displacement - components: - - type: RandomTeleportArtifact - -- type: artifactEffect - id: EffectFoamGood - targetDepth: 2 - effectHint: artifact-effect-hint-biochemical - components: - - type: FoamArtifact - reagents: - - Dermaline - - Arithrazine - - Bicaridine - - Inaprovaline - - Kelotane - - Dexalin - - Omnizine - -- type: artifactEffect - id: EffectChemicalPuddleRare - targetDepth: 2 - effectHint: artifact-effect-hint-biochemical - components: - - type: ChemicalPuddleArtifact - chemicalSolution: - maxVol: 500 - canReact: false - possibleChemicals: - - Dermaline - - Arithrazine - - Bicaridine - - Inaprovaline - - Kelotane - - Dexalin - - Omnizine - - Napalm - - Toxin - - Epinephrine - - Cognizine - - Ultravasculine - - Desoxyephedrine - - Pax - - Siderlac - -- type: artifactEffect - id: EffectEmp - targetDepth: 2 - effectHint: artifact-effect-hint-electrical-interference - components: - - type: EmpArtifact - -- type: artifactEffect - id: EffectPolyMonkey - targetDepth: 2 - effectHint: artifact-effect-hint-polymorph - components: - - type: PolyOthersArtifact - -- type: artifactEffect - id: EffectPolyLizard - targetDepth: 2 - effectHint: artifact-effect-hint-polymorph - components: - - type: PolyOthersArtifact - polymorphPrototypeName: ArtifactLizard - -- type: artifactEffect - id: EffectPolyLuminous - targetDepth: 3 - effectHint: artifact-effect-hint-polymorph - components: - - type: PolyOthersArtifact - polymorphPrototypeName: ArtifactLuminous - -- type: artifactEffect - id: EffectHealAll - targetDepth: 3 - effectHint: artifact-effect-hint-environment - components: - - type: DamageNearbyArtifact - damageChance: 1 - radius: 8 - whitelist: - components: - - MobState - damage: - groups: - Brute: -300 - Burn: -300 - -- type: artifactEffect - id: EffectRadiateStrong - targetDepth: 3 - effectHint: artifact-effect-hint-release - components: - - type: RadiationSource - intensity: 2 - slope: 0.3 - -- type: artifactEffect - id: EffectMaterialSpawn - targetDepth: 3 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 5 - spawns: - - id: SheetSteel - orGroup: materials - - id: SheetGlass - orGroup: materials - - id: SheetPlastic - orGroup: materials - -- type: artifactEffect - id: EffectShuffle - targetDepth: 3 - effectHint: artifact-effect-hint-displacement - components: - - type: ShuffleArtifact - - type: TelepathicArtifact - range: 7.5 - messages: - - shuffle-artifact-popup - -- type: artifactEffect - id: EffectFoamDangerous - targetDepth: 3 - effectHint: artifact-effect-hint-biochemical - components: - - type: FoamArtifact - minFoamAmount: 20 - maxFoamAmount: 30 - reagents: - - Tritium - - Plasma - - SulfuricAcid - - SpaceDrugs - - Nocturine - - MuteToxin - - Napalm - - CarpoToxin - - ChloralHydrate - - Mold - - Amatoxin - -- type: artifactEffect - id: EffectIgnite - targetDepth: 3 - effectHint: artifact-effect-hint-release - components: - - type: IgniteArtifact - range: 7 - minFireStack: 3 - maxFireStack: 6 - -- type: artifactEffect - id: EffectMitosis - targetDepth: 3 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 1 - spawns: - - id: RandomArtifactSpawner - -- type: artifactEffect - id: EffectAnomaly - targetDepth: 3 - effectHint: artifact-effect-hint-creation - components: - - type: SpawnArtifact - maxSpawns: 1 - spawns: - - id: RandomAnomalySpawner - -- type: artifactEffect - id: EffectBoom - targetDepth: 3 - effectHint: artifact-effect-hint-environment - components: - - type: TriggerArtifact - - type: ExplodeOnTrigger - - type: Explosive - deleteAfterExplosion: false - explosionType: Default - totalIntensity: 500 - intensitySlope: 2.5 - maxIntensity: 50 - -- type: artifactEffect - id: EffectPortal - targetDepth: 3 - effectHint: artifact-effect-hint-displacement - components: - - type: PortalArtifact - -- type: artifactEffect - id: EffectSingulo - targetDepth: 10 - effectHint: artifact-effect-hint-destruction - components: - - type: SpawnArtifact - maxSpawns: 1 - spawns: - - id: Singularity - -- type: artifactEffect - id: EffectTesla - targetDepth: 10 - effectHint: artifact-effect-hint-destruction - components: - - type: SpawnArtifact - maxSpawns: 1 - spawns: - - id: TeslaEnergyBall diff --git a/Resources/Prototypes/XenoArch/Effects/utility_effects.yml b/Resources/Prototypes/XenoArch/Effects/utility_effects.yml deleted file mode 100644 index 22581068d2..0000000000 --- a/Resources/Prototypes/XenoArch/Effects/utility_effects.yml +++ /dev/null @@ -1,251 +0,0 @@ -# Utility effects permanently modify the entity in some way when triggered, and they generally make it 'useful' for some purpose, -# like turning the artifact into a tool, or gun, or whatever. -- type: artifactEffect - id: EffectIntercom - targetDepth: 2 - effectHint: artifact-effect-hint-communication - permanentComponents: - - type: RadioMicrophone - powerRequired: false - toggleOnInteract: false - listenRange: 3 - - type: Speech - - type: RadioSpeaker - toggleOnInteract: false - - type: ActivatableUI - key: enum.IntercomUiKey.Key - - type: Intercom - requiresPower: false - supportedChannels: - - Common - - CentCom - - Command - - Engineering - - Medical - - Science - - Security - - Service - - Supply - -- type: artifactEffect - id: EffectRandomInstrument - targetDepth: 2 - effectHint: artifact-effect-hint-mental - permanentComponents: - - type: Instrument - - type: ActivatableUI - singleUser: true - verbText: verb-instrument-openui - key: enum.InstrumentUiKey.Key - - type: RandomInstrumentArtifact - -- type: artifactEffect - id: EffectStorage - targetDepth: 2 - effectHint: artifact-effect-hint-storage - whitelist: - components: - - Item # it doesnt necessarily have to be restricted from structures, but i think it'll be better that way - permanentComponents: - - type: Item - size: Huge - - type: Storage - maxItemSize: Huge - grid: - - 0,0,10,5 - -- type: artifactEffect - id: EffectPhasing - targetDepth: 2 - effectHint: artifact-effect-hint-phasing - permanentComponents: - - type: PhasingArtifact - -- type: artifactEffect - id: EffectWandering - targetDepth: 2 - effectHint: artifact-effect-hint-displacement - blacklist: - components: - - Item # item artifacts can't be anchored, so wanderers can't really be scanned properly - permanentComponents: - - type: RandomWalk - minSpeed: 12 - maxSpeed: 20 - minStepCooldown: 1 - maxStepCooldown: 3 - -- type: artifactEffect - id: EffectSolutionStorage - targetDepth: 2 - effectHint: artifact-effect-hint-storage - whitelist: - components: - - Item - permanentComponents: - - type: SolutionContainerManager - solutions: - beaker: - maxVol: 150 - - type: FitsInDispenser - solution: beaker - - type: RefillableSolution - solution: beaker - - type: DrainableSolution - solution: beaker - - type: ExaminableSolution - solution: beaker - - type: DrawableSolution - solution: beaker - - type: InjectableSolution - solution: beaker - - type: SolutionTransfer - canChangeTransferAmount: true - - type: Drink - solution: beaker - -- type: artifactEffect - id: EffectSpeedUp - targetDepth: 2 - effectHint: artifact-effect-hint-displacement - whitelist: - components: - - Item - permanentComponents: - - type: HeldSpeedModifier - walkModifier: 1.2 - sprintModifier: 1.3 - -- type: artifactEffect - id: EffectDrill - targetDepth: 3 - effectHint: artifact-effect-hint-drill - whitelist: - components: - - Item - permanentComponents: - - type: UseDelay - - type: MeleeWeapon - damage: - types: - Piercing: 18 - Blunt: 4 - soundHit: - path: /Audio/Weapons/bladeslice.ogg - - type: Sharp - -- type: artifactEffect - id: EffectPowerGen20K - targetDepth: 3 - effectHint: artifact-effect-hint-release - blacklist: - components: - - Item - permanentComponents: - - type: PowerSupplier - supplyRate: 20000 - - type: NodeContainer - examinable: true - nodes: - output_hv: - !type:CableDeviceNode - nodeGroupID: HVPower - -- type: artifactEffect - id: EffectBigIron - targetDepth: 3 - effectHint: artifact-effect-hint-gun - whitelist: - components: - - Item - permanentComponents: - - type: RevolverAmmoProvider - whitelist: - tags: - - CartridgeMagnum - - SpeedLoaderMagnum - proto: CartridgeMagnum - capacity: 7 - chambers: [ True, True, True, True, True, True, True ] - ammoSlots: [ null, null, null, null, null, null, null ] - soundEject: - path: /Audio/Weapons/Guns/MagOut/revolver_magout.ogg - soundInsert: - path: /Audio/Weapons/Guns/MagIn/revolver_magin.ogg - - type: Gun - selectedMode: SemiAuto - fireRate: 2 - availableModes: - - SemiAuto - - FullAuto # no alien revolver in buildings - soundGunshot: - path: /Audio/Weapons/Guns/Gunshots/revolver.ogg - -- type: artifactEffect - id: EffectSentience - targetDepth: 3 - effectHint: artifact-effect-hint-sentience - permanentComponents: - - type: GhostRole - allowMovement: true - allowSpeech: true - makeSentient: true - name: ghost-role-information-artifact-name - description: ghost-role-information-artifact-description - rules: ghost-role-information-freeagent-rules - mindRoles: - - MindRoleGhostRoleFreeAgent - raffle: - settings: default - - type: GhostTakeoverAvailable - - type: MovementSpeedModifier - baseWalkSpeed: 0.25 - baseSprintSpeed: 0.5 - -- type: artifactEffect - id: EffectMultitool - targetDepth: 3 - effectHint: artifact-effect-hint-multitool - whitelist: - components: - - Item - permanentComponents: - - type: UserInterface - interfaces: - enum.SignalLinkerUiKey.Key: - type: SignalPortSelectorBoundUserInterface - - type: ToolTileCompatible - - type: Tool - qualities: - - Screwing - speedModifier: 2 # Very powerful multitool to balance out the desire to sell or scrap for points - useSound: /Audio/Items/drill_use.ogg - - type: Tag - tags: - - Multitool - - type: MultipleTool - statusShowBehavior: true - entries: - - behavior: Screwing - useSound: - path: /Audio/Items/drill_use.ogg - changeSound: - path: /Audio/Items/change_drill.ogg - - behavior: Prying - useSound: - path: /Audio/Items/jaws_pry.ogg - changeSound: - path: /Audio/Items/change_drill.ogg - - behavior: Anchoring - useSound: - path: /Audio/Items/ratchet.ogg - changeSound: - path: /Audio/Items/change_drill.ogg - - behavior: Cutting - useSound: - path: /Audio/Items/jaws_cut.ogg - changeSound: - path: /Audio/Items/change_drill.ogg - - behavior: Pulsing - changeSound: - path: /Audio/Items/change_drill.ogg diff --git a/Resources/Prototypes/XenoArch/artifact_triggers.yml b/Resources/Prototypes/XenoArch/artifact_triggers.yml deleted file mode 100644 index ea2ea904c9..0000000000 --- a/Resources/Prototypes/XenoArch/artifact_triggers.yml +++ /dev/null @@ -1,205 +0,0 @@ -- type: artifactTrigger - id: TriggerInteraction - targetDepth: 0 - triggerHint: artifact-trigger-hint-physical - components: - - type: ArtifactInteractionTrigger - -- type: artifactTrigger - id: TriggerTimer - targetDepth: 0 - components: - - type: ArtifactTimerTrigger - -- type: artifactTrigger - id: TriggerExamine - targetDepth: 0 - triggerHint: artifact-trigger-hint-examine - components: - - type: ArtifactExamineTrigger - -- type: artifactTrigger - id: TriggerAnchor - targetDepth: 0 - triggerHint: artifact-trigger-hint-tool - blacklist: - components: - - Item - components: - - type: ArtifactAnchorTrigger - -- type: artifactTrigger - id: TriggerElectricity - targetDepth: 0 - triggerHint: artifact-trigger-hint-electricity - blacklist: - components: - - Item - components: - - type: ArtifactElectricityTrigger - - type: PowerConsumer - voltage: Medium - drawRate: 500 - - type: Electrified - requirePower: true - noWindowInTile: true - highVoltageNode: high - mediumVoltageNode: medium - lowVoltageNode: low - - type: NodeContainer - nodes: - medium: - !type:CableDeviceNode - nodeGroupID: MVPower - # sadly, HVPower and Apc cables doesn't work right now - -- type: artifactTrigger - id: TriggerMusic - targetDepth: 1 - triggerHint: artifact-trigger-hint-music - components: - - type: ArtifactMusicTrigger - -- type: artifactTrigger - id: TriggerBruteDamage - targetDepth: 1 - triggerHint: artifact-trigger-hint-physical - components: - - type: ArtifactDamageTrigger - damageTypes: - - Blunt - - Slash - - Piercing - damageThreshold: 50 - -- type: artifactTrigger - id: TriggerItemLanded - targetDepth: 1 - triggerHint: artifact-trigger-hint-land - whitelist: - components: - - Item - components: - - type: ArtifactLandTrigger - -- type: artifactTrigger - id: TriggerHeat - targetDepth: 1 - triggerHint: artifact-trigger-hint-heat - components: - - type: ArtifactHeatTrigger - -- type: artifactTrigger - id: TriggerWater - targetDepth: 1 - triggerHint: artifact-trigger-hint-water - components: - - type: Reactive - groups: - Acidic: [ Touch ] - reactions: - - reagents: [ Water ] - methods: [ Touch ] - effects: - - !type:ActivateArtifact - -- type: artifactTrigger - id: TriggerBlood - targetDepth: 1 - triggerHint: artifact-trigger-hint-blood - components: - - type: Reactive - groups: - Acidic: [ Touch ] - reactions: - - reagents: [ Blood, CopperBlood, InsectBlood, Slime, AmmoniaBlood, ZombieBlood ] - methods: [ Touch ] - effects: - - !type:ActivateArtifact - -- type: artifactTrigger - id: TriggerMedical - targetDepth: 2 - triggerHint: artifact-trigger-hint-medical - components: - - type: Reactive - groups: - Acidic: [ Touch ] - reactions: - - reagents: [ Dylovene, Diphenhydramine, Arithrazine, Bicaridine, Dermaline, Dexalin, DexalinPlus, Tricordrazine, Leporazine, Bruizine, Lacerinol, Puncturase, Pyrazine, Insuzine, Kelotane, Hyronalin, Inaprovaline, Epinephrine ] - methods: [ Touch ] - effects: - - !type:ActivateArtifact - -- type: artifactTrigger - id: TriggerGas - targetDepth: 2 - triggerHint: artifact-trigger-hint-regular-gases - components: - - type: ArtifactGasTrigger - possibleGas: - - Oxygen - - Nitrogen - - CarbonDioxide - -- type: artifactTrigger - id: TriggerDeath - targetDepth: 2 - triggerHint: artifact-trigger-hint-death - components: - - type: ArtifactDeathTrigger - -- type: artifactTrigger - id: TriggerMagnet - targetDepth: 2 - triggerHint: artifact-trigger-hint-magnet - components: - - type: ArtifactMagnetTrigger - -- type: artifactTrigger - id: TriggerLowPressure - targetDepth: 2 - triggerHint: artifact-trigger-hint-pressure - components: - - type: ArtifactPressureTrigger - minPressureThreshold: 50 - -- type: artifactTrigger - id: TriggerHighDamage - targetDepth: 3 - triggerHint: artifact-trigger-hint-physical - components: - - type: ArtifactDamageTrigger - damageThreshold: 500 #make it go boom or w/e - -- type: artifactTrigger - id: TriggerRadiation - targetDepth: 3 - triggerHint: artifact-trigger-hint-radiation - components: - - type: ArtifactMicrowaveTrigger - - type: ArtifactDamageTrigger - damageTypes: - - Radiation - damageThreshold: 50 - - type: RadiationReceiver - -- type: artifactTrigger - id: TriggerHighPressure - targetDepth: 3 - triggerHint: artifact-trigger-hint-pressure - components: - - type: ArtifactPressureTrigger - maxPressureThreshold: 385 - -- type: artifactTrigger - id: TriggerPlasma - targetDepth: 3 - triggerHint: artifact-trigger-hint-plasma - components: - - type: ArtifactGasTrigger - possibleGas: - - Plasma - -#don't add in new targetdepth values until you have a few -#or else it will skew heavily towards a few options. diff --git a/Resources/Prototypes/XenoArch/effects.yml b/Resources/Prototypes/XenoArch/effects.yml new file mode 100644 index 0000000000..027c79550c --- /dev/null +++ b/Resources/Prototypes/XenoArch/effects.yml @@ -0,0 +1,1351 @@ +- type: entityTable + id: XenoArtifactEffectsDefaultTable + table: !type:GroupSelector + children: + # hijacks use key, prevents from using artifact, sadly + #- id: XenoArtifactEffectUniversalIntercom + # weight: 10.0 + - id: XenoArtifactSolutionStorage + weight: 10.0 + - id: XenoArtifactPhasing + weight: 2.0 + - id: XenoArtifactWandering + weight: 4.0 + - id: XenoArtifactSpeedUp + weight: 4.0 + - id: XenoArtifactGhost + weight: 2.0 + - id: XenoArtifactEffectBadFeeling + weight: 10.0 + - id: XenoArtifactEffectGoodFeeling + weight: 10.0 + - id: XenoArtifactEffectJunkSpawn + weight: 10.0 + - id: XenoArtifactEffectLightFlicker + weight: 10.0 + - id: XenoArtifactPotassiumWave + weight: 7.0 + - id: XenoArtifactFloraSpawn + weight: 10.0 + - id: XenoArtifactChemicalPuddle + weight: 10.0 + - id: XenoArtifactThrowThingsAround + weight: 10.0 + - id: XenoArtifactColdWave + weight: 10.0 + - id: XenoArtifactHeatWave + weight: 4.0 + - id: XenoArtifactFoamMild + weight: 8.0 + - id: XenoArtifactRandomInstrumentSpawn + weight: 10.0 + - id: XenoArtifactMonkeySpawn + weight: 10.0 + - id: XenoArtifactRadioactive + weight: 8.0 + - id: XenoArtifactChargeBattery + weight: 10.0 + - id: XenoArtifactKnock + weight: 4.0 + - id: XenoArtifactMagnet + weight: 2.0 + - id: XenoArtifactMagnetNegative + weight: 2.0 + - id: XenoArtifactStealth + weight: 1.0 + - id: XenoArtifactRareMaterialSpawnSilver + weight: 1.8 # amount is laughable + - id: XenoArtifactRareMaterialSpawnPlasma + weight: 2.0 # amount is laughable + - id: XenoArtifactRareMaterialSpawnGold + weight: 1.8 # amount is laughable + - id: XenoArtifactRareMaterialSpawnUranium + weight: 1.0 # amount is laughable + - id: XenoArtifactAngryCarpSpawn + weight: 4.0 + - id: XenoArtifactFaunaSpawn + weight: 10.0 + - id: XenoArtifactCashSpawn + weight: 10.0 + - id: XenoArtifactShatterWindows + weight: 8.0 + - id: XenoArtifactFoamGood + weight: 4.0 + - id: XenoArtifactFoamDangerous + weight: 2.0 + - id: XenoArtifactPuddleRare + weight: 2.0 + - id: XenoArtifactAnomalySpawn + weight: 10.0 + - id: XenoArtifactIgnite + weight: 2.0 + - id: XenoArtifactTeleport + weight: 2.0 + - id: XenoArtifactEmp + weight: 2.0 + - id: XenoArtifactPolyMonkey + weight: 2.0 + - id: XenoArtifactPolyLuminous + weight: 2.0 + - id: XenoArtifactPolyLizard + weight: 2.0 + - id: XenoArtifactRadioactiveStrong + weight: 3.0 + - id: XenoArtifactMaterialSpawnGlass + weight: 3.3 + - id: XenoArtifactMaterialSpawnSteel + weight: 3.3 + - id: XenoArtifactMaterialSpawnPlastic + weight: 3.3 + - id: XenoArtifactPortal + weight: 2.0 + - id: XenoArtifactArtifactSpawn + weight: 0.5 + - id: XenoArtifactShuffle + weight: 3.0 + - id: XenoArtifactHealAll + weight: 1.0 + #- id: XenoArtifactTesla + # weight: 10.0 + #- id: XenoArtifactSingularity + # weight: 10.0 + - id: XenoArtifactExplosionScary + weight: 1.0 + - id: XenoArtifactBoom + weight: 5.0 + - id: XenoArtifactEffectCreationGasPlasma + weight: 2.0 + - id: XenoArtifactEffectCreationGasTritium + weight: 2.0 + - id: XenoArtifactEffectCreationGasAmmonia + weight: 3.0 + - id: XenoArtifactEffectCreationGasFrezon + weight: 1.0 + - id: XenoArtifactEffectCreationGasNitrousOxide + weight: 4.0 + - id: XenoArtifactEffectCreationGasCarbonDioxide + weight: 4.0 + +- type: entityTable + id: XenoArtifactEffectsHandheldOnlyTable + table: !type:GroupSelector + children: + #- id: XenoArtifactBecomeRandomInstrument + # weight 10.0 # removed until we have value-based system + #- id: XenoArtifactGun + # weight 4.0 #it conflicts with default interaction - it should activate artifact nodes + - id: XenoArtifactOmnitool + weight: 10.0 + - id: XenoArtifactDrill + weight: 10.0 + +- type: entity + id: BaseXenoArtifactEffect + name: effect + description: Unknown + categories: [ HideSpawnMenu ] + abstract: true + components: + - type: XenoArtifactNode + - type: NameIdentifier + group: XenoArtifactNode + +- type: entity + id: BaseOneTimeXenoArtifactEffect + parent: BaseXenoArtifactEffect + name: one-time-effect + description: Unknown + categories: [ HideSpawnMenu ] + abstract: true + components: + - type: XenoArtifactNode + maxDurability: 1 + maxDurabilityCanDecreaseBy: + min: 0 + max: 0 + - type: NameIdentifier + group: XenoArtifactNode + +- type: entity + id: XenoArtifactEffectUniversalIntercom + parent: BaseOneTimeXenoArtifactEffect + description: Obtains ability of long-distance communication device + components: + - type: XAEApplyComponents + components: + - type: RadioMicrophone + powerRequired: false + toggleOnInteract: false + listenRange: 3 + - type: Speech + - type: RadioSpeaker + toggleOnInteract: false + - type: ActivatableUI + key: enum.IntercomUiKey.Key + - type: Intercom + requiresPower: false + supportedChannels: + - Common + - CentCom + - Command + - Engineering + - Medical + - Science + - Security + - Service + - Supply + +- type: entity + id: XenoArtifactBecomeRandomInstrument + parent: BaseOneTimeXenoArtifactEffect + description: Obtains ability of musical instrument + components: + - type: XAEApplyComponents + components: + - type: Instrument + - type: ActivatableUI + singleUser: true + verbText: verb-instrument-openui + key: enum.InstrumentUiKey.Key + +- type: entity + id: XenoArtifactStorage + parent: BaseOneTimeXenoArtifactEffect + description: Obtains ability of hidden storage + components: + - type: XAEApplyComponents + components: + - type: Item + size: Huge + - type: Storage + maxItemSize: Huge + grid: + - 0,0,10,5 + +- type: entity + id: XenoArtifactPhasing + parent: BaseOneTimeXenoArtifactEffect + description: Becomes phased + components: + - type: XAERemoveCollision + +- type: entity + id: XenoArtifactWandering + parent: BaseOneTimeXenoArtifactEffect + description: Starts to move sporadically + components: + - type: XAEApplyComponents + components: + - type: RandomWalk + minSpeed: 12 + maxSpeed: 20 + minStepCooldown: 1 + maxStepCooldown: 3 + +- type: entity + id: XenoArtifactSolutionStorage + parent: BaseOneTimeXenoArtifactEffect + description: Obtains ability of container for chemical solutions + components: + - type: XAEApplyComponents + components: + - type: SolutionContainerManager + solutions: + beaker: + maxVol: 150 + - type: FitsInDispenser + solution: beaker + - type: RefillableSolution + solution: beaker + - type: DrainableSolution + solution: beaker + - type: ExaminableSolution + solution: beaker + - type: DrawableSolution + solution: beaker + - type: InjectableSolution + solution: beaker + - type: SolutionTransfer + canChangeTransferAmount: true + - type: Drink + solution: beaker + +- type: entity + id: XenoArtifactSpeedUp + parent: BaseOneTimeXenoArtifactEffect + description: Improves holder movement speed + components: + - type: XAEApplyComponents + components: + - type: HeldSpeedModifier + walkModifier: 1.2 + sprintModifier: 1.3 + +- type: entity + id: XenoArtifactDrill + parent: BaseOneTimeXenoArtifactEffect + description: Obtains ability of drill + components: + - type: XAEApplyComponents + components: + - type: MeleeWeapon + damage: + types: + Piercing: 18 + Blunt: 4 + soundHit: + path: /Audio/Weapons/bladeslice.ogg + - type: Sharp + +- type: entity + id: XenoArtifactGenerateEnergy + parent: BaseOneTimeXenoArtifactEffect # todo - increment power, but only once per node + description: Produces power + components: + - type: XAEApplyComponents + components: + - type: PowerSupplier + supplyRate: 20000 + - type: NodeContainer + examinable: true + nodes: + output_hv: + !type:CableDeviceNode + nodeGroupID: HVPower + +- type: entity + id: XenoArtifactGun + parent: BaseOneTimeXenoArtifactEffect + description: Obtains ability of firearm + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: RevolverAmmoProvider + whitelist: + tags: + - CartridgeMagnum + - SpeedLoaderMagnum + proto: CartridgeMagnum + capacity: 7 + chambers: [ True, True, True, True, True, True, True ] + ammoSlots: [ null, null, null, null, null, null, null ] + soundEject: + path: /Audio/Weapons/Guns/MagOut/revolver_magout.ogg + soundInsert: + path: /Audio/Weapons/Guns/MagIn/revolver_magin.ogg + - type: Gun + selectedMode: SemiAuto + fireRate: 2 + availableModes: + - SemiAuto + - FullAuto # no alien revolver in buildings + soundGunshot: + path: /Audio/Weapons/Guns/Gunshots/revolver.ogg + +- type: entity + id: XenoArtifactGhost + parent: BaseOneTimeXenoArtifactEffect + description: Becomes sentient + components: + - type: XAEApplyComponents + components: + - type: GhostRole + allowMovement: true + allowSpeech: true + makeSentient: true + name: ghost-role-information-artifact-name + description: ghost-role-information-artifact-description + rules: ghost-role-information-freeagent-rules + raffle: + settings: default + mindRoles: + - MindRoleGhostRoleFreeAgent + - type: GhostTakeoverAvailable + +- type: entity + id: XenoArtifactOmnitool + parent: BaseOneTimeXenoArtifactEffect + description: Obtains ability of omnitool + components: + - type: XAEApplyComponents + components: + - type: UserInterface + interfaces: + enum.SignalLinkerUiKey.Key: + type: SignalPortSelectorBoundUserInterface + - type: ToolTileCompatible + - type: Tool + qualities: + - Screwing + speedModifier: 2 # Very powerful multitool to balance out the desire to sell or scrap for points + useSound: /Audio/Items/drill_use.ogg + - type: Tag + tags: + - Multitool + - type: MultipleTool + statusShowBehavior: true + entries: + - behavior: Screwing + useSound: + path: /Audio/Items/drill_use.ogg + changeSound: + path: /Audio/Items/change_drill.ogg + - behavior: Prying + useSound: + path: /Audio/Items/jaws_pry.ogg + changeSound: + path: /Audio/Items/change_drill.ogg + - behavior: Anchoring + useSound: + path: /Audio/Items/ratchet.ogg + changeSound: + path: /Audio/Items/change_drill.ogg + - behavior: Cutting + useSound: + path: /Audio/Items/jaws_cut.ogg + changeSound: + path: /Audio/Items/change_drill.ogg + - behavior: Pulsing + changeSound: + path: /Audio/Items/change_drill.ogg + +- type: entity + id: XenoArtifactEffectBadFeeling + parent: BaseXenoArtifactEffect + description: Broadcasts sublime message + components: + - type: XAETelepathic + messages: + - badfeeling-artifact-1 + - badfeeling-artifact-2 + - badfeeling-artifact-3 + - badfeeling-artifact-4 + - badfeeling-artifact-5 + - badfeeling-artifact-6 + - badfeeling-artifact-7 + - badfeeling-artifact-8 + - badfeeling-artifact-9 + - badfeeling-artifact-10 + - badfeeling-artifact-11 + - badfeeling-artifact-12 + - badfeeling-artifact-13 + - badfeeling-artifact-14 + - badfeeling-artifact-15 + drastic: + - badfeeling-artifact-drastic-1 + - badfeeling-artifact-drastic-2 + - badfeeling-artifact-drastic-3 + - badfeeling-artifact-drastic-4 + - badfeeling-artifact-drastic-5 + - badfeeling-artifact-drastic-6 + +- type: entity + id: XenoArtifactEffectGoodFeeling + parent: BaseXenoArtifactEffect + description: Broadcasts sublime message + components: + - type: XAETelepathic + messages: + - goodfeeling-artifact-1 + - goodfeeling-artifact-2 + - goodfeeling-artifact-3 + - goodfeeling-artifact-4 + - goodfeeling-artifact-5 + - goodfeeling-artifact-6 + - goodfeeling-artifact-7 + - goodfeeling-artifact-8 + - goodfeeling-artifact-9 + - goodfeeling-artifact-10 + - goodfeeling-artifact-11 + - goodfeeling-artifact-12 + - goodfeeling-artifact-13 + - goodfeeling-artifact-14 + drastic: + - goodfeeling-artifact-drastic-1 + - goodfeeling-artifact-drastic-2 + - goodfeeling-artifact-drastic-3 + - goodfeeling-artifact-drastic-4 + - goodfeeling-artifact-drastic-5 + - goodfeeling-artifact-drastic-6 + +- type: entity + id: XenoArtifactEffectJunkSpawn + parent: BaseXenoArtifactEffect + description: Create recyclable junk + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:GroupSelector + rolls: !type:RangeNumberSelector + range: 1, 4 + children: + - !type:NestedSelector + tableId: GenericTrashItems + weight: 35 + - !type:AllSelector + weight: 1 + children: + - id: ToySpawner + +- type: entity + id: XenoArtifactEffectLightFlicker + parent: BaseXenoArtifactEffect + description: Minor electromagnetic interference + components: + - type: XAELightFlicker + +- type: entity + id: XenoArtifactPotassiumWave + parent: BaseXenoArtifactEffect + description: Produces potassium + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: FoodBanana + rolls: !type:ConstantNumberSelector + value: 6 + prob: 0.5 + - type: XAECreatePuddle + chemAmount: + min: 1 + max: 1 + chemicalSolution: + maxVol: 100 + canReact: false + possibleChemicals: + - Potassium + +- type: entity + id: XenoArtifactFloraSpawn + parent: BaseXenoArtifactEffect + description: Produces flora + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: RandomFloraTree + +- type: entity + id: XenoArtifactChemicalPuddle + parent: BaseXenoArtifactEffect + description: Produces puddle of chemical mixture # todo: make description say what exact chemical is produced, maybe add mixes into possible chemicals + components: + - type: XAECreatePuddle + chemAmount: + min: 1 + max: 3 + replaceDescription: true + chemicalSolution: + maxVol: 500 + canReact: false + possibleChemicals: + - Aluminium + - Carbon + - Chlorine + - Copper + - Ethanol + - Fluorine + - Sugar + - Hydrogen + - Iodine + - Iron + - Lithium + - Mercury + - Nitrogen + - Oxygen + - Phosphorus + - Potassium + - Radium + - Silicon + - Sodium + - Water + - Sulfur + +- type: entity + id: XenoArtifactThrowThingsAround + parent: BaseXenoArtifactEffect + description: Minor implosion + components: + - type: XAEThrowThingsAround + +- type: entity + id: XenoArtifactColdWave + parent: BaseXenoArtifactEffect + description: Cools down surrounding gas + components: + - type: XAETemperature + targetTemp: 50 + +- type: entity + id: XenoArtifactHeatWave + parent: BaseXenoArtifactEffect + description: Heats up surrounding gas greatly + components: + - type: XAETemperature + targetTemp: 500 + +- type: entity + id: XenoArtifactFoamMild + parent: BaseXenoArtifactEffect + description: Produces chemical foam # todo: separate in 1 for each chemical for description? actually sounds like a very good idea + components: + - type: XAEFoam + replaceDescription: true + reagents: + - Oxygen + - Plasma + - Blood + - SpaceCleaner + - Nutriment + - SpaceLube + - Ethanol + - Mercury + - VentCrud + - WeldingFuel + - JuiceThatMakesYouWeh + +- type: entity + id: XenoArtifactRandomInstrumentSpawn + parent: BaseXenoArtifactEffect + description: Creates musical instrument + components: + - type: XenoArtifactNode + maxDurability: 2 + maxDurabilityCanDecreaseBy: + min: 0 + max: 1 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: RandomInstruments + +- type: entity + id: XenoArtifactMonkeySpawn + parent: BaseXenoArtifactEffect + description: Creates primate + components: + - type: XenoArtifactNode + maxDurability: 3 + maxDurabilityCanDecreaseBy: + min: 0 + max: 2 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:GroupSelector + children: + - id: MobMonkey + weight: 95.0 + - id: MobGorilla + weight: 5.0 + +- type: entity + id: XenoArtifactRadioactive + parent: BaseOneTimeXenoArtifactEffect + description: Becomes mildly radioactive + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: RadiationSource + intensity: 1 + slope: 0.3 + +- type: entity + id: XenoArtifactChargeBattery + parent: BaseXenoArtifactEffect + description: Charges up batteries + components: + - type: XAEChargeBattery + - type: XAETelepathic + messages: + - charge-artifact-popup + +- type: entity + id: XenoArtifactKnock + parent: BaseXenoArtifactEffect + description: Mild electromagnetic interference + components: + - type: XAEKnock + - type: XAELightFlicker + +- type: entity + id: XenoArtifactMagnet + parent: BaseOneTimeXenoArtifactEffect + description: Create small gravity well + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: GravityWell + maxRange: 3 + baseRadialAcceleration: 1 + baseTangentialAcceleration: 3 + +- type: entity + id: XenoArtifactMagnetNegative + parent: BaseOneTimeXenoArtifactEffect + description: Create small gravity well + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: GravityWell + maxRange: 3 + baseRadialAcceleration: -1 + baseTangentialAcceleration: -3 + +- type: entity + id: XenoArtifactStealth + parent: BaseOneTimeXenoArtifactEffect + description: Create light interference + components: + - type: XAEApplyComponents + components: + - type: Stealth + hadOutline: true + - type: StealthOnMove + passiveVisibilityRate: -0.10 + movementVisibilityRate: 0.10 + +- type: entity + id: XenoArtifactRareMaterialSpawn + parent: BaseXenoArtifactEffect # todo: splice into different well-named effects, amounts should reflect how rare material is + description: Create rare materials + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: SilverOre1 + rolls: !type:ConstantNumberSelector + value: 6 + prob: 0.3 + - id: PlasmaOre1 + rolls: !type:ConstantNumberSelector + value: 6 + prob: 0.3 + - id: GoldOre1 + rolls: !type:ConstantNumberSelector + value: 6 + prob: 0.3 + - id: UraniumOre1 + rolls: !type:ConstantNumberSelector + value: 6 + prob: 0.3 + +- type: entity + id: XenoArtifactRareMaterialSpawnSilver + parent: BaseXenoArtifactEffect + description: Create rare materials + components: + - type: XenoArtifactNode + maxDurability: 4 + maxDurabilityCanDecreaseBy: + min: 0 + max: 2 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: SilverOre1 + rolls: !type:ConstantNumberSelector + value: 6 + prob: 0.3 + +- type: entity + id: XenoArtifactRareMaterialSpawnPlasma + parent: BaseXenoArtifactEffect + description: Create plasma + components: + - type: XenoArtifactNode + maxDurability: 4 + maxDurabilityCanDecreaseBy: + min: 0 + max: 2 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: PlasmaOre1 + rolls: !type:ConstantNumberSelector + value: 6 + prob: 0.3 + +- type: entity + id: XenoArtifactRareMaterialSpawnGold + parent: BaseXenoArtifactEffect + description: Create gold + components: + - type: XenoArtifactNode + maxDurability: 3 + maxDurabilityCanDecreaseBy: + min: 0 + max: 1 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: GoldOre1 + rolls: !type:ConstantNumberSelector + value: 6 + prob: 0.3 + +- type: entity + id: XenoArtifactRareMaterialSpawnUranium + parent: BaseXenoArtifactEffect + description: Create uranium + components: + - type: XenoArtifactNode + maxDurability: 4 + maxDurabilityCanDecreaseBy: + min: 0 + max: 2 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: UraniumOre1 + rolls: !type:ConstantNumberSelector + value: 3 + prob: 0.3 + +- type: entity + id: XenoArtifactAngryCarpSpawn + parent: BaseXenoArtifactEffect + description: Create hostile fish + components: + - type: XenoArtifactNode + maxDurability: 3 + maxDurabilityCanDecreaseBy: + min: 0 + max: 2 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:GroupSelector + children: + - id: MobCarpMagic + weight: 1.0 + - id: MobCarpHolo + weight: 1.0 + +- type: entity + id: XenoArtifactFaunaSpawn + parent: BaseXenoArtifactEffect + description: Create friendly fauna + components: + - type: XenoArtifactNode + maxDurability: 4 + maxDurabilityCanDecreaseBy: + min: 0 + max: 3 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:GroupSelector + children: + - id: MobAdultSlimesYellowAngry + - id: MobAngryBee + - id: MobBearSpace + - id: MobXenoRavager + - id: MobTick + - id: MobSpiderSpace + - id: MobPurpleSnake + - id: MobMouse + - id: MobKangarooSpace + - id: MobPig + - id: MobParrot + - id: MobKangaroo + - id: MobFox + - id: MobPenguin + amount: !type:RangeNumberSelector + range: 1, 2 + - id: MobMothroach + amount: !type:RangeNumberSelector + range: 1, 2 + - id: MobCorgiPuppy + amount: !type:RangeNumberSelector + range: 1, 2 + - id: MobCatKitten + amount: !type:RangeNumberSelector + range: 1, 2 + - id: MobCat + amount: !type:RangeNumberSelector + range: 1, 2 + - id: MobBee + amount: !type:RangeNumberSelector + range: 2, 5 + - id: MobGoat + amount: !type:RangeNumberSelector + range: 1, 3 + - id: MobMonkeySyndicateAgent #so lucky + prob: 0.03 + +- type: entity + id: XenoArtifactCashSpawn + parent: BaseXenoArtifactEffect + description: Create money + components: + - type: XenoArtifactNode + maxDurability: 2 + maxDurabilityCanDecreaseBy: + min: 0 + max: 1 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:GroupSelector + rolls: !type:RangeNumberSelector + range: 2, 4 + children: + - id: SpaceCash10 + weight: 0.75 + - id: SpaceCash100 + weight: 0.5 + - id: SpaceCash500 + weight: 0.25 + - id: SpaceCash1000 + weight: 0.1 + +- type: entity + id: XenoArtifactShatterWindows + parent: BaseXenoArtifactEffect + description: Break windows + components: + - type: XenoArtifactNode + maxDurability: 3 + maxDurabilityCanDecreaseBy: + min: 0 + max: 2 + - type: XAEDamageInArea + damageChance: 0.75 + whitelist: + tags: + - Window + damage: + types: + Structural: 200 + +- type: entity + id: XenoArtifactFoamGood + parent: BaseXenoArtifactEffect + description: Creates wave of helpful foam + components: + - type: XenoArtifactNode + maxDurability: 7 + maxDurabilityCanDecreaseBy: + min: 0 + max: 5 + - type: XAEFoam + replaceDescription: true + reagents: + - Dermaline + - Arithrazine + - Bicaridine + - Inaprovaline + - Kelotane + - Dexalin + - Omnizine + +- type: entity + id: XenoArtifactFoamDangerous + parent: BaseXenoArtifactEffect + description: Creates wave of harmful foam + components: + - type: XAEFoam + minFoamAmount: 20 + maxFoamAmount: 30 + replaceDescription: true + reagents: + - Tritium + - Plasma + - SulfuricAcid + - SpaceDrugs + - Nocturine + - MuteToxin + - Napalm + - CarpoToxin + - ChloralHydrate + - Mold + - Amatoxin + +- type: entity + id: XenoArtifactPuddleRare + parent: BaseXenoArtifactEffect + description: Creates puddle of helpful chemicals + components: + - type: XAECreatePuddle + chemAmount: + min: 1 + max: 3 + replaceDescription: true + chemicalSolution: + maxVol: 500 + canReact: false + possibleChemicals: + - Dermaline + - Arithrazine + - Bicaridine + - Inaprovaline + - Kelotane + - Dexalin + - Omnizine + - Napalm + - Toxin + - Epinephrine + - Cognizine + - Ultravasculine + - Desoxyephedrine + - Pax + - Siderlac + +- type: entity + id: XenoArtifactAnomalySpawn + parent: BaseOneTimeXenoArtifactEffect + description: Creates anomaly + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: RandomAnomalySpawner + +- type: entity + id: XenoArtifactIgnite + parent: BaseXenoArtifactEffect + description: Pyrokinesis + components: + - type: XAEIgnite + range: 7 + fireStack: + min: 3 + max: 6 + +- type: entity + id: XenoArtifactTeleport + parent: BaseXenoArtifactEffect + description: Teleportation + components: + - type: XAERandomTeleportInvoker + +- type: entity + id: XenoArtifactEmp + parent: BaseXenoArtifactEffect + description: Dangerous electromagnetic interference + components: + - type: XenoArtifactNode + maxDurability: 5 + maxDurabilityCanDecreaseBy: + min: 0 + max: 3 + - type: XAEEmpInArea + +- type: entity + id: XenoArtifactPolyMonkey + parent: BaseXenoArtifactEffect + description: Temporarily reshape flesh to fur + components: + - type: XAEPolymorph + +- type: entity + id: XenoArtifactPolyLizard + parent: BaseXenoArtifactEffect + description: Temporarily reshape flesh to scale + components: + - type: XAEPolymorph + polymorphPrototypeName: ArtifactLizard + +- type: entity + id: XenoArtifactPolyLuminous + parent: BaseXenoArtifactEffect + description: Temporarily reshape flesh to light + components: + - type: XAEPolymorph + polymorphPrototypeName: ArtifactLuminous + +- type: entity + id: XenoArtifactRadioactiveStrong + parent: BaseOneTimeXenoArtifactEffect + description: Becomes highly radioactive + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: RadiationSource + intensity: 2 + slope: 0.3 + +- type: entity + id: XenoArtifactMaterialSpawnGlass + parent: BaseXenoArtifactEffect + description: Create glass + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:GroupSelector + children: + - id: SheetGlass + +- type: entity + id: XenoArtifactMaterialSpawnSteel + parent: BaseXenoArtifactEffect + description: Create steel + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:GroupSelector + children: + - id: SheetSteel + +- type: entity + id: XenoArtifactMaterialSpawnPlastic + parent: BaseXenoArtifactEffect + description: Create plastic + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:GroupSelector + children: + - id: SheetPlastic + +- type: entity + id: XenoArtifactPortal + parent: BaseXenoArtifactEffect + description: Create short-living bluespace portal + components: + - type: XAEPortal + +- type: entity + id: XenoArtifactArtifactSpawn + parent: BaseXenoArtifactEffect + description: Create artifact + components: + - type: XenoArtifactNode + maxDurability: 2 + maxDurabilityCanDecreaseBy: + min: 0 + max: 1 + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: RandomArtifactSpawner + +- type: entity + id: XenoArtifactShuffle + parent: BaseXenoArtifactEffect + description: Switch places of sentient beings #not ALL beings, but oh well... + components: + - type: XAEShuffle + - type: XAETelepathic + range: 7.5 + messages: + - shuffle-artifact-popup + +- type: entity + id: XenoArtifactHealAll + parent: BaseXenoArtifactEffect + description: Miraclous healing + components: + - type: XAEDamageInArea + damageChance: 1 + radius: 8 + whitelist: + components: + - MobState + damage: + groups: + Brute: -300 + Burn: -300 + +- type: entity + id: XenoArtifactTesla + parent: BaseOneTimeXenoArtifactEffect + description: Mass destruction + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: Singularity + +- type: entity + id: XenoArtifactSingularity + parent: BaseOneTimeXenoArtifactEffect + description: Imminent doom + components: + - type: XAEApplyComponents + applyIfAlreadyHave: true + refreshOnReactivate: true + components: + - type: EntityTableSpawner + deleteSpawnerAfterSpawn: false + table: !type:AllSelector + children: + - id: TeslaEnergyBall + +- type: entity + id: XenoArtifactExplosionScary + parent: BaseOneTimeXenoArtifactEffect + description: Small scale high-speed nuclear reaction + components: + - type: XAETriggerExplosives + - type: Explosive + deleteAfterExplosion: false + explosionType: Radioactive + totalIntensity: 300 + intensitySlope: 2 + maxIntensity: 1.5 + canCreateVacuum: false + repeatable: true + +- type: entity + id: XenoArtifactBoom + parent: BaseOneTimeXenoArtifactEffect + description: Explosion + components: + - type: XAETriggerExplosives + - type: Explosive + deleteAfterExplosion: false + explosionType: Default + totalIntensity: 500 + intensitySlope: 2.5 + maxIntensity: 50 + repeatable: true + +- type: entity + id: XenoArtifactEffectCreationGasPlasma + parent: BaseXenoArtifactEffect + description: Expels plasma + components: + - type: XAECreateGas + gases: + Plasma: 300 + +- type: entity + id: XenoArtifactEffectCreationGasTritium + parent: BaseXenoArtifactEffect + description: Expels tritium + components: + - type: XAECreateGas + gases: + Tritium: 300 + +- type: entity + id: XenoArtifactEffectCreationGasAmmonia + parent: BaseXenoArtifactEffect + description: Expels ammonia + components: + - type: XAECreateGas + gases: + Ammonia: 300 + +- type: entity + id: XenoArtifactEffectCreationGasFrezon + parent: BaseXenoArtifactEffect + description: Expels frezon + components: + - type: XAECreateGas + gases: + Frezon: 300 + +- type: entity + id: XenoArtifactEffectCreationGasNitrousOxide + parent: BaseXenoArtifactEffect + description: Expels nitrous oxide + components: + - type: XAECreateGas + gases: + NitrousOxide: 300 + +- type: entity + id: XenoArtifactEffectCreationGasCarbonDioxide + parent: BaseXenoArtifactEffect + description: Expels carbon dioxide + components: + - type: XAECreateGas + gases: + CarbonDioxide: 300 diff --git a/Resources/Prototypes/XenoArch/triggers.yml b/Resources/Prototypes/XenoArch/triggers.yml new file mode 100644 index 0000000000..5e70843c1d --- /dev/null +++ b/Resources/Prototypes/XenoArch/triggers.yml @@ -0,0 +1,265 @@ +- type: weightedRandomXenoArchTrigger + id: DefaultTriggers + weights: + TriggerMusic: 1 + TriggerHeat: 1 + TriggerCold: 0.5 + TriggerNoOxygen: 1 + TriggerWater: 1 + TriggerCO2: 0.5 + TriggerPlasma: 0.5 + TriggerN2O: 0.5 + TriggerTritium: 0.1 + TriggerAmmonia: 0.1 + TriggerFrezon: 0.1 + TriggerRadiation: 1 + TriggerPressureHigh: 0.5 + TriggerPressureLow: 1 + TriggerExamine: 1 + TriggerBruteDamage: 1 + #TriggerInteraction: 1 #this one interferes with activating artifact AND brute dmg! + TriggerWrenching: 0.5 + TriggerPrying: 0.5 + TriggerScrewing: 0.5 + TriggerPulsing: 0.5 + TriggerTimer: 0.25 + TriggerBlood: 1 + TriggerThrow: 1 + TriggerDeath: 1 + TriggerMagnet: 1 + +- type: xenoArchTrigger + id: TriggerMusic + tip: xenoarch-trigger-tip-music + components: + - type: XATCompNearby + requireComponentWithName: ActiveInstrument + radius: 2 + +- type: xenoArchTrigger + id: TriggerHeat + tip: xenoarch-trigger-tip-heat + components: + - type: XATTemperature + targetTemperature: 373 + triggerOnHigherTemp: true + - type: XATDamageThresholdReached + typesNeeded: + Heat: 20 +# This kinda trivializes the difficulty. +# - type: XATToolUse +# requiredTool: Welding +# delay: 5 +# fuel: 10 + +- type: xenoArchTrigger + id: TriggerCold + tip: xenoarch-trigger-tip-cold + components: + - type: XATTemperature + targetTemperature: 255 + triggerOnHigherTemp: false + - type: XATDamageThresholdReached + typesNeeded: + Cold: 20 + +- type: xenoArchTrigger + id: TriggerNoOxygen + tip: xenoarch-trigger-tip-no-oxygen + components: + - type: XATGas + targetGas: Oxygen + moles: 10 + shouldBePresent: false + +- type: xenoArchTrigger + id: TriggerWater + tip: xenoarch-trigger-tip-water + components: + - type: XATGas + targetGas: WaterVapor + - type: XATReactive + reagents: + - Water + +- type: xenoArchTrigger + id: TriggerCO2 + tip: xenoarch-trigger-tip-co2 + components: + - type: XATGas + targetGas: CarbonDioxide + - type: XATReactive + reagents: + - CarbonDioxide + +- type: xenoArchTrigger + id: TriggerPlasma + tip: xenoarch-trigger-tip-plasma + components: + - type: XATGas + targetGas: Plasma + - type: XATReactive + reagents: + - Plasma + +- type: xenoArchTrigger + id: TriggerTritium + tip: xenoarch-trigger-tip-tritium + components: + - type: XATGas + targetGas: Tritium + - type: XATReactive + reagents: + - Tritium + +- type: xenoArchTrigger + id: TriggerAmmonia + tip: xenoarch-trigger-tip-ammonia + components: + - type: XATGas + targetGas: Ammonia + - type: XATReactive + reagents: + - Ammonia + +- type: xenoArchTrigger + id: TriggerN2O + tip: xenoarch-trigger-tip-n2o + components: + - type: XATGas + targetGas: NitrousOxide + - type: XATReactive + reagents: + - NitrousOxide + +- type: xenoArchTrigger + id: TriggerFrezon + tip: xenoarch-trigger-tip-frezon + components: + - type: XATGas + targetGas: Frezon + - type: XATReactive + reagents: + - Frezon + +- type: xenoArchTrigger + id: TriggerRadiation + tip: xenoarch-trigger-tip-radiation + components: + - type: XATDamageThresholdReached + typesNeeded: + Radiation: 20 + # TODO: legendary microwave trigger + +- type: xenoArchTrigger + id: TriggerPressureHigh + tip: xenoarch-trigger-tip-pressure-high + components: + - type: XATPressure + maxPressureThreshold: 385 + +- type: xenoArchTrigger + id: TriggerPressureLow + tip: xenoarch-trigger-tip-pressure-low + components: + - type: XATPressure + minPressureThreshold: 50 + +- type: xenoArchTrigger + id: TriggerExamine + tip: xenoarch-trigger-tip-examine + components: + - type: XATExamine + +- type: xenoArchTrigger + id: TriggerBruteDamage + tip: xenoarch-trigger-tip-brute-damage + components: + - type: XATDamageThresholdReached + groupsNeeded: + Brute: 20 + +- type: xenoArchTrigger + id: TriggerInteraction + tip: xenoarch-trigger-tip-interaction + components: + - type: XATInteraction + +- type: xenoArchTrigger + id: TriggerWrenching + tip: xenoarch-trigger-tip-wrenching + components: + - type: XATToolUse + requiredTool: Anchoring + - type: XATExaminableText + examineText: xenoarch-trigger-examine-wrenching + +- type: xenoArchTrigger + id: TriggerPrying + tip: xenoarch-trigger-tip-prying + components: + - type: XATToolUse + requiredTool: Prying + - type: XATExaminableText + examineText: xenoarch-trigger-examine-prying + +- type: xenoArchTrigger + id: TriggerScrewing + tip: xenoarch-trigger-tip-screwing + components: + - type: XATToolUse + requiredTool: Screwing + - type: XATExaminableText + examineText: xenoarch-trigger-examine-screwing + +- type: xenoArchTrigger + id: TriggerPulsing + tip: xenoarch-trigger-tip-pulsing + components: + - type: XATToolUse + requiredTool: Pulsing + - type: XATExaminableText + examineText: xenoarch-trigger-examine-pulsing + +- type: xenoArchTrigger + id: TriggerTimer + tip: xenoarch-trigger-tip-timer + components: + - type: XATTimer + possibleDelayInSeconds: + min: 80 + max: 120 + +- type: xenoArchTrigger + id: TriggerBlood + tip: xenoarch-trigger-tip-blood + components: + - type: XATReactive + reagents: + - Blood + - CopperBlood + - InsectBlood + - Slime + - AmmoniaBlood + - ZombieBlood + +- type: xenoArchTrigger + id: TriggerThrow + tip: xenoarch-trigger-tip-throw + whitelist: + components: + - Item + components: + - type: XATItemLand + +- type: xenoArchTrigger + id: TriggerDeath + tip: xenoarch-trigger-tip-death + components: + - type: XATDeath + +- type: xenoArchTrigger + id: TriggerMagnet + tip: xenoarch-trigger-tip-magnet + components: + - type: XATMagnet diff --git a/Resources/Prototypes/_CP14/AlertLevels/alert_levels.yml b/Resources/Prototypes/_CP14/AlertLevels/alert_levels.yml new file mode 100644 index 0000000000..e1009edc10 --- /dev/null +++ b/Resources/Prototypes/_CP14/AlertLevels/alert_levels.yml @@ -0,0 +1,22 @@ +- type: alertLevels + id: CP14TownAlerts + defaultLevel: safe + levels: + safe: + announcement: cp14-alert-level-safe-announcement + sound: /Audio/_CP14/Misc/safe-alert.ogg + color: Green + emergencyLightColor: LawnGreen + shuttleTime: 600 + minor: + announcement: cp14-alert-level-minor-announcement + sound: /Audio/_CP14/Misc/minor-alert.ogg + color: DodgerBlue + emergencyLightColor: DodgerBlue + shuttleTime: 600 + major: + announcement: cp14-alert-level-major-announcement + sound: /Audio/_CP14/Misc/major-alert.ogg + color: Red + emergencyLightColor: Red + shuttleTime: 600 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml index bca044f7e2..79d82ad4a4 100644 --- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml +++ b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/SpiceStream/buy.yml @@ -29,6 +29,8 @@ amount: 3 - id: CP14SeedPepper amount: 3 + - id: CP14SeedCotton + amount: 3 - type: storePositionBuy @@ -114,27 +116,6 @@ service: !type:CP14BuyItemsService product: CP14GoldBar10 - -- type: storePositionBuy - id: Demiplane - code: DEMIPLANE_1 - price: 100 - factions: - - SpiceStream - service: !type:CP14BuyItemsService - product: CP14DemiplaneKeyT1 - count: 5 - -- type: storePositionBuy - id: Demiplane2 - code: DEMIPLANE_2 - price: 200 - factions: - - SpiceStream - service: !type:CP14BuyItemsService - product: CP14DemiplaneKeyT2 - count: 5 - - type: storePositionBuy id: Bureaucracy code: PAPER @@ -182,9 +163,7 @@ components: - type: StorageFill contents: - - id: CP14EnergyCrystalSmallEmpty - amount: 5 - id: CP14EnergyCrystalMediumEmpty - amount: 3 + amount: 5 - id: CP14ManaOperationGlove amount: 2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml index dcd5c82e48..57e390647e 100644 --- a/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml +++ b/Resources/Prototypes/_CP14/Catalog/Cargo/Store/Sylphoria/sell_special.yml @@ -48,26 +48,6 @@ proto: CP14SpellScrollBeerCreation count: 1 -- type: storePositionSell - id: CP14EnergyCrystalSmallEmpty - special: true - price: 70 - factions: - - Sylphoria - service: !type:CP14SellPrototypeService - proto: CP14EnergyCrystalSmallEmpty - count: 5 - -- type: storePositionSell - id: CP14EnergyCrystalMediumEmpty - special: true - price: 80 - factions: - - Sylphoria - service: !type:CP14SellPrototypeService - proto: CP14EnergyCrystalMediumEmpty - count: 3 - - type: storePositionSell id: CP14ClothingRingIceShards special: true diff --git a/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml b/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml index ccd5d48f87..59c554de93 100644 --- a/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml +++ b/Resources/Prototypes/_CP14/Catalog/Fills/closets.yml @@ -100,7 +100,7 @@ - id: CP14BaseLightCrossbow - id: CP14CrossboltIron amount: 5 - - id: CP14EnergyCrystalSmall + - id: CP14EnergyCrystalMedium - id: CP14CrystalLampBlueEmpty - type: entity @@ -118,9 +118,10 @@ - id: CP14BaseShield - id: CP14ModularGripIronLongGuard amount: 2 - - id: CP14EnergyCrystalSmall + - id: CP14EnergyCrystalMedium - id: CP14CrystalLampBlueEmpty - id: CP14StampGuardCommander + - id: CP14ClothingCloakAristocraticCloak - type: entity parent: CP14WoodenCloset diff --git a/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml b/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml index a4c7a4bad9..853a00cb4c 100644 --- a/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml +++ b/Resources/Prototypes/_CP14/Catalog/Fills/crates.yml @@ -75,7 +75,7 @@ - id: CP14CrystalLampBlueEmpty - id: CP14CrystalLampOrangeEmpty - id: CP14Rope - - id: CP14EnergyCrystalSmall + - id: CP14EnergyCrystalMediumEmpty - id: CP14d20Dice - id: CP14d6Dice - id: CP14CopperCoin5 diff --git a/Resources/Prototypes/_CP14/Catalog/Fills/dresser.yml b/Resources/Prototypes/_CP14/Catalog/Fills/dresser.yml index 9784a8a61f..29d58fbd72 100644 --- a/Resources/Prototypes/_CP14/Catalog/Fills/dresser.yml +++ b/Resources/Prototypes/_CP14/Catalog/Fills/dresser.yml @@ -6,10 +6,6 @@ - type: StorageFill contents: - id: CP14GuidebookAlchemy - - id: CP14ClothingEyesAlchemyGlasses - prob: 0.5 - - id: CP14ClothingEyesAlchemyMonocle - prob: 0.2 - id: CP14ClothingCloakAlchemist prob: 0.6 - id: CP14ClothingHeadAlchemistBeret diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/cure_dead.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/cure_dead.yml new file mode 100644 index 0000000000..f85da28a8a --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/cure_dead.yml @@ -0,0 +1,61 @@ +- type: entity + id: CP14ActionSpellCureFromDeath + name: Cure from death + description: You heal the target from all kinds of damage. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/necromancy.rsi + state: cure_dead + - type: CP14MagicEffectCastSlowdown + speedMultiplier: 0.7 + - type: CP14MagicEffectManaCost + manaCost: 4 + - type: CP14MagicEffect + telegraphyEffects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectResurrection + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectResurrection + - !type:CP14SpellResurrectionEffect # TODO заставить работать только на нежить + - !type:CP14SpellApplyEntityEffect + effects: + - !type:HealthChange + damage: + types: + Asphyxiation: -2 + Bloodloss: -2 + Blunt: -2 + Cellular: -1 + Caustic: -2 + Cold: -1 + Heat: -1 + Piercing: -2 + Poison: -2 + Radiation: -2 + Shock: -2 + Slash: -2 + - type: CP14MagicEffectSomaticAspect + - type: CP14MagicEffectVerbalAspect + startSpeech: "Surge, hominem mortuum!" + - type: CP14MagicEffectCastingVisual + proto: CP14RuneResurrection + - type: EntityTargetAction + whitelist: + components: + - MobState + range: 10 + itemIconStyle: BigAction + interactOnMiss: false + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/Spells/necromancy.rsi + state: cure_dead + event: !type:CP14ToggleableEntityTargetActionEvent + cooldown: 2 + castTime: 10 + breakOnMove: false + breakOnDamage: false \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/cure_dead_ballade.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/cure_dead_ballade.yml new file mode 100644 index 0000000000..6fbfeb3d1c --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/cure_dead_ballade.yml @@ -0,0 +1,92 @@ +- type: entity + id: CP14ActionSpellHealFromDeathBallade + name: Healing from death ballade + description: Your music is filled with healing magic, fast healing all the creatures around you. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/necromancy.rsi + state: dead_heal_ballade + - type: CP14MagicEffectCastSlowdown + speedMultiplier: 1.0 + - type: CP14MagicEffectManaCost + manaCost: 1 + - type: CP14MagicEffect + effects: + - !type:CP14SpellSpawnEntityOnTarget # TODO заставить работать только на нежить + spawns: + - CP14AreaEntityEffectDeadHealBallade + - type: CP14MagicEffectRequiredMusicTool + - type: CP14MagicEffectCastingVisual + proto: CP14RuneDeadHealBallade + - type: InstantAction + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/Spells/necromancy.rsi + state: dead_heal_ballade + event: !type:CP14ToggleableInstantActionEvent + effectFrequency: 1 + cooldown: 15 + castTime: 120 + hidden: true + +- type: entity + id: CP14AreaEntityEffectDeadHealBallade + categories: [ HideSpawnMenu ] + save: false + components: + - type: TimedDespawn + lifetime: 1.6 + - type: CP14AreaEntityEffect + range: 3 + maxTargets: 4 + whitelist: + components: + - MobState + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectDeadHealBallade + - !type:CP14SpellApplyEntityEffect + effects: + - !type:HealthChange + damage: + types: + Slash: -1.0 + Blunt: -1.0 + Piercing: -1.0 + Cold: -0.80 + Heat: -0.80 + Shock: -0.80 + Poison: -1.0 + Bloodloss: -1.5 + Caustic: -0.5 + +- type: entity + id: CP14ImpactEffectDeadHealBallade + parent: CP14BaseMagicImpact + categories: [ HideSpawnMenu ] + save: false + components: + - type: Sprite + sprite: _CP14/Effects/music.rsi + layers: + - state: notes_5 + color: "#36937b" + shader: unshaded + +- type: entity + id: CP14RuneDeadHealBallade + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + save: false + components: + - type: PointLight + color: "#54e194" + - type: Sprite + sprite: _CP14/Effects/music.rsi + layers: + - state: notes_3 + color: "#54e194" + shader: unshaded \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T0_demiplane_infiltration.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T0_demiplane_infiltration.yml index 73996a8291..ea3622a3a5 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T0_demiplane_infiltration.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T0_demiplane_infiltration.yml @@ -60,4 +60,4 @@ components: - type: CP14SpellStorage spells: - - CP14ActionSpellDemiplaneInfiltration \ No newline at end of file + - CP14ActionSpellDemiplaneInfiltration diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T0_monolith_warp.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T0_monolith_warp.yml index b2244cd553..ef0bb3852e 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T0_monolith_warp.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T0_monolith_warp.yml @@ -73,4 +73,4 @@ components: - type: CP14SpellStorage spells: - - CP14ActionSpellMonolithWarp \ No newline at end of file + - CP14ActionSpellMonolithWarp diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T1_shadow_grab.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T1_shadow_grab.yml index 590f384e57..a835d6d89b 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T1_shadow_grab.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T1_shadow_grab.yml @@ -7,7 +7,7 @@ sprite: _CP14/Actions/Spells/dimension.rsi state: shadow_grab - type: CP14MagicEffectManaCost - manaCost: 10 + manaCost: 20 - type: CP14MagicEffect telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget @@ -58,4 +58,4 @@ components: - type: CP14SpellStorage spells: - - CP14ActionSpellShadowGrab \ No newline at end of file + - CP14ActionSpellShadowGrab diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T1_shadow_swap.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T1_shadow_swap.yml new file mode 100644 index 0000000000..59b0c55d2a --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T1_shadow_swap.yml @@ -0,0 +1,43 @@ +- type: entity + id: CP14ActionSpellShadowSwap + name: Shadow swap + description: A warp of space between two living beings + components: + - type: Sprite + sprite: _CP14/Actions/Spells/dimension.rsi + state: shadow_swap + - type: CP14MagicEffectCastSlowdown + speedMultiplier: 0.8 + - type: CP14MagicEffectManaCost + manaCost: 20 + - type: CP14MagicEffect + telegraphyEffects: + - !type:CP14SpellSpawnEntityOnUser + spawns: + - CP14ImpactEffectShadowStep + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectShadowStep + effects: + - !type:CP14SpellCasterSwap + - type: CP14MagicEffectCastingVisual + proto: CP14ImpactEffectShadowStep + - type: CP14MagicEffectSomaticAspect + - type: CP14MagicEffectAliveTargetRequired + - type: EntityTargetAction + whitelist: + components: + - MobState + range: 5 + itemIconStyle: BigAction + interactOnMiss: false + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/Spells/dimension.rsi + state: shadow_swap + event: !type:CP14DelayedEntityTargetActionEvent + cooldown: 30 + hidden: true + breakOnMove: false + requireCanInteract: false diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T2_shadow_step.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T2_shadow_step.yml index f91349c525..98f26de82c 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T2_shadow_step.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Dimension/T2_shadow_step.yml @@ -29,7 +29,7 @@ sprite: _CP14/Actions/Spells/dimension.rsi state: shadow_step event: !type:CP14DelayedEntityWorldTargetActionEvent - cooldown: 10 + cooldown: 30 hidden: true breakOnMove: false @@ -51,4 +51,4 @@ components: - type: CP14SpellStorage spells: - - CP14ActionSpellShadowStep \ No newline at end of file + - CP14ActionSpellShadowStep diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fire_rune.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fire_rune.yml deleted file mode 100644 index 94727de9bf..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fire_rune.yml +++ /dev/null @@ -1,98 +0,0 @@ -- type: entity - id: CP14ActionSpellFireRune - name: Fire rune - description: You create an area where a scalding stream of fire occurs with little delay. - components: - - type: Sprite - sprite: _CP14/Actions/Spells/fire.rsi - state: tiefling_revenge - - type: CP14MagicEffectCastSlowdown - speedMultiplier: 0.5 - - type: CP14MagicEffectManaCost - manaCost: 15 - - type: CP14MagicEffect - telegraphyEffects: - - !type:CP14SpellSpawnEntityOnTarget - spawns: - - CP14TelegraphyFireRune - effects: - - !type:CP14SpellSpawnEntityOnTarget - spawns: - - CP14AreaEntityEffectFireRune - - type: CP14MagicEffectCastingVisual - proto: CP14RuneEarthWall - - type: CP14MagicEffectPacifiedBlock - - type: EntityWorldTargetAction - range: 10 - itemIconStyle: BigAction - sound: !type:SoundPathSpecifier - path: /Audio/Magic/rumble.ogg - icon: - sprite: _CP14/Actions/Spells/fire.rsi - state: tiefling_revenge - event: !type:CP14DelayedEntityWorldTargetActionEvent - cooldown: 10 - -- type: entity - id: CP14TelegraphyFireRune - parent: CP14BaseMagicImpact - categories: [ HideSpawnMenu ] - save: false - components: - - type: PointLight - color: "#eea911" - - type: TimedDespawn - lifetime: 0.8 - - type: Sprite - noRot: true - drawdepth: BelowFloor - sprite: _CP14/Effects/Magic/area_impact.rsi - layers: - - state: area_impact_in - color: "#eea911" - scale: 2, 2 - shader: unshaded - -- type: entity - id: CP14AreaEntityEffectFireRune - parent: CP14BaseMagicImpact - categories: [ HideSpawnMenu ] - save: false - components: - - type: PointLight - color: "#eea911" - - type: Sprite - noRot: true - drawdepth: BelowFloor - sprite: _CP14/Effects/Magic/area_impact.rsi - layers: - - state: area_impact_out - color: "#eea911" - scale: 2, 2 - shader: unshaded - - type: TimedDespawn - lifetime: 0.8 - - type: CP14AreaEntityEffect - range: 1 - whitelist: - components: - - Damageable - effects: - - !type:CP14SpellSpawnEntityOnTarget - spawns: - - CP14ImpactEffectTieflingRevenge - - !type:CP14SpellApplyEntityEffect - effects: - - !type:HealthChange - damage: - types: - Heat: 10 - -- type: entity - parent: CP14BaseSpellScrollFire - id: CP14SpellScrollFireRune - name: fire rune spell scroll - components: - - type: CP14SpellStorage - spells: - - CP14ActionSpellFireRune \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fireball.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fireball.yml index 6293d727fb..3aab714392 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fireball.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/fireball.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 20 - type: CP14MagicEffect + magicType: Fire effects: - !type:CP14SpellSpawnEntityOnUser spawns: @@ -36,7 +37,7 @@ state: fireball event: !type:CP14DelayedEntityWorldTargetActionEvent cooldown: 25 - castDelay: 1.5 + castDelay: 2.5 breakOnMove: false - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/flame_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/flame_creation.yml index 0274879d97..a2ac6d4879 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/flame_creation.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/flame_creation.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 5 - type: CP14MagicEffect + magicType: Fire effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/heat.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/heat.yml new file mode 100644 index 0000000000..bf073bb3f6 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/heat.yml @@ -0,0 +1,76 @@ +- type: entity + id: CP14ActionSpellHeat + name: Heat + description: You start to heat the target up a lot, burning it from the inside. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/fire.rsi + state: heat + - type: CP14MagicEffectCastSlowdown + speedMultiplier: 0.8 + - type: CP14MagicEffectManaCost + manaCost: 7 + - type: CP14MagicEffect + magicType: Fire + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectHeat + - !type:CP14SpellApplyEntityEffect + effects: + - !type:AdjustTemperature + amount: 36000 + - !type:ExtinguishReaction + - type: CP14MagicEffectVerbalAspect + startSpeech: "Vos adepto calidum..." + - type: CP14MagicEffectCastingVisual + proto: CP14RuneHeat + - type: EntityTargetAction + range: 8 + interactOnMiss: false + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/Spells/fire.rsi + state: heat + event: !type:CP14ToggleableEntityTargetActionEvent + cooldown: 8 + castTime: 10 + distanceThreshold: 5 + breakOnMove: false + +- type: entity + id: CP14ImpactEffectHeat + parent: CP14BaseMagicImpact + categories: [ HideSpawnMenu ] + save: false + components: + - type: Sprite + layers: + - state: circle_increase + color: "#eea911" + shader: unshaded + +- type: entity + id: CP14RuneHeat + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + save: false + components: + - type: PointLight + color: "#eea911" + - type: Sprite + layers: + - state: sun + color: "#eea911" + shader: unshaded + +- type: entity + parent: CP14BaseSpellScrollFire + id: CP14SpellScrollHeat + name: heat spell scroll + components: + - type: CP14SpellStorage + spells: + - CP14ActionSpellHeat diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/hell_ballade.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/hell_ballade.yml index 53c5af43d5..ddaff00d81 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/hell_ballade.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/hell_ballade.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 1 - type: CP14MagicEffect + magicType: Fire effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/tiefling_inner_fire.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/tiefling_inner_fire.yml index 91846c528b..c4f36538f6 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/tiefling_inner_fire.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Fire/tiefling_inner_fire.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectCastingVisual proto: CP14RuneTieflingRevenge - type: CP14MagicEffect + magicType: Fire effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_heat.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_heat.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml index c7ceac34d0..d43079d6d6 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_heat.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_heat.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_poison.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml similarity index 94% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_poison.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml index ae6890d9f6..503939eb6f 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_poison.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_poison.yml @@ -1,7 +1,7 @@ - type: entity id: CP14ActionSpellBloodPurification name: Blood purification - description: You cleanse the target's blood of poisons, and restore its volume slightly + description: You cleanse the target's blood of poisons and acids, and restore its volume slightly components: - type: Sprite sprite: _CP14/Actions/Spells/healing.rsi @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -52,7 +53,7 @@ cooldown: 5 castDelay: 1.5 breakOnMove: false - + - type: entity id: CP14RuneBloodPurification parent: CP14BaseMagicRune diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_wounds.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_wounds.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml index b23d54e603..e339b649d3 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_cure_wounds.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/cure_wounds.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_heal_ballade.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/heal_ballade.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_heal_ballade.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/heal_ballade.yml index 04c8af2971..c3b753ab2c 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_heal_ballade.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/heal_ballade.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 1 - type: CP14MagicEffect + magicType: Life effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/magical_acceleration.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/magical_acceleration.yml index cd4d32d350..bb34144809 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/magical_acceleration.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/magical_acceleration.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 3 - type: CP14MagicEffect + magicType: Life effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_peace_ballade.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/peace_ballade.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_peace_ballade.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/peace_ballade.yml index 842215ec8f..6daec90aac 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_peace_ballade.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/peace_ballade.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 2 - type: CP14MagicEffect + magicType: Life effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_plant_growth.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/plant_growth.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_plant_growth.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/plant_growth.yml index c75bc4f919..ea4885c658 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_plant_growth.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/plant_growth.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 5 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/T1_resurrection.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/resurrection.yml similarity index 96% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/T1_resurrection.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/resurrection.yml index 6554c280d5..f7d393c6f7 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Death/T1_resurrection.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/resurrection.yml @@ -10,7 +10,10 @@ speedMultiplier: 0.2 - type: CP14MagicEffectManaCost manaCost: 100 + - type: CP14MagicEffectAliveTargetRequired + inverted: true - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml index 6ad1a98a63..e7b49985c5 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/sheep_polymorph.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 30 - type: CP14MagicEffect + magicType: Life telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_speed_ballade.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/speed_ballade.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_speed_ballade.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/speed_ballade.yml index c34e023b6c..9bd96ad1a5 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/T0_speed_ballade.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Life/speed_ballade.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 1 - type: CP14MagicEffect + magicType: Life effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_flash_light.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/flash_light.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_flash_light.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/flash_light.yml index 045703a10d..116c520085 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_flash_light.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/flash_light.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Light telegraphyEffects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/search_of_life.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/search_of_life.yml new file mode 100644 index 0000000000..9b15358973 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/search_of_life.yml @@ -0,0 +1,90 @@ +- type: entity + id: CP14ActionSpellSearchOfLife + name: Search of life + description: Detects all living things in a large radius around you. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/light.rsi + state: search_of_life + - type: CP14MagicEffectManaCost + manaCost: 30 + - type: CP14MagicEffect + magicType: Light + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectSearchOfLife + - !type:CP14SpellPointerToAlive + pointerEntity: CP14SearchOfLifePointer + searchRange: 30 + - type: CP14MagicEffectVerbalAspect + startSpeech: "Ego vultus..." + endSpeech: "parumper vita" + - type: CP14MagicEffectSomaticAspect + - type: CP14MagicEffectCastingVisual + proto: CP14RuneSearchOfLife + - type: InstantAction + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/Spells/light.rsi + state: search_of_life + event: !type:CP14DelayedInstantActionEvent + cooldown: 30 + castDelay: 1.5 + +- type: entity + id: CP14ImpactEffectSearchOfLife + parent: CP14BaseMagicImpact + categories: [ HideSpawnMenu ] + save: false + components: + - type: Sprite + layers: + - state: particles_up + color: "#efedff" + shader: unshaded + - state: circle_increase + color: "#79b330" + shader: unshaded + +- type: entity + id: CP14RuneSearchOfLife + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + save: false + components: + - type: PointLight + color: "#328643" + - type: Sprite + layers: + - state: sun + color: "#efedff" + shader: unshaded + - state: double_outer + color: "#79b330" + shader: unshaded + +- type: entity + id: CP14SearchOfLifePointer + name: pointer + categories: [ HideSpawnMenu ] + components: + - type: Sprite + sprite: /Textures/_CP14/Effects/Magic/pointer.rsi + offset: 0, -1 + layers: + - state: pointer + shader: unshaded + drawdepth: LowFloors + - type: PointLight + netSync: false + radius: 3 + color: "#ffffff" + energy: 0.2 + - type: TimedDespawn + lifetime: 8 + - type: Tag + tags: + - HideContextMenu \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_signal_light.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/signal_light.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_signal_light.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/signal_light.yml index 06ac3898eb..61332ba244 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T1_signal_light.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/signal_light.yml @@ -7,6 +7,7 @@ - type: CP14MagicEffectManaCost manaCost: 5 - type: CP14MagicEffect + magicType: Light - type: CP14MagicEffectSomaticAspect - type: InstantAction itemIconStyle: BigAction diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T0_sphere_of_light.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/sphere_of_light.yml similarity index 99% rename from Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T0_sphere_of_light.yml rename to Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/sphere_of_light.yml index fbb004dd1c..78943ce80e 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/T0_sphere_of_light.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Light/sphere_of_light.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Light effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_splitting.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_splitting.yml index dc1794bd6d..a498876aa1 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_splitting.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_splitting.yml @@ -71,6 +71,14 @@ - state: electrified color: "#601fc2" shader: unshaded + - type: PointLight + color: "#601fc2" + enabled: true + radius: 2 + energy: 2 + netsync: false + - type: LightFade + duration: 1 - type: entity parent: CP14BaseSpellScrollMeta diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_trance.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_trance.yml new file mode 100644 index 0000000000..b682bdce46 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Meta/mana_trance.yml @@ -0,0 +1,48 @@ +- type: entity + id: CP14ActionSpellManaTrance + name: Mana trance + description: You go into a trance for a while, restoring mana. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/meta.rsi + state: mana_trance + - type: CP14MagicEffect + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectManaGift + - !type:CP14SpellApplyEntityEffect + effects: + - !type:CP14ManaChange + manaDelta: 2 + safe: true + - !type:HealthChange + damage: + types: + CP14ManaDepletion: -0.1 + - type: CP14MagicEffectCastingVisual + proto: CP14RuneManaTrance + - type: InstantAction + itemIconStyle: BigAction + icon: + sprite: _CP14/Actions/Spells/meta.rsi + state: mana_trance + event: !type:CP14ToggleableInstantActionEvent + cooldown: 60 + castTime: 120 + hidden: true + breakOnMove: true + +- type: entity + id: CP14RuneManaTrance + parent: CP14BaseMagicRune + categories: [ HideSpawnMenu ] + save: false + components: + - type: PointLight + color: "#5096d4" + - type: Sprite + layers: + - state: sun + color: "#5096d4" + shader: unshaded \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/kick.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/kick.yml index 7e8f779130..2955d17c13 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/kick.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/kick.yml @@ -55,4 +55,42 @@ sound: !type:SoundPathSpecifier path: /Audio/Effects/hit_kick.ogg params: - pitch: 1 \ No newline at end of file + pitch: 1 + + +- type: entity + parent: CP14ActionSpellKick + id: CP14ActionSpellKickSkeleton + name: Kick + description: You perform an epic leg kick at your chosen object, pushing it away from you. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/physical.rsi + state: kick_skull + - type: CP14MagicEffectStaminaCost + stamina: 35 + - type: CP14MagicEffect + effects: + - !type:CP14SpellApplyEntityEffect + effects: + - !type:Paralyze + paralyzeTime: 2 + - !type:CP14SpellThrowFromUser + throwPower: 10 + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14DustEffectKickSound + - !type:CP14SpellApplyEntityEffect + effects: + - !type:HealthChange + damage: + types: + Blunt: 10 + - type: EntityTargetAction + itemIconStyle: BigAction + icon: + sprite: _CP14/Actions/Spells/physical.rsi + state: kick_skull + event: !type:CP14DelayedEntityTargetActionEvent + cooldown: 5 + castDelay: 0.4 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/sprint.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/sprint.yml index 3980b88c43..4603fcdf8a 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/sprint.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Physical/sprint.yml @@ -36,4 +36,26 @@ - type: CP14MagicEffectCastSlowdown speedMultiplier: 1.5 - type: CP14MagicEffectStaminaCost - stamina: 5 \ No newline at end of file + stamina: 5 + + +- type: entity + parent: CP14ActionSpellSprint + id: CP14ActionSpellSprintSkeleton + name: Sprint + description: At the cost of heavy stamina expenditure, you accelerate significantly in movement. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/physical.rsi + state: sprint_skull + - type: CP14MagicEffectCastSlowdown + speedMultiplier: 1.4 + - type: CP14MagicEffectStaminaCost + stamina: 2 + - type: InstantAction + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/Spells/physical.rsi + state: sprint_skull \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Vampire/bloodlust.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Vampire/bloodlust.yml new file mode 100644 index 0000000000..82195b52b3 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Vampire/bloodlust.yml @@ -0,0 +1,56 @@ +- type: entity + id: CP14ActionSpellBloodlust + name: Bloodlust + description: you sense all living things in a large radius around you that you want to KILL. + components: + - type: Sprite + sprite: _CP14/Actions/Spells/vampire.rsi + state: blood_moon + - type: CP14MagicEffect + effects: + - !type:CP14SpellSpawnEntityOnTarget + spawns: + - CP14ImpactEffectVampireHypnosis + - !type:CP14SpellPointerToAlive + pointerEntity: CP14BloodlustPointer + searchRange: 60 + - type: CP14MagicEffectVerbalAspect + startSpeech: "Ego vultus..." + endSpeech: "parumper vita" + - type: CP14MagicEffectSomaticAspect + - type: CP14MagicEffectCastingVisual + proto: CP14RuneVampireHypnosis + - type: InstantAction + itemIconStyle: BigAction + sound: !type:SoundPathSpecifier + path: /Audio/Magic/rumble.ogg + icon: + sprite: _CP14/Actions/Spells/vampire.rsi + state: blood_moon + event: !type:CP14DelayedInstantActionEvent + cooldown: 30 + castDelay: 1.5 + +- type: entity + id: CP14BloodlustPointer + name: pointer + categories: [ HideSpawnMenu ] + components: + - type: Sprite + color: red + sprite: /Textures/_CP14/Effects/Magic/pointer.rsi + offset: 0, -1 + layers: + - state: pointer + shader: unshaded + drawdepth: LowFloors + - type: PointLight + netSync: false + radius: 3 + color: red + energy: 0.2 + - type: TimedDespawn + lifetime: 8 + - type: Tag + tags: + - HideContextMenu \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/beer_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/beer_creation.yml index 963b326cbe..0914fade75 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/beer_creation.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/beer_creation.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 20 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml index 52b1fb8cbe..c0093a92ee 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/freeze.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 7 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_arrow.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_arrow.yml index 269ebd8a55..259fc0a750 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_arrow.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_arrow.yml @@ -7,8 +7,9 @@ sprite: _CP14/Actions/Spells/water.rsi state: ice_arrow - type: CP14MagicEffectManaCost - manaCost: 15 + manaCost: 7 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -30,7 +31,7 @@ sprite: _CP14/Actions/Spells/water.rsi state: ice_arrow event: !type:CP14DelayedInstantActionEvent - cooldown: 5 + cooldown: 10 breakOnMove: false - type: entity @@ -78,7 +79,7 @@ onlyCollideWhenShot: true damage: types: - Piercing: 17 + Piercing: 15 Cold: 5 - type: Damageable - type: Destructible @@ -93,7 +94,7 @@ - !type:DoActsBehavior acts: ["Destruction"] - type: TimedDespawn - lifetime: 60 + lifetime: 240 - type: DamageOnLand damage: types: diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_dagger.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_dagger.yml index f81ab90608..78116b72d1 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_dagger.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_dagger.yml @@ -7,8 +7,9 @@ sprite: _CP14/Actions/Spells/water.rsi state: ice_dagger - type: CP14MagicEffectManaCost - manaCost: 15 + manaCost: 25 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -30,14 +31,14 @@ sprite: _CP14/Actions/Spells/water.rsi state: ice_dagger event: !type:CP14DelayedInstantActionEvent - cooldown: 20 + cooldown: 10 breakOnMove: false - type: entity name: ice dagger parent: BaseItem id: CP14IceDagger - description: A sharp ice arrow created with magic. It melts and will soon disappear, but you can shoot it once with your bow. + description: A sharp ice dagger, not very durable but can temporarily replace real weapons. categories: [ ForkFiltered ] components: - type: Sharp diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_shards.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_shards.yml index b816e58139..9b490b2723 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_shards.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/ice_shards.yml @@ -11,6 +11,7 @@ - type: CP14MagicEffectManaCost manaCost: 5 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellProjectile prototype: CP14IceShard diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/water_creation.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/water_creation.yml index fa575db584..9c27e4f08b 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/water_creation.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/Water/water_creation.yml @@ -9,6 +9,7 @@ - type: CP14MagicEffectManaCost manaCost: 10 - type: CP14MagicEffect + magicType: Water effects: - !type:CP14SpellSpawnEntityOnTarget spawns: @@ -47,7 +48,7 @@ - type: entity id: CP14LiquidDropWater - parent: + parent: - BaseItem - ItemHeftyBase name: floating liquid drop diff --git a/Resources/Prototypes/_CP14/Entities/Actions/Spells/base.yml b/Resources/Prototypes/_CP14/Entities/Actions/Spells/base.yml index 721a1dbb23..c054903698 100644 --- a/Resources/Prototypes/_CP14/Entities/Actions/Spells/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Actions/Spells/base.yml @@ -27,7 +27,6 @@ - type: TimedDespawn lifetime: 1.6 - type: AnimationPlayer - - type: EffectVisuals - type: Tag tags: - HideContextMenu diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/alchemist.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/alchemist.yml index 23c33ab108..8f8ee09946 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/alchemist.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/alchemist.yml @@ -23,3 +23,29 @@ whitelist: tags: - CP14Vial + +- type: entity + parent: + - CP14ClothingCloakBase + - CP14ClothingBaseContainer + id: CP14ClothingCloakAlchemistMantle + name: alchemist's mantle + description: An expensive fabric that can withstand acid splashes - the standard for alchemist experts. + components: + - type: Sprite + sprite: _CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi + - type: Clothing + sprite: _CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi + - type: Armor + modifiers: + coefficients: + Heat: 0.9 + Caustic: 0.75 + - type: Storage + maxItemSize: Tiny + defaultStorageOrientation: Vertical + grid: + - 0,0,1,1 + whitelist: + tags: + - CP14Vial \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/general.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/general.yml index 19297a0348..3dbbc08cce 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/general.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/Roles/general.yml @@ -161,4 +161,15 @@ - type: Sprite sprite: _CP14/Clothing/Cloak/Roles/General/yellow_syurko.rsi - type: Clothing - sprite: _CP14/Clothing/Cloak/Roles/General/yellow_syurko.rsi \ No newline at end of file + sprite: _CP14/Clothing/Cloak/Roles/General/yellow_syurko.rsi + +- type: entity + parent: CP14ClothingCloakBase + id: CP14ClothingCloakAristocraticCloak + name: aristocratic cloak + description: Aristocratic red coat with fur collar, very expensive, very cool, a little uncomfortable. + components: + - type: Sprite + sprite: _CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi + - type: Clothing + sprite: _CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/bone_cloak.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/bone_cloak.yml new file mode 100644 index 0000000000..22beb1c200 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/bone_cloak.yml @@ -0,0 +1,21 @@ +- type: entity + parent: CP14ClothingCloakBase + id: CP14ClothingCloakBone + name: bone cloak + description: a brutal cloak for brutal skeletons. + components: + - type: Sprite + sprite: _CP14/Clothing/Cloak/bone_cloak.rsi + - type: Clothing + sprite: _CP14/Clothing/Cloak/bone_cloak.rsi + +- type: entity + parent: CP14ClothingCloakBone + id: CP14ClothingCloakBoneMage + name: bone armor with cloak + description: The leader's cloak, for the leader's skeleton! + components: + - type: Sprite + sprite: _CP14/Clothing/Cloak/bone_mage_cloak.rsi + - type: Clothing + sprite: _CP14/Clothing/Cloak/bone_mage_cloak.rsi \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/sort_later.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/sort_later.yml index 2a6d2bc14d..df2a3647c2 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/sort_later.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Cloak/sort_later.yml @@ -9,4 +9,4 @@ - type: Sprite sprite: _CP14/Clothing/Cloak/Roles/General/maid_apron.rsi - type: Clothing - sprite: _CP14/Clothing/Cloak/Roles/General/maid_apron.rsi \ No newline at end of file + sprite: _CP14/Clothing/Cloak/Roles/General/maid_apron.rsi diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Head/head.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Head/head.yml new file mode 100644 index 0000000000..da6ea73ab5 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Head/head.yml @@ -0,0 +1,31 @@ +# Admeme spawn only for now +- type: entity + parent: CP14ClothingHeadBase + id: CP14ClothingHeadSlimeCrown + name: slime crown + description: Earl of Ooze. Grand Duke of Goo. Lord of the Slimes. + components: + - type: Sprite + sprite: _CP14/Clothing/Head/slime_crown.rsi + - type: Clothing + sprite: _CP14/Clothing/Head/slime_crown.rsi + - type: Armor + modifiers: + coefficients: + Blunt: 0.95 + Heat: 0.9 + Cold: 0.9 + Shock: 0.9 + Caustic: 0.9 + - type: FactionClothing + faction: CP14Slimes + - type: Storage + grid: + - 0,0,0,0 + - type: UserInterface + interfaces: + enum.StorageUiKey.Key: + type: StorageBoundUserInterface + - type: ContainerContainer + containers: + storagebase: !type:Container diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/Roles/general.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/Roles/general.yml index ab71e6e7fd..cf85d30dd1 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/Roles/general.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/Roles/general.yml @@ -76,3 +76,28 @@ - type: Clothing sprite: _CP14/Clothing/OuterClothing/Roles/General/jagermeister_waistcoat.rsi +- type: entity + parent: + - ClothingSlotBase + - CP14ClothingOuterFoldableBase + id: CP14ClothingOuterClothingGreenVest2 + name: green vest + description: Stylish green vest with gold buttons. + components: + - type: Sprite + sprite: _CP14/Clothing/OuterClothing/Roles/General/green_2.rsi + - type: Clothing + sprite: _CP14/Clothing/OuterClothing/Roles/General/green_2.rsi + +- type: entity + parent: + - ClothingSlotBase + - CP14ClothingOuterFoldableBase + id: CP14ClothingOuterClothingPurple + name: purple vest + description: Stylish purple vest. + components: + - type: Sprite + sprite: _CP14/Clothing/OuterClothing/Roles/General/purple.rsi + - type: Clothing + sprite: _CP14/Clothing/OuterClothing/Roles/General/purple.rsi \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/armor.yml b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/armor.yml index 100b1ae70c..c879f5a732 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/armor.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/OuterClothing/armor.yml @@ -41,3 +41,16 @@ - type: ClothingSpeedModifier walkModifier: 0.98 sprintModifier: 0.98 + +- type: entity + parent: CP14ClothingOuterClothingBoneArmor + id: CP14ClothingOuterClothingBoneArmorUpgrade + name: reinforced bone armor + description: Bone armour... not the best or most attractive defence. + components: + - type: Armor + modifiers: + coefficients: + Blunt: 0.85 + Slash: 0.80 + Piercing: 0.90 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Clothing/Shirt/Roles/general.yml b/Resources/Prototypes/_CP14/Entities/Clothing/Shirt/Roles/general.yml index 8eb15206b9..7c8ad79c8f 100644 --- a/Resources/Prototypes/_CP14/Entities/Clothing/Shirt/Roles/general.yml +++ b/Resources/Prototypes/_CP14/Entities/Clothing/Shirt/Roles/general.yml @@ -276,7 +276,7 @@ id: CP14ClothingWarriorsGarbDress name: warrior's garb description: show your strength. - components: + components: - type: Sprite sprite: _CP14/Clothing/Shirt/Roles/General/Dress/warrior_garb.rsi - type: Clothing @@ -286,8 +286,138 @@ parent: CP14ClothingShirtBase id: CP14ClothinShirtMaidDress name: maid's dress - components: + components: - type: Sprite sprite: _CP14/Clothing/Shirt/Roles/General/Dress/maid_dress.rsi - type: Clothing - sprite: _CP14/Clothing/Shirt/Roles/General/Dress/maid_dress.rsi \ No newline at end of file + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/maid_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtBlueYellowDress + name: blue-yellow dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtWhiteBlueDress + name: white-blue dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtWhiteBlue2Dress + name: white-blue dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtBrown2Dress + name: brown dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtBrown3Dress + name: brown dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtWhiteGreenDress + name: green dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtwhiteGreenYellowDress + name: green-yellow dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtRedBlueDress + name: red-blue dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtYellowBlueDress + name: yellow-blue dress + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtBlueGreen + name: blue-green shirt + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtGray + name: gray shirt + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtGreenYellow + name: green-yellow shirt + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi + +- type: entity + parent: CP14ClothingShirtBase + id: CP14ClothinShirtWhiteBrown + name: white-brown shirt + components: + - type: Sprite + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi + - type: Clothing + sprite: _CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Effects/sky_lightning.yml b/Resources/Prototypes/_CP14/Entities/Effects/sky_lightning.yml index cb5a340f54..433a114e84 100644 --- a/Resources/Prototypes/_CP14/Entities/Effects/sky_lightning.yml +++ b/Resources/Prototypes/_CP14/Entities/Effects/sky_lightning.yml @@ -14,7 +14,6 @@ shader: unshaded - type: TimedDespawn lifetime: 2 - - type: EffectVisuals - type: Tag tags: - HideContextMenu @@ -56,4 +55,38 @@ farSound: collection: CP14LightningFar params: - variation: 0.2 \ No newline at end of file + variation: 0.2 + +- type: entity + id: CP14SkyLightningPurple + parent: CP14SkyLightning + suffix: Purple + components: + - type: PointLight + color: "#8f42ff" + - type: Sprite + color: "#8f42ff" + - type: CP14AreaEntityEffect + range: 1 + effects: + - !type:CP14SpellThrowFromUser + - !type:CP14SpellApplyEntityEffect + effects: + - !type:Electrocute + electrocuteTime: 3 + - !type:HealthChange + damage: + types: + Shock: 15 + - type: CP14FarSound + closeSound: + path: /Audio/_CP14/Ambience/Lightning/lightning_close1.ogg + params: + variation: 0.2 + maxDistance: 20 + volume: 10 + farSound: + collection: CP14LightningFar + params: + variation: 0.2 + volume: -5 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml b/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml index b665ab14d2..766728d78f 100644 --- a/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml +++ b/Resources/Prototypes/_CP14/Entities/Effects/visual_effect.yml @@ -17,7 +17,6 @@ dirt2: "" - type: TimedDespawn lifetime: 2 - - type: EffectVisuals - type: Tag tags: - HideContextMenu @@ -53,7 +52,6 @@ drawdepth: Items sprite: _CP14/Effects/dust.rsi state: dust - - type: EffectVisuals - type: Tag tags: - HideContextMenu @@ -94,6 +92,23 @@ canCollide: false - type: TimedDespawn lifetime: 2 + - type: Tag + tags: + - HideContextMenu + +- type: entity + id: CP14BloodMoonCurseEffect + categories: [ HideSpawnMenu ] + components: + - type: Sprite + noRot: true + color: "#FFFFFF33" + sprite: /Textures/_CP14/Effects/Magic/blood_moon_curse.rsi + drawdepth: Effects + layers: + - state: icon + - type: Physics + canCollide: false - type: Tag tags: - HideContextMenu \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/demiplane.yml b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/demiplane.yml index b92de34291..f88925af3b 100644 --- a/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/demiplane.yml +++ b/Resources/Prototypes/_CP14/Entities/Markers/Spawners/Random/Loot/demiplane.yml @@ -39,6 +39,7 @@ - id: CP14SpellScrollPlantGrowth - id: CP14SpellScrollMagicSplitting - id: CP14SpellScrollMagicalAcceleration + - id: CP14SpellScrollHeat - id: CP14BaseSharpeningStone - id: CP14ScrapCopper - id: CP14ScrapIron @@ -99,4 +100,4 @@ - !type:GroupSelector # remove this when players can create their own magic items children: - id: CP14SpellScrollResurrection - - id: CP14ClothingCloakAmuletMana + - id: CP14ClothingCloakAmuletMana \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Markers/salary.yml b/Resources/Prototypes/_CP14/Entities/Markers/salary.yml deleted file mode 100644 index 56a299d717..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Markers/salary.yml +++ /dev/null @@ -1,11 +0,0 @@ -- type: entity - id: CP14SalarySpawner - categories: [ ForkFiltered ] - parent: BaseItem - name: station salary spawner - components: - - type: CP14SalarySpawner - - type: Sprite - layers: - - sprite: /Textures/_CP14/Objects/Economy/jewelry.rsi - state: ruby1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/goblin_hairs.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/goblin_hairs.yml deleted file mode 100644 index db13523cd1..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/goblin_hairs.yml +++ /dev/null @@ -1,26 +0,0 @@ -- type: marking - id: CP14GoblinHairAntenna - bodyPart: Hair - markingCategory: Hair - speciesRestriction: [ CP14Goblin ] - sprites: - - sprite: _CP14/Mobs/Customization/goblin_hair.rsi - state: antenna - -- type: marking - id: CP14GoblinHairBedHead2 - bodyPart: Hair - markingCategory: Hair - speciesRestriction: [ CP14Goblin ] - sprites: - - sprite: _CP14/Mobs/Customization/goblin_hair.rsi - state: bedheadv2 - -- type: marking - id: CP14GoblinHairDoubleBun - bodyPart: Hair - markingCategory: Hair - speciesRestriction: [ CP14Goblin ] - sprites: - - sprite: _CP14/Mobs/Customization/goblin_hair.rsi - state: doublebun \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/tiefling_horns.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/tiefling_horns.yml index c2e3b17ec3..8ad1bbb610 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/tiefling_horns.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Customization/Markings/tiefling_horns.yml @@ -96,4 +96,14 @@ followSkinColor: true sprites: - sprite: _CP14/Mobs/Customization/tiefling_horns.rsi - state: horn8 \ No newline at end of file + state: horn8 + +- type: marking + id: CP14TieflingHorns9 + bodyPart: HeadTop + markingCategory: HeadTop + speciesRestriction: [ CP14Tiefling ] + followSkinColor: true + sprites: + - sprite: _CP14/Mobs/Customization/tiefling_horns.rsi + state: horn9 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/base.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/base.yml index c908b6fb6e..d0dc59409b 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/base.yml @@ -42,7 +42,7 @@ - MobLayer - type: NpcFactionMember factions: - - CP14Monster + - CP14Slimes - type: MovementSpeedModifier baseWalkSpeed: 1 baseSprintSpeed: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/fire.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/fire.yml index 20774dfad2..5d630cc192 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/fire.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/fire.yml @@ -64,8 +64,6 @@ - id: CP14FoodMeatLambCutletCooked - id: CP14ModularInlayQuartzFire - id: CP14CopperCoin1 - - id: CP14CrystalShardFire - weight: 3 - type: entity id: CP14AreaEntityEffectSlimeIgnite diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/ice.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/ice.yml index b593e16fd6..e6273e1723 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/ice.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/Slimes/ice.yml @@ -77,8 +77,6 @@ - id: CP14Snowball - id: CP14CopperCoin1 - id: CP14ModularInlayQuartzWater - - id: CP14CrystalShardWater - weight: 3 - type: entity id: CP14AreaEntityEffectSlimeFroze diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/animals.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/animals.yml index 43eddfb68d..f3eb916f3f 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/animals.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/animals.yml @@ -320,7 +320,8 @@ damageType: Blunt damage: 60 behaviors: - - !type:GibBehavior { } + - !type:GibBehavior + recursive: false - type: SpamEmitSound minInterval: 10 maxInterval: 20 diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/NPC/myconide.yml b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/myconide.yml new file mode 100644 index 0000000000..3dbede2d07 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Mobs/NPC/myconide.yml @@ -0,0 +1,164 @@ +- type: entity + id: CP14MobMonsterMyconideFlyagaric + parent: CP14SimpleMobBase + name: myconide flyagaric + description: While you're looking at it, it's already running towards you!!! + categories: [ ForkFiltered ] + components: + - type: HTN + rootTask: + task: CP14MonsterCompound + blackboard: + NavSmash: !type:Bool + true + VisionRadius: !type:Single + 16 + AggroVisionRadius: !type:Single + 12 + - type: NpcFactionMember + factions: + - CP14Monster + - type: Sprite + drawdepth: Mobs + sprite: _CP14/Mobs/Monster/flyagaric.rsi + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: flyagaric + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.25 + density: 60 + mask: + - MobMask + layer: + - MobLayer + - type: Appearance + - type: Body + prototype: Animal + - type: MobThresholds + thresholds: + 0: Alive + 30: Dead + - type: SlowOnDamage + speedModifierThresholds: + 20: 0.8 + - type: Stamina + critThreshold: 60 + - type: CombatMode + - type: MeleeWeapon + angle: 0 + animation: WeaponArcPunch + damage: + types: + Blunt: 2 + - type: MovementSpeedModifier + baseWalkSpeed: 4 + baseSprintSpeed: 4 + - type: DamageStateVisuals + states: + Alive: + Base: flyagaric + Dead: + Base: dead + - type: Butcherable + spawned: + - id: CP14AgaricMushroom + amount: 3 + - type: Bloodstream + bloodMaxVolume: 60 + bloodReagent: CP14AgaricMushroom + - type: Grammar + attributes: + gender: epicene + - type: Tag + tags: + - FootstepSound + - CP14Mosquito + +- type: entity + id: CP14MobMonsterMyconideLumish + parent: CP14SimpleMobBase + name: myconide lumish + description: It's a mushroom with a glowing cap, and it hits you hard on the head. + categories: [ ForkFiltered ] + components: + - type: HTN + rootTask: + task: CP14MonsterCompound + blackboard: + NavSmash: !type:Bool + true + VisionRadius: !type:Single + 16 + AggroVisionRadius: !type:Single + 12 + - type: NpcFactionMember + factions: + - CP14Monster + - type: Sprite + drawdepth: Mobs + sprite: _CP14/Mobs/Monster/lumish.rsi + layers: + - map: ["enum.DamageStateVisualLayers.Base"] + state: lumishroom + - map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ] + state: lumishroom_cap + shader: unshaded + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeCircle + radius: 0.25 + density: 60 + mask: + - MobMask + layer: + - MobLayer + - type: Appearance + - type: Body + prototype: Animal + - type: MobThresholds + thresholds: + 0: Alive + 30: Dead + - type: SlowOnDamage + speedModifierThresholds: + 20: 0.8 + - type: Stamina + critThreshold: 60 + - type: CombatMode + - type: MeleeWeapon + angle: 0 + animation: WeaponArcPunch + damage: + types: + Blunt: 2 + - type: MovementSpeedModifier + baseWalkSpeed: 4 + baseSprintSpeed: 4 + - type: DamageStateVisuals + states: + Alive: + Base: lumishroom + BaseUnshaded: lumishroom_cap + Dead: + Base: dead + BaseUnshaded: dead_cap + - type: Butcherable + spawned: + - id: CP14LumiMushroom + amount: 3 + - type: Bloodstream + bloodMaxVolume: 60 + bloodReagent: CP14LumiMushroom + - type: Grammar + attributes: + gender: epicene + - type: Tag + tags: + - FootstepSound + - CP14Mosquito diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T1.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T1.yml new file mode 100644 index 0000000000..8d4648e09e --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T1.yml @@ -0,0 +1,164 @@ +- type: entity + id: CP14MobUndeadSkeletonDemiplaneT1 + parent: CP14BaseMobSkeleton + name: skeleton + abstract: true + components: + - type: CP14NightVision + - type: NpcFactionMember + factions: + - CP14Monster + +- type: entity + id: CP14MobUndeadSkeletonHalberdT1 + parent: CP14MobUndeadSkeletonDemiplaneT1 + categories: [ ForkFiltered ] + suffix: Halebard T1 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonHalberdT1 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellKick + +- type: entity + id: CP14MobUndeadSkeletonSwordT1 + parent: CP14MobUndeadSkeletonDemiplaneT1 + categories: [ ForkFiltered ] + suffix: Sword T1 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonSwordT1 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellKick + +- type: entity + id: CP14MobUndeadSkeletonDodgerT1 + parent: CP14MobUndeadSkeletonDemiplaneT1 + categories: [ ForkFiltered ] + suffix: Dodger T1 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonDodgerT1 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellKick + - CP14ActionSpellSprint + +- type: entity + id: CP14MobUndeadSkeletonArcherT1 + parent: CP14MobUndeadSkeletonDemiplaneT1 + categories: [ ForkFiltered ] + suffix: Archer T1 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonArcherT1 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellIceArrow + - CP14ActionSpellSprint + +- type: entity + id: CP14SpawnPointGhostDemiplaneSkeletonT1 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton random T1 + categories: [ ForkFiltered ] + parent: MarkerBase + components: + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 15 + children: + - id: SpawnPointGhostDemiplaneSkeletonArcherT1 + - !type:GroupSelector + weight: 20 + children: + - id: SpawnPointGhostDemiplaneSkeletonHalberdT1 + - !type:GroupSelector + weight: 60 + children: + - id: SpawnPointGhostDemiplaneSkeletonSwordT1 + - id: SpawnPointGhostDemiplaneSkeletonDodgerT1 + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _CP14/Mobs/Species/Skeleton/parts.rsi + state: full + +- type: entity + id: SpawnPointGhostDemiplaneSkeletonHalberdT1 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Halebard T1 + categories: [ ForkFiltered ] + parent: MarkerBase + components: + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton + allowMovement: true + description: cp14-ghost-role-information-description-skeleton + rules: cp14-ghost-role-information-rules-demiplane + mindRoles: + - CP14MindRoleDemiplaneAntag + raffle: + settings: default + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonHalberdT1 + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _CP14/Mobs/Species/Skeleton/parts.rsi + state: full + +- type: entity + id: SpawnPointGhostDemiplaneSkeletonSwordT1 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Sword T1 + categories: [ ForkFiltered ] + parent: SpawnPointGhostDemiplaneSkeletonHalberdT1 + components: + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonSwordT1 + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton + +- type: entity + id: SpawnPointGhostDemiplaneSkeletonDodgerT1 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Dodger T1 + categories: [ ForkFiltered ] + parent: SpawnPointGhostDemiplaneSkeletonHalberdT1 + components: + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonDodgerT1 + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton + +- type: entity + id: SpawnPointGhostDemiplaneSkeletonArcherT1 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Archer T1 + categories: [ ForkFiltered ] + parent: SpawnPointGhostDemiplaneSkeletonHalberdT1 + components: + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonArcherT1 + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T2.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T2.yml new file mode 100644 index 0000000000..8db6c3d617 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/Skeletons/T2.yml @@ -0,0 +1,231 @@ +- type: entity + id: CP14MobUndeadSkeletonDemiplaneT2 + parent: CP14BaseMobSkeleton + name: skeleton + abstract: true + components: + - type: CP14NightVision + - type: NpcFactionMember + factions: + - CP14Monster + +- type: entity + id: CP14MobUndeadSkeletonHalberdT2 + parent: CP14MobUndeadSkeletonDemiplaneT2 + categories: [ ForkFiltered ] + suffix: Halebard T2 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonHalberdT2 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellKickSkeleton + +- type: entity + id: CP14MobUndeadSkeletonSwordT2 + parent: CP14MobUndeadSkeletonDemiplaneT2 + categories: [ ForkFiltered ] + suffix: Sword T2 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonSwordT2 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellKickSkeleton + +- type: entity + id: CP14MobUndeadSkeletonDodgerT2 + parent: CP14MobUndeadSkeletonDemiplaneT2 + categories: [ ForkFiltered ] + suffix: Dodger T2 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonDodgerT2 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellKickSkeleton + - CP14ActionSpellSprintSkeleton + +- type: entity + id: CP14MobUndeadSkeletonArcherT2 + parent: CP14MobUndeadSkeletonDemiplaneT2 + categories: [ ForkFiltered ] + suffix: Archer T2 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonArcherT2 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellSprint + - CP14ActionSpellShadowStep + - CP14ActionSpellIceArrow + +- type: entity + id: CP14MobUndeadSkeletonWizardT2 + parent: CP14MobUndeadSkeletonDemiplaneT2 + categories: [ ForkFiltered ] + suffix: Wizard T2 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonWizardT2 + - type: CP14MagicEnergyDraw + energy: 1 + delay: 1 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellFreeze + - CP14ActionSpellIceShards + - CP14ActionSpellIceDagger + - CP14ActionSpellCureFromDeath + - CP14ActionSpellShadowStep + - CP14ActionSpellShadowSwap + - CP14ActionSpellShadowGrab + +- type: entity + id: CP14MobUndeadSkeletonBardT2 + parent: CP14MobUndeadSkeletonDemiplaneT2 + categories: [ ForkFiltered ] + suffix: Bard T2 + components: + - type: Loadout + prototypes: + - CP14MobSkeletonBardT2 + - type: CP14SpellStorage + grantAccessToSelf: true + spells: + - CP14ActionSpellHealFromDeathBallade + - CP14ActionSpellMagicBallade + - CP14ActionSpellSpeedBallade + - CP14ActionSpellPeaceBallade + - CP14ActionSpellHellBallade + +- type: entity + id: CP14SpawnPointGhostDemiplaneSkeletonT2 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton random T2 + categories: [ ForkFiltered ] + parent: MarkerBase + components: + - type: EntityTableSpawner + table: !type:GroupSelector + children: + - !type:GroupSelector + weight: 40 + children: + - id: CP14SpawnPointGhostDemiplaneSkeletonWizardT2 + - id: CP14SpawnPointGhostDemiplaneSkeletonBardT2 + - !type:GroupSelector + weight: 60 + children: + - id: CP14SpawnPointGhostDemiplaneSkeletonSwordT2 + - id: CP14SpawnPointGhostDemiplaneSkeletonDodgerT2 + - id: CP14SpawnPointGhostDemiplaneSkeletonArcherT2 + - id: CP14SpawnPointGhostDemiplaneSkeletonHalberdT2 + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _CP14/Mobs/Species/Skeleton/parts.rsi + state: full + +- type: entity + id: CP14SpawnPointGhostDemiplaneSkeletonHalberdT2 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Halebard T2 + categories: [ ForkFiltered ] + parent: MarkerBase + components: + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton + allowMovement: true + description: cp14-ghost-role-information-description-skeleton + rules: cp14-ghost-role-information-rules-demiplane + mindRoles: + - CP14MindRoleDemiplaneAntag + raffle: + settings: default + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonHalberdT2 + - type: Sprite + sprite: Markers/jobs.rsi + layers: + - state: green + - sprite: _CP14/Mobs/Species/Skeleton/parts.rsi + state: full + +- type: entity + id: CP14SpawnPointGhostDemiplaneSkeletonSwordT2 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Sword T2 + categories: [ ForkFiltered ] + parent: CP14SpawnPointGhostDemiplaneSkeletonHalberdT2 + components: + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonSwordT2 + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton + +- type: entity + id: CP14SpawnPointGhostDemiplaneSkeletonDodgerT2 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Dodger T2 + categories: [ ForkFiltered ] + parent: CP14SpawnPointGhostDemiplaneSkeletonHalberdT2 + components: + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonDodgerT2 + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton + +- type: entity + id: CP14SpawnPointGhostDemiplaneSkeletonArcherT2 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Archer T2 + categories: [ ForkFiltered ] + parent: CP14SpawnPointGhostDemiplaneSkeletonHalberdT2 + components: + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonArcherT2 + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton + +- type: entity + id: CP14SpawnPointGhostDemiplaneSkeletonWizardT2 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Wizard T2 + categories: [ ForkFiltered ] + parent: CP14SpawnPointGhostDemiplaneSkeletonHalberdT2 + components: + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonWizardT2 + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton + +- type: entity + id: CP14SpawnPointGhostDemiplaneSkeletonBardT2 + name: ghost role spawn point + description: A ghost role for a bloodthirsty and cunning skeleton. + suffix: skeleton Bard T2 + categories: [ ForkFiltered ] + parent: CP14SpawnPointGhostDemiplaneSkeletonHalberdT2 + components: + - type: GhostRoleMobSpawner + prototype: CP14MobUndeadSkeletonBardT2 + - type: GhostRole + name: cp14-ghost-role-information-name-skeleton diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/skeleton.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/skeleton.yml deleted file mode 100644 index be7c21ff02..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Player/DemiplaneAntag/skeleton.yml +++ /dev/null @@ -1,201 +0,0 @@ -- type: entity - id: CP14MobUndeadSkeletonDemiplane - parent: CP14BaseMobSkeleton - name: skeleton - description: Animated by the dark magic of a fragile skeleton. Skeletons are usually extremely intelligent creatures, controlled by a recently deceased soul. - abstract: true - components: - - type: CP14NightVision - - type: NpcFactionMember - factions: - - CP14Monster - -- type: entity - id: CP14MobUndeadSkeletonHalberd - parent: CP14MobUndeadSkeletonDemiplane - categories: [ ForkFiltered ] - suffix: Halebard - components: - - type: Loadout - prototypes: - - CP14MobSkeletonHalberd - - type: CP14SpellStorage - grantAccessToSelf: true - spells: - - CP14ActionSpellKick - -- type: entity - id: CP14MobUndeadSkeletonSword - parent: CP14MobUndeadSkeletonDemiplane - categories: [ ForkFiltered ] - suffix: Sword - components: - - type: Loadout - prototypes: - - CP14MobSkeletonSword - -- type: entity - id: CP14MobUndeadSkeletonDodger - parent: CP14MobUndeadSkeletonDemiplane - categories: [ ForkFiltered ] - suffix: Dodger - components: - - type: Loadout - prototypes: - - CP14MobSkeletonDodger - - type: CP14SpellStorage - grantAccessToSelf: true - spells: - - CP14ActionSpellSprint - -- type: entity - id: CP14MobUndeadSkeletonArcher - parent: CP14MobUndeadSkeletonDemiplane - categories: [ ForkFiltered ] - suffix: Archer - components: - - type: Loadout - prototypes: - - CP14MobSkeletonArcher - -- type: entity - id: CP14MobUndeadSkeletonWizard - parent: CP14MobUndeadSkeletonDemiplane - categories: [ ForkFiltered ] - suffix: Wizard - components: - - type: Loadout - prototypes: - - CP14MobSkeletonWizard - - type: CP14MagicEnergyDraw - energy: 1 - delay: 1 - - type: CP14SpellStorage - grantAccessToSelf: true - spells: - - CP14ActionSpellIceShards - - CP14ActionSpellFreeze - - CP14ActionSpellFlameCreation - - CP14ActionSpellCureWounds - -- type: entity - id: CP14MobUndeadSkeletonBard - parent: CP14MobUndeadSkeletonDemiplane - categories: [ ForkFiltered ] - suffix: Bard - components: - - type: Loadout - prototypes: - - CP14MobSkeletonBard - - type: CP14SpellStorage - grantAccessToSelf: true - spells: - - CP14ActionSpellHealBallade - - CP14ActionSpellMagicBallade - - CP14ActionSpellSpeedBallade - - CP14ActionSpellPeaceBallade - - CP14ActionSpellHellBallade - -- type: entity - id: CP14SpawnPointGhostDemiplaneSkeleton - name: ghost role spawn point - description: A ghost role for a bloodthirsty and cunning skeleton. - suffix: skeleton random - categories: [ ForkFiltered ] - parent: MarkerBase - components: - - type: EntityTableSpawner - table: !type:GroupSelector - children: - - !type:GroupSelector - weight: 15 - children: - - id: CP14SpawnPointGhostDemiplaneSkeletonWizard - - id: CP14SpawnPointGhostDemiplaneSkeletonBard - - !type:GroupSelector - weight: 20 - children: - - id: CP14SpawnPointGhostDemiplaneSkeletonHalberd - - !type:GroupSelector - weight: 60 - children: - - id: CP14SpawnPointGhostDemiplaneSkeletonSword - - id: CP14SpawnPointGhostDemiplaneSkeletonDodger - - id: CP14SpawnPointGhostDemiplaneSkeletonArcher - - type: Sprite - sprite: Markers/jobs.rsi - layers: - - state: green - - sprite: _CP14/Mobs/Species/Skeleton/parts.rsi - state: full - -- type: entity - id: CP14SpawnPointGhostDemiplaneSkeletonHalberd - parent: MarkerBase - name: ghost role spawn point - description: A ghost role for a bloodthirsty and cunning skeleton. - suffix: skeleton Halebard - categories: [ ForkFiltered ] - components: - - type: GhostRole - name: cp14-ghost-role-information-name-skeleton - allowMovement: true - description: cp14-ghost-role-information-description-skeleton - rules: cp14-ghost-role-information-rules-demiplane - mindRoles: - - CP14MindRoleDemiplaneAntag - raffle: - settings: default - - type: GhostRoleMobSpawner - prototype: CP14MobUndeadSkeletonHalberd - - type: Sprite - sprite: Markers/jobs.rsi - layers: - - state: green - - sprite: _CP14/Mobs/Species/Skeleton/parts.rsi - state: full - -- type: entity - id: CP14SpawnPointGhostDemiplaneSkeletonSword - suffix: skeleton Sword - categories: [ ForkFiltered ] - parent: CP14SpawnPointGhostDemiplaneSkeletonHalberd - components: - - type: GhostRoleMobSpawner - prototype: CP14MobUndeadSkeletonSword - -- type: entity - id: CP14SpawnPointGhostDemiplaneSkeletonDodger - suffix: skeleton Dodger - categories: [ ForkFiltered ] - parent: CP14SpawnPointGhostDemiplaneSkeletonHalberd - components: - - type: GhostRoleMobSpawner - prototype: CP14MobUndeadSkeletonDodger - -- type: entity - id: CP14SpawnPointGhostDemiplaneSkeletonArcher - suffix: skeleton Archer - categories: [ ForkFiltered ] - parent: CP14SpawnPointGhostDemiplaneSkeletonHalberd - components: - - type: GhostRoleMobSpawner - prototype: CP14MobUndeadSkeletonArcher - -- type: entity - id: CP14SpawnPointGhostDemiplaneSkeletonWizard - suffix: skeleton Wizard - categories: [ ForkFiltered ] - parent: CP14SpawnPointGhostDemiplaneSkeletonHalberd - components: - - type: GhostRoleMobSpawner - prototype: CP14MobUndeadSkeletonWizard - -- type: entity - id: CP14SpawnPointGhostDemiplaneSkeletonBard - suffix: skeleton Bard - categories: [ ForkFiltered ] - parent: CP14SpawnPointGhostDemiplaneSkeletonHalberd - components: - - type: GhostRoleMobSpawner - prototype: CP14MobUndeadSkeletonBard \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Player/TownRaids/undead.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Player/TownRaids/undead.yml index d068422334..d8089c63a9 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Player/TownRaids/undead.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Player/TownRaids/undead.yml @@ -26,7 +26,7 @@ - type: entity id: CP14MobUndeadSkeletonWizardTownRaid - parent: CP14MobUndeadSkeletonWizard + parent: CP14MobUndeadSkeletonWizardT2 categories: [ HideSpawnMenu ] components: - type: RandomSpawner diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml index fdfff03d74..7eff97f075 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/base.yml @@ -253,7 +253,7 @@ damage: types: Heat: -0.07 - CP14ManaDepletion: -0.02 + CP14ManaDepletion: -0.05 groups: Brute: -0.07 - type: StatusEffects diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/carcat.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/carcat.yml index 31d92c1ac2..ef397519ab 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/carcat.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/carcat.yml @@ -42,9 +42,6 @@ - type: CP14NightVision #Night vision - type: FootstepModifier footstepSoundCollection: null # Silent footstep - - type: CP14SkillStorage - progress: - Atlethic: 1 - type: Inventory templateId: CP14Carcat # Cant wear shoes speciesId: carcat diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/elf.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/elf.yml index 1a6abf8601..6ee2421b09 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/elf.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/elf.yml @@ -35,15 +35,16 @@ requiredLegs: 2 - type: Bloodstream bloodReagent: CP14BloodElf - - type: CP14SkillStorage - progress: - Metamagic: 1 - type: CP14MagicEnergyContainer #Increased mana container maxEnergy: 200 energy: 200 - type: CP14MagicEnergyDraw #Half of standard mana regeneration energy: 0.5 delay: 3 + - type: CP14SkillStorage #Innate metamagic + freeLearnedSkills: + - MetamagicT1 + - MetamagicT2 - type: Inventory templateId: CP14Human displacements: diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/goblin.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/goblin.yml index b32dc7a13b..1d8dfd73d6 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/goblin.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/goblin.yml @@ -58,6 +58,15 @@ visible: false - type: HumanoidAppearance species: CP14Goblin + markingsDisplacement: + Hair: + sizeMaps: + 32: + sprite: _CP14/Mobs/Species/Goblin/displacement.rsi + state: hair + 48: + sprite: _CP14/Mobs/Species/Goblin/displacement48.rsi + state: hair - type: Hunger starvationDamage: types: @@ -188,6 +197,15 @@ components: - type: HumanoidAppearance species: CP14Goblin + markingsDisplacement: + Hair: + sizeMaps: + 32: + sprite: _CP14/Mobs/Species/Goblin/displacement.rsi + state: hair + 48: + sprite: _CP14/Mobs/Species/Goblin/displacement48.rsi + state: hair - type: Inventory templateId: CP14Human speciesId: goblin diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/human.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/human.yml index 9ac0436b6c..6b37e895c6 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/human.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/human.yml @@ -23,6 +23,8 @@ - type: Body prototype: CP14Human requiredLegs: 2 + - type: CP14SkillStorage # +1 memory point + experienceMaxCap: 6 - type: Inventory templateId: CP14Human femaleDisplacements: diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/silva.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/silva.yml index 12c11e506c..1884f803f1 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/silva.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/silva.yml @@ -73,12 +73,13 @@ spawned: - id: CP14FoodMeatHuman # Replace it with silva meat, heh. amount: 5 - #- type: CP14MagicEnergyPhotosynthesis # Silva special feature #Disabled until sunlight fixed - #- type: CP14MagicEnergyDraw #Enabled default mana regen until sunlight fixed - # enable: false - - type: CP14SkillStorage - progress: - Healing: 1 + - type: CP14SkillStorage #Innate vivification + freeLearnedSkills: + - HealingT1 + - HealingT2 + - type: CP14MagicEnergyPhotosynthesis # Silva special feature #Disabled until sunlight fixed + - type: CP14MagicEnergyDraw #Enabled default mana regen until sunlight fixed + enable: false - type: Body prototype: CP14Silva requiredLegs: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/skeleton.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/skeleton.yml index 8c0a9044d7..1d9e596b7d 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/skeleton.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/skeleton.yml @@ -74,8 +74,8 @@ 50: Dead - type: SlowOnDamage speedModifierThresholds: - 40: 0.8 - 25: 0.6 + 30: 0.8 + 40: 0.6 - type: Fixtures fixtures: fix1: diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/tiefling.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/tiefling.yml index 968f71eb9a..6761754113 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/tiefling.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/tiefling.yml @@ -44,17 +44,10 @@ damage: Heat: 1 #Magic regen from fire Cold: -1 - - type: CP14MagicManacostModify - globalModifier: 1.2 - modifiers: - Fire: 0.5 - - type: CP14SkillStorage - progress: - Pyrokinetic: 1 - - type: CP14SpellStorage - #grantAccessToSelf: true - #spells: - #- CP14ActionSpellTieflingInnerFire + - type: CP14SkillStorage #Innate pyrokinetic + freeLearnedSkills: + - PyrokineticT1 + - PyrokineticT2 - type: Inventory templateId: CP14Human femaleDisplacements: diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/Species/zombie.yml b/Resources/Prototypes/_CP14/Entities/Mobs/Species/zombie.yml index 53b04b2860..cfb5210a03 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/Species/zombie.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/Species/zombie.yml @@ -61,8 +61,8 @@ - type: Butcherable butcheringType: Spike spawned: - - id: FoodMeatHuman - amount: 5 + - id: CP14FoodMeatHuman + amount: 4 - type: Body prototype: CP14Zombie requiredLegs: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Mobs/base.yml b/Resources/Prototypes/_CP14/Entities/Mobs/base.yml index 56192108ad..74bb29c248 100644 --- a/Resources/Prototypes/_CP14/Entities/Mobs/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Mobs/base.yml @@ -57,8 +57,6 @@ delay: 3 # 5m to full restore - type: CP14MagicUnsafeDamage - type: CP14MagicUnsafeSleep - - type: CP14MagicAttuningMind - autoCopyToMind: true - type: entity diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/meat.yml b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/meat.yml index 9591b6b99b..5d8343a0e6 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/meat.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/meat.yml @@ -306,9 +306,8 @@ components: - type: Sprite layers: - - state: human_meat1 # We need fried sprites + - state: human_meat1_cooked map: [ "random" ] - color: "#c98367" - type: SolutionContainerManager solutions: food: @@ -323,8 +322,8 @@ - type: RandomSprite available: - random: - human_meat1: CP14cookedMeat - human_meat2: CP14cookedMeat + human_meat1_cooked: "" + human_meat2_cooked: "" - type: CP14TemperatureTransformation entries: - temperatureRange: 400, 500 @@ -365,8 +364,7 @@ name: cooked dino meat components: - type: Sprite - state: dino_meat1 # We need fried sprites - color: "#c98367" + state: dino_meat1_cooked - type: SolutionContainerManager solutions: food: @@ -414,8 +412,7 @@ name: cooked hydra meat components: - type: Sprite - state: dino_meat2 # We need fried sprites - color: "#c98367" + state: dino_meat2_cooked - type: SolutionContainerManager solutions: food: @@ -475,9 +472,8 @@ components: - type: Sprite layers: - - state: rabbit_meat1 # We need fried sprites + - state: rabbit_meat1_cooked map: [ "random" ] - color: "#c98367" - type: SolutionContainerManager solutions: food: @@ -490,8 +486,8 @@ - type: RandomSprite available: - random: - rabbit_meat1: CP14cookedMeat - rabbit_meat2: CP14cookedMeat + rabbit_meat1_cooked: "" + rabbit_meat2_cooked: "" - type: CP14TemperatureTransformation entries: - temperatureRange: 400, 500 @@ -543,9 +539,8 @@ components: - type: Sprite layers: - - state: pig_meat1 # We need fried sprites + - state: pig_meat1_cooked map: [ "random" ] - color: "#c98367" - type: SliceableFood count: 4 slice: CP14FoodMeatPigCookedSlice @@ -563,8 +558,8 @@ - type: RandomSprite available: - random: - pig_meat1: CP14cookedMeat - pig_meat4: CP14cookedMeat + pig_meat1_cooked: "" + pig_meat4_cooked: "" - type: CP14TemperatureTransformation entries: - temperatureRange: 400, 500 @@ -603,8 +598,7 @@ name: cooked pig leg meat # Jamon? - Хамон? components: - type: Sprite - state: pig_meat5 # We need fried sprites - color: "#c98367" + state: pig_meat5_cooked - type: SolutionContainerManager solutions: food: @@ -666,9 +660,8 @@ components: - type: Sprite layers: - - state: pig_meat2 # We need fried sprites + - state: pig_meat2_cooked map: [ "random" ] - color: "#c98367" - type: SliceableFood count: 4 slice: CP14FoodMeatPigCookedSlice @@ -686,8 +679,8 @@ - type: RandomSprite available: - random: - pig_meat2: CP14cookedMeat - pig_meat3: CP14cookedMeat + pig_meat2_cooked: "" + pig_meat3_cooked: "" - type: CP14TemperatureTransformation entries: - temperatureRange: 400, 500 @@ -731,8 +724,7 @@ components: - type: Sprite layers: - - state: pig_meat6 # We need fried sprites - color: "#c98367" + - state: pig_meat6_cooked - type: SolutionContainerManager solutions: food: diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/pie.yml b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/pie.yml index c97e47d433..2b51953b20 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/pie.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Food/pie.yml @@ -290,7 +290,7 @@ name: burnt pie parent: CP14FoodPieBaseRaw id: CP14FoodPieBurnt - description: The pie is burnt and is a burnt and inedible mass. + description: The pie is burnt and is a burnt and inedible mass. It's best to clean that up with a knife. components: - type: FlavorProfile flavors: diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml index 0070306e24..9a0dd8347a 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Consumable/Smokeables/Pipes/pipe.yml @@ -18,6 +18,8 @@ - type: Appearance - type: BurnStateVisuals unlitIcon: unlit-icon + - type: CP14IgnitionModifier + hideCaution: true - type: entity id: CP14SmokingPipeFilledTobacco diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Flora/farm.yml b/Resources/Prototypes/_CP14/Entities/Objects/Flora/farm.yml index 34356abd6c..c0879d7be3 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Flora/farm.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Flora/farm.yml @@ -1,13 +1,12 @@ - type: entity id: CP14Wheat - parent: ProduceBase + parent: BaseItem name: wheat bushel description: You have the choice of either planting the grains again or grinding them into flour. categories: [ ForkFiltered ] components: - type: Item size: Tiny - - type: Produce - type: Sprite sprite: _CP14/Objects/Flora/Farm/wheat.rsi layers: @@ -22,3 +21,27 @@ tags: - CP14Wheat - CP14FarmFood + +- type: entity + id: CP14Cotton + parent: BaseItem + name: cotton + description: A plant raw fiber used to make cotton fabric. + categories: [ ForkFiltered ] + components: + - type: Item + size: Tiny + - type: Sprite + sprite: _CP14/Objects/Flora/Farm/cotton.rsi + layers: + - state: base1 + map: ["random"] + - type: RandomSprite + available: + - random: + base1: "" + base2: "" + base3: "" + - type: Tag + tags: + - CP14FarmFood diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/Catalog/guard.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/Catalog/guard.yml index f75ab34927..5b1dcc95cb 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Keys/Catalog/guard.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/Catalog/guard.yml @@ -1,18 +1,18 @@ - type: entity parent: CP14KeyIronBlank - id: CP14KeyGuardEntrance - suffix: Guard Entrance + id: CP14KeyCityGate + suffix: City Gate components: - type: CP14Key - autoGenerateShape: GuardEntrance + autoGenerateShape: CityGate - type: entity parent: CP14KeyIronBlank - id: CP14KeyGuard - suffix: Guard + id: CP14KeyGuardBarracks + suffix: Guard Barracks components: - type: CP14Key - autoGenerateShape: Guard + autoGenerateShape: GuardBarracks - type: entity parent: CP14KeyMithrilBlank @@ -21,11 +21,3 @@ components: - type: CP14Key autoGenerateShape: GuardCommander - -- type: entity - parent: CP14KeyMithrilBlank - id: CP14KeyGuardWeaponStorage - suffix: Guard Weapon Storage - components: - - type: CP14Key - autoGenerateShape: GuardWeaponStorage diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml b/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml index 1c42c31f12..793bd5e784 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Keys/keyrings.yml @@ -101,8 +101,8 @@ components: - type: StorageFill contents: - - id: CP14KeyGuardEntrance - - id: CP14KeyGuard + - id: CP14KeyCityGate + - id: CP14KeyGuardBarracks - type: entity parent: CP14BaseKeyRing @@ -111,10 +111,9 @@ components: - type: StorageFill contents: - - id: CP14KeyGuardEntrance - - id: CP14KeyGuard + - id: CP14KeyCityGate + - id: CP14KeyGuardBarracks - id: CP14KeyGuardCommander - #- id: CP14KeyGuardWeaponStorage - type: entity parent: CP14BaseKeyRing diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml b/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml new file mode 100644 index 0000000000..0be891af5d --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Materials/misc.yml @@ -0,0 +1,56 @@ +- type: entity + parent: BaseItem + id: CP14CrystalShardQuartz + name: quartz shard + description: Natural quartz crystals that can absorb the magical energy of the world around them. + categories: [ ForkFiltered ] + components: + - type: Tag + tags: + - CP14FitInMortar + - type: Item + size: Tiny + - type: Sprite + sprite: _CP14/Structures/Flora/Crystal/crystal_shard.rsi + layers: + - state: shard0 + map: ["random"] + - type: RandomSprite + available: + - random: + shard0: "" + shard1: "" + shard2: "" + shard3: "" + - type: Extractable + juiceSolution: + reagents: + - ReagentId: CP14GroundQuartz + Quantity: 7 + +- type: entity + parent: BaseItem + id: CP14DimensitCrystal + name: dimensit shard + description: A fragment of the fabric of reality. An extremely valuable resource for those who know what they can do with it. + categories: [ ForkFiltered ] + components: + #- type: Tag + # tags: + # - CP14FitInMortar + - type: Item + size: Tiny + shape: + - 0,0,0,1 + - type: Sprite + sprite: _CP14/Structures/Dungeon/demiplan_rift_core.rsi + layers: + - state: core1 + map: ["random"] + - type: RandomSprite + available: + - random: + core1: "" + core2: "" + core3: "" + core4: "" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml new file mode 100644 index 0000000000..be991e9a7e --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/ModularTools/Blade/skimitar.yml @@ -0,0 +1,78 @@ +- type: entity + parent: BaseItem + id: CP14ModularBladeSkimitarBase + categories: [ ForkFiltered ] + abstract: true + description: A skimitar blade without a hilt. A blacksmith can use it as a spare part to create a weapon. + components: + - type: Item + storedRotation: 45 + shape: + - 0,0,0,1 + storedOffset: 0, 10 + +- type: entity + parent: CP14ModularBladeSkimitarBase + id: CP14ModularBladeIronSkimitar + name: iron skimitar blade + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + state: icon + - type: CP14ModularCraftPart + possibleParts: + - BladeIronSkimitar + - type: CP14Material + materials: + CP14Iron: 10 + +- type: entity + parent: CP14ModularBladeSkimitarBase + id: CP14ModularBladeGoldSkimitar + name: golden skimitar blade + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + layers: + - state: icon + color: "#ffe269" + - type: CP14ModularCraftPart + possibleParts: + - BladeGoldSkimitar + - type: CP14Material + materials: + CP14Gold: 10 + +- type: entity + parent: CP14ModularBladeSkimitarBase + id: CP14ModularBladeCopperSkimitar + name: copper skimitar blade + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + layers: + - state: icon + color: "#e28f08" + - type: CP14ModularCraftPart + possibleParts: + - BladeCopperSkimitar + - type: CP14Material + materials: + CP14Copper: 10 + +- type: entity + parent: CP14ModularBladeSkimitarBase + id: CP14ModularBladeMithrilSkimitar + name: mithril skimitar blade + components: + - type: Sprite + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + layers: + - state: icon + color: "#38f0b3" + - type: CP14ModularCraftPart + possibleParts: + - BladeMithrilSkimitar + - type: CP14Material + materials: + CP14Mithril: 10 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml index 3e4ce201a0..3929a26da7 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Farming/seeds.yml @@ -100,3 +100,16 @@ - state: sage - type: CP14Seed plantProto: CP14PlantSage + +- type: entity + id: CP14SeedCotton + name: cotton seeds + description: Cotton seeds. It's time to grow some pants! + parent: CP14BaseSeed + components: + - type: Sprite + layers: + - state: bag + - state: cotton + - type: CP14Seed + plantProto: CP14PlantCotton diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Guard/GuardBell.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Guard/GuardBell.yml new file mode 100644 index 0000000000..074e81c27e --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Guard/GuardBell.yml @@ -0,0 +1,20 @@ +- type: entity + parent: BaseStructure + id: CP14GuardBell + name: guard bell + description: A bell used to set the appropriate alert level. + categories: [ ForkFiltered ] + components: + - type: Sprite + drawdepth: Mobs + sprite: _CP14/Structures/Specific/Guard/guard_bell.rsi + layers: + - state: base + - type: ActivatableUI + key: enum.CommunicationsConsoleUiKey.Key + - type: CommunicationsConsole + title: cp14-guard-bell-menu-title + - type: UserInterface + interfaces: + enum.CommunicationsConsoleUiKey.Key: + type: GuardBellBoundUserInterface diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml index 69de76e142..d85876af4e 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/crystal.yml @@ -12,37 +12,9 @@ sprite: _CP14/Objects/Specific/Thaumaturgy/crystal.rsi - type: CP14MagicEnergyContainer - type: CP14MagicEnergyExaminable - -- type: entity - id: CP14EnergyCrystalSmall - parent: CP14EnergyCrystalBase - name: small energyshard - suffix: Full - components: - - type: Sprite - layers: - - state: small1 - shader: unshaded - map: ["random"] - - state: small_connector - - type: RandomSprite - available: - - random: - small1: "" - small2: "" - small3: "" - - type: CP14MagicEnergyContainer - energy: 30 - maxEnergy: 30 - -- type: entity - id: CP14EnergyCrystalSmallEmpty - parent: CP14EnergyCrystalSmall - suffix: Empty - components: - - type: CP14MagicEnergyContainer - energy: 0 - + - type: Tag + tags: + - CP14EnergyCrystal - type: entity id: CP14EnergyCrystalMedium @@ -50,23 +22,13 @@ name: energyshard suffix: Full components: - - type: PointLight - radius: 1.2 - type: Sprite layers: - - state: medium1 - shader: unshaded - map: ["random"] + - state: medium - state: medium_connector - - type: RandomSprite - available: - - random: - medium1: "" - medium2: "" - medium3: "" - type: CP14MagicEnergyContainer - energy: 100 - maxEnergy: 100 + energy: 50 + maxEnergy: 50 - type: entity id: CP14EnergyCrystalMediumEmpty diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/essence.yml b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/essence.yml index b6d0b72236..cb0bd37830 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/essence.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Specific/Thaumaturgy/essence.yml @@ -286,4 +286,4 @@ maxVol: 1 reagents: - ReagentId: CP14EssenceMagic - Quantity: 1 \ No newline at end of file + Quantity: 1 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Tools/demiplane_keys.yml b/Resources/Prototypes/_CP14/Entities/Objects/Tools/demiplane_keys.yml index 7527185ae6..e5f414d482 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Tools/demiplane_keys.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Tools/demiplane_keys.yml @@ -1,59 +1,53 @@ - type: entity parent: BaseItem - id: CP14BaseSubdimensionalKey - abstract: true + id: CP14BaseDemiplaneKey categories: [ ForkFiltered ] - name: demiplane key - description: The core that connects the real world to the demiplane. Use it to open a temporary passage to the other world. + name: demiplane coordinate key + description: A temporary blob of energy linking the real world and the demiplane. Use it before it dissipates. components: - type: Item - size: Normal + size: Ginormous - type: Sprite - sprite: /Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi + noRot: true + drawdepth: Effects + sprite: _CP14/Structures/Dungeon/demiplan_rift_core.rsi layers: - - state: core + - state: coord - type: GuideHelp guides: - CP14_RU_Demiplanes - CP14_EN_Demiplanes - type: CP14DemiplaneUsingOpen - -- type: entity - id: CP14DemiplaneKeyT1 - parent: CP14BaseSubdimensionalKey - suffix: Level 3 - components: - - type: CP14DemiplaneGeneratorData - level: 3 - limits: - Reward: 1 - Danger: 1 - GhostRoleDanger: 1 - Fun: 1 - Weather: 1 - MapLight: 1 + - type: CP14DemiplaneData selectedModifiers: + - DemiplaneDecor + - Core - EntryRoom - Exit - -- type: entity - id: CP14DemiplaneKeyT2 - parent: CP14BaseSubdimensionalKey - suffix: Level 6 - components: - - type: Sprite - layers: - - state: core - color: red - - type: CP14DemiplaneGeneratorData - level: 6 - limits: - Reward: 1 - Danger: 1.5 - GhostRoleDanger: 1 - Fun: 1 - Weather: 1 - MapLight: 1 - selectedModifiers: - - EntryRoom - - Exit \ No newline at end of file + - type: TimedDespawn + lifetime: 120 + - type: CanMoveInAir + - type: RandomWalk + minSpeed: 0.25 + maxSpeed: 0.75 + - type: Physics + bodyType: Dynamic + bodyStatus: InAir + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + density: 20 + mask: + #- ItemMask # CP14 swap ItemMask to Impassable only + - Impassable + restitution: 0.3 # fite me + friction: 0.2 + - type: PointLight + enabled: true + color: "#8f42ff" + energy: 1 + radius: 2 + netsync: false \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Tools/screwdriver.yml b/Resources/Prototypes/_CP14/Entities/Objects/Tools/screwdriver.yml index f55fca4d36..4e2bc00db0 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Tools/screwdriver.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Tools/screwdriver.yml @@ -1,13 +1,35 @@ - type: entity - parent: Screwdriver - id: CP14Screwdriver categories: [ ForkFiltered ] + name: screwdriver + parent: BaseItem + id: CP14Screwdriver + description: Industrial grade torque in a small screwdriving package. components: - type: CP14LockEditer - type: UseDelay delay: 1.0 + - type: EmitSoundOnLand + sound: + path: /Audio/Items/screwdriver_drop.ogg + - type: Tag + tags: + - Screwdriver + - type: Sprite + sprite: _CP14/Objects/Tools/screwdriver.rsi + state: screwdriver + - type: Item + sprite: _CP14/Objects/Tools/screwdriver.rsi + storedRotation: -90 - type: MeleeWeapon + wideAnimationRotation: -90 attackRate: 1 damage: types: - Piercing: 4 \ No newline at end of file + Piercing: 4 + soundHit: + path: "/Audio/Weapons/bladeslice.ogg" + - type: Tool + qualities: + - Screwing + useSound: + collection: Screwdriver diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Tools/torch.yml b/Resources/Prototypes/_CP14/Entities/Objects/Tools/torch.yml index 15349e4887..d46d2b3f15 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Tools/torch.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Tools/torch.yml @@ -1,6 +1,8 @@ - type: entity id: CP14Torch - parent: BaseItem + parent: + - BaseItem + - CP14BaseTorch name: torch description: At its core, a stick burning on one side. Used to light up the area. categories: [ ForkFiltered ] @@ -15,30 +17,6 @@ shape: - 0,0,0,2 storedRotation: -65 - - type: CP14FlammableAmbientSound - - type: AmbientSound - enabled: false - volume: -5 - range: 5 - sound: - path: /Audio/Ambience/Objects/fireplace.ogg - - type: Appearance - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - - type: Flammable - fireSpread: false - canResistFire: false - alwaysCombustible: true - canExtinguish: true - firestacksOnIgnite: 0.5 - damage: - types: - Heat: 0 - - type: CP14Fireplace - maxFuelLimit: 200 - fuel: 200 - type: FireVisuals sprite: _CP14/Objects/Tools/torch.rsi normalState: lit-overlay @@ -58,17 +36,6 @@ Empty: { state: torch-spent } Medium: { state: torch-unlit } Full: { state: torch-unlit } - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Wood - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 50 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - type: CP14DelayedIgnitionSource - type: CP14IgnitionModifier hideCaution: true @@ -86,7 +53,7 @@ - type: UseDelay - type: ExtinguishOnInteract extinguishAttemptSound: - path: /Audio/Items/candle_blowing.ogg #TODO sound + path: /Audio/Items/candle_blowing.ogg params: variation: 0.05 volume: 10 diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml index 8cf22922e9..c4646d7353 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/Magic/twoHandedStaffs.yml @@ -23,7 +23,7 @@ - type: Wieldable - type: IncreaseDamageOnWield damage: - types: + types: Blunt: 3 - type: Damageable damageContainer: Inorganic @@ -55,8 +55,6 @@ collection: MetalThud cPAnimationLength: 0.3 cPAnimationOffset: -1.3 - - type: CP14SpellStorageRequireAttune - - type: CP14MagicAttuningItem - type: CP14SpellStorageAccessHolding - type: CP14SpellStorage spells: @@ -80,15 +78,16 @@ categories: [ DoNotMap ] suffix: Artifact components: - #- type: CP14MagicManacostModify - # modifiers: - # Dimension: 1.4 + # - type: CP14MagicManacostModify + # modifiers: + # tempus: 1.4 - type: CP14SpellStorage spells: - CP14ActionSpellShadowStep - CP14ActionSpellShadowGrab + - CP14ActionSpellShadowSwap - CP14ActionSpellDemiplaneInfiltration - type: Sprite sprite: _CP14/Objects/Weapons/Magic/TwoHandedStaff/shadow_staff.rsi - type: Clothing - sprite: _CP14/Objects/Weapons/Magic/TwoHandedStaff/shadow_staff.rsi \ No newline at end of file + sprite: _CP14/Objects/Weapons/Magic/TwoHandedStaff/shadow_staff.rsi diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/daggers.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/daggers.yml index 8291a3abb0..1030bc0f89 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/daggers.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/daggers.yml @@ -11,4 +11,36 @@ state: icon - type: CP14ModularCraftAutoAssemble details: - - BladeIronDagger \ No newline at end of file + - BladeIronDagger + +- type: entity + id: CP14ModularIronDaggerTundra + parent: CP14ModularGripWooden + name: Dagger Tundra + description: A small, multi-purpose, sharp blade. You can cut meat or throw it at a goblin. It has "tundra" engraved on it. + components: + - type: Sprite + layers: + - state: icon + - sprite: _CP14/Objects/ModularTools/Blade/Dagger/metall_dagger.rsi + state: icon + - type: CP14ModularCraftAutoAssemble + details: + - BladeIronDagger + - InlayQuartzWater + +- type: entity + id: CP14ModularIronDaggerAgony + parent: CP14ModularGripWooden + name: Dagger Agony + description: A small, multi-purpose, sharp blade. You can cut meat or throw it at a goblin. It has "agony" engraved on it. + components: + - type: Sprite + layers: + - state: icon + - sprite: _CP14/Objects/ModularTools/Blade/Dagger/metall_dagger.rsi + state: icon + - type: CP14ModularCraftAutoAssemble + details: + - BladeIronDagger + - InlayQuartzElectric \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/rapier.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/rapier.yml index f0182668ac..d441bb905e 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/rapier.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/rapier.yml @@ -1,3 +1,18 @@ +- type: entity + id: CP14ModularIronRapier + parent: CP14ModularGripWooden + name: iron rapier + description: the gold standard of edged weapons. Medium length, comfortable grip. No frills. + components: + - type: Sprite + layers: + - state: icon + - sprite: _CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi + state: icon + - type: CP14ModularCraftAutoAssemble + details: + - BladeIronRapier + - type: entity id: CP14ModularGuildmasterRapier parent: CP14ModularGripGuildmaster diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/skimitar.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/skimitar.yml new file mode 100644 index 0000000000..776f2f5283 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/skimitar.yml @@ -0,0 +1,14 @@ +- type: entity + id: CP14ModularIronSkimitar + parent: CP14ModularGripWooden + name: iron skimitar + description: the gold standard of edged weapons. Medium length, comfortable grip. No frills. + components: + - type: Sprite + layers: + - state: icon + - sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + state: icon + - type: CP14ModularCraftAutoAssemble + details: + - BladeIronSkimitar \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/sword.yml b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/sword.yml index c195226313..a99b9404d7 100644 --- a/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/sword.yml +++ b/Resources/Prototypes/_CP14/Entities/Objects/Weapons/ModularPresets/sword.yml @@ -59,4 +59,38 @@ state: icon - type: CP14ModularCraftAutoAssemble details: - - BladeBoneSword \ No newline at end of file + - BladeBoneSword + +- type: entity + id: CP14ModularSkeletonHalberdUpgrade + parent: CP14ModularGripWoodenLong + name: bone halberd + suffix: Reinforced + description: Monstrous weapons of bone. + components: + - type: Sprite + layers: + - state: icon + - sprite: _CP14/Objects/ModularTools/Blade/Sword/bone_sword.rsi + state: icon + - type: CP14ModularCraftAutoAssemble + details: + - BladeBoneSword + - GardeSharpIron + +- type: entity + id: CP14ModularSkeletonSwordUpgrade + parent: CP14ModularGripWooden + name: bone sword + suffix: Reinforced + description: Monstrous weapons of bone. + components: + - type: Sprite + layers: + - state: icon + - sprite: _CP14/Objects/ModularTools/Blade/Sword/bone_sword.rsi + state: icon + - type: CP14ModularCraftAutoAssemble + details: + - BladeBoneSword + - GardeSharpIron \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Objects/ritual_describer.yml b/Resources/Prototypes/_CP14/Entities/Objects/ritual_describer.yml deleted file mode 100644 index 073d55a3c8..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Objects/ritual_describer.yml +++ /dev/null @@ -1,25 +0,0 @@ -- type: entity - parent: BookBase - id: CP14RitualGrimoire - name: ritualist's grimoire - description: a book that holds the knowledge of hundreds of ritualists before you. Use it on an active ritual to get all the information about its current state. - categories: [ ForkFiltered ] - components: - - type: Sprite - sprite: Objects/Misc/books.rsi - layers: - - state: paper - - state: cover_old - color: "#a6161d" - - state: decor_bottom - color: "#6e1022" - - state: decor_wingette - color: "#4a101b" - - state: icon_pentagramm - color: "#911129" - - state: detail_bookmark - color: red - - type: CP14PaperPhaseDescriber - startPhase: CP14_NeutralCluster_Root - hyperlinks: - - CP14_NeutralCluster_Root \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Ritual/Graph/neutral_cluster.yml b/Resources/Prototypes/_CP14/Entities/Ritual/Graph/neutral_cluster.yml deleted file mode 100644 index 3b24ea224e..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Ritual/Graph/neutral_cluster.yml +++ /dev/null @@ -1,55 +0,0 @@ -- type: entity - parent: CP14BaseRitualPhase - abstract: true - id: CP14_NeutralCluster_Base - components: - - type: CP14MagicRitualPhase - phaseColor: "#FFFFFF" - - type: ActiveListener - range: 3 - -- type: entity - parent: CP14_NeutralCluster_Base - id: CP14_NeutralCluster_Root - name: Te-Se-Ra - description: The perfect energetic position to begin any ritual. - categories: [ HideSpawnMenu ] - components: - - type: CP14MagicRitualPhase - edges: - - target: CP14_NeutralCluster_00 - triggers: - - !type:CP14SacrificeWhitelistTrigger - whitelist: - components: - - MobState - whitelistDesc: cp14-ritual-category-all-living - -- type: entity - parent: CP14_NeutralCluster_Base - id: CP14_NeutralCluster_00 - name: Li-Ra - categories: [ HideSpawnMenu ] - components: - - type: CP14MagicRitualPhase - edges: - - target: CP14RitualEnd - triggers: - - !type:CP14VoiceTrigger - message: "Vespere nebula" - actions: - - !type:ApplyEntityEffect - maxEntities: 3 - vfx: CP14ImpactEffectCureWounds - whitelist: - components: - - HumanoidAppearance - effects: - - !type:HealthChange - damage: - types: - Asphyxiation: -50 - Bloodloss: -10 - - !type:ModifyBleedAmount - - !type:ModifyBloodLevel - - !type:Jitter \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Ritual/basic.yml b/Resources/Prototypes/_CP14/Entities/Ritual/basic.yml deleted file mode 100644 index 294083e95b..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Ritual/basic.yml +++ /dev/null @@ -1,23 +0,0 @@ -- type: entity - id: CP14BaseRitualPhase - abstract: true - components: - - type: CP14MagicRitualPhase - - type: Tag - tags: - - HideContextMenu - - type: PointLight - - type: EmitSoundOnSpawn - sound: - path: /Audio/Effects/tesla_consume.ogg - params: - variation: 0.3 - -- type: entity - parent: CP14BaseRitualPhase - id: CP14RitualEnd - name: end of ritual - categories: [ HideSpawnMenu ] - components: - - type: CP14MagicRitualPhase - deadEnd: true \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Ritual/orbs.yml b/Resources/Prototypes/_CP14/Entities/Ritual/orbs.yml deleted file mode 100644 index 7081a34043..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Ritual/orbs.yml +++ /dev/null @@ -1,39 +0,0 @@ -- type: entity - id: CP14BaseRitualOrb - abstract: true - components: - - type: Transform - - type: Physics - canCollide: false - - type: Sprite - sprite: _CP14/Effects/Magic/ritual_orbs.rsi - drawDepth: Mobs - noRot: true - -#- type: entity -# parent: CP14BaseRitualOrb -# id: CP14RitualOrbCreation -# name: creation orb -# categories: [ HideSpawnMenu] -# components: -# - type: CP14MagicRitualOrb -# powers: -# Creation: 1 -# - type: Sprite -# layers: -# - state: creation -# shader: unshaded -# -#- type: entity -# parent: CP14BaseRitualOrb -# id: CP14RitualOrbDestruction -# name: destruction orb -# categories: [ HideSpawnMenu] -# components: -# - type: CP14MagicRitualOrb -# powers: -# Destruction: 1 -# - type: Sprite -# layers: -# - state: destruction -# shader: unshaded \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Stations/base.yml b/Resources/Prototypes/_CP14/Entities/Stations/base.yml index d8ff10aa88..15e7d2749c 100644 --- a/Resources/Prototypes/_CP14/Entities/Stations/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Stations/base.yml @@ -5,10 +5,10 @@ - BaseStation - BaseStationAllEventsEligible - BaseStationJobsSpawning - - BaseStationAlertLevels #Checks fail without it + - CP14BaseTownAlerts - BaseStationRecords # Required for lobby manifest + cryo leave - CP14BaseStationCommonObjectives - - CP14BaseStationSalary + - CP14BaseStationDemiplaneMap - type: entity id: CP14BaseStationCommonObjectives @@ -17,10 +17,14 @@ - type: CP14StationCommonObjectives - type: entity - id: CP14BaseStationSalary + id: CP14BaseTownAlerts abstract: true components: - - type: CP14StationSalary - #frequency: every 20 minutes - salary: - CP14Guard: 550 \ No newline at end of file + - type: AlertLevel + alertLevelPrototype: CP14TownAlerts + +- type: entity + id: CP14BaseStationDemiplaneMap + abstract: true + components: + - type: CP14StationDemiplaneMap diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/flags_wallmount.yml b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/flags_wallmount.yml index 77ed4375d8..bbe43f58db 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/flags_wallmount.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/flags_wallmount.yml @@ -33,7 +33,7 @@ parent: CP14WallmountFlagBase id: CP14WallmountFlagAlchemist name: alchemist tapestry - description: A tapestry with a potion symbol, indicating that alchemists dwell here. + description: A tapestry with a potion symbol indicating that alchemists dwell here. components: - type: Sprite layers: @@ -44,7 +44,7 @@ parent: CP14WallmountFlagBase id: CP14WallmountFlagBlacksmith name: blacksmith tapestry - description: A tapestry with a anvil symbol, indicating that blacksmiths dwell here. + description: A tapestry with an anvil symbol indicating that blacksmiths dwell here. components: - type: Sprite layers: @@ -55,7 +55,7 @@ parent: CP14WallmountFlagBase id: CP14WallmountFlagTavern name: tavern tapestry - description: A tapestry with a beer symbol, indicating that tavern is here. + description: A tapestry with a beer symbol indicating that the tavern is here. components: - type: Sprite layers: diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/statues.yml b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/statues.yml index fd05c1b2e8..b31f540030 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Decorations/statues.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Decorations/statues.yml @@ -11,10 +11,6 @@ sprite: _CP14/Structures/Decoration/statue_gob.rsi layers: - state: gob - - state: eyes - map: ["ritual"] - visible: false - shader: unshaded - state: wire map: ["wire"] visible: false @@ -55,8 +51,6 @@ CP14StoneBlock1: min: 4 max: 5 - - type: CP14MagicRitual - startPhase: CP14_NeutralCluster_Root - type: Appearance - type: HolidayVisuals holidays: @@ -82,10 +76,6 @@ - type: Sprite layers: - state: gob_vines - - state: eyes - map: ["ritual"] - visible: false - shader: unshaded - state: wire map: ["wire"] visible: false @@ -102,10 +92,6 @@ - type: Sprite layers: - state: gob_ruined - - state: eyes - map: ["ritual"] - visible: false - shader: unshaded - state: wire map: ["wire"] visible: false @@ -122,10 +108,6 @@ - type: Sprite layers: - state: gob_ruined_vines - - state: eyes - map: ["ritual"] - visible: false - shader: unshaded - state: wire map: ["wire"] visible: false @@ -146,10 +128,6 @@ sprite: _CP14/Structures/Decoration/angel_statue.rsi layers: - state: statue1 - - state: glow - map: ["ritual"] - visible: false - shader: unshaded drawdepth: Mobs offset: "0.0,0.5" - type: Fixtures @@ -184,8 +162,6 @@ CP14StoneBlock1: min: 4 max: 5 - - type: CP14MagicRitual - startPhase: CP14_NeutralCluster_Root - type: Appearance - type: entity @@ -196,10 +172,6 @@ - type: Sprite layers: - state: statue2 - - state: glow - map: ["ritual"] - visible: false - shader: unshaded - type: entity id: CP14StatueAngelLimestone @@ -209,10 +181,6 @@ - type: Sprite layers: - state: statue3 - - state: glow - map: ["ritual"] - visible: false - shader: unshaded - type: entity id: CP14StatueStoneHeadHigh diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guard.yml b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guard.yml index 319772b08f..8926a6a1ce 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guard.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Doors/Locked/guard.yml @@ -3,11 +3,11 @@ - type: entity parent: CP14IronDoor - id: CP14IronDoorGuard - suffix: Guard + id: CP14IronDoorGuardBarracks + suffix: Guard Barracks components: - type: CP14Lock - autoGenerateShape: Guard + autoGenerateShape: GuardBarracks - type: Lock locked: true @@ -21,43 +21,43 @@ - type: Lock locked: true -- type: entity - parent: CP14IronDoor - id: CP14IronDoorGuardWeaponStorage - suffix: Guard, Weapon Storage - components: - - type: CP14Lock - autoGenerateShape: GuardWeaponStorage - - type: Lock - locked: true - # Iron windowed - type: entity parent: CP14IronDoorWindowed - id: CP14IronDoorWindowedGuardEntrance - suffix: Guard, Entrance + id: CP14IronDoorWindowedCityGate + suffix: Guard Barracks components: - type: CP14Lock - autoGenerateShape: GuardEntrance + autoGenerateShape: GuardBarracks - type: Lock locked: true - type: entity parent: - - CP14IronDoorWindowedGuardEntrance + - CP14IronDoorWindowedCityGate - CP14IronDoorWindowedMirrored - id: CP14IronDoorWindowedMirroredGuardEntrance - suffix: Guard, Entrance, Mirrored + id: CP14IronDoorWindowedMirroredCityGate + suffix: Guard Barracks, Mirrored # Grill Gate - type: entity parent: CP14FenceGateBigIron - id: CP14FenceGateBigIronGuard - suffix: Guard + id: CP14FenceGateBigIronGuardBarracks + suffix: Guard Barracks components: - type: CP14Lock - autoGenerateShape: Guard + autoGenerateShape: GuardBarracks - type: Lock - locked: true \ No newline at end of file + locked: true + +- type: entity + parent: CP14FenceGateBigIron + id: CP14FenceGateBigIronCityGate + suffix: City Gate + components: + - type: CP14Lock + autoGenerateShape: CityGate + - type: Lock + locked: false #City gate opened by default \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/elemental.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/elemental.yml index 1a2548c97b..79aa6da757 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/elemental.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/elemental.yml @@ -68,7 +68,7 @@ # Normal - type: entity - id: CP14CrystalEmpty + id: CP14CrystalQuartz suffix: Normal parent: CP14CrystalBase components: @@ -89,171 +89,8 @@ collection: GlassBreak - !type:SpawnEntitiesBehavior spawn: - CP14CrystalShardBase: + CP14CrystalShardQuartz: min: 1 max: 2 - - !type:TriggerBehavior - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalEarth - parent: CP14CrystalBase - suffix: Terra - components: - - type: PointLight - color: "#70533f" - - type: Sprite - color: "#70533f" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardEarth: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalFire - parent: CP14CrystalBase - suffix: Ignis - components: - - type: PointLight - color: "#d9741c" - - type: Sprite - color: "#d9741c" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardFire: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalWater - parent: CP14CrystalBase - suffix: Aqua - components: - - type: PointLight - color: "#1c94d9" - - type: Sprite - color: "#1c94d9" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardWater: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalAir - parent: CP14CrystalBase - suffix: Aer - components: - - type: PointLight - color: "#fdfe86" - - type: Sprite - color: "#fdfe86" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardAir: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalOrder - parent: CP14CrystalBase - suffix: Ordo - components: - - type: PointLight - color: "#d9d9d9" - - type: Sprite - color: "#d9d9d9" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardOrder: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] - -- type: entity - id: CP14CrystalChaos - parent: CP14CrystalBase - suffix: Perditio - components: - - type: PointLight - color: "#5c5c5c" - - type: Sprite - color: "#5c5c5c" - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 15 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:SpawnEntitiesBehavior - spawn: - CP14CrystalShardChaos: - min: 1 - max: 2 - - !type:TriggerBehavior - - !type:DoActsBehavior - acts: [ "Destruction" ] + acts: [ "Destruction" ] \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/shards.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/shards.yml deleted file mode 100644 index 119b66061b..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Crystal/shards.yml +++ /dev/null @@ -1,102 +0,0 @@ -- type: entity - id: CP14CrystalShardBase - parent: BaseItem - name: quartz shard - description: Natural quartz crystals that can absorb the magical energy of the world around them. - categories: [ ForkFiltered ] - components: - - type: Tag - tags: - - CP14FitInMortar - - type: Item - size: Tiny - - type: Sprite - sprite: _CP14/Structures/Flora/Crystal/crystal_shard.rsi - layers: - - state: shard0 - map: ["random"] - - type: RandomSprite - available: - - random: - shard0: "" - shard1: "" - shard2: "" - shard3: "" - - type: Extractable - juiceSolution: - reagents: - - ReagentId: CP14GroundQuartz - Quantity: 7 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardEarth - name: terra quartz shard - components: - - type: Sprite - color: "#70533f" - - type: CP14MagicEssenceContainer - essences: - Earth: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardFire - name: ignis quartz shard - components: - - type: Sprite - color: "#d9741c" - - type: CP14MagicEssenceContainer - essences: - Fire: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardWater - name: aqua quartz shard - components: - - type: Sprite - color: "#1c94d9" - - type: CP14MagicEssenceContainer - essences: - Water: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardAir - name: aer quartz shard - components: - - type: Sprite - color: "#fdfe86" - - type: CP14MagicEssenceContainer - essences: - Air: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardOrder - name: ordo quartz shard - components: - - type: Sprite - color: "#d9d9d9" - - type: CP14MagicEssenceContainer - essences: - Order: 3 - Crystal: 1 - -- type: entity - parent: CP14CrystalShardBase - id: CP14CrystalShardChaos - name: perditio quartz shard - components: - - type: Sprite - color: "#5c5c5c" - - type: CP14MagicEssenceContainer - essences: - Chaos: 3 - Crystal: 1 - diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cabbage.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cabbage.yml index 7b635159b9..2caaab49cf 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cabbage.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cabbage.yml @@ -21,4 +21,7 @@ entries: - id: CP14FoodCabbage amount: 6 - maxAmount: 8 \ No newline at end of file + maxAmount: 8 + - id: CP14SeedCabbage + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml new file mode 100644 index 0000000000..1e1a94aabc --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cotton.yml @@ -0,0 +1,29 @@ +- type: entity + id: CP14PlantCotton + parent: CP14GatherablePlantSingleHarvestBase + name: cotton + description: In a way, you're growing future clothes. + components: + - type: Sprite + drawdepth: Mobs + layers: + - state: liq-1 + map: ["enum.SolutionContainerLayers.Fill"] + visible: false + - state: grow-1 + offset: 0, 0.5 + sprite: _CP14/Structures/Flora/Farm/cotton.rsi + map: ["enum.PlantVisualLayers.Base"] + - type: CP14PlantGatherable + loot: + All: CP14GatherCotton + +- type: entityLootTable + id: CP14GatherCotton + entries: + - id: CP14Cotton + amount: 4 + maxAmount: 6 + - id: CP14SeedCotton + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cucumber.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cucumber.yml index 8cd68e0b90..cc5397f7d2 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cucumber.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/cucumber.yml @@ -22,3 +22,6 @@ - id: CP14FoodCucumber amount: 4 maxAmount: 8 + - id: CP14SeedCucumber + amount: 0 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pepper.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pepper.yml index 3099c72665..2709e6ce64 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pepper.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pepper.yml @@ -24,3 +24,6 @@ - id: CP14FoodPepper amount: 4 maxAmount: 8 + - id: CP14SeedPepper + amount: 0 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pumpkin.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pumpkin.yml index 645f806220..b06cc36dba 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pumpkin.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/pumpkin.yml @@ -22,3 +22,6 @@ - id: CP14FoodPumpkin amount: 4 maxAmount: 8 + - id: CP14SeedPumpkin + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/sage.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/sage.yml index 316332ff4e..883ec970ab 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/sage.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/sage.yml @@ -24,3 +24,6 @@ - id: CP14WildSage amount: 4 maxAmount: 8 + - id: CP14SeedSage + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/tomatoes.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/tomatoes.yml index 493b2e7173..8c54c15953 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/tomatoes.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/tomatoes.yml @@ -22,3 +22,6 @@ - id: CP14FoodTomatoes amount: 4 maxAmount: 8 + - id: CP14SeedTomato + amount: 0 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/wheat.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/wheat.yml index 18efb07abc..401070903e 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/wheat.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Farm/wheat.yml @@ -27,3 +27,6 @@ - id: CP14Wheat amount: 5 maxAmount: 8 + - id: CP14SeedWheat + amount: 1 + maxAmount: 2 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Wild/fly_agaric.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Wild/fly_agaric.yml index 931c25ee72..d6d32cf114 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Wild/fly_agaric.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Wild/fly_agaric.yml @@ -30,4 +30,7 @@ entries: - id: CP14AgaricMushroom amount: 1 - maxAmount: 2 \ No newline at end of file + maxAmount: 2 + - id: CP14MobMonsterMyconideFlyagaric + amount: 1 + prob: 0.08 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Wild/lumishrooms.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Wild/lumishrooms.yml index 73ccb573ba..ea7e1f6846 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Wild/lumishrooms.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/Wild/lumishrooms.yml @@ -33,4 +33,7 @@ entries: - id: CP14LumiMushroom amount: 1 - maxAmount: 1 \ No newline at end of file + maxAmount: 1 + - id: CP14MobMonsterMyconideLumish + amount: 1 + prob: 0.08 diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/base.yml b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/base.yml index b5ecca0cb9..20c4262922 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/base.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Flora/Gatherable/base.yml @@ -154,7 +154,7 @@ - type: CP14PlantGrowing energyCost: 0.25 resourceCost: 0.25 - growthPerUpdate: 0.02 # 20 minute to full grow + growthPerUpdate: 0.12 # 20 minute to full grow - type: FireVisuals sprite: _CP14/Effects/fire.rsi normalState: full @@ -168,6 +168,6 @@ abstract: true components: - type: CP14PlantGrowing - growthPerUpdate: 0.12 + growthPerUpdate: 0.06 - type: CP14PlantGatherable deleteAfterHarvest: false \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/research_table.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/research_table.yml new file mode 100644 index 0000000000..348d448bd7 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/research_table.yml @@ -0,0 +1,57 @@ +- type: entity + parent: + - BaseStructure + id: CP14ResearchTable + categories: [ ForkFiltered ] + name: research table + description: A place of research, experimentation and discovery that allows you to be smarter. + components: + - type: Sprite + snapCardinals: true + sprite: _CP14/Structures/Furniture/workbench.rsi + state: research_table + - type: Icon + sprite: _CP14/Structures/Furniture/workbench.rsi + state: research_table + - type: ActivatableUI + key: enum.CP14ResearchTableUiKey.Key + requiresComplex: true + singleUser: true + - type: Climbable + - type: Clickable + - type: CP14ResearchTable + - type: InteractionOutline + - type: PlaceableSurface + - type: UserInterface + interfaces: + enum.CP14ResearchTableUiKey.Key: + type: CP14ResearchTableBoundUserInterface + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTypeTrigger + damageType: Heat + damage: 40 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - trigger: + !type:DamageTrigger + damage: 60 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + collection: WoodDestroy + - !type:SpawnEntitiesBehavior + spawn: + CP14WoodenPlanks1: + min: 1 + max: 2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/torch.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/torch.yml new file mode 100644 index 0000000000..fd413a0488 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/torch.yml @@ -0,0 +1,184 @@ +- type: entity + id: CP14BaseTorch + abstract: true + description: A good, reliable light source. Too bad it doesn't last. + categories: [ ForkFiltered ] + components: + - type: InteractionOutline + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Wood + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 30 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - type: CP14FlammableAmbientSound + - type: AmbientSound + enabled: false + volume: -15 + range: 5 + sound: + path: /Audio/Ambience/Objects/fireplace.ogg + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] + - type: Flammable + fireSpread: false + canResistFire: false + alwaysCombustible: true + canExtinguish: true + firestacksOnIgnite: 0.5 + damage: + types: + Heat: 0 + - type: CP14Fireplace + deleteOnEmpty: true + maxFuelLimit: 1800 + fuel: 1800 + - type: Appearance + - type: CP14IgnitionModifier + hideCaution: true + +- type: entity + id: CP14FloorTorch + parent: + - CP14BaseTorch + - BaseStructure + name: floor torch + components: + - type: Sprite + noRot: true + drawdepth: Mobs + sprite: _CP14/Structures/Furniture/torch_floor.rsi + offset: 0, 0.3 + layers: + - state: base + map: ["fuel"] + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.2,-0.2,0.2,0.2" + density: 1000 + layer: + - LowImpassable + - MidImpassable + - type: FireVisuals + sprite: _CP14/Structures/Furniture/torch_floor.rsi + normalState: fire + - type: GenericVisualizer + visuals: + enum.FireplaceFuelVisuals.Status: + fuel: + Empty: { state: burned } + Medium: { state: base } + Full: { state: base } + - type: Construction + graph: CP14FloorTorch + node: CP14FloorTorch + +- type: entity + parent: CP14FloorTorch + id: CP14FloorTorchIgnited + suffix: Ignited + components: + - type: CP14AutoIgnite + +- type: entity + id: CP14FloorTorchAlwaysPowered + name: floor torch + parent: BaseStructure + categories: [ ForkFiltered ] + suffix: Debug, Infinite + components: + - type: Sprite + noRot: true + drawdepth: Mobs + sprite: _CP14/Structures/Furniture/torch_floor.rsi + offset: 0, 0.3 + layers: + - state: base + - state: fire + shader: unshaded + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.2,-0.2,0.2,0.2" + density: 1000 + layer: + - LowImpassable + - MidImpassable + - type: PointLight + color: "#e67c34" + energy: 2 + radius: 8 + - type: AmbientSound + enabled: true + volume: -15 + range: 5 + sound: + path: /Audio/Ambience/Objects/fireplace.ogg + +- type: entity + id: CP14WallmountTorch + parent: + - CP14BaseTorch + - CP14BaseWallmount + name: wallmount torch + components: + - type: Sprite + sprite: _CP14/Structures/Furniture/wallmount_torch.rsi + layers: + - state: base + map: ["fuel"] + - type: FireVisuals + sprite: _CP14/Structures/Furniture/wallmount_torch.rsi + normalState: fire + - type: GenericVisualizer + visuals: + enum.FireplaceFuelVisuals.Status: + fuel: + Empty: { state: burned } + Medium: { state: base } + Full: { state: base } + - type: Construction + graph: CP14WallmountTorch + node: CP14WallmountTorch + +- type: entity + parent: CP14WallmountTorch + id: CP14WallmountTorchIgnited + suffix: Ignited + components: + - type: CP14AutoIgnite + +- type: entity + id: CP14WallmountTorchAlwaysPowered + name: wallmount torch + parent: CP14BaseWallmount + suffix: Debug, Infinite + components: + - type: Sprite + sprite: _CP14/Structures/Furniture/wallmount_torch.rsi + layers: + - state: base + - state: fire + shader: unshaded + - type: PointLight + color: "#e67c34" + energy: 2 + radius: 8 + - type: AmbientSound + enabled: true + volume: -15 + range: 5 + sound: + path: /Audio/Ambience/Objects/fireplace.ogg \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml index 743744b6b9..c26bbf4e14 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount.yml @@ -15,90 +15,6 @@ - type: Physics canCollide: false -- type: entity - id: CP14WallmountTorch - name: wallmount torch - parent: CP14BaseWallmount - description: A good, reliable light source. Too bad it doesn't last. - components: - - type: Sprite - sprite: _CP14/Structures/Furniture/wallmount_torch.rsi - layers: - - state: base - map: ["fuel"] - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Wood - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 80 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - type: CP14FlammableAmbientSound - - type: AmbientSound - enabled: false - volume: -15 - range: 5 - sound: - path: /Audio/Ambience/Objects/fireplace.ogg - - type: Reactive - groups: - Flammable: [ Touch ] - Extinguish: [ Touch ] - - type: Flammable - fireSpread: false - canResistFire: false - alwaysCombustible: true - canExtinguish: true - firestacksOnIgnite: 0.5 - damage: - types: - Heat: 0 - - type: CP14Fireplace - maxFuelLimit: 200 - fuel: 200 - - type: FireVisuals - sprite: _CP14/Structures/Furniture/wallmount_torch.rsi - normalState: fire - - type: Appearance - - type: GenericVisualizer - visuals: - enum.FireplaceFuelVisuals.Status: - fuel: - Empty: { state: burned } - Medium: { state: base } - Full: { state: base } - - type: Construction - graph: CP14WallmountTorch - node: CP14WallmountTorch - - type: CP14IgnitionModifier - hideCaution: true - -- type: entity - id: CP14WallmountTorchAlwaysPowered - name: always powered wallmount torch - parent: CP14BaseWallmount - components: - - type: Sprite - sprite: _CP14/Structures/Furniture/wallmount_torch.rsi - layers: - - state: base - - state: fire - shader: unshaded - - type: PointLight - color: "#e67c34" - energy: 2 - radius: 8 - - type: AmbientSound - enabled: true - volume: -15 - range: 5 - sound: - path: /Audio/Ambience/Objects/fireplace.ogg - - type: entity id: CP14WallmountBarShelfA name: bar shelf diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml index 16e70e455a..12d673a6da 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Furniture/wallmount_lamp.yml @@ -22,7 +22,7 @@ - type: PointLight energy: 1 radius: 8 - color: "#b2ceeb" + color: "#dfe7f0" enabled: false - type: Appearance - type: GenericVisualizer @@ -41,14 +41,14 @@ thresholds: - trigger: !type:DamageTrigger - damage: 40 + damage: 20 behaviors: - !type:DoActsBehavior acts: [ "Destruction" ] - type: CP14MagicLantern - type: CP14MagicEnergyDraw energy: -0.1 - delay: 6 + delay: 12 - type: Construction graph: CP14WallmountLampEmpty node: CP14WallmountLampEmpty @@ -75,7 +75,7 @@ - type: ItemSlots slots: crystal_slot: - startingItem: CP14EnergyCrystalSmall + startingItem: CP14EnergyCrystalMedium insertSound: path: /Audio/_CP14/Items/crystal_insert.ogg params: diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Demiplanes/round_end.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Demiplanes/round_end.yml new file mode 100644 index 0000000000..ff66a0af68 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Demiplanes/round_end.yml @@ -0,0 +1,190 @@ +- type: entity + id: CP14DemiplaneLinkCrystal + parent: BaseStructure + categories: [ ForkFiltered ] + name: demiplane link crystal + description: Maintains communication with the demiplanes while charged. Causes monsters from the demiplanes to attack the city. Once it is discharged, the game is over. + suffix: ONE TO MAP + components: + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.15,-0.2,0.15,0.2" + density: 1000 + layer: + - WallLayer + - type: Sprite + noRot: true + sprite: _CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi + layers: + - state: dimension + - state: frame + drawdepth: Mobs + offset: 0,0.8 + - type: PointLight + enabled: true + color: "#8f42ff" + energy: 1 + radius: 5 + netsync: false + - type: LightBehaviour + behaviours: + - !type:PulseBehaviour + interpolate: Cubic + maxDuration: 5 + minValue: 1.0 + maxValue: 40.0 + property: Energy + isLooped: true + enabled: true + - type: CP14MagicContainerRoundFinisher + - type: CP14MagicEnergyExaminable + - type: CP14MagicEnergyContainer + maxEnergy: 1000 + energy: 1000 + - type: CP14MagicEnergyDraw + energy: -10 + delay: 60 # 1h 30 minutes to full discharge + - type: AmbientSound + volume: 5 + range: 10 + sound: + path: /Audio/_CP14/Effects/demiplane_heartbeat.ogg + - type: ActivatableUI + key: enum.CP14DemiplaneMapUiKey.Key + requiresComplex: true + singleUser: true + - type: CP14DemiplaneNavigationMap + - type: UserInterface + interfaces: + enum.CP14DemiplaneMapUiKey.Key: + type: CP14DemiplaneMapBoundUserInterface + +- type: entity + id: CP14PortalFrameCrystal + categories: [ ForkFiltered ] + parent: BaseStructure + name: portal frame + description: A structure made of shadow crystals used to create a stable portal to another location. + components: + - type: Transform + anchored: true + - type: Clickable + - type: Physics + bodyType: Static + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + density: 60 + mask: + - MachineMask + layer: + - MidImpassable + - LowImpassable + - type: Tag + tags: + - Structure + - type: Sprite + noRot: true + sprite: _CP14/Structures/Specific/Thaumaturgy/energy_monolith_small.rsi + layers: + - state: dimension + - state: frame + drawdepth: Mobs + offset: 0,0.4 + - type: CP14MagicEnergyContainer + maxEnergy: 100 + energy: 100 + - type: CP14MagicEnergyExaminable + - type: CP14MagicEnergyPortRelay + +- type: entity + id: CP14DemiplaneCore + categories: [ ForkFiltered ] + parent: BaseStructureDynamic + name: demiplane core + description: The heart of the demiplane. Your task is to take it out of the demiplane safe and sound and hand it over to the guildmaster. + components: + - type: CP14DemiplaneCore + - type: Transform + anchored: false + - type: Pullable + - type: Clickable + - type: Physics + - type: Fixtures + fixtures: + fix1: + shape: + !type:PhysShapeAabb + bounds: "-0.25,-0.25,0.25,0.25" + density: 600 + mask: + - MachineMask + layer: + - MidImpassable + - LowImpassable + - type: Tag + tags: + - Structure + - type: Sprite + noRot: true + sprite: _CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi + layers: + - state: dimension_core + drawdepth: Mobs + offset: 0,0.4 + - type: PointLight + enabled: true + color: "#8f42ff" + castShadows: false + energy: 1 + radius: 5 + netsync: false + - type: LightBehaviour + behaviours: + - !type:PulseBehaviour + interpolate: Cubic + maxDuration: 5 + minValue: 1.0 + maxValue: 40.0 + property: Energy + isLooped: true + enabled: true + - type: AmbientSound + volume: 5 + range: 10 + sound: + path: /Audio/_CP14/Effects/demiplane_heartbeat.ogg + - type: Damageable + damageContainer: Inorganic + damageModifierSet: CP14Rock + - type: MeleeSound + soundGroups: + Brute: + collection: GlassSmash + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: GlassBreak + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:SpawnEntitiesBehavior + spawn: + CP14DimensitCrystal: + min: 4 + max: 6 + - !type:SpawnEntitiesBehavior + spawn: + CP14SkyLightningPurple: + min: 1 + max: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Thaumaturgy/round_end.yml b/Resources/Prototypes/_CP14/Entities/Structures/Specific/Thaumaturgy/round_end.yml deleted file mode 100644 index c5bdea7f30..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Structures/Specific/Thaumaturgy/round_end.yml +++ /dev/null @@ -1,95 +0,0 @@ -- type: entity - id: CP14DemiplaneLinkCrystal - parent: BaseStructure - categories: [ ForkFiltered ] - name: demiplane link crystal - description: Maintains communication with the demiplanes while charged. Causes mosnters from the demiplanes to attack the city. Once it is discharged, the game is over. - suffix: ONE TO MAP - components: - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeAabb - bounds: "-0.15,-0.2,0.15,0.2" - density: 1000 - layer: - - WallLayer - - type: Sprite - noRot: true - sprite: _CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi - layers: - - state: dimension - - state: frame - drawdepth: Mobs - offset: 0,0.8 - - type: PointLight - enabled: true - color: "#8f42ff" - energy: 1 - radius: 5 - netsync: false - - type: LightBehaviour - behaviours: - - !type:PulseBehaviour - interpolate: Cubic - maxDuration: 5 - minValue: 1.0 - maxValue: 40.0 - property: Energy - isLooped: true - enabled: true - - type: CP14MagicContainerRoundFinisher - - type: CP14MagicEnergyExaminable - - type: CP14MagicEnergyContainer - maxEnergy: 1000 - energy: 1000 - - type: CP14MagicEnergyDraw - energy: -10 - delay: 60 # 1h 30 minutes to full discharge - - type: AmbientSound - volume: 5 - range: 10 - sound: - path: /Audio/_CP14/Effects/demiplane_heartbeat.ogg - -- type: entity - id: CP14PortalFrameCrystal - categories: [ ForkFiltered ] - parent: BaseStructure - name: portal frame - description: A structure made of shadow crystals used to create a stable portal to another location. - components: - - type: Transform - anchored: true - - type: Clickable - - type: Physics - bodyType: Static - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeAabb - bounds: "-0.25,-0.25,0.25,0.25" - density: 60 - mask: - - MachineMask - layer: - - MidImpassable - - LowImpassable - - type: Tag - tags: - - Structure - - type: Sprite - noRot: true - sprite: _CP14/Structures/Specific/Thaumaturgy/energy_monolith_small.rsi - layers: - - state: dimension - - state: frame - drawdepth: Mobs - offset: 0,0.4 - - type: CP14MagicEnergyContainer - maxEnergy: 100 - energy: 100 - - type: CP14MagicEnergyExaminable - - type: CP14MagicEnergyPortRelay \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Walls/natural.yml b/Resources/Prototypes/_CP14/Entities/Structures/Walls/natural.yml index bddf5ee569..fc5e28e283 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Walls/natural.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Walls/natural.yml @@ -209,11 +209,6 @@ collection: CP14GrassGathering - type: TriggerOnCollide fixtureID: fix1 - - type: DamageContacts - damage: - types: - Slash: 0.2 - Piercing: 0.2 - type: Airtight airBlocked: false @@ -261,4 +256,41 @@ min: 2 max: 3 - !type:DoActsBehavior - acts: ["Destruction"] \ No newline at end of file + acts: ["Destruction"] + +- type: entity + id: CP14WallDimensit + parent: CP14BaseWall + name: dimensit wall + description: The solid form of the interdimensional continuum. + components: + - type: Sprite + sprite: _CP14/Structures/Walls/Natural/cave_dimensit.rsi + - type: Icon + sprite: _CP14/Structures/Walls/Natural/cave_dimensit.rsi + - type: IconSmooth + base: wall + - type: Damageable + damageContainer: Inorganic + damageModifierSet: CP14Rock + - type: MeleeSound + soundGroups: + Brute: + collection: GlassSmash + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 350 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 30 + behaviors: + - !type:PlaySoundBehavior + sound: + collection: GlassBreak + - !type:DoActsBehavior + acts: ["Destruction"] \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Walls/ore_veins.yml b/Resources/Prototypes/_CP14/Entities/Structures/Walls/ore_veins.yml index 4af53b8c79..504783a1f6 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Walls/ore_veins.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Walls/ore_veins.yml @@ -29,8 +29,8 @@ - !type:SpawnEntitiesBehavior spawn: CP14OreCopper1: - min: 3 - max: 6 + min: 4 + max: 7 - !type:DoActsBehavior acts: ["Destruction"] @@ -64,7 +64,7 @@ - !type:SpawnEntitiesBehavior spawn: CP14OreIron1: - min: 3 + min: 4 max: 6 - !type:DoActsBehavior acts: ["Destruction"] diff --git a/Resources/Prototypes/_CP14/Entities/Structures/crystal.yml b/Resources/Prototypes/_CP14/Entities/Structures/crystal.yml deleted file mode 100644 index 2430025711..0000000000 --- a/Resources/Prototypes/_CP14/Entities/Structures/crystal.yml +++ /dev/null @@ -1,135 +0,0 @@ -# Wallmount crystall - -- type: entity - id: CP14WallmountCrystalBase - parent: - - CP14BaseWallmount - abstract: true - name: sparkling quartz - description: bioluminescent quartz crystals that can take on any color - a very handy light source in a deep caves. Unfortunately, the luminous properties are very hard to preserve. - categories: [ ForkFiltered ] - components: - - type: Sprite - drawdepth: Mobs - sprite: _CP14/Structures/Wallmount/wallmount_crystal.rsi - layers: - - state: crystal1 - map: ["random"] - shader: unshaded - - type: MeleeSound - soundGroups: - Brute: - collection: GlassSmash - - type: Damageable - damageContainer: Inorganic - damageModifierSet: Glass - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 80 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 20 - behaviors: - - !type:PlaySoundBehavior - sound: - collection: GlassBreak - - !type:DoActsBehavior - acts: [ "Destruction" ] - - type: Fixtures - fixtures: - fix1: - shape: - !type:PhysShapeAabb - bounds: "0.49,0.49,-0.49,0.36" - density: 60 - mask: - - MachineMask - layer: - - MidImpassable - - LowImpassable - - type: RandomSprite - available: - - random: - crystal1: Inherit - crystal2: Inherit - crystal3: Inherit - - type: PointLight - radius: 1.5 - energy: 1 - -- type: entity - id: CP14WallmountCrystalRubies - parent: CP14WallmountCrystalBase - suffix: Red - components: - - type: Sprite - color: "#ff3d0b" - - type: RandomSprite - cP14InheritBaseColor: "#ff3d0b" - - type: PointLight - color: "#ff3d0b" - -- type: entity - id: CP14WallmountCrystalTopazes - parent: CP14WallmountCrystalBase - suffix: Yellow - components: - - type: Sprite - color: "#ffe269" - - type: RandomSprite - cP14InheritBaseColor: "#ffe269" - - type: PointLight - color: "#ffe269" - -- type: entity - id: CP14WallmountCrystalEmeralds - parent: CP14WallmountCrystalBase - suffix: Green - components: - - type: Sprite - color: "#30be81" - - type: RandomSprite - cP14InheritBaseColor: "#30be81" - - type: PointLight - color: "#30be81" - -- type: entity - id: CP14WallmountCrystalSapphires - parent: CP14WallmountCrystalBase - suffix: Cyan - components: - - type: Sprite - color: "#5eabeb" - - type: RandomSprite - cP14InheritBaseColor: "#5eabeb" - - type: PointLight - color: "#5eabeb" - -- type: entity - id: CP14WallmountCrystalAmethysts - parent: CP14WallmountCrystalBase - suffix: Purple - components: - - type: Sprite - color: "#a878d1" - - type: RandomSprite - cP14InheritBaseColor: "#a878d1" - - type: PointLight - color: "#a878d1" - -- type: entity - id: CP14WallmountCrystalDiamonds - parent: CP14WallmountCrystalBase - suffix: White - components: - - type: Sprite - color: "#f8f8f8" - - type: RandomSprite - cP14InheritBaseColor: "#f8f8f8" - - type: PointLight - color: "#f8f8f8" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Entities/Structures/well.yml b/Resources/Prototypes/_CP14/Entities/Structures/well.yml new file mode 100644 index 0000000000..b352041586 --- /dev/null +++ b/Resources/Prototypes/_CP14/Entities/Structures/well.yml @@ -0,0 +1,30 @@ +- type: entity + id: CP14StoneWell + parent: BaseStructure + categories: [ ForkFiltered ] + name: well + description: At the bottom of this well gurgles clear water. If you have a bucket, you can reach it. + components: + - type: Sprite + noRot: true + offset: 0, 0.3 + drawdepth: Mobs + sprite: _CP14/Structures/Specific/Farming/well.rsi + layers: + - state: icon + #- type: Damageable + # damageContainer: StructuralInorganic + # damageModifierSet: CP14RockStructural + - type: DrawableSolution + solution: pool + - type: SolutionContainerManager + solutions: + pool: + maxVol: 9999999 #.inf seems to break the whole yaml file, but would definitely be preferable. + reagents: + - ReagentId: Water + Quantity: 9999999 + - type: DrainableSolution + solution: pool + - type: Drink + solution: pool diff --git a/Resources/Prototypes/_CP14/GameRules/events.yml b/Resources/Prototypes/_CP14/GameRules/events.yml index bf80f14bc3..f941d2d329 100644 --- a/Resources/Prototypes/_CP14/GameRules/events.yml +++ b/Resources/Prototypes/_CP14/GameRules/events.yml @@ -32,7 +32,7 @@ # - type: StationEvent # startAnnouncement: cp14-event-announcement-demiplane-outbreak # startAudio: -# path: /Audio/_CP14/Ambience/event_boom.ogg +# path: /Audio/_CP14/Announce/event_boom.ogg # earliestStart: 20 # minimumPlayers: 15 # weight: 5 @@ -49,7 +49,7 @@ - type: StationEvent startAnnouncement: cp14-event-announcement-demiplane-outbreak startAudio: - path: /Audio/_CP14/Ambience/event_boom.ogg + path: /Audio/_CP14/Announce/event_boom.ogg earliestStart: 20 minimumPlayers: 15 weight: 1 diff --git a/Resources/Prototypes/_CP14/GameRules/judgement_night.yml b/Resources/Prototypes/_CP14/GameRules/judgement_night.yml new file mode 100644 index 0000000000..2993dbed29 --- /dev/null +++ b/Resources/Prototypes/_CP14/GameRules/judgement_night.yml @@ -0,0 +1,33 @@ +- type: entity + id: CP14BloodMoonRule + parent: CP14BaseGameRule + components: + - type: CP14BloodMoonRule + curseRule: CP14BloodMoonCurseRule + announceSound: + path: /Audio/_CP14/Announce/darkness_boom.ogg + - type: GameRule + delay: + min: 30 + max: 60 + +- type: entity + id: CP14BloodMoonCurseRule + parent: CP14BaseGameRule + components: + - type: CP14BloodMoonCurseRule + announcementColor: "#e32759" + - type: AntagSelection + definitions: + - prefRoles: [ CP14BloodMoonCursed ] + max: 15 + playerRatio: 2 + multiAntagSetting: NotExclusive + lateJoinAdditional: true + allowNonHumans: true + mindRoles: + - CP14MindRoleBloodMoonCursed + briefing: + text: cp14-roles-antag-blood-moon-cursed-briefing + color: "#630f24" + sound: "/Audio/_CP14/Announce/darkness_boom_2.ogg" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/GameRules/roundstart.yml b/Resources/Prototypes/_CP14/GameRules/roundstart.yml index 2e78fe80fe..e2e8dbc112 100644 --- a/Resources/Prototypes/_CP14/GameRules/roundstart.yml +++ b/Resources/Prototypes/_CP14/GameRules/roundstart.yml @@ -19,14 +19,8 @@ id: CP14RoundObjectivesRule parent: CP14BaseGameRule components: - #- type: CP14CommonObjectivesRule - # departmentObjectives: - # CP14Command: - # - CP14TownSendObjectiveGroup - type: CP14PersonalObjectivesRule roleObjectives: - CP14Guildmaster: - - CP14GuildmasterNoDemiplaneObjectiveGroup CP14Adventurer: - CP14PersonalCurrencyCollectObjectiveGroup CP14Alchemist: @@ -37,8 +31,6 @@ - CP14PersonalCurrencyCollectObjectiveGroup CP14Innkeeper: - CP14PersonalCurrencyCollectObjectiveGroup - CP14Merchant: - - CP14PersonalObjectiveRichestMerchantGroup # event schedulers diff --git a/Resources/Prototypes/_CP14/Guidebook/Eng/species.yml b/Resources/Prototypes/_CP14/Guidebook/Eng/species.yml index e7083ab0f4..c941f90507 100644 --- a/Resources/Prototypes/_CP14/Guidebook/Eng/species.yml +++ b/Resources/Prototypes/_CP14/Guidebook/Eng/species.yml @@ -9,6 +9,7 @@ - CP14_EN_Elf - CP14_EN_Tiefling - CP14_EN_Goblin + - CP14_EN_Carcat filterEnabled: True - type: guideEntry @@ -44,4 +45,11 @@ id: CP14_EN_Goblin name: Goblin text: "/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Goblin.xml" + filterEnabled: True + +- type: guideEntry + crystallPunkAllowed: true + id: CP14_EN_Carcat + name: Carcat + text: "/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Carcat.xml" filterEnabled: True \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Guidebook/Ru/species.yml b/Resources/Prototypes/_CP14/Guidebook/Ru/species.yml index fdd7c8f88e..8e97498483 100644 --- a/Resources/Prototypes/_CP14/Guidebook/Ru/species.yml +++ b/Resources/Prototypes/_CP14/Guidebook/Ru/species.yml @@ -9,6 +9,7 @@ - CP14_RU_Elf - CP14_RU_Tiefling - CP14_RU_Goblin + - CP14_RU_Carcat filterEnabled: True - type: guideEntry @@ -44,4 +45,11 @@ id: CP14_RU_Goblin name: Гоблин text: "/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Goblin.xml" + filterEnabled: True + +- type: guideEntry + crystallPunkAllowed: true + id: CP14_RU_Carcat + name: Каркат + text: "/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Carcat.xml" filterEnabled: True \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/adventure.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/adventure.yml new file mode 100644 index 0000000000..32cae6720e --- /dev/null +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/adventure.yml @@ -0,0 +1,41 @@ +- type: loadoutGroup + id: CP14AdventureEquip + name: cp14-loadout-adventurers-equip + minLimit: 0 + maxLimit: 1 + loadouts: + - CP14ModularIronSkimitar + - CP14ModularIronSword + - CP14ModularIronRapier + - CP14BowCombat + +- type: loadout + id: CP14ModularIronSkimitar + dummyEntity: CP14ModularIronSkimitar + equipment: + belt2: CP14ModularIronSkimitar + skills: + - SkimitarMastery + +- type: loadout + id: CP14ModularIronSword + dummyEntity: CP14ModularIronSword + equipment: + belt2: CP14ModularIronSword + skills: + - SwordMastery + +- type: loadout + id: CP14ModularIronRapier + dummyEntity: CP14ModularIronRapier + equipment: + belt2: CP14ModularIronRapier + skills: + - RapierMastery + +- type: loadout + id: CP14BowCombat + dummyEntity: CP14BowCombat + equipment: + belt2: CP14ClothingBeltQuiverCopperArrow + neck: CP14BowCombat \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/alchemist.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/alchemist.yml index 8e9aaf2269..448cf7ec0e 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/alchemist.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/alchemist.yml @@ -25,12 +25,18 @@ name: cp14-loadout-alchemist-cloak loadouts: - CP14ClothingCloakAlchemist + - CP14ClothingCloakAlchemistMantle - type: loadout id: CP14ClothingCloakAlchemist equipment: cloak: CP14ClothingCloakAlchemist +- type: loadout + id: CP14ClothingCloakAlchemistMantle + equipment: + cloak: CP14ClothingCloakAlchemistMantle + # Eyes - type: loadoutGroup diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/commandant.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/commandant.yml deleted file mode 100644 index 7250e6312a..0000000000 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/commandant.yml +++ /dev/null @@ -1,26 +0,0 @@ - -# Head - -- type: loadoutGroup - id: CP14CommandantHead - name: cp14-loadout-commandant-head - loadouts: - - CP14ClothingHeadBowlerGolden - -- type: loadout - id: CP14ClothingHeadBowlerGolden - equipment: - head: CP14ClothingHeadBowlerGolden - -# Cloak - -- type: loadoutGroup - id: CP14CommandantCloak - name: cp14-loadout-commandant-cloak - loadouts: - - CP14ClothingCloakCommandantJacket - -- type: loadout - id: CP14ClothingCloakCommandantJacket - equipment: - cloak: CP14ClothingCloakCommandantJacket \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml index 452c7c76ef..3225e3cdb8 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/general.yml @@ -114,6 +114,7 @@ - CP14ClothingOuterClothingBrownVest3 - CP14ClothingOuterClothingJagermeisterWaistcoat - CP14ClothingOuterClothingRedVest + - CP14ClothingOuterClothingPurple - type: loadout id: CP14ClothingOuterClothingBrownVest1 @@ -140,6 +141,10 @@ equipment: outerClothing: CP14ClothingOuterClothingJagermeisterWaistcoat +- type: loadout + id: CP14ClothingOuterClothingPurple + equipment: + outerClothing: CP14ClothingOuterClothingPurple # Eyes @@ -344,6 +349,7 @@ name: cp14-loadout-general-shirt loadouts: - CP14ClothingShirtCottonBlack + - CP14ClothinShirtGray - CP14ClothingShirtBlackDress - CP14ClothinShirtMaidDress - CP14ClothingShirtCottonBlue @@ -351,11 +357,15 @@ - CP14ClothingBlueCollarDress - CP14ClothingShirtBlueOpen - CP14ClothingBlueOpenDress + - CP14ClothinShirtWhiteBlueDress + - CP14ClothinShirtWhiteBlue2Dress + - CP14ClothinShirtRedBlueDress - CP14ClothingShirtJestersAttire - CP14ClothingShirtRedOpen - CP14ClothingRedOpenDress - CP14ClothingShirtYellowOpen - CP14ClothingYellowOpenDress + - CP14ClothinShirtBlueYellowDress - CP14ClothingShirtCottonPurple - CP14ClothingShirtCottonRed - CP14ClothingCottonRedDress @@ -363,12 +373,20 @@ - CP14ClothingCottonWhiteDress - CP14ClothingShirtCottonWhiteCollar - CP14ClothingCottonWhiteCollarDress + - CP14ClothinShirtWhiteBrown + - CP14ClothinShirtBrown2Dress + - CP14ClothinShirtBrown3Dress - CP14ClothinGreenBeltDress - CP14ClothinGreenBeltDress2 + - CP14ClothinShirtWhiteGreenDress + - CP14ClothinShirtwhiteGreenYellowDress + - CP14ClothinShirtGreenYellow + - CP14ClothinShirtBlueGreen - CP14ClothinGreenLightDress - CP14ClothingShirtCottonYellow - CP14ClothingShirtCottonYellowCollar - CP14ClothingCottonYellowCollarDress + - CP14ClothinShirtYellowBlueDress - CP14ClothingWarriorsGarbDress - type: loadout @@ -506,6 +524,71 @@ equipment: shirt: CP14ClothingWarriorsGarbDress +- type: loadout + id: CP14ClothinShirtBlueYellowDress + equipment: + shirt: CP14ClothinShirtBlueYellowDress + +- type: loadout + id: CP14ClothinShirtWhiteBlueDress + equipment: + shirt: CP14ClothinShirtWhiteBlueDress + +- type: loadout + id: CP14ClothinShirtWhiteBlue2Dress + equipment: + shirt: CP14ClothinShirtWhiteBlue2Dress + +- type: loadout + id: CP14ClothinShirtBrown2Dress + equipment: + shirt: CP14ClothinShirtBrown2Dress + +- type: loadout + id: CP14ClothinShirtBrown3Dress + equipment: + shirt: CP14ClothinShirtBrown3Dress + +- type: loadout + id: CP14ClothinShirtWhiteGreenDress + equipment: + shirt: CP14ClothinShirtWhiteGreenDress + +- type: loadout + id: CP14ClothinShirtwhiteGreenYellowDress + equipment: + shirt: CP14ClothinShirtwhiteGreenYellowDress + +- type: loadout + id: CP14ClothinShirtRedBlueDress + equipment: + shirt: CP14ClothinShirtRedBlueDress + +- type: loadout + id: CP14ClothinShirtYellowBlueDress + equipment: + shirt: CP14ClothinShirtYellowBlueDress + +- type: loadout + id: CP14ClothinShirtBlueGreen + equipment: + shirt: CP14ClothinShirtBlueGreen + +- type: loadout + id: CP14ClothinShirtGray + equipment: + shirt: CP14ClothinShirtGray + +- type: loadout + id: CP14ClothinShirtGreenYellow + equipment: + shirt: CP14ClothinShirtGreenYellow + +- type: loadout + id: CP14ClothinShirtWhiteBrown + equipment: + shirt: CP14ClothinShirtWhiteBrown + # Shoes - type: loadoutGroup @@ -585,7 +668,6 @@ - CP14FluteInstrument - CP14LuteInstrument - CP14LyraInstrument - - CP14ClothingBeltQuiver - type: loadout id: CP14ManaOperationGlove @@ -677,11 +759,6 @@ back: - CP14FluteInstrument -- type: loadout - id: CP14ClothingBeltQuiver - equipment: - belt2: CP14ClothingBeltQuiver - # Keys - type: loadoutGroup diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/guard.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/guard.yml index fc5ff15d00..b0e923c212 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/guard.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/guard.yml @@ -58,17 +58,3 @@ id: CP14ClothingShirtGuardsChainmailShirtB equipment: shirt: CP14ClothingShirtGuardsChainmailShirtB - -# Spells - -- type: loadoutGroup - id: CP14GuardSpells - name: cp14-loadout-guard-spells - loadouts: - - CP14ActionSpellFlashLight - -- type: loadout - id: CP14ActionSpellFlashLight - dummyEntity: CP14ActionSpellFlashLight - actions: - - CP14ActionSpellFlashLight diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml index 9082e26791..6bf2af2009 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/guildmaster.yml @@ -31,12 +31,19 @@ name: cp14-loadout-guildmaster-outer loadouts: - CP14ClothingOuterClothingGreenVest + - CP14ClothingOuterClothingGreenVest2 - type: loadout id: CP14ClothingOuterClothingGreenVest equipment: outerClothing: CP14ClothingOuterClothingGreenVest +- type: loadout + id: CP14ClothingOuterClothingGreenVest2 + equipment: + outerClothing: CP14ClothingOuterClothingGreenVest2 + + # Shirt - type: loadoutGroup @@ -59,27 +66,4 @@ id: CP14GuildmasterShoes name: cp14-loadout-guildmaster-shoes loadouts: - - CP14ShoesAristocraticBlack - -# Spells - -- type: loadoutGroup - id: CP14GuildmasterSpells - name: cp14-loadout-guildmaster-spells - minLimit: 2 - maxLimit: 2 - loadouts: - - CP14ActionSpellDemiplaneInfiltration - - CP14ActionSpellMonolithWarp - -- type: loadout - id: CP14ActionSpellDemiplaneInfiltration - dummyEntity: CP14ActionSpellDemiplaneInfiltration - actions: - - CP14ActionSpellDemiplaneInfiltration - -- type: loadout - id: CP14ActionSpellMonolithWarp - dummyEntity: CP14ActionSpellMonolithWarp - actions: - - CP14ActionSpellMonolithWarp + - CP14ShoesAristocraticBlack \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Jobs/merchant.yml b/Resources/Prototypes/_CP14/Loadouts/Jobs/merchant.yml index 49217715ac..9508918d42 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Jobs/merchant.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Jobs/merchant.yml @@ -13,6 +13,19 @@ equipment: head: CP14ClothingHeadBowler +# Cloak + +- type: loadoutGroup + id: CP14MerchantCloak + name: cp14-loadout-merchant-cloak + loadouts: + - CP14ClothingCloakCommandantJacket + +- type: loadout + id: CP14ClothingCloakCommandantJacket + equipment: + cloak: CP14ClothingCloakCommandantJacket + # OuterClothing - type: loadoutGroup diff --git a/Resources/Prototypes/_CP14/Loadouts/Misc/skeleton_startinggear.yml b/Resources/Prototypes/_CP14/Loadouts/Misc/skeleton_startinggear.yml new file mode 100644 index 0000000000..3f528b5fc1 --- /dev/null +++ b/Resources/Prototypes/_CP14/Loadouts/Misc/skeleton_startinggear.yml @@ -0,0 +1,117 @@ + +# TIER 0 + +- type: startingGear + id: CP14MobSkeletonCloset + equipment: + pants: CP14ClothingPantsLoincloth + +# TIER 1 + +- type: startingGear + id: CP14MobSkeletonHalberdT1 + equipment: + outerClothing: CP14ClothingOuterClothingBoneArmor + cloak: CP14ClothingCloakBone + shirt: CP14ClothingWarriorsGarbDress + pants: CP14ClothingPantsLoincloth + neck: CP14ModularSkeletonHalberd + shoes: CP14ClothingShoesSandals + +- type: startingGear + id: CP14MobSkeletonSwordT1 + equipment: + outerClothing: CP14ClothingOuterClothingBoneArmor + cloak: CP14ClothingCloakBone + pants: CP14ClothingPantsLoincloth + belt1: CP14ModularSkeletonSword + shoes: CP14ClothingShoesSandals + head: CP14ClothingHeadMetalHeadband + inhand: + - CP14BaseShield + +- type: startingGear + id: CP14MobSkeletonDodgerT1 + equipment: + mask: CP14ClothingMaskSinner + pants: CP14ClothingPantsLoincloth + belt1: CP14ModularIronDagger + belt2: CP14ModularIronDagger + +- type: startingGear + id: CP14MobSkeletonArcherT1 + equipment: + shirt: CP14ClothingWarriorsGarbDress + pants: CP14ClothingPantsLoincloth + neck: CP14BowCombat + belt1: CP14ClothingBeltQuiverCopperArrow + +# TIER 2 + +- type: startingGear + id: CP14MobSkeletonHalberdT2 + equipment: + outerClothing: CP14ClothingOuterClothingBoneArmorUpgrade + cloak: CP14ClothingCloakBone + mask: CP14ClothingMaskSteelMask + shirt: CP14ClothingWarriorsGarbDress + pants: CP14ClothingPantsLoincloth + neck: CP14ModularSkeletonHalberdUpgrade + shoes: CP14ClothingShoesSandals + +- type: startingGear + id: CP14MobSkeletonSwordT2 + equipment: + outerClothing: CP14ClothingOuterClothingBoneArmorUpgrade + cloak: CP14ClothingCloakBone + mask: CP14ClothingMaskSteelMask + pants: CP14ClothingPantsLoincloth + belt1: CP14ModularSkeletonSwordUpgrade + shoes: CP14ClothingShoesSandals + inhand: + - CP14BaseShield + +- type: startingGear + id: CP14MobSkeletonDodgerT2 + equipment: + outerClothing: CP14ClothingOuterClothingBoneArmor + mask: CP14ClothingMaskBoneHornedMask + pants: CP14ClothingPantsLoincloth + belt1: CP14ModularIronDaggerTundra + belt2: CP14ModularIronDaggerAgony + shoes: CP14ClothingShoesSandals + +- type: startingGear + id: CP14MobSkeletonArcherT2 + equipment: + head: CP14ClothingHeadHuntersHat + mask: CP14ClothingMaskNeckerchief + shirt: CP14ClothingShirtCottonBlack + pants: CP14ClothingPantsBrown + neck: CP14BowCombat + belt1: CP14ClothingBeltQuiverIronArrow + belt2: CP14ModularSkeletonSword + shoes: CP14LongLeatherBoots + +- type: startingGear + id: CP14MobSkeletonWizardT2 + equipment: + outerClothing: CP14ClothingOuterClothingBoneArmor + cloak: CP14ClothingCloakBoneMage + head: CP14ClothingHeadTriangularHatGolden + shirt: CP14ClothingShirtCottonBlack + pants: CP14ClothingPantsBrown + shoes: CP14LongLeatherBoots + ring2: CP14ClothingCloakAmuletMana + belt1: CP14ModularSkeletonSword + inhand: + - CP14ManaOperationGlove + +- type: startingGear + id: CP14MobSkeletonBardT2 + equipment: + head: CP14ClothingHeadBeretMercenary + shirt: CP14ClothingShirtMercenary + pants: CP14ClothingPantsMercenaryTrousers + shoes: CP14ClothingShoesAristocraticBlack + neck: SkeletonGuitarInstrument \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/Misc/undead_startinggear.yml b/Resources/Prototypes/_CP14/Loadouts/Misc/undead_startinggear.yml index 043f60e713..ea2409dedf 100644 --- a/Resources/Prototypes/_CP14/Loadouts/Misc/undead_startinggear.yml +++ b/Resources/Prototypes/_CP14/Loadouts/Misc/undead_startinggear.yml @@ -14,64 +14,4 @@ equipment: pants: CP14ClothingPantsTrouserDarkBlue shoes: CP14ClothingShoesSandals - mask: CP14ClothingMaskSinner - -- type: startingGear - id: CP14MobSkeletonHalberd - equipment: - outerClothing: CP14ClothingOuterClothingBoneArmor - shirt: CP14ClothingWarriorsGarbDress - pants: CP14ClothingPantsLoincloth - neck: CP14ModularSkeletonHalberd - shoes: CP14ClothingShoesSandals - -- type: startingGear - id: CP14MobSkeletonSword - equipment: - outerClothing: CP14ClothingOuterClothingBoneArmor - pants: CP14ClothingPantsLoincloth - belt1: CP14ModularSkeletonSword - shoes: CP14ClothingShoesSandals - head: CP14ClothingHeadMetalHeadband - inhand: - - CP14BaseShield - -- type: startingGear - id: CP14MobSkeletonDodger - equipment: - mask: CP14ClothingMaskSinner - pants: CP14ClothingPantsLoincloth - belt1: CP14ModularIronDagger - belt2: CP14ModularIronDagger - -- type: startingGear - id: CP14MobSkeletonArcher - equipment: - shirt: CP14ClothingWarriorsGarbDress - pants: CP14ClothingPantsLoincloth - neck: CP14BowCombat - belt1: CP14ClothingBeltQuiverCopperArrow - -- type: startingGear - id: CP14MobSkeletonWizard - equipment: - head: CP14ClothingHeadTriangularHat - shirt: CP14ClothingShirtCottonBlack - pants: CP14ClothingPantsBrown - shoes: CP14LongLeatherBoots - cloak: CP14ClothingCloakWhite - inhand: - - CP14ManaOperationGlove - -- type: startingGear - id: CP14MobSkeletonBard - equipment: - shirt: CP14ClothingShirtMercenary - pants: CP14ClothingPantsMercenaryTrousers - shoes: CP14ClothingShoesAristocraticBlack - neck: SkeletonGuitarInstrument - -- type: startingGear - id: CP14MobSkeletonCloset - equipment: - pants: CP14ClothingPantsLoincloth \ No newline at end of file + mask: CP14ClothingMaskSinner \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml b/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml index 96f2cbe6e5..1c80592644 100644 --- a/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml +++ b/Resources/Prototypes/_CP14/Loadouts/role_loadouts.yml @@ -1,7 +1,7 @@ - type: roleLoadout id: JobCP14Adventurer groups: - - CP14SkillTree + - CP14AdventureEquip - CP14GeneralHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -18,7 +18,6 @@ - type: roleLoadout id: JobCP14Apprentice groups: - - CP14SkillTree - CP14GeneralHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -33,7 +32,6 @@ - type: roleLoadout id: JobCP14Alchemist groups: - - CP14SkillTree - CP14AlchemistHead # - CP14GeneralOuterClothing - CP14AlchemistEyes # @@ -49,7 +47,6 @@ - type: roleLoadout id: JobCP14Innkeeper groups: - - CP14SkillTree - CP14GeneralHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -64,7 +61,6 @@ - type: roleLoadout id: JobCP14Blacksmith groups: - - CP14SkillTree - CP14GeneralHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -79,7 +75,6 @@ - type: roleLoadout id: JobCP14GuardCommander groups: - - CP14SkillTree - CP14GuardHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -90,12 +85,10 @@ - CP14GeneralShoes - CP14GeneralBack - CP14GeneralTrinkets - - CP14GuardSpells - type: roleLoadout id: JobCP14Guard groups: - - CP14SkillTree - CP14GuardHead - CP14GeneralOuterClothing - CP14GeneralEyes @@ -106,16 +99,12 @@ - CP14GeneralShoes - CP14GeneralBack - CP14GeneralTrinkets - - CP14GuardSpells - type: roleLoadout id: JobCP14Commandant groups: - - CP14SkillTree - - CP14CommandantHead - CP14MerchantOuterClothing - CP14GeneralEyes - - CP14CommandantCloak - CP14MerchantShirt - CP14MerchantPants - CP14MerchantShoes @@ -125,7 +114,6 @@ - type: roleLoadout id: JobCP14Guildmaster groups: - - CP14SkillTree - CP14GuildmasterOuterClothing - CP14GeneralEyes - CP14GuildmasterHead @@ -135,12 +123,10 @@ - CP14GuildmasterShoes - CP14GeneralBack - CP14GeneralTrinkets - - CP14GuildmasterSpells - type: roleLoadout id: JobCP14Merchant groups: - - CP14SkillTree - CP14MerchantHead - CP14MerchantOuterClothing - CP14GeneralEyes diff --git a/Resources/Prototypes/_CP14/Loadouts/skill_tree.yml b/Resources/Prototypes/_CP14/Loadouts/skill_tree.yml deleted file mode 100644 index 9bacabc0de..0000000000 --- a/Resources/Prototypes/_CP14/Loadouts/skill_tree.yml +++ /dev/null @@ -1,110 +0,0 @@ -- type: loadoutGroup - id: CP14SkillTree - name: cp14-loadout-skill-tree - minLimit: 2 - maxLimit: 2 - loadouts: - - CP14SkillTreeMetamagic - - CP14SkillTreeHydrosophistry - - CP14SkillTreePyrokinetic - - CP14SkillTreeIllusion - - CP14SkillTreeHealing - - CP14SkillTreeAtlethic - - - -- type: entity - id: CP14SkillTreePyrokineticLoadoutDummy - name: Pyrokinetic - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: pyro - -- type: loadout - id: CP14SkillTreePyrokinetic - dummyEntity: CP14SkillTreePyrokineticLoadoutDummy - skillTree: - Pyrokinetic: 2 - - - -- type: entity - id: CP14SkillTreeHydrosophistryLoadoutDummy - name: Hydrosophistry - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: water - -- type: loadout - id: CP14SkillTreeHydrosophistry - dummyEntity: CP14SkillTreeHydrosophistryLoadoutDummy - skillTree: - Hydrosophistry: 2 - - -- type: entity - id: CP14SkillTreeIllusionLoadoutDummy - name: Illusion - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: light - -- type: loadout - id: CP14SkillTreeIllusion - dummyEntity: CP14SkillTreeIllusionLoadoutDummy - skillTree: - Illusion: 2 - - -- type: entity - id: CP14SkillTreeMetamagicLoadoutDummy - name: Metamagic - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: meta - -- type: loadout - id: CP14SkillTreeMetamagic - dummyEntity: CP14SkillTreeMetamagicLoadoutDummy - skillTree: - Metamagic: 2 - - -- type: entity - id: CP14SkillTreeHealingLoadoutDummy - name: Healing - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: heal - -- type: loadout - id: CP14SkillTreeHealing - dummyEntity: CP14SkillTreeHealingLoadoutDummy - skillTree: - Healing: 2 - - -- type: entity - id: CP14SkillTreeAtlethicLoadoutDummy - name: Atlethic - categories: [ HideSpawnMenu ] - components: - - type: Sprite - sprite: _CP14/Actions/skill_tree.rsi - state: atlethic - -- type: loadout - id: CP14SkillTreeAtlethic - dummyEntity: CP14SkillTreeAtlethicLoadoutDummy - skillTree: - Atlethic: 2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml b/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml index a3b8cf4f1b..ca06ed1502 100644 --- a/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml +++ b/Resources/Prototypes/_CP14/LockCategories/lockTypes.yml @@ -209,21 +209,16 @@ # Guard - type: CP14LockType - id: GuardEntrance + id: CityGate complexity: 5 - name: cp14-lock-shaper-guard-entrance + name: cp14-lock-shaper-guard-city-gate - type: CP14LockType - id: Guard + id: GuardBarracks complexity: 5 - name: cp14-lock-shaper-guard-staff + name: cp14-lock-shaper-guard-barracks - type: CP14LockType id: GuardCommander complexity: 7 - name: cp14-lock-shaper-guard-commander - -- type: CP14LockType - id: GuardWeaponStorage - complexity: 7 - name: cp14-lock-shaper-guard-weapon-storage \ No newline at end of file + name: cp14-lock-shaper-guard-commander \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Maps/Pools/default.yml b/Resources/Prototypes/_CP14/Maps/Pools/default.yml index d13581097e..d28bdf5eab 100644 --- a/Resources/Prototypes/_CP14/Maps/Pools/default.yml +++ b/Resources/Prototypes/_CP14/Maps/Pools/default.yml @@ -2,7 +2,7 @@ id: DefaultMapPool maps: - Comoss - - Frigid_Coast + #- Frigid_Coast - type: gameMapPool id: DeathMatchMapPool diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/rapier.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/rapier.yml index 30cde7ac47..acb71501e2 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/Blade/rapier.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/rapier.yml @@ -12,6 +12,9 @@ - BaseWeaponSharp - !type:AddComponents components: + - type: CP14MeleeWeaponSkillRequired + skills: + - RapierMastery - !type:EditMeleeWeapon newWideAnimation: CP14WeaponArcThrust resetOnHandSelected: true # Disable fast swap @@ -29,7 +32,7 @@ addSlots: - Garde - BladeInlay - - !type:EditDamageableModifier # Only 1 ingot t craft, so less health + - !type:EditDamageableModifier # Only 1 ingot craft, so less health multiplier: 2 - type: modularPart diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/sickle.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/sickle.yml index 5102f9f845..74549018fd 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/Blade/sickle.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/sickle.yml @@ -12,7 +12,7 @@ attackRateMultiplier: 1.5 bonusDamage: types: - Slash: 8 + Slash: 5 - !type:EditIncreaseDamageOnWield bonusDamage: types: diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/skimitar.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/skimitar.yml new file mode 100644 index 0000000000..582d56fa18 --- /dev/null +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/skimitar.yml @@ -0,0 +1,87 @@ +#Concept: +# + Additional range +# + High Damage! + Wielded buff +# - Required Warcraft skill + +- type: modularPart + id: BaseBladeSkimitar + modifiers: + - !type:Inherit + copyFrom: + - BaseWeaponChemical + - BaseWeaponSharp + - !type:AddComponents + components: + - type: CP14MeleeWeaponSkillRequired + skills: + - SkimitarMastery + - !type:EditMeleeWeapon + resetOnHandSelected: false # We can fast swing! + bonusRange: 0.2 + angleMultiplier: 1.5 + bonusDamage: + types: + Slash: 8 + - !type:EditIncreaseDamageOnWield + bonusDamage: + types: + Slash: 16 + - !type:EditItem + newSize: Large + adjustShape: 0, 2 + storedOffsetBonus: 0, 10 + - !type:EditModularSlots + addSlots: + - Garde + - BladeInlay + +- type: modularPart + id: BladeIronSkimitar + slots: + - Blade + sourcePart: CP14ScrapIron + rsiPath: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + modifiers: + - !type:Inherit + copyFrom: + - BaseBladeSkimitar + - BaseBladeIron + +- type: modularPart + id: BladeGoldSkimitar + slots: + - Blade + sourcePart: CP14ScrapGold + rsiPath: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + color: "#ffe269" + modifiers: + - !type:Inherit + copyFrom: + - BaseBladeSkimitar + - BaseBladeGold + +- type: modularPart + id: BladeCopperSkimitar + slots: + - Blade + sourcePart: CP14ScrapCopper + rsiPath: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + color: "#e28f08" + modifiers: + - !type:Inherit + copyFrom: + - BaseBladeSkimitar + - BaseBladeCopper + +- type: modularPart + id: BladeMithrilSkimitar + slots: + - Blade + sourcePart: CP14ScrapMithril + rsiPath: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + color: "#38f0b3" + modifiers: + - !type:Inherit + copyFrom: + - BaseBladeSkimitar + - BaseBladeMithril \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/spear.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/spear.yml index df61c8f7a4..2ad6b8d72f 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/Blade/spear.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/spear.yml @@ -26,6 +26,7 @@ - !type:EditMeleeWeapon newWideAnimation: CP14WeaponArcThrust angleMultiplier: 0 + bonusRange: 0.2 bonusDamage: types: Piercing: 8 diff --git a/Resources/Prototypes/_CP14/ModularCraft/Blade/sword.yml b/Resources/Prototypes/_CP14/ModularCraft/Blade/sword.yml index d84fb55711..3a546ca31e 100644 --- a/Resources/Prototypes/_CP14/ModularCraft/Blade/sword.yml +++ b/Resources/Prototypes/_CP14/ModularCraft/Blade/sword.yml @@ -12,6 +12,9 @@ - BaseWeaponSharp - !type:AddComponents components: + - type: CP14MeleeWeaponSkillRequired + skills: + - SwordMastery - !type:EditMeleeWeapon resetOnHandSelected: true # Disable fast swap bonusRange: 0.2 diff --git a/Resources/Prototypes/_CP14/Objectives/empire_orders.yml b/Resources/Prototypes/_CP14/Objectives/empire_orders.yml index bd34ec5ec9..debc0c0d88 100644 --- a/Resources/Prototypes/_CP14/Objectives/empire_orders.yml +++ b/Resources/Prototypes/_CP14/Objectives/empire_orders.yml @@ -53,25 +53,4 @@ weights: CP14TownSendDinoObjective: 1 CP14TownSendMoleObjective: 1 - CP14TownSendBoarObjective: 1 - -# No Demiplane death objective -- type: entity - parent: CP14BaseTownObjective - id: CP14GuildmasterNoDemiplaneDeathObjective - components: - - type: CP14StatisticRangeCondition - statistic: DemiplaneDeaths - range: - min: 0 - max: 3 #TODO Adaptive to player count - objectiveText: cp14-objective-no-demiplane-death-title - objectiveDescription: cp14-objective-no-demiplane-death-desc - objectiveSprite: - sprite: /Textures/_CP14/Objects/ModularTools/Blade/Shovel/metall_shovel.rsi - state: tool - -- type: weightedRandom - id: CP14GuildmasterNoDemiplaneObjectiveGroup - weights: - CP14GuildmasterNoDemiplaneDeathObjective: 1 \ No newline at end of file + CP14TownSendBoarObjective: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Objectives/personal_objectives.yml b/Resources/Prototypes/_CP14/Objectives/personal_objectives.yml index 325c5504b8..f8ae92d123 100644 --- a/Resources/Prototypes/_CP14/Objectives/personal_objectives.yml +++ b/Resources/Prototypes/_CP14/Objectives/personal_objectives.yml @@ -36,22 +36,4 @@ - type: weightedRandom id: CP14PersonalCurrencyCollectObjectiveGroup weights: - CP14PersonalCurrencyCollectObjective: 1 - -#Richest merchant objective -- type: entity - parent: CP14BasePersonalObjective - id: CP14PersonalObjectiveRichestMerchant - components: - - type: CP14RichestJobCondition - job: CP14Merchant - objectiveText: cp14-objective-personal-richest-merchant-title - objectiveDescription: cp14-objective-personal-richest-merchant-desc - objectiveSprite: - sprite: /Textures/_CP14/Objects/Economy/pp_coin.rsi - state: coin10 - -- type: weightedRandom - id: CP14PersonalObjectiveRichestMerchantGroup - weights: - CP14PersonalObjectiveRichestMerchant: 1 \ No newline at end of file + CP14PersonalCurrencyCollectObjective: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Parallax/astral.yml b/Resources/Prototypes/_CP14/Parallax/astral.yml new file mode 100644 index 0000000000..fca84a138d --- /dev/null +++ b/Resources/Prototypes/_CP14/Parallax/astral.yml @@ -0,0 +1,18 @@ +- type: parallax + id: CP14Astral + layers: + - texture: + !type:ImageParallaxTextureSource + path: "/Textures/Parallaxes/KettleParallaxBG.png" + slowness: 0.998046875 + scale: "1, 1" + - texture: + !type:GeneratedParallaxTextureSource + id: "hq_wizard_stars" + configPath: "/Prototypes/_CP14/Parallax/stars_purple.toml" + slowness: 0.696625 + - texture: + !type:GeneratedParallaxTextureSource + id: "hq_wizard_stars" + configPath: "/Prototypes/_CP14/Parallax/stars_purple_2.toml" + slowness: 0.896625 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Parallax/stars_purple.toml b/Resources/Prototypes/_CP14/Parallax/stars_purple.toml new file mode 100644 index 0000000000..0516e9de90 --- /dev/null +++ b/Resources/Prototypes/_CP14/Parallax/stars_purple.toml @@ -0,0 +1,56 @@ +# Clear to black. +[[layers]] +type = "clear" +color = "#000000" + +# Bright background nebula stars. +[[layers]] +type = "points" +closecolor = "#aa47ad" +count = 1000 +seed = 3472 +mask = true +masknoise_type = "fbm" +maskoctaves = 4 +maskpersistence = "0.5" +maskpower = "0.35" +masklacunarity = "1.5" +maskfrequency = "3" +maskthreshold = "0.37" +maskseed = 3551 + +# Bright background nebula stars, dim edge. +[[layers]] +type = "points" +closecolor = "#41244a" +pointsize = 2 +count = 1000 +seed = 3472 +mask = true +masknoise_type = "fbm" +maskoctaves = 4 +maskpersistence = "0.5" +maskpower = "0.35" +masklacunarity = "1.5" +maskfrequency = "3" +maskthreshold = "0.37" +maskseed = 3551 + +# Couple of bright pink stars. +[[layers]] +type = "points" +closecolor = "#ff63ef" +count = 30 +seed = 6454 + +# And their dim edge. +[[layers]] +type = "points" +closecolor = "#301a43" +pointsize = 2 +count = 30 +seed = 6454 + +# Colour-to-alpha. +[[layers]] +type = "toalpha" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Parallax/stars_purple_2.toml b/Resources/Prototypes/_CP14/Parallax/stars_purple_2.toml new file mode 100644 index 0000000000..ed499c6a08 --- /dev/null +++ b/Resources/Prototypes/_CP14/Parallax/stars_purple_2.toml @@ -0,0 +1,56 @@ +# Clear to black. +[[layers]] +type = "clear" +color = "#000000" + +# Bright background nebula stars. +[[layers]] +type = "points" +closecolor = "#aa47ad" +count = 1000 +seed = 4810 +mask = true +masknoise_type = "fbm" +maskoctaves = 4 +maskpersistence = "0.5" +maskpower = "0.35" +masklacunarity = "1.5" +maskfrequency = "3" +maskthreshold = "0.37" +maskseed = 3551 + +# Bright background nebula stars, dim edge. +[[layers]] +type = "points" +closecolor = "#41244a" +pointsize = 2 +count = 1000 +seed = 4810 +mask = true +masknoise_type = "fbm" +maskoctaves = 4 +maskpersistence = "0.5" +maskpower = "0.35" +masklacunarity = "1.5" +maskfrequency = "3" +maskthreshold = "0.37" +maskseed = 3551 + +# Couple of bright pink stars. +[[layers]] +type = "points" +closecolor = "#ff63ef" +count = 30 +seed = 9019 + +# And their dim edge. +[[layers]] +type = "points" +closecolor = "#301a43" +pointsize = 2 +count = 30 +seed = 9019 + +# Colour-to-alpha. +[[layers]] +type = "toalpha" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_caves.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave.yml similarity index 94% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_caves.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave.yml index ca25a536f2..fd3ae758a1 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_caves.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave.yml @@ -2,7 +2,10 @@ id: T1Caves levels: min: 1 - max: 4 + max: 5 + icon: + sprite: _CP14/Interface/Misc/demiplane_locations.rsi + state: caves locationConfig: CP14DemiplaneCaves name: cp14-demiplane-location-cave tags: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_ice_caves.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_ice.yml similarity index 86% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_ice_caves.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_ice.yml index 15abbe3b25..c363aa95b8 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_ice_caves.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_ice.yml @@ -1,8 +1,11 @@ - type: cp14DemiplaneLocation id: T1IceCaves levels: - min: 1 - max: 10 + min: 2 + max: 7 + icon: + sprite: _CP14/Interface/Misc/demiplane_locations.rsi + state: ice_caves locationConfig: CP14DemiplaneIceCaves name: cp14-demiplane-location-ice-cave tags: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_magma_caves.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_magma.yml similarity index 96% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_magma_caves.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_magma.yml index a6daa865be..d0349520fc 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_magma_caves.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_magma.yml @@ -1,8 +1,11 @@ - type: cp14DemiplaneLocation id: T1MagmaCaves levels: - min: 3 + min: 4 max: 10 + icon: + sprite: _CP14/Interface/Misc/demiplane_locations.rsi + state: magma_caves locationConfig: CP14DemiplaneCavesRing name: cp14-demiplane-location-cave-magma tags: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_grass_geode.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_swamp.yml similarity index 94% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_grass_geode.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_swamp.yml index 8bf603909c..3e31fc3375 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_grass_geode.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/cave_swamp.yml @@ -1,8 +1,11 @@ - type: cp14DemiplaneLocation - id: T1SwampGeode + id: T1SwampCaves levels: - min: 4 - max: 10 + min: 2 + max: 5 + icon: + sprite: _CP14/Interface/Misc/demiplane_locations.rsi + state: swamp_caves locationConfig: CP14DemiplaneSwampGeode name: cp14-demiplane-location-cave-grass tags: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_grassland_island.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/island_grassland.yml similarity index 95% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_grassland_island.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/island_grassland.yml index 966269a95b..a8f975cb0e 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_grassland_island.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/island_grassland.yml @@ -2,7 +2,10 @@ id: T1GrasslandIsland levels: min: 1 - max: 4 + max: 2 + icon: + sprite: _CP14/Interface/Misc/demiplane_locations.rsi + state: grassland_island locationConfig: CP14DemiplaneGrasslandIsland name: cp14-demiplane-location-grassland-island tags: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_snow_island.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/island_snow.yml similarity index 93% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_snow_island.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/island_snow.yml index b55a492fb6..d1b1ec45ca 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_snow_island.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/island_snow.yml @@ -1,8 +1,11 @@ - type: cp14DemiplaneLocation id: T1SnowIsland levels: - min: 1 - max: 10 + min: 2 + max: 5 + icon: + sprite: _CP14/Interface/Misc/demiplane_locations.rsi + state: snow_island locationConfig: CP14DemiplaneSnowIsland name: cp14-demiplane-location-snow-island tags: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_leaf_maze.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/leaf_maze.yml similarity index 89% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_leaf_maze.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/leaf_maze.yml index 6765e273b3..b8e81b530a 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_leaf_maze.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/leaf_maze.yml @@ -1,8 +1,11 @@ - type: cp14DemiplaneLocation id: T1LeafMaze levels: - min: 4 - max: 10 + min: 3 + max: 6 + icon: + sprite: _CP14/Interface/Misc/demiplane_locations.rsi + state: leaf_maze locationConfig: CP14DemiplaneLeafMaze name: cp14-demiplane-location-leaf-maze tags: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_grassland_island_ring.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_grassland_island_ring.yml deleted file mode 100644 index fde319c8f2..0000000000 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t2_grassland_island_ring.yml +++ /dev/null @@ -1,110 +0,0 @@ -- type: cp14DemiplaneLocation - id: T1GrasslandIslandRing - levels: - min: 1 - max: 4 - locationConfig: CP14DemiplaneGrasslandIslandRing - name: cp14-demiplane-location-grassland-island - tags: - - CP14DemiplaneOpenSky - - CP14DemiplaneHerbals - - CP14DemiplanePeacefulAnimals - components: - - type: MapLight - ambientLightColor: "#BFEEFFFF" - - type: CP14CloudShadows - - type: Biome - template: CP14SandOceanFill - - type: SunShadow - - type: SunShadowCycle - - type: Roof - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRing - layers: - # Masks - - !type:PrototypeDunGen - proto: CP14DemiplaneGrasslandIslandRingFloorMaskSand - - !type:PrototypeDunGen - proto: CP14DemiplaneGrasslandIslandRingFloorMaskGrass - - !type:PrototypeDunGen - proto: CP14DemiplaneGrasslandIslandRingFloorMaskSand2 - - !type:PrototypeDunGen - proto: CP14DemiplaneGrasslandIslandRingFloorMaskWater - # Biomes - - !type:BiomeDunGen - biomeTemplate: CP14GrasslandTestResult - tileMask: - - CP14FloorGrass - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRingFloorMaskSand - layers: - - !type:NoiseDistanceDunGen - size: 210, 210 - distanceConfig: !type:DunGenEuclideanSquaredDistance - blendWeight: 0.7 - layers: - - tile: CP14FloorSand - threshold: 0.50 - noise: - frequency: 0.005 - noiseType: OpenSimplex2 - fractalType: FBm - octaves: 5 - lacunarity: 2 - gain: 0.5 - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRingFloorMaskGrass - layers: - - !type:NoiseDistanceDunGen - size: 190, 190 - distanceConfig: !type:DunGenEuclideanSquaredDistance - blendWeight: 0.7 - layers: - - tile: CP14FloorGrass - threshold: 0.50 - noise: - frequency: 0.005 - noiseType: OpenSimplex2 - fractalType: FBm - octaves: 5 - lacunarity: 2 - gain: 0.5 - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRingFloorMaskSand2 - layers: - - !type:NoiseDistanceDunGen - size: 120, 120 - distanceConfig: !type:DunGenEuclideanSquaredDistance - blendWeight: 0.7 - layers: - - tile: CP14FloorSand - threshold: 0.50 - noise: - frequency: 0.005 - noiseType: OpenSimplex2 - fractalType: FBm - octaves: 5 - lacunarity: 2 - gain: 0.5 - -- type: dungeonConfig - id: CP14DemiplaneGrasslandIslandRingFloorMaskWater - layers: - - !type:NoiseDistanceDunGen - size: 110, 110 - distanceConfig: !type:DunGenEuclideanSquaredDistance - blendWeight: 0.7 - layers: - - tile: Space - threshold: 0.50 - noise: - frequency: 0.005 - noiseType: OpenSimplex2 - fractalType: FBm - octaves: 5 - lacunarity: 2 - gain: 0.5 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_wastelands.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/wastelands.yml similarity index 90% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_wastelands.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/wastelands.yml index c50ca128bc..df6bbf3b97 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/t1_wastelands.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Locations/wastelands.yml @@ -1,8 +1,11 @@ - type: cp14DemiplaneLocation id: T1Wastelands levels: - min: 1 - max: 4 + min: 3 + max: 7 + icon: + sprite: _CP14/Interface/Misc/demiplane_locations.rsi + state: wastelands locationConfig: CP14DemiplaneWastelandsIsland name: cp14-demiplane-location-wastelands tags: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/misc.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/misc.yml index 6bc3bac8a1..cd4a73253b 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/misc.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/misc.yml @@ -3,12 +3,12 @@ - type: cp14DemiplaneModifier id: Chasm levels: - min: 4 + min: 3 max: 10 name: cp14-modifier-chasm generationWeight: 0.6 categories: - Danger: 0.33 + Danger: 0.25 layers: - !type:OreDunGen entity: CP14Chasm @@ -28,7 +28,7 @@ max: 10 generationWeight: 0.3 categories: - Danger: 0.33 + Danger: 0.25 blacklistTags: - CP14DemiplaneCold - CP14DemiplaneHerbals @@ -60,13 +60,13 @@ maxGroupSize: 2 - type: cp14DemiplaneModifier - id: ShadowKudzuDebug + id: ShadowKudzu levels: min: 7 max: 10 name: cp14-modifier-shadow-kudzu categories: - Danger: 0.3 + Danger: 0.25 layers: - !type:OreDunGen entity: CP14AstralHaze diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/mobs.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/mobs.yml index d1fd8ac047..796c7b1a4e 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/mobs.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Danger/mobs.yml @@ -4,11 +4,11 @@ id: EnemyZombie levels: min: 1 - max: 4 + max: 6 name: cp14-modifier-zombie generationWeight: 1.5 categories: - Danger: 0.3 + Danger: 0.25 blacklistTags: - CP14DemiplaneHot layers: @@ -40,10 +40,10 @@ id: MonsterMosquito levels: min: 1 - max: 4 + max: 5 name: cp14-modifier-dyno categories: - Danger: 0.2 + Danger: 0.25 requiredTags: - CP14DemiplaneHerbals blacklistTags: @@ -59,10 +59,10 @@ id: SmallHydra levels: min: 1 - max: 4 + max: 5 name: cp14-modifier-dyno categories: - Danger: 0.3 + Danger: 0.25 requiredTags: - CP14DemiplaneHerbals layers: @@ -72,39 +72,6 @@ minGroupSize: 2 maxGroupSize: 3 -- type: cp14DemiplaneModifier - id: EnemySkeleton - levels: - min: 3 - max: 10 - name: cp14-modifier-skeleton - generationWeight: 1.5 - generationProb: 0.5 - categories: - GhostRoleDanger: 1 - layers: - - !type:OreDunGen - entity: CP14SpawnPointGhostDemiplaneSkeleton - count: 1 - minGroupSize: 1 - maxGroupSize: 3 - -- type: cp14DemiplaneModifier - id: EnemyLurker - levels: - min: 3 - max: 10 - generationWeight: 0.33 - generationProb: 0.25 - categories: - GhostRoleDanger: 1 - layers: - - !type:OreDunGen - entity: SpawnPointGhostDemiplaneLurker - count: 1 - minGroupSize: 1 - maxGroupSize: 1 - # TIER 2 - type: cp14DemiplaneModifier @@ -163,22 +130,22 @@ - type: cp14DemiplaneModifier id: MobSlimeElectric levels: - min: 1 + min: 5 max: 10 name: cp14-modifier-slime categories: - Danger: 0.3 + Danger: 0.35 layers: - !type:OreDunGen entity: CP14MobSlimeElectric count: 6 - minGroupSize: 2 - maxGroupSize: 3 + minGroupSize: 1 + maxGroupSize: 1 - type: cp14DemiplaneModifier id: MobSlimeFire levels: - min: 1 + min: 4 max: 10 name: cp14-modifier-slime categories: @@ -189,8 +156,8 @@ - !type:OreDunGen entity: CP14MobSlimeFire count: 6 - minGroupSize: 2 - maxGroupSize: 3 + minGroupSize: 1 + maxGroupSize: 2 - type: cp14DemiplaneModifier id: MobSlimeIce @@ -206,27 +173,27 @@ - !type:OreDunGen entity: CP14MobSlimeIce count: 6 - minGroupSize: 2 - maxGroupSize: 3 + minGroupSize: 1 + maxGroupSize: 2 - type: cp14DemiplaneModifier id: MobSlimeBase levels: min: 1 - max: 10 + max: 5 categories: Danger: 0.25 layers: - !type:OreDunGen entity: CP14MobSlimeBase count: 6 - minGroupSize: 2 - maxGroupSize: 3 + minGroupSize: 1 + maxGroupSize: 2 - type: cp14DemiplaneModifier id: MobWatcherIce levels: - min: 1 + min: 3 max: 10 name: cp14-modifier-watcher categories: @@ -245,7 +212,7 @@ - type: cp14DemiplaneModifier id: MobWatcherMagma levels: - min: 1 + min: 3 max: 10 name: cp14-modifier-watcher categories: @@ -259,4 +226,4 @@ entity: CP14MobWatcherMagma count: 8 minGroupSize: 2 - maxGroupSize: 3 + maxGroupSize: 3 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/GhostRoleDanger/misc.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/GhostRoleDanger/misc.yml new file mode 100644 index 0000000000..b3ae56d7f6 --- /dev/null +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/GhostRoleDanger/misc.yml @@ -0,0 +1,48 @@ +- type: cp14DemiplaneModifier + id: EnemySkeletonT1 + levels: + min: 2 + max: 3 + name: cp14-modifier-skeleton + generationWeight: 1.5 + generationProb: 0.5 + categories: + GhostRoleDanger: 1 + layers: + - !type:OreDunGen + entity: CP14SpawnPointGhostDemiplaneSkeletonT1 + count: 1 + minGroupSize: 1 + maxGroupSize: 3 + +- type: cp14DemiplaneModifier + id: EnemySkeletonT2 + levels: + min: 4 + max: 10 + name: cp14-modifier-skeleton + generationWeight: 2.0 + categories: + GhostRoleDanger: 1 + layers: + - !type:OreDunGen + entity: CP14SpawnPointGhostDemiplaneSkeletonT2 + count: 1 + minGroupSize: 2 + maxGroupSize: 3 + +- type: cp14DemiplaneModifier + id: EnemyLurker + levels: + min: 2 + max: 10 + generationWeight: 0.33 + generationProb: 0.25 + categories: + GhostRoleDanger: 1 + layers: + - !type:OreDunGen + entity: SpawnPointGhostDemiplaneLurker + count: 1 + minGroupSize: 1 + maxGroupSize: 1 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/ores.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Ore/ores.yml similarity index 82% rename from Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/ores.yml rename to Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Ore/ores.yml index a4a3cde9c7..21c0d12464 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/ores.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Ore/ores.yml @@ -8,7 +8,7 @@ name: cp14-modifier-iron-ore unique: false categories: - Reward: 0.4 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneOpenSky @@ -17,9 +17,9 @@ entityMask: - CP14WallStone entity: CP14WallStoneIronOre - count: 15 - minGroupSize: 1 - maxGroupSize: 3 + count: 20 + minGroupSize: 2 + maxGroupSize: 4 - type: cp14DemiplaneModifier id: IronOreUnderground @@ -29,7 +29,7 @@ name: cp14-modifier-iron-ore unique: false categories: - Reward: 0.4 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneUnderground @@ -38,19 +38,19 @@ entityMask: - CP14WallStone entity: CP14WallStoneIronOre - count: 20 - minGroupSize: 1 - maxGroupSize: 3 + count: 15 + minGroupSize: 4 + maxGroupSize: 6 - type: cp14DemiplaneModifier id: CopperOre levels: min: 1 - max: 4 + max: 5 name: cp14-modifier-copper-ore unique: false categories: - Reward: 0.3 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneOpenSky @@ -59,19 +59,19 @@ entityMask: - CP14WallStone entity: CP14WallStoneCopperOre - count: 15 - minGroupSize: 1 - maxGroupSize: 3 + count: 20 + minGroupSize: 2 + maxGroupSize: 4 - type: cp14DemiplaneModifier id: CopperOreUnderground levels: min: 1 - max: 4 + max: 5 name: cp14-modifier-copper-ore unique: false categories: - Reward: 0.3 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneUnderground @@ -80,21 +80,21 @@ entityMask: - CP14WallStone entity: CP14WallStoneCopperOre - count: 20 - minGroupSize: 1 - maxGroupSize: 3 + count: 15 + minGroupSize: 4 + maxGroupSize: 6 # TIER 2 - type: cp14DemiplaneModifier id: GoldOre levels: - min: 5 - max: 6 + min: 2 + max: 10 name: cp14-modifier-gold-ore unique: false categories: - Reward: 0.5 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneOpenSky @@ -103,19 +103,19 @@ entityMask: - CP14WallStone entity: CP14WallStoneGoldOre - count: 5 - minGroupSize: 1 - maxGroupSize: 3 + count: 10 + minGroupSize: 2 + maxGroupSize: 4 - type: cp14DemiplaneModifier id: GoldOreUnderground levels: - min: 3 - max: 6 + min: 2 + max: 10 name: cp14-modifier-gold-ore unique: false categories: - Reward: 0.5 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneUnderground @@ -124,19 +124,19 @@ entityMask: - CP14WallStone entity: CP14WallStoneGoldOre - count: 10 - minGroupSize: 1 - maxGroupSize: 3 + count: 15 + minGroupSize: 2 + maxGroupSize: 4 - type: cp14DemiplaneModifier id: MithrilOre levels: - min: 5 + min: 3 max: 10 name: cp14-modifier-mithril-ore unique: false categories: - Reward: 0.5 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneOpenSky @@ -146,18 +146,18 @@ - CP14WallStone entity: CP14WallStoneMithrilOre count: 10 - minGroupSize: 1 - maxGroupSize: 3 + minGroupSize: 2 + maxGroupSize: 4 - type: cp14DemiplaneModifier id: MithrilOreUnderground levels: - min: 5 + min: 3 max: 10 name: cp14-modifier-mithril-ore unique: false categories: - Reward: 0.5 + Ore: 0.25 requiredTags: - CP14DemiplaneOres - CP14DemiplaneUnderground @@ -167,5 +167,5 @@ - CP14WallStone entity: CP14WallStoneMithrilOre count: 15 - minGroupSize: 1 - maxGroupSize: 3 + minGroupSize: 2 + maxGroupSize: 4 diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/crystals.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/crystals.yml index 2082cd9bab..c36cdaee0c 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/crystals.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/crystals.yml @@ -1,151 +1,16 @@ - - type: cp14DemiplaneModifier - id: CrystalNormal + id: Quartz levels: min: 1 - max: 3 - generationWeight: 0.1 + max: 8 categories: - Reward: 0.1 + Reward: 0.15 layers: - !type:OreDunGen tileMask: - CP14FloorBase - entity: CP14CrystalEmpty + - CP14FloorIce + entity: CP14CrystalQuartz count: 30 minGroupSize: 1 - maxGroupSize: 5 - -# TIER 2 - -- type: cp14DemiplaneModifier - id: CrystalFire - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - requiredTags: - - CP14DemiplaneHot - layers: - - !type:OreDunGen - entity: CP14CrystalFire - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeFire - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalEarth - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - requiredTags: - - CP14DemiplaneUnderground - blacklistTags: - - CP14DemiplaneOpenSky - layers: - - !type:OreDunGen - entity: CP14CrystalEarth - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeEarth - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalWater - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - requiredTags: - - CP14DemiplaneWater - layers: - - !type:OreDunGen - entity: CP14CrystalWater - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeWater - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalAir - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - requiredTags: - - CP14DemiplaneOpenSky - blacklistTags: - - CP14DemiplaneUnderground - layers: - - !type:OreDunGen - entity: CP14CrystalAir - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeAir - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalOrder - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - layers: - - !type:OreDunGen - entity: CP14CrystalOrder - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeOrder - count: 3 - minGroupSize: 1 - maxGroupSize: 1 - -- type: cp14DemiplaneModifier - id: CrystalChaos - levels: - min: 4 - max: 10 - generationWeight: 0.1 - categories: - Reward: 0.1 - layers: - - !type:OreDunGen - entity: CP14CrystalChaos - count: 30 - minGroupSize: 1 - maxGroupSize: 5 - - !type:OreDunGen - entity: CP14EssenceNodeChaos - count: 3 - minGroupSize: 1 - maxGroupSize: 1 \ No newline at end of file + maxGroupSize: 5 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/herbals.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/herbals.yml index fe70d50885..0d98423bc4 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/herbals.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/herbals.yml @@ -7,7 +7,7 @@ max: 10 name: cp14-modifier-dayflin categories: - Reward: 0.1 + Reward: 0.15 requiredTags: - CP14DemiplaneHerbals - CP14DemiplaneOpenSky @@ -29,7 +29,7 @@ max: 10 name: cp14-modifier-fly-agaric categories: - Reward: 0.1 + Reward: 0.15 requiredTags: - CP14DemiplaneHerbals layers: @@ -51,7 +51,7 @@ max: 10 name: cp14-modifier-blue-amanita categories: - Reward: 0.1 + Reward: 0.15 requiredTags: - CP14DemiplaneHerbals layers: @@ -72,7 +72,7 @@ max: 10 name: cp14-modifier-blood-flower categories: - Reward: 0.1 + Reward: 0.15 requiredTags: - CP14DemiplaneHerbals layers: @@ -93,7 +93,7 @@ max: 10 name: cp14-modifier-wild-sage categories: - Reward: 0.1 + Reward: 0.15 requiredTags: - CP14DemiplaneHerbals - CP14DemiplaneOpenSky @@ -115,7 +115,7 @@ max: 10 name: cp14-modifier-air-lily categories: - Reward: 0.1 + Reward: 0.15 requiredTags: - CP14DemiplaneHerbals - CP14DemiplaneWater @@ -138,7 +138,7 @@ max: 10 name: cp14-modifier-lumisroom categories: - Reward: 0.1 + Reward: 0.15 requiredTags: - CP14DemiplaneUnderground layers: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/misc.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/misc.yml index 94672fe3f5..93d254a823 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/misc.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/misc.yml @@ -4,10 +4,10 @@ id: LootT1 levels: min: 1 - max: 4 + max: 3 generationWeight: 2 categories: - Reward: 0.35 + Reward: 0.15 layers: - !type:OreDunGen entity: CP14SpawnerDemiplaneLootT1 @@ -23,7 +23,7 @@ name: cp14-modifier-rabbits generationWeight: 0.4 categories: - Reward: 0.2 + Reward: 0.15 requiredTags: - CP14DemiplanePeacefulAnimals layers: @@ -58,7 +58,7 @@ max: 10 generationWeight: 0.4 categories: - Reward: 0.2 + Reward: 0.1 requiredTags: - CP14DemiplaneAnimalsSwamp layers: @@ -80,7 +80,7 @@ name: cp14-modifier-sheeps generationWeight: 0.4 categories: - Reward: 0.2 + Reward: 0.15 requiredTags: - CP14DemiplanePeacefulAnimals layers: @@ -90,6 +90,22 @@ minGroupSize: 4 maxGroupSize: 5 +- type: cp14DemiplaneModifier + id: Ruins + levels: + min: 0 + max: 10 + name: cp14-modifier-ruins + categories: + Reward: 0.2 + generationProb: 0.8 + layers: + - !type:OreDunGen + entity: CP14DemiplaneRuinsRoomSpawner + count: 8 + minGroupSize: 1 + maxGroupSize: 1 + # TIER 2 - type: cp14DemiplaneModifier @@ -99,7 +115,7 @@ max: 10 generationWeight: 2 categories: - Reward: 0.35 + Reward: 0.15 layers: - !type:OreDunGen entity: CP14SpawnerDemiplaneLootT2 diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/rooms.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/rooms.yml index afb13626f8..690f774b8e 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/rooms.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/Reward/rooms.yml @@ -1,7 +1,7 @@ - type: cp14DemiplaneModifier id: ArtifactRoom levels: - min: 1 + min: 3 max: 10 generationWeight: 2 categories: diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/categories.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/categories.yml index 082788b723..02e5f13efe 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/categories.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/categories.yml @@ -7,6 +7,9 @@ - type: cp14DemiplaneModifierCategory id: Reward +- type: cp14DemiplaneModifierCategory + id: Ore + - type: cp14DemiplaneModifierCategory id: Fun diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/special.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/special.yml index 5c7eeb9cf7..2c3afecc9c 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/special.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Modifiers/special.yml @@ -9,17 +9,12 @@ maxGroupSize: 1 - type: cp14DemiplaneModifier - id: Ruins - levels: - min: 0 - max: 10 - categories: - Reward: 0.1 - generationProb: 0.8 + id: Core + generationProb: 0 layers: - !type:OreDunGen - entity: CP14DemiplaneRuinsRoomSpawner - count: 8 + entity: CP14DemiplanCoreRoomMarker + count: 1 minGroupSize: 1 maxGroupSize: 1 @@ -37,16 +32,22 @@ count: 20 minGroupSize: 1 maxGroupSize: 1 + +- type: cp14DemiplaneModifier + id: DemiplaneDecor + generationProb: 0 + layers: - !type:OreDunGen entity: CP14AstralCorrosion count: 15 minGroupSize: 3 maxGroupSize: 10 - -- type: cp14DemiplaneModifier - id: TimeLimit10 - generationProb: 0 - name: cp14-modifier-time-limit-10 - components: - - type: CP14DemiplaneTimedDestruction - timeToDestruction: 600 # 10 minutes \ No newline at end of file + - !type:OreDunGen + entityMask: + - CP14WallStone + - CP14WallDirt + - CP14WallSnow + entity: CP14WallDimensit + count: 5 + minGroupSize: 3 + maxGroupSize: 5 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/Special/misc.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/Special/misc.yml new file mode 100644 index 0000000000..68aa286e98 --- /dev/null +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/Special/misc.yml @@ -0,0 +1,71 @@ +- type: cp14SpecialDemiplane + id: Ensure4Entry1 + levels: + min: 1 + max: 1 + +- type: cp14SpecialDemiplane + id: Ensure4Entry2 + levels: + min: 1 + max: 1 + +- type: cp14SpecialDemiplane + id: Ensure4Entry3 + levels: + min: 1 + max: 1 + +- type: cp14SpecialDemiplane + id: Ensure4Entry4 + levels: + min: 1 + max: 1 + +- type: cp14SpecialDemiplane + id: Test + levels: + min: 5 + max: 5 + +- type: cp14SpecialDemiplane + id: Test2 + levels: + min: 5 + max: 5 + +- type: cp14SpecialDemiplane + id: Test3 + levels: + min: 5 + max: 5 + +- type: cp14SpecialDemiplane + id: Test4 + levels: + min: 5 + max: 5 + +- type: cp14SpecialDemiplane + id: Test5 + levels: + min: 5 + max: 5 + +- type: cp14SpecialDemiplane + id: Test6 + levels: + min: 5 + max: 5 + +- type: cp14SpecialDemiplane + id: Test7 + levels: + min: 9 + max: 10 + +- type: cp14SpecialDemiplane + id: Test8 + levels: + min: 9 + max: 10 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/core_room.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/core_room.yml new file mode 100644 index 0000000000..c293a58948 --- /dev/null +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/core_room.yml @@ -0,0 +1,50 @@ +- type: Tag + id: CP14DemiplanCoreRoom + +- type: entity + id: CP14DemiplanCoreRoomMarker + categories: [ ForkFiltered ] + parent: BaseRoomMarker + name: Demiplane Core room marker + components: + - type: RoomFill + clearExisting: true + roomWhitelist: + tags: + - CP14DemiplanCoreRoom + +- type: dungeonRoom + id: CP14DemiplanCoreRoom_1 + size: 7,7 + atlas: /Maps/_CP14/Dungeon/demiplane_core.yml + ignoreTile: FloorShuttlePurple + offset: 0,0 + tags: + - CP14DemiplanCoreRoom + +- type: dungeonRoom + id: CP14DemiplanCoreRoom_2 + size: 7,7 + atlas: /Maps/_CP14/Dungeon/demiplane_core.yml + ignoreTile: FloorShuttlePurple + offset: 8,0 + tags: + - CP14DemiplanCoreRoom + +- type: dungeonRoom + id: CP14DemiplanCoreRoom_3 + size: 7,7 + atlas: /Maps/_CP14/Dungeon/demiplane_core.yml + ignoreTile: FloorShuttlePurple + offset: 16,0 + tags: + - CP14DemiplanCoreRoom + +- type: dungeonRoom + id: CP14DemiplanCoreRoom_4 + size: 7,7 + atlas: /Maps/_CP14/Dungeon/demiplane_core.yml + ignoreTile: FloorShuttlePurple + offset: 24,0 + tags: + - CP14DemiplanCoreRoom \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Procedural/Demiplane/enter_room.yml b/Resources/Prototypes/_CP14/Procedural/Demiplane/enter_room.yml index 1220daa5d8..ba6a60c7ea 100644 --- a/Resources/Prototypes/_CP14/Procedural/Demiplane/enter_room.yml +++ b/Resources/Prototypes/_CP14/Procedural/Demiplane/enter_room.yml @@ -16,7 +16,7 @@ - type: dungeonRoom id: CP14DemiplanEnterRoom_1 size: 7,7 - atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml + atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml ignoreTile: FloorShuttlePurple offset: 0,0 tags: @@ -25,7 +25,7 @@ - type: dungeonRoom id: CP14DemiplanEnterRoom_2 size: 7,7 - atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml + atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml ignoreTile: FloorShuttlePurple offset: 8,0 tags: @@ -34,7 +34,7 @@ - type: dungeonRoom id: CP14DemiplanEnterRoom_3 size: 7,7 - atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml + atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml ignoreTile: FloorShuttlePurple offset: 16,0 tags: @@ -43,7 +43,7 @@ - type: dungeonRoom id: CP14DemiplanEnterRoom_4 size: 7,7 - atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml + atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml ignoreTile: FloorShuttlePurple offset: 24,0 tags: @@ -52,7 +52,7 @@ - type: dungeonRoom id: CP14DemiplanEnterRoom_5 size: 7,7 - atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml + atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml ignoreTile: FloorShuttlePurple offset: 0,8 tags: @@ -61,7 +61,7 @@ - type: dungeonRoom id: CP14DemiplanEnterRoom_6 size: 9,7 - atlas: /Maps/_CP14/Dungeon/demiplan_enter.yml + atlas: /Maps/_CP14/Dungeon/demiplane_enter.yml ignoreTile: FloorShuttlePurple offset: 8,8 tags: diff --git a/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/alcohol.yml b/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/alcohol.yml index a9db89820b..b3aa5bb00d 100644 --- a/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/alcohol.yml +++ b/Resources/Prototypes/_CP14/Reagents/Consumable/Drink/alcohol.yml @@ -5,7 +5,8 @@ name: cp14-reagent-name-dwarfbeer parent: BaseAlcohol desc: cp14-reagent-desc-beer - slippery: true + slipData: + requiredSlipSpeed: 3.5 physicalDesc: reagent-physical-desc-strong-smelling flavor: CP14dwarfbeer color: "#4b3620" diff --git a/Resources/Prototypes/_CP14/Reagents/blood.yml b/Resources/Prototypes/_CP14/Reagents/blood.yml index 58dd4e3f33..e92362116b 100644 --- a/Resources/Prototypes/_CP14/Reagents/blood.yml +++ b/Resources/Prototypes/_CP14/Reagents/blood.yml @@ -7,7 +7,6 @@ color: "#800000" recognizable: true physicalDesc: cp14-reagent-physical-desc-ferrous - slippery: false footstepSound: collection: FootstepBlood params: @@ -43,7 +42,6 @@ color: "#802020" recognizable: true physicalDesc: cp14-reagent-physical-desc-ferrous - slippery: false footstepSound: collection: FootstepBlood params: @@ -71,7 +69,6 @@ color: "#800000" recognizable: true physicalDesc: cp14-reagent-physical-desc-ferrous - slippery: false footstepSound: collection: FootstepBlood params: @@ -86,7 +83,6 @@ color: "#803300" recognizable: true physicalDesc: cp14-reagent-physical-desc-ferrous - slippery: false footstepSound: collection: FootstepBlood params: @@ -136,7 +132,6 @@ color: "#80003e" recognizable: true physicalDesc: cp14-reagent-physical-desc-ferrous - slippery: false footstepSound: collection: FootstepBlood params: @@ -178,7 +173,6 @@ color: "#576e35" recognizable: true physicalDesc: cp14-reagent-physical-desc-ferrous - slippery: false footstepSound: collection: FootstepBlood params: diff --git a/Resources/Prototypes/_CP14/Reagents/magic_essence.yml b/Resources/Prototypes/_CP14/Reagents/magic_essence.yml index f7e70252f1..3b414b59e8 100644 --- a/Resources/Prototypes/_CP14/Reagents/magic_essence.yml +++ b/Resources/Prototypes/_CP14/Reagents/magic_essence.yml @@ -190,4 +190,4 @@ color: "#5497d6" tileReactions: - !type:CreateEntityTileReaction - entity: CP14EssenceMagic \ No newline at end of file + entity: CP14EssenceMagic diff --git a/Resources/Prototypes/_CP14/Reagents/precurser.yml b/Resources/Prototypes/_CP14/Reagents/precurser.yml index 0e78cd33d1..69632e2192 100644 --- a/Resources/Prototypes/_CP14/Reagents/precurser.yml +++ b/Resources/Prototypes/_CP14/Reagents/precurser.yml @@ -10,7 +10,6 @@ flavor: CP14Metallic color: "#5c1f0a" physicalDesc: cp14-reagent-physical-desc-ferrous - slippery: false footstepSound: collection: FootstepBlood params: @@ -24,7 +23,6 @@ flavor: CP14Sweetly color: "#ffe269" physicalDesc: cp14-reagent-physical-desc-pureed - slippery: false - type: reagent id: CP14AirLily @@ -84,7 +82,6 @@ flavor: CP14Bitterly color: "#89a195" physicalDesc: cp14-reagent-physical-desc-colorless - slippery: false metabolisms: Poison: effects: @@ -111,7 +108,6 @@ flavor: CP14Vomit color: "#36c98f" physicalDesc: cp14-reagent-physical-desc-colorless - slippery: false metabolisms: Poison: effects: @@ -164,7 +160,8 @@ flavor: CP14Vomit color: "#3b4872" physicalDesc: cp14-reagent-physical-desc-colorless - slippery: true + slipData: + requiredSlipSpeed: 3.5 metabolisms: Food: effects: diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/lighting.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/lighting.yml index d8b02a1b6f..f89e28747b 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/lighting.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/lighting.yml @@ -9,10 +9,10 @@ - to: CP14Bonfire steps: - material: CP14Stone - amount: 3 + amount: 2 doAfter: 2 - stackGroup: WoodenPlanks - amount: 2 + amount: 1 doAfter: 2 - node: CP14Bonfire diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/mannequin.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/mannequin.yml index 3e451d18ef..3d359ca282 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/mannequin.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/mannequin.yml @@ -11,7 +11,7 @@ - !type:SnapToGrid { } steps: - stackGroup: WoodenPlanks - amount: 5 + amount: 2 doAfter: 3 - node: CP14mannequin entity: CP14Mannequin @@ -21,7 +21,7 @@ - !type:EmptyAllContainers - !type:SpawnPrototype prototype: CP14WoodenPlanks1 - amount: 5 + amount: 2 steps: - tool: CP14Hammering doAfter: 3 diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/orders_border.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/orders_border.yml index 741908c9df..9a8e185606 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/orders_border.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Furniture/orders_border.yml @@ -9,7 +9,7 @@ - to: CP14WallmountOrdersBorder steps: - stackGroup: WoodenPlanks - amount: 3 + amount: 1 doAfter: 3 - node: CP14WallmountOrdersBorder diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Wallmount/lighting.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Furniture/lighting.yml similarity index 61% rename from Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Wallmount/lighting.yml rename to Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Furniture/lighting.yml index 0cd8ae795b..471ffd24d1 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Wallmount/lighting.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Furniture/lighting.yml @@ -9,8 +9,8 @@ - to: CP14WallmountTorch steps: - stackGroup: WoodenPlanks - amount: 3 - doAfter: 3 + amount: 1 + doAfter: 1 - material: CP14Cloth amount: 1 doAfter: 1 @@ -18,6 +18,26 @@ - node: CP14WallmountTorch entity: CP14WallmountTorch +- type: constructionGraph + id: CP14FloorTorch + start: start + graph: + - node: start + actions: + - !type:DestroyEntity {} + edges: + - to: CP14FloorTorch + steps: + - stackGroup: WoodenPlanks + amount: 1 + doAfter: 1 + - material: CP14Cloth + amount: 1 + doAfter: 1 + + - node: CP14FloorTorch + entity: CP14FloorTorch + - type: constructionGraph id: CP14WallmountLampEmpty start: start diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/structures.yml b/Resources/Prototypes/_CP14/Recipes/Construction/structures.yml index 6407c816a1..de8c7fd797 100644 --- a/Resources/Prototypes/_CP14/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/_CP14/Recipes/Construction/structures.yml @@ -9,7 +9,7 @@ category: construction-category-structures icon: sprite: _CP14/Structures/Furniture/wallmount_torch.rsi - state: fire + state: base objectType: Structure placementMode: SnapgridCenter canBuildInImpassable: false @@ -18,6 +18,24 @@ - !type:TileNotBlocked - !type:CP14WallRequired +- type: construction + crystallPunkAllowed: true + name: floor torch + description: A good, reliable light source. Too bad it doesn't last. + id: CP14FloorTorch + graph: CP14FloorTorch + startNode: start + targetNode: CP14FloorTorch + category: construction-category-structures + icon: + sprite: _CP14/Structures/Furniture/torch_floor.rsi + state: base + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction crystallPunkAllowed: true name: crystal wall lamp diff --git a/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/gauze.yml b/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/gauze.yml index 6783405962..02851e5934 100644 --- a/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/gauze.yml +++ b/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/gauze.yml @@ -8,7 +8,7 @@ steps: - material: CP14Cloth amount: 2 - doAfter: 4 + doAfter: 3 - node: cp14gauze entity: CP14Gauze1 diff --git a/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/herbal_bandage.yml b/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/herbal_bandage.yml index 34326ba336..7085611514 100644 --- a/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/herbal_bandage.yml +++ b/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/herbal_bandage.yml @@ -7,10 +7,8 @@ - to: cp14herbbandage steps: - material: CP14FloraMaterial - amount: 2 - - material: CP14FloraMaterial - amount: 2 - doAfter: 4 + amount: 3 + doAfter: 3 - node: cp14herbbandage entity: CP14HerbalBandage1 diff --git a/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/torch.yml b/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/torch.yml index 9968fae8ac..f89cb8853a 100644 --- a/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/torch.yml +++ b/Resources/Prototypes/_CP14/Recipes/Crafting/Graphs/improvised/torch.yml @@ -7,7 +7,7 @@ - to: cp14torch steps: - material: CP14WoodenPlanks - amount: 3 + amount: 1 - material: CP14Cloth amount: 1 doAfter: 4 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml index 66adfe0f97..727eebc8e5 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/misc.yml @@ -4,6 +4,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14WoodenPlanks count: 2 @@ -18,27 +21,22 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 result: CP14BaseWrench -- type: CP14Recipe - id: CP14Screwdriver - tag: CP14RecipeAnvil - category: Tools - craftTime: 4 - requirements: - - !type:StackResource - stack: CP14IronBar - count: 1 - result: CP14Screwdriver - - type: CP14Recipe id: CP14PlatePie tag: CP14RecipeAnvil craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -50,6 +48,10 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting + - IronMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -64,6 +66,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -75,6 +80,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 4 @@ -86,6 +94,9 @@ category: Armor craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -97,6 +108,9 @@ category: Weapon craftTime: 1 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -109,6 +123,9 @@ category: Weapon craftTime: 1 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -121,6 +138,9 @@ category: Weapon craftTime: 1 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -133,6 +153,9 @@ category: Weapon craftTime: 1 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -145,6 +168,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -156,6 +182,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -167,6 +196,10 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting + - IronMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -184,6 +217,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -195,6 +231,9 @@ category: Tools craftTime: 3 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -206,6 +245,9 @@ category: Tools craftTime: 3 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -217,6 +259,9 @@ category: Tools craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -228,6 +273,9 @@ category: Tools craftTime: 3 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -239,6 +287,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -250,6 +301,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -261,6 +315,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -272,6 +329,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -283,8 +343,27 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 result: CP14LockMithril +- type: CP14Recipe + id: CP14EnergyCrystalMediumEmpty + tag: CP14RecipeAnvil + category: Tools + craftTime: 2 + requirements: + - !type:SkillRequired + skills: + - CopperMelting + - !type:ProtoIdResource + protoId: CP14CrystalShardQuartz + count: 1 + - !type:StackResource + stack: CP14CopperBar + count: 1 + result: CP14EnergyCrystalMediumEmpty diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_aventail.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_aventail.yml index 21cf2c6e60..3da5f78f39 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_aventail.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_aventail.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -53,6 +65,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -75,6 +93,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -86,6 +107,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_blade.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_blade.yml index 8dc4d6d3c4..35ef96680e 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_blade.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_blade.yml @@ -7,6 +7,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -18,6 +21,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -29,6 +35,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -40,6 +49,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -53,6 +65,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -75,6 +93,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -86,6 +107,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -99,6 +123,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -110,6 +137,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -121,6 +151,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -132,6 +165,9 @@ category: Weapon craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -145,6 +181,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -156,6 +195,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -167,6 +209,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -178,6 +223,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -191,6 +239,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -202,6 +253,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -213,6 +267,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -224,6 +281,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -237,6 +297,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -248,6 +311,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -260,6 +326,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -271,6 +340,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -284,6 +356,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -295,6 +370,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -306,6 +384,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -317,6 +398,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -330,6 +414,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -341,6 +428,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -352,6 +442,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -363,6 +456,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -376,6 +472,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -387,6 +486,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -398,6 +500,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -409,6 +514,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -422,6 +530,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -433,6 +544,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -444,6 +558,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -455,6 +572,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -468,6 +588,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -479,6 +602,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -490,6 +616,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -501,6 +630,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -514,6 +646,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -525,6 +660,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -536,6 +674,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -547,6 +688,9 @@ category: Tools craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -560,6 +704,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -571,6 +718,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -582,6 +732,9 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -593,7 +746,68 @@ category: Tools craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 - result: CP14ModularBladeMithrilHoe \ No newline at end of file + result: CP14ModularBladeMithrilHoe + +# Skimitar + +- type: CP14Recipe + id: CP14ModularBladeIronSkimitar + tag: CP14RecipeAnvil + category: Weapon + craftTime: 4 + requirements: + - !type:SkillRequired + skills: + - IronMelting + - !type:StackResource + stack: CP14IronBar + count: 2 + result: CP14ModularBladeIronSkimitar + +- type: CP14Recipe + id: CP14ModularBladeGoldSkimitar + tag: CP14RecipeAnvil + category: Weapon + craftTime: 4 + requirements: + - !type:SkillRequired + skills: + - GoldMelting + - !type:StackResource + stack: CP14GoldBar + count: 2 + result: CP14ModularBladeGoldSkimitar + +- type: CP14Recipe + id: CP14ModularBladeCopperSkimitar + tag: CP14RecipeAnvil + category: Weapon + craftTime: 4 + requirements: + - !type:SkillRequired + skills: + - CopperMelting + - !type:StackResource + stack: CP14CopperBar + count: 2 + result: CP14ModularBladeCopperSkimitar + +- type: CP14Recipe + id: CP14ModularBladeMithrilSkimitar + tag: CP14RecipeAnvil + category: Weapon + craftTime: 4 + requirements: + - !type:SkillRequired + skills: + - MithrilMelting + - !type:StackResource + stack: CP14MithrilBar + count: 2 + result: CP14ModularBladeMithrilSkimitar \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_breastplate.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_breastplate.yml index 9755c5d70a..228c4e4170 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_breastplate.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_breastplate.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 5 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 5 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 5 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 5 @@ -53,6 +65,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 6 @@ -64,6 +79,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 6 @@ -75,6 +93,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 6 @@ -86,6 +107,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 6 @@ -99,6 +123,9 @@ category: Armor craftTime: 8 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 4 @@ -110,6 +137,9 @@ category: Armor craftTime: 8 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 4 @@ -121,6 +151,9 @@ category: Armor craftTime: 8 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 4 @@ -132,6 +165,9 @@ category: Armor craftTime: 8 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 4 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_cuisses.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_cuisses.yml index 684f4df6e4..3586ba0390 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_cuisses.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_cuisses.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -53,6 +65,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -75,6 +93,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -86,6 +107,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_garde.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_garde.yml index 44a7e5cbac..b213187f06 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_garde.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_garde.yml @@ -6,6 +6,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -17,6 +20,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -28,6 +34,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -39,6 +48,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -52,6 +64,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -63,6 +78,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -74,6 +92,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -85,6 +106,9 @@ category: Weapon craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_greave.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_greave.yml index 12d519118c..b68cbf1771 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_greave.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_greave.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -53,6 +65,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -75,6 +93,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -86,6 +107,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_helmet.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_helmet.yml index 6cf72fefa5..8dd4d3f084 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_helmet.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_helmet.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 @@ -53,6 +65,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 2 @@ -64,6 +79,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 2 @@ -75,6 +93,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 2 @@ -86,6 +107,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 2 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml index 1299f9c0ac..ebdf4506c0 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_tip.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -19,6 +22,9 @@ category: Armor craftTime: 2 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -31,6 +37,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -43,6 +52,9 @@ category: Armor craftTime: 2 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_visor.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_visor.yml index 2906734c8d..825845fdc4 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_visor.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Anvil/modular_visor.yml @@ -7,6 +7,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -18,6 +21,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -29,6 +35,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -40,6 +49,9 @@ category: Armor craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 @@ -53,6 +65,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:StackResource stack: CP14IronBar count: 1 @@ -64,6 +79,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:StackResource stack: CP14GoldBar count: 1 @@ -75,6 +93,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -86,6 +107,9 @@ category: Armor craftTime: 6 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:StackResource stack: CP14MithrilBar count: 1 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/misc.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/misc.yml index eb0f950a25..76b1524b70 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/misc.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/misc.yml @@ -23,11 +23,11 @@ - type: CP14Recipe id: CP14FoodDoughMedium tag: CP14RecipeCooking - craftTime: 2 + craftTime: 1 requirements: - !type:ProtoIdResource protoId: CP14Wheat - count: 2 + count: 1 result: CP14FoodDoughMedium - type: CP14Recipe @@ -38,4 +38,4 @@ - !type:ProtoIdResource protoId: CP14FoodDoughMedium count: 1 - result: CP14FoodDoughMediumFlat \ No newline at end of file + result: CP14FoodDoughMediumFlat diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml index 2f51e7e5c6..1e6355b4b4 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/CookingTable/seeds.yml @@ -60,7 +60,7 @@ protoId: CP14FoodPepper count: 1 result: CP14SeedPepper - resultCount: 3 + resultCount: 2 - type: CP14Recipe id: CP14SeedSage @@ -71,4 +71,15 @@ protoId: CP14WildSage count: 1 result: CP14SeedSage - resultCount: 1 + resultCount: 2 + +- type: CP14Recipe + id: CP14SeedCotton + tag: CP14RecipeCooking + craftTime: 1 + requirements: + - !type:ProtoIdResource + protoId: CP14Cotton + count: 1 + result: CP14SeedCotton + resultCount: 2 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/Workbench/misc.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/Workbench/misc.yml index 3260bc9185..f660b6bb02 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/Workbench/misc.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/Workbench/misc.yml @@ -159,7 +159,7 @@ - !type:StackGroupResource group: WoodenPlanks - !type:ProtoIdResource - protoId: CP14CrystalShardBase + protoId: CP14CrystalShardQuartz result: CP14CrayonWhite - type: CP14Recipe @@ -216,3 +216,51 @@ - !type:ProtoIdResource protoId: CP14DyePurple result: CP14CrayonPurple + +- type: CP14Recipe + id: CP14Screwdriver + tag: CP14RecipeWorkbench + category: Tools + craftTime: 1 + requirements: + - !type:ProtoIdResource + protoId: CP14ModularGripWooden + - !type:ProtoIdResource + protoId: CP14CrossboltIron + result: CP14Screwdriver + +- type: CP14Recipe + id: CP14FluteInstrument + tag: CP14RecipeWorkbench + craftTime: 2 + requirements: + - !type:ProtoIdResource + protoId: CP14ModularGripWooden + count: 2 + result: CP14FluteInstrument + +- type: CP14Recipe + id: CP14LyraInstrument + tag: CP14RecipeWorkbench + craftTime: 2 + requirements: + - !type:StackGroupResource + group: WoodenPlanks + count: 3 + - !type:ProtoIdResource + protoId: CP14String + count: 2 + result: CP14LyraInstrument + +- type: CP14Recipe + id: CP14LuteInstrument + tag: CP14RecipeWorkbench + craftTime: 2 + requirements: + - !type:StackGroupResource + group: WoodenPlanks + count: 4 + - !type:ProtoIdResource + protoId: CP14String + count: 1 + result: CP14LuteInstrument diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml index 3ada6f8d61..15b422b43a 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/furnace.yml @@ -3,6 +3,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - CopperMelting - !type:MaterialResource material: CP14Copper count: 10 @@ -13,6 +16,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - IronMelting - !type:MaterialResource material: CP14Iron count: 10 @@ -23,6 +29,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GoldMelting - !type:MaterialResource material: CP14Gold count: 10 @@ -33,6 +42,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - MithrilMelting - !type:MaterialResource material: CP14Mithril count: 10 @@ -41,10 +53,14 @@ - type: CP14Recipe id: CP14GlassSheet1 tag: CP14RecipeMeltingFurnace - craftTime: 4 + craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:ProtoIdResource - protoId: CP14CrystalShardBase + protoId: CP14CrystalShardQuartz + count: 1 result: CP14GlassSheet1 - type: CP14Recipe @@ -52,6 +68,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 2 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:ProtoIdResource protoId: CP14GlassShard count: 2 @@ -62,6 +81,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14GlassSheet count: 1 @@ -72,6 +94,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -85,6 +110,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14GlassSheet count: 2 @@ -95,6 +123,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -108,6 +139,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14GlassSheet count: 6 @@ -118,6 +152,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 3 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14CopperBar count: 1 @@ -131,6 +168,9 @@ tag: CP14RecipeMeltingFurnace craftTime: 4 requirements: + - !type:SkillRequired + skills: + - GlassMelting - !type:StackResource stack: CP14GlassSheet count: 9 diff --git a/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml b/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml index 1c9d132818..32a5376ad1 100644 --- a/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml +++ b/Resources/Prototypes/_CP14/Recipes/Workbench/sewing_table.yml @@ -1,3 +1,44 @@ +- type: CP14Recipe + id: CP14ClothMaterialCotton + tag: CP14RecipeSewing + craftTime: 2 + requirements: + - !type:ProtoIdResource + protoId: CP14Cotton + count: 2 + result: CP14Cloth1 + +- type: CP14Recipe + id: CP14StringCotton + tag: CP14RecipeSewing + craftTime: 2 + requirements: + - !type:ProtoIdResource + protoId: CP14Cotton + count: 1 + result: CP14String + +- type: CP14Recipe + id: CP14ClothMaterialString + tag: CP14RecipeSewing + craftTime: 1 + requirements: + - !type:ProtoIdResource + protoId: CP14String + count: 2 + result: CP14Cloth1 + +- type: CP14Recipe + id: CP14StringCottonCloth + tag: CP14RecipeSewing + craftTime: 1 + requirements: + - !type:StackResource + stack: CP14Cloth + count: 1 + result: CP14String + resultCount: 2 + - type: CP14Recipe id: CP14ClothingShirtCottonBlue tag: CP14RecipeSewing diff --git a/Resources/Prototypes/_CP14/Roles/Antags/demiplane_antag.yml b/Resources/Prototypes/_CP14/Roles/Antags/demiplane_antag.yml deleted file mode 100644 index 98ed742207..0000000000 --- a/Resources/Prototypes/_CP14/Roles/Antags/demiplane_antag.yml +++ /dev/null @@ -1,13 +0,0 @@ -- type: antag - id: CP14DemiplaneAntag - name: cp14-role-type-demiplane-antag-name - antagonist: true - setPreference: false - objective: cp14-ghost-role-information-rules-demiplane - -- type: antag - id: CP14RaidAntag - name: cp14-role-type-raid-antag-name - antagonist: true - setPreference: false - objective: cp14-ghost-role-information-rules-raid \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Antags/misc.yml b/Resources/Prototypes/_CP14/Roles/Antags/misc.yml new file mode 100644 index 0000000000..498e6cdf07 --- /dev/null +++ b/Resources/Prototypes/_CP14/Roles/Antags/misc.yml @@ -0,0 +1,31 @@ +- type: antag + id: CP14DemiplaneAntag + name: cp14-role-type-demiplane-antag-name + antagonist: true + setPreference: false + objective: cp14-ghost-role-information-rules-demiplane + +- type: antag + id: CP14RaidAntag + name: cp14-role-type-raid-antag-name + antagonist: true + setPreference: false + objective: cp14-ghost-role-information-rules-raid + +- type: antag + id: CP14Vampire + name: cp14-roles-antag-vampire-name + antagonist: true + setPreference: false #Impossible and boring gameplay ATM + objective: cp14-roles-antag-vampire-objective + requirements: + - !type:OverallPlaytimeRequirement + time: 7200 # 2h + #guides: TODO + +- type: antag + id: CP14BloodMoonCursed + name: cp14-roles-antag-blood-moon-cursed-name + antagonist: true + setPreference: true + objective: cp14-roles-antag-blood-moon-cursed-objective \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Antags/vampire.yml b/Resources/Prototypes/_CP14/Roles/Antags/vampire.yml deleted file mode 100644 index 8608c130ed..0000000000 --- a/Resources/Prototypes/_CP14/Roles/Antags/vampire.yml +++ /dev/null @@ -1,10 +0,0 @@ -- type: antag - id: CP14Vampire - name: cp14-roles-antag-vampire-name - antagonist: true - setPreference: false #Impossible and boring gameplay ATM - objective: cp14-roles-antag-vampire-objective - requirements: - - !type:OverallPlaytimeRequirement - time: 7200 # 2h - #guides: TODO \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml index 6ab2949431..11710cc63f 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/alchemist.yml @@ -6,6 +6,10 @@ startingGear: CP14AlchemistGear icon: "CP14JobIconAlchemist" supervisors: cp14-job-supervisors-command + special: + - !type:CP14LearnSkillsSpecial + skills: + - AlchemyVision requirements: - !type:RoleTimeRequirement role: CP14JobApprentice @@ -19,8 +23,8 @@ id: CP14AlchemistGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingAlchemist diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml index 51bf92b2b1..7e5f625a24 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/apprentice.yml @@ -6,13 +6,18 @@ startingGear: CP14ApprenticeGear icon: "CP14JobIconApprentice" supervisors: cp14-job-supervisors-command + special: + - !type:CP14LearnSkillsSpecial + skills: + - CopperMelting + - AlchemyVision - type: startingGear id: CP14ApprenticeGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: keys: CP14BaseKeyRing belt1: CP14WalletFilledTest \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml index 774a0d5c2f..dd1670ea1c 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/blacksmith.yml @@ -6,17 +6,25 @@ startingGear: CP14BlacksmithGear icon: "CP14JobIconBlacksmith" supervisors: cp14-job-supervisors-command + special: + - !type:CP14LearnSkillsSpecial + skills: + - CopperMelting + - IronMelting + - GoldMelting + - GlassMelting + - MithrilMelting requirements: - !type:RoleTimeRequirement role: CP14JobApprentice - time: 3600 # 1 hours + time: 3600 # 1 hour - type: startingGear id: CP14BlacksmithGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingBlacksmith \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/innkeeper.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/innkeeper.yml index a5aa1ad380..3ce1ff25e1 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/innkeeper.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Artisan/innkeeper.yml @@ -11,7 +11,7 @@ id: CP14InnkeeperGear storage: back: - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingInnkeeper \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard.yml index e5a327698d..9131884a4f 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard.yml @@ -6,6 +6,10 @@ startingGear: CP14GuardGear icon: "CP14JobIconGuard" supervisors: cp14-job-supervisors-guard-commander + special: + - !type:CP14LearnSkillsSpecial + skills: + - SwordMastery - type: startingGear id: CP14GuardGear diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard_commander.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard_commander.yml index b219a955bb..35d89483f4 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard_commander.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Guard/guard_commander.yml @@ -15,6 +15,10 @@ - !type:DepartmentTimeRequirement department: CP14Guard time: 3600 # 1 hours + special: + - !type:CP14LearnSkillsSpecial + skills: + - SwordMastery - type: startingGear id: CP14GuardCommanderGear diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml index 14409b1eec..851bfa2af1 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/adventurer.yml @@ -11,8 +11,8 @@ id: CP14AdventurerGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: keys: CP14BaseKeyRing belt1: CP14WalletFilledTest \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml index bcdb613c54..3dfd695627 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Mercenary/guildmaster.yml @@ -29,7 +29,7 @@ id: CP14GuildmasterGear storage: back: - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingGuildmaster diff --git a/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml b/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml index 93e6824b18..bb139cb541 100644 --- a/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml +++ b/Resources/Prototypes/_CP14/Roles/Jobs/Traders/merchant.yml @@ -14,8 +14,8 @@ id: CP14MerchantGear storage: back: - - CP14EnergyCrystalSmall - - CP14EnergyCrystalSmall + - CP14EnergyCrystalMedium + - CP14EnergyCrystalMedium equipment: belt1: CP14WalletFilledTest keys: CP14KeyRingMerchant \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Roles/MindRoles/mind_roles.yml b/Resources/Prototypes/_CP14/Roles/MindRoles/mind_roles.yml index 982e479450..d102f32c4c 100644 --- a/Resources/Prototypes/_CP14/Roles/MindRoles/mind_roles.yml +++ b/Resources/Prototypes/_CP14/Roles/MindRoles/mind_roles.yml @@ -1,7 +1,7 @@ - type: entity parent: BaseMindRoleAntag id: CP14MindRoleDemiplaneAntag - name: Demiplane Antag Role + name: Demiplane antag role components: - type: MindRole roleType: CP14DemiplaneAntagonist @@ -20,7 +20,7 @@ parent: BaseMindRoleAntag id: CP14MindRoleVampire categories: [ ForkFiltered ] - name: Vampire Role + name: Vampire role components: - type: MindRole antagPrototype: CP14Vampire @@ -28,4 +28,15 @@ exclusiveAntag: true - type: CP14VampireRole - type: RoleBriefing - briefing: cp14-roles-antag-vampire-briefing \ No newline at end of file + briefing: cp14-roles-antag-vampire-briefing + +- type: entity + parent: BaseMindRoleAntag + id: CP14MindRoleBloodMoonCursed + categories: [ ForkFiltered ] + name: Blood moon cursed role + components: + - type: MindRole + antagPrototype: CP14BloodMoonCursed + roleType: SoloAntagonist + exclusiveAntag: false \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/atlethic.yml b/Resources/Prototypes/_CP14/Skill/atlethic.yml index 780da468c4..3c78264db7 100644 --- a/Resources/Prototypes/_CP14/Skill/atlethic.yml +++ b/Resources/Prototypes/_CP14/Skill/atlethic.yml @@ -5,7 +5,8 @@ icon: sprite: _CP14/Actions/Spells/physical.rsi state: kick - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellKick - type: cp14Skill @@ -15,7 +16,8 @@ icon: sprite: _CP14/Actions/Spells/physical.rsi state: sprint - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellSprint - type: cp14Skill @@ -26,7 +28,8 @@ icon: sprite: _CP14/Actions/Spells/physical.rsi state: sprint - effect: !type:ReplaceAction + effects: + - !type:ReplaceAction oldAction: CP14ActionSpellSprint newAction: CP14ActionSpellSprintGoblin restrictions: diff --git a/Resources/Prototypes/_CP14/Skill/blacksmithing.yml b/Resources/Prototypes/_CP14/Skill/blacksmithing.yml new file mode 100644 index 0000000000..5e77661099 --- /dev/null +++ b/Resources/Prototypes/_CP14/Skill/blacksmithing.yml @@ -0,0 +1,68 @@ +- type: cp14Skill + id: CopperMelting + skillUiPosition: 1, 0 + tree: Blacksmithing + name: cp14-skill-copper-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/copper_ore.rsi + state: ore3 + effects: + - !type:UnlockRecipes + +- type: cp14Skill + id: IronMelting + skillUiPosition: 1, 2 + tree: Blacksmithing + name: cp14-skill-iron-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/iron_ore.rsi + state: ore3 + effects: + - !type:UnlockRecipes + restrictions: + - !type:NeedPrerequisite + prerequisite: CopperMelting + +- type: cp14Skill + id: GoldMelting + skillUiPosition: 0, 4 + tree: Blacksmithing + name: cp14-skill-gold-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/gold_ore.rsi + state: ore3 + effects: + - !type:UnlockRecipes + restrictions: + - !type:NeedPrerequisite + prerequisite: IronMelting + +- type: cp14Skill + id: MithrilMelting + skillUiPosition: 2, 4 + tree: Blacksmithing + name: cp14-skill-mithril-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/mithril_ore.rsi + state: ore3 + effects: + - !type:UnlockRecipes + restrictions: + - !type:NeedPrerequisite + prerequisite: IronMelting + +- type: cp14Skill + id: GlassMelting + skillUiPosition: 3, 0 + tree: Blacksmithing + name: cp14-skill-glass-melt-name + learnCost: 0.5 + icon: + sprite: _CP14/Objects/Materials/glass.rsi + state: glass_3 + effects: + - !type:UnlockRecipes \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/dimension.yml b/Resources/Prototypes/_CP14/Skill/dimension.yml new file mode 100644 index 0000000000..1f78e7c87d --- /dev/null +++ b/Resources/Prototypes/_CP14/Skill/dimension.yml @@ -0,0 +1,34 @@ +#- type: cp14Skill +# id: CP14ActionSpellShadowGrab +# skillUiPosition: 0, 0 +# tree: Dimension +# icon: +# sprite: _CP14/Actions/Spells/dimension.rsi +# state: shadow_grab +# effects: +#- !type:AddAction +# action: CP14ActionSpellShadowGrab +# +#- type: cp14Skill +# id: CP14ActionSpellShadowSwap +# skillUiPosition: 0, 2 +# tree: Dimension +# icon: +# sprite: _CP14/Actions/Spells/dimension.rsi +# state: shadow_swap +# effects: +#- !type:AddAction +# action: CP14ActionSpellShadowSwap +# +#- type: cp14Skill +# id: CP14ActionSpellShadowStep +# skillUiPosition: 0, 4 +# learnCost: 2 +# tree: Dimension +# icon: +# sprite: _CP14/Actions/Spells/dimension.rsi +# state: shadow_step +# effects: +#- !type:AddAction +# action: CP14ActionSpellShadowStep + diff --git a/Resources/Prototypes/_CP14/Skill/healing.yml b/Resources/Prototypes/_CP14/Skill/healing.yml index 79d876019d..76077fcec5 100644 --- a/Resources/Prototypes/_CP14/Skill/healing.yml +++ b/Resources/Prototypes/_CP14/Skill/healing.yml @@ -1,83 +1,145 @@ +# T1 + - type: cp14Skill - id: CP14ActionSpellCureBurn - skillUiPosition: 0, 0 + id: HealingT1 + skillUiPosition: 1, 0 tree: Healing - learnCost: 1 + name: cp14-skill-life-t1-name + learnCost: 0.5 icon: - sprite: _CP14/Actions/Spells/healing.rsi - state: cure_burn - effect: !type:AddAction - action: CP14ActionSpellCureBurn + sprite: _CP14/Actions/skill_tree.rsi + state: heal - type: cp14Skill id: CP14ActionSpellBloodPurification - skillUiPosition: 2, 0 - learnCost: 1 + skillUiPosition: 2, 6 tree: Healing icon: sprite: _CP14/Actions/Spells/healing.rsi state: cure_poison - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellBloodPurification - -- type: cp14Skill - id: CP14ActionSpellCureWounds - skillUiPosition: 4, 0 - learnCost: 1 - tree: Healing - icon: - sprite: _CP14/Actions/Spells/healing.rsi - state: cure_wounds - effect: !type:AddAction - action: CP14ActionSpellCureWounds + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT1 - type: cp14Skill id: CP14ActionSpellPlantGrowth - skillUiPosition: 0, 2 + skillUiPosition: 2, 4 tree: Healing icon: sprite: _CP14/Actions/Spells/healing.rsi state: plant_growth - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellPlantGrowth - -- type: cp14Skill - id: CP14ActionSpellHealBallade - skillUiPosition: 0, 6 - learnCost: 1 - tree: Healing - icon: - sprite: _CP14/Actions/Spells/healing.rsi - state: heal_music - effect: !type:AddAction - action: CP14ActionSpellHealBallade - -- type: cp14Skill - id: CP14ActionSpellPeaceBallade - skillUiPosition: 0, 8 - tree: Healing - icon: - sprite: _CP14/Actions/Spells/healing.rsi - state: peace_music - effect: !type:AddAction - action: CP14ActionSpellPeaceBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT1 - type: cp14Skill id: CP14ActionSpellSpeedBallade - skillUiPosition: 0, 10 + skillUiPosition: 0, 6 tree: Healing icon: sprite: _CP14/Actions/Spells/healing.rsi state: speed_music - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellSpeedBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT1 + +# T2 - type: cp14Skill - id: CP14ActionSpellSheepPolymorph - skillUiPosition: 4, 10 + id: HealingT2 + skillUiPosition: 7, 0 + tree: Healing + name: cp14-skill-life-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: heal2 + effects: + - !type:ModifyManacost + modifiers: + Life: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT1 + +- type: cp14Skill + id: CP14ActionSpellCureBurn + skillUiPosition: 6, 4 tree: Healing icon: - sprite: _CP14/Actions/Spells/misc.rsi - state: polymorph - effect: !type:AddAction - action: CP14ActionSpellSheepPolymorph \ No newline at end of file + sprite: _CP14/Actions/Spells/healing.rsi + state: cure_burn + effects: + - !type:AddAction + action: CP14ActionSpellCureBurn + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT2 + +- type: cp14Skill + id: CP14ActionSpellCureWounds + skillUiPosition: 6, 6 + tree: Healing + icon: + sprite: _CP14/Actions/Spells/healing.rsi + state: cure_wounds + effects: + - !type:AddAction + action: CP14ActionSpellCureWounds + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT2 + +- type: cp14Skill + id: CP14ActionSpellHealBallade + skillUiPosition: 8, 6 + tree: Healing + icon: + sprite: _CP14/Actions/Spells/healing.rsi + state: heal_music + effects: + - !type:AddAction + action: CP14ActionSpellHealBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT2 + +# T3 + +- type: cp14Skill + id: HealingT3 + skillUiPosition: 13, 0 + tree: Healing + name: cp14-skill-life-t3-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: heal3 + effects: + - !type:ModifyManacost + modifiers: + Life: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT2 + +- type: cp14Skill + id: CP14ActionSpellResurrection + skillUiPosition: 12, 4 + tree: Healing + icon: + sprite: _CP14/Actions/Spells/necromancy.rsi + state: resurrection + effects: + - !type:AddAction + action: CP14ActionSpellResurrection + restrictions: + - !type:NeedPrerequisite + prerequisite: HealingT3 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/hydrosophistry.yml b/Resources/Prototypes/_CP14/Skill/hydrosophistry.yml index af95644d63..47d27f9009 100644 --- a/Resources/Prototypes/_CP14/Skill/hydrosophistry.yml +++ b/Resources/Prototypes/_CP14/Skill/hydrosophistry.yml @@ -1,62 +1,134 @@ +# T1 + - type: cp14Skill - id: CP14ActionSpellFreeze - skillUiPosition: 0, 4 + id: HydrosophistryT1 + skillUiPosition: 1, 0 tree: Hydrosophistry + name: cp14-skill-water-t1-name + learnCost: 0.5 icon: - sprite: _CP14/Actions/Spells/water.rsi - state: freeze - effect: !type:AddAction - action: CP14ActionSpellFreeze + sprite: _CP14/Actions/skill_tree.rsi + state: water - type: cp14Skill id: CP14ActionSpellWaterCreation - skillUiPosition: 0, 0 + skillUiPosition: 1, 4 tree: Hydrosophistry icon: sprite: _CP14/Actions/Spells/water.rsi state: water_creation - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellWaterCreation + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT1 - type: cp14Skill id: CP14ActionSpellBeerCreation - skillUiPosition: 2, 0 + skillUiPosition: 1, 8 tree: Hydrosophistry + learnCost: 0 icon: sprite: _CP14/Actions/Spells/water.rsi state: beer_creation - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellBeerCreation restrictions: + - !type:NeedPrerequisite + prerequisite: CP14ActionSpellWaterCreation - !type:SpeciesWhitelist species: CP14Dwarf - type: cp14Skill - id: CP14ActionSpellIceShards + id: CP14ActionSpellIceDagger skillUiPosition: 0, 6 tree: Hydrosophistry - icon: - sprite: _CP14/Actions/Spells/water.rsi - state: ice_shards - effect: !type:AddAction - action: CP14ActionSpellIceShards - -- type: cp14Skill - id: CP14ActionSpellIceDagger - skillUiPosition: 0, 8 - tree: Hydrosophistry icon: sprite: _CP14/Actions/Spells/water.rsi state: ice_dagger - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellIceDagger + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT1 - type: cp14Skill id: CP14ActionSpellIceArrow - skillUiPosition: 0, 10 + skillUiPosition: 2, 6 tree: Hydrosophistry icon: sprite: _CP14/Actions/Spells/water.rsi state: ice_arrow - effect: !type:AddAction - action: CP14ActionSpellIceArrow \ No newline at end of file + effects: + - !type:AddAction + action: CP14ActionSpellIceArrow + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT1 + +# T2 + +- type: cp14Skill + id: HydrosophistryT2 + skillUiPosition: 7, 0 + tree: Hydrosophistry + name: cp14-skill-water-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: water2 + effects: + - !type:ModifyManacost + modifiers: + Water: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT1 + +- type: cp14Skill + id: CP14ActionSpellFreeze + skillUiPosition: 6, 4 + tree: Hydrosophistry + icon: + sprite: _CP14/Actions/Spells/water.rsi + state: freeze + effects: + - !type:AddAction + action: CP14ActionSpellFreeze + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT2 + +- type: cp14Skill + id: CP14ActionSpellIceShards + skillUiPosition: 8, 4 + tree: Hydrosophistry + icon: + sprite: _CP14/Actions/Spells/water.rsi + state: ice_shards + effects: + - !type:AddAction + action: CP14ActionSpellIceShards + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT2 + +# T3 + +- type: cp14Skill + id: HydrosophistryT3 + skillUiPosition: 13, 0 + tree: Hydrosophistry + name: cp14-skill-water-t3-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: water3 + effects: + - !type:ModifyManacost + modifiers: + Water: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: HydrosophistryT2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/illusion.yml b/Resources/Prototypes/_CP14/Skill/illusion.yml index 33f3548d33..c8448993d7 100644 --- a/Resources/Prototypes/_CP14/Skill/illusion.yml +++ b/Resources/Prototypes/_CP14/Skill/illusion.yml @@ -1,52 +1,104 @@ +# T1 + +- type: cp14Skill + id: IllusionT1 + skillUiPosition: 1, 0 + tree: Illusion + name: cp14-skill-illusion-t1-name + learnCost: 0.5 + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: light + - type: cp14Skill id: CP14ActionSpellSphereOfLight - skillUiPosition: 0, 0 + skillUiPosition: 0, 4 tree: Illusion icon: sprite: _CP14/Actions/Spells/light.rsi state: sphere_of_light - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellSphereOfLight + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT1 + +- type: cp14Skill + id: CP14ActionSpellSearchOfLife + skillUiPosition: 2, 4 + learnCost: 1 + tree: Illusion + icon: + sprite: _CP14/Actions/Spells/light.rsi + state: search_of_life + effects: + - !type:AddAction + action: CP14ActionSpellSearchOfLife + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT1 + +# T2 + +- type: cp14Skill + id: IllusionT2 + skillUiPosition: 7, 0 + tree: Illusion + name: cp14-skill-illusion-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: light2 + effects: + - !type:ModifyManacost + modifiers: + Light: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT1 - type: cp14Skill id: CP14ActionSpellFlashLight - skillUiPosition: 2, 0 + skillUiPosition: 6, 4 tree: Illusion icon: sprite: _CP14/Actions/Spells/light.rsi state: flash_light - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellFlashLight + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT2 - type: cp14Skill - id: CP14ActionSpellSignalLightRed - skillUiPosition: 0, 4 - learnCost: 0.5 + id: CP14ActionSpellPeaceBallade + skillUiPosition: 8, 4 tree: Illusion icon: - sprite: _CP14/Actions/Spells/light.rsi - state: signal_light_red - effect: !type:AddAction - action: CP14ActionSpellSignalLightRed + sprite: _CP14/Actions/Spells/healing.rsi + state: peace_music + effects: + - !type:AddAction + action: CP14ActionSpellPeaceBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT2 + +# T3 - type: cp14Skill - id: CP14ActionSpellSignalLightYellow - skillUiPosition: 0, 6 - learnCost: 0.5 + id: IllusionT3 + skillUiPosition: 13, 0 tree: Illusion + name: cp14-skill-illusion-t3-name icon: - sprite: _CP14/Actions/Spells/light.rsi - state: signal_light_yellow - effect: !type:AddAction - action: CP14ActionSpellSignalLightYellow - -- type: cp14Skill - id: CP14ActionSpellSignalLightBlue - skillUiPosition: 0, 8 - learnCost: 0.5 - tree: Illusion - icon: - sprite: _CP14/Actions/Spells/light.rsi - state: signal_light_blue - effect: !type:AddAction - action: CP14ActionSpellSignalLightBlue \ No newline at end of file + sprite: _CP14/Actions/skill_tree.rsi + state: light3 + effects: + - !type:ModifyManacost + modifiers: + Light: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: IllusionT2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/martial_arts.yml b/Resources/Prototypes/_CP14/Skill/martial_arts.yml new file mode 100644 index 0000000000..2a560ffc73 --- /dev/null +++ b/Resources/Prototypes/_CP14/Skill/martial_arts.yml @@ -0,0 +1,32 @@ +- type: cp14Skill + id: SwordMastery + skillUiPosition: 0, 0 + name: cp14-skill-sword-mastery-name + desc: cp14-skill-mastery-desc + learnCost: 0.5 + tree: MartialArts + icon: + sprite: _CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi + state: preview + +- type: cp14Skill + id: RapierMastery + skillUiPosition: 2, 0 + name: cp14-skill-parier-mastery-name + desc: cp14-skill-mastery-desc + learnCost: 0.5 + tree: MartialArts + icon: + sprite: _CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi + state: preview + +- type: cp14Skill + id: SkimitarMastery + skillUiPosition: 4, 0 + name: cp14-skill-skimitar-mastery-name + desc: cp14-skill-mastery-desc + learnCost: 0.5 + tree: MartialArts + icon: + sprite: _CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi + state: preview \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/metamagic.yml b/Resources/Prototypes/_CP14/Skill/metamagic.yml index 74552479fa..2ac1c3d928 100644 --- a/Resources/Prototypes/_CP14/Skill/metamagic.yml +++ b/Resources/Prototypes/_CP14/Skill/metamagic.yml @@ -1,13 +1,18 @@ +# T1 + - type: cp14Skill - id: CP14ActionSpellMagicSplitting - skillUiPosition: 0, 0 + id: MetamagicT1 + skillUiPosition: 1, 0 tree: Metamagic + name: cp14-skill-meta-t1-name + learnCost: 0.5 icon: - sprite: _CP14/Actions/Spells/meta.rsi - state: counter_spell - effect: !type:AddAction - action: CP14ActionSpellMagicSplitting - + sprite: _CP14/Actions/skill_tree.rsi + state: meta + effects: + - !type:AddManaMax + additionalMana: 25 + - type: cp14Skill id: CP14ActionSpellManaGift skillUiPosition: 0, 2 @@ -16,18 +21,23 @@ icon: sprite: _CP14/Actions/Spells/meta.rsi state: mana_gift - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellManaGift - + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT1 + - type: cp14Skill id: CP14ActionSpellManaGiftElf - skillUiPosition: 2, 2 - learnCost: 0.5 + skillUiPosition: 0, 4 + learnCost: 0 tree: Metamagic icon: sprite: _CP14/Actions/Spells/meta.rsi state: mana_gift - effect: !type:ReplaceAction + effects: + - !type:ReplaceAction oldAction: CP14ActionSpellManaGift newAction: CP14ActionSpellManaGiftElf restrictions: @@ -38,24 +48,29 @@ - type: cp14Skill id: CP14ActionSpellManaConsume - skillUiPosition: 0, 4 + skillUiPosition: 2, 2 learnCost: 0.5 tree: Metamagic icon: sprite: _CP14/Actions/Spells/meta.rsi state: mana_consume - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellManaConsume + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT1 - type: cp14Skill id: CP14ActionSpellManaConsumeElf skillUiPosition: 2, 4 - learnCost: 0.5 + learnCost: 0 tree: Metamagic icon: sprite: _CP14/Actions/Spells/meta.rsi state: mana_consume - effect: !type:ReplaceAction + effects: + - !type:ReplaceAction oldAction: CP14ActionSpellManaConsume newAction: CP14ActionSpellManaConsumeElf restrictions: @@ -66,10 +81,76 @@ - type: cp14Skill id: CP14ActionSpellMagicBallade - skillUiPosition: 0, 6 + skillUiPosition: 1, 6 tree: Metamagic icon: sprite: _CP14/Actions/Spells/meta.rsi state: magic_music - effect: !type:AddAction - action: CP14ActionSpellMagicBallade \ No newline at end of file + effects: + - !type:AddAction + action: CP14ActionSpellMagicBallade + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT1 + +# T2 + +- type: cp14Skill + id: MetamagicT2 + skillUiPosition: 7, 0 + tree: Metamagic + name: cp14-skill-meta-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: meta2 + effects: + - !type:AddManaMax + additionalMana: 25 + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT1 + +- type: cp14Skill + id: CP14ActionSpellMagicSplitting + skillUiPosition: 6, 2 + tree: Metamagic + icon: + sprite: _CP14/Actions/Spells/meta.rsi + state: counter_spell + effects: + - !type:AddAction + action: CP14ActionSpellMagicSplitting + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT2 + +- type: cp14Skill + id: CP14ActionSpellManaTrance + skillUiPosition: 8, 2 + tree: Metamagic + icon: + sprite: _CP14/Actions/Spells/meta.rsi + state: mana_trance + effects: + - !type:AddAction + action: CP14ActionSpellManaTrance + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT2 + +# T3 + +- type: cp14Skill + id: MetamagicT3 + skillUiPosition: 13, 0 + tree: Metamagic + name: cp14-skill-meta-t3-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: meta3 + effects: + - !type:AddManaMax + additionalMana: 25 + restrictions: + - !type:NeedPrerequisite + prerequisite: MetamagicT2 diff --git a/Resources/Prototypes/_CP14/Skill/pyrokinetic.yml b/Resources/Prototypes/_CP14/Skill/pyrokinetic.yml index ef5782ee55..54c3b1359a 100644 --- a/Resources/Prototypes/_CP14/Skill/pyrokinetic.yml +++ b/Resources/Prototypes/_CP14/Skill/pyrokinetic.yml @@ -1,35 +1,121 @@ +# T1 + +- type: cp14Skill + id: PyrokineticT1 + skillUiPosition: 1, 0 + tree: Pyrokinetic + name: cp14-skill-pyro-t1-name + learnCost: 0.5 + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: pyro + - type: cp14Skill id: CP14ActionSpellFlameCreation - skillUiPosition: 0, 0 + skillUiPosition: 0, 4 tree: Pyrokinetic icon: sprite: _CP14/Actions/Spells/fire.rsi state: flame_creation - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellFlameCreation + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 + +- type: cp14Skill + id: CP14ActionSpellHeat + skillUiPosition: 0, 6 + tree: Pyrokinetic + icon: + sprite: _CP14/Actions/Spells/fire.rsi + state: heat + effects: + - !type:AddAction + action: CP14ActionSpellHeat + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 - type: cp14Skill id: CP14ActionSpellHellBallade - skillUiPosition: 0, 2 + skillUiPosition: 2, 4 tree: Pyrokinetic icon: sprite: _CP14/Actions/Spells/fire.rsi state: fire_music - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellHellBallade restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 - !type:SpeciesWhitelist species: CP14Tiefling - type: cp14Skill id: CP14ActionSpellTieflingInnerFire - skillUiPosition: 0, 4 + skillUiPosition: 2, 6 tree: Pyrokinetic icon: sprite: _CP14/Actions/Spells/fire.rsi state: tiefling_revenge - effect: !type:AddAction + effects: + - !type:AddAction action: CP14ActionSpellTieflingInnerFire restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 - !type:SpeciesWhitelist - species: CP14Tiefling \ No newline at end of file + species: CP14Tiefling + +# T2 + +- type: cp14Skill + id: PyrokineticT2 + skillUiPosition: 7, 0 + tree: Pyrokinetic + name: cp14-skill-pyro-t2-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: pyro2 + effects: + - !type:ModifyManacost + modifiers: + Fire: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT1 + +- type: cp14Skill + id: CP14ActionSpellFireball + skillUiPosition: 6, 4 + tree: Pyrokinetic + icon: + sprite: _CP14/Actions/Spells/fire.rsi + state: fireball + effects: + - !type:AddAction + action: CP14ActionSpellFireball + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT2 + +# T3 + +- type: cp14Skill + id: PyrokineticT3 + skillUiPosition: 13, 0 + tree: Pyrokinetic + name: cp14-skill-pyro-t3-name + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: pyro3 + effects: + - !type:ModifyManacost + modifiers: + Fire: -0.25 + restrictions: + - !type:NeedPrerequisite + prerequisite: PyrokineticT2 \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/skill_tree.yml b/Resources/Prototypes/_CP14/Skill/skill_tree.yml index 893f68e876..8011fb254d 100644 --- a/Resources/Prototypes/_CP14/Skill/skill_tree.yml +++ b/Resources/Prototypes/_CP14/Skill/skill_tree.yml @@ -2,7 +2,7 @@ id: Pyrokinetic name: cp14-skill-tree-pyrokinetic-name desc: cp14-skill-tree-pyrokinetic-desc - color: "#b52400" + color: "#d6933c" icon: sprite: _CP14/Actions/skill_tree.rsi state: pyro @@ -50,4 +50,36 @@ color: "#b32e37" icon: sprite: _CP14/Actions/skill_tree.rsi - state: atlethic \ No newline at end of file + state: atlethic + +#- type: cp14SkillTree +# id: Dimension +# name: cp14-skill-tree-dimension-name +# desc: cp14-skill-tree-dimension-desc +# color: "#ac66be" +# icon: +# sprite: _CP14/Actions/skill_tree.rsi +# state: dimension + +- type: cp14SkillTree + id: MartialArts + name: cp14-skill-tree-martial-name + desc: cp14-skill-tree-martial-desc + color: "#f54242" + icon: + sprite: _CP14/Actions/skill_tree.rsi + state: martial + +# + +- type: cp14SkillTree + id: Thaumaturgy + name: cp14-skill-tree-thaumaturgy-name + desc: cp14-skill-tree-thaumaturgy-desc + color: "#7c52bf" + +- type: cp14SkillTree + id: Blacksmithing + name: cp14-skill-tree-blacksmithing-name + desc: cp14-skill-tree-blacksmithing-desc + color: "#6b3200" \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Skill/thaumaturgy.yml b/Resources/Prototypes/_CP14/Skill/thaumaturgy.yml new file mode 100644 index 0000000000..a5bdef0596 --- /dev/null +++ b/Resources/Prototypes/_CP14/Skill/thaumaturgy.yml @@ -0,0 +1,14 @@ +- type: cp14Skill + id: AlchemyVision + skillUiPosition: 0, 0 + tree: Thaumaturgy + name: cp14-skill-alchemy-vision-name + desc: cp14-skill-alchemy-vision-desc + learnCost: 1 + icon: + sprite: _CP14/Clothing/Eyes/alchemy_glasses.rsi + state: icon + effects: + - !type:AddComponents + components: + - type: SolutionScanner \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/Species/goblin.yml b/Resources/Prototypes/_CP14/Species/goblin.yml index cfdc5702a9..65f3dad79c 100644 --- a/Resources/Prototypes/_CP14/Species/goblin.yml +++ b/Resources/Prototypes/_CP14/Species/goblin.yml @@ -33,7 +33,6 @@ - type: markingPoints id: CP14MobGoblinMarkingLimits - onlyWhitelisted: true points: Hair: points: 1 @@ -41,23 +40,29 @@ FacialHair: points: 1 required: false + onlyWhitelisted: true Snout: points: 1 required: true defaultMarkings: [ CP14GoblinNose ] + onlyWhitelisted: true HeadTop: points: 1 required: true defaultMarkings: [ CP14GoblinEars ] + onlyWhitelisted: true Chest: points: 1 required: false + onlyWhitelisted: true Legs: points: 2 required: false + onlyWhitelisted: true Arms: points: 2 required: false + onlyWhitelisted: true - type: humanoidBaseSprite id: CP14MobGoblinEyes diff --git a/Resources/Prototypes/_CP14/Sponsor/roles.yml b/Resources/Prototypes/_CP14/Sponsor/roles.yml index e22c36452e..9748079680 100644 --- a/Resources/Prototypes/_CP14/Sponsor/roles.yml +++ b/Resources/Prototypes/_CP14/Sponsor/roles.yml @@ -7,6 +7,13 @@ priority: 1 color: "#1fbf51" +- type: sponsorRole + id: Collaborator + name: Collaborator + discordRoleId: "1288813716707606549" + priority: 1 + color: "#1fbf51" + - type: sponsorRole id: Moderator name: "Discord Moderator" diff --git a/Resources/Prototypes/_CP14/Traits/physical.yml b/Resources/Prototypes/_CP14/Traits/physical.yml index 0fb1430710..825161e0b4 100644 --- a/Resources/Prototypes/_CP14/Traits/physical.yml +++ b/Resources/Prototypes/_CP14/Traits/physical.yml @@ -29,7 +29,6 @@ - type: CP14MagicEnergyDraw - type: CP14MagicUnsafeDamage - type: CP14MagicUnsafeSleep - - type: CP14MagicAttuningMind # -1 diff --git a/Resources/Prototypes/_CP14/ai_factions.yml b/Resources/Prototypes/_CP14/ai_factions.yml index 29bbcf894d..f8375b7f1d 100644 --- a/Resources/Prototypes/_CP14/ai_factions.yml +++ b/Resources/Prototypes/_CP14/ai_factions.yml @@ -6,6 +6,7 @@ - CP14HostileEveryone - CP14Monster - CP14Insects + - CP14Slimes - type: npcFaction id: CP14HostileEveryone @@ -15,6 +16,7 @@ - CP14PeacefulAnimals - CP14AggressiveAnimals - CP14Monster + - CP14Slimes - type: npcFaction id: CP14Undead @@ -37,6 +39,8 @@ - CP14Undead - CP14PeacefulAnimals - CP14Monster + - CP14Slimes + - CP14HostileEveryone - type: npcFaction id: CP14Monster @@ -52,3 +56,11 @@ - CP14Adventurers - CP14AggressiveAnimals - CP14PeacefulAnimals + +- type: npcFaction + id: CP14Slimes + hostile: + - CP14Adventurers + - CP14HostileEveryone + - CP14PeacefulAnimals + - CP14AggressiveAnimals diff --git a/Resources/Prototypes/_CP14/debug.yml b/Resources/Prototypes/_CP14/debug.yml deleted file mode 100644 index ae9888bd37..0000000000 --- a/Resources/Prototypes/_CP14/debug.yml +++ /dev/null @@ -1,33 +0,0 @@ -#- type: entity -# parent: BaseItem -# id: CP14DebugWorldSprite -# name: strange copper bar -# suffix: CP, DEBUG -# categories: [ ForkFiltered ] -# components: -# # Just copy me, I am block with name Bob -# - type: Appearance -# - type: CP14WorldSprite -# - type: GenericVisualizer -# visuals: -# enum.WorldSpriteVisualLayers.Layer: -# world: -# True: -# visible: true -# False: -# visible: false -# content: -# True: -# visible: false -# False: -# visible: true -# # Just copy me, I am block with name Bob -# -# - type: Sprite -# sprite: /Textures/_CP14/Objects/Materials/copper_bar.rsi -# layers: -# - map: ["world"] -# state: bar -# - map: ["content"] -# state: bar_2 -# \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/game_presets.yml b/Resources/Prototypes/_CP14/game_presets.yml index 5a31a9226c..533f883c1e 100644 --- a/Resources/Prototypes/_CP14/game_presets.yml +++ b/Resources/Prototypes/_CP14/game_presets.yml @@ -10,6 +10,19 @@ rules: - Secret +- type: gamePreset + id: CP14Sandbox + alias: + - sandbox + name: sandbox-title + description: sandbox-description + showInVote: false + cP14Allowed: true + rules: + - CP14RoundObjectivesRule + - CP14BasicStationEventScheduler + - Sandbox + - type: gamePreset id: CP14Greenshift name: greenshift-title @@ -17,19 +30,16 @@ showInVote: true cP14Allowed: true rules: - - CP14SubGamemodesRule - CP14RoundObjectivesRule - CP14BasicStationEventScheduler - type: gamePreset - id: CP14Sandbox - alias: - - sandbox - name: sandbox-title - description: sandbox-description - showInVote: true # For playtest period only + id: CP14JudgmentNight + name: cp14-judge-night-title + description: cp14-judge-night-desc + showInVote: true cP14Allowed: true rules: - CP14RoundObjectivesRule - CP14BasicStationEventScheduler - - Sandbox + - CP14BloodMoonRule \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/stat_trackers.yml b/Resources/Prototypes/_CP14/stat_trackers.yml deleted file mode 100644 index 10204af15c..0000000000 --- a/Resources/Prototypes/_CP14/stat_trackers.yml +++ /dev/null @@ -1,7 +0,0 @@ -- type: statisticTracker - id: DemiplaneOpen - text: cp14-tracker-demiplane-open - -- type: statisticTracker - id: DemiplaneDeaths - text: cp14-tracker-demiplane-deaths \ No newline at end of file diff --git a/Resources/Prototypes/_CP14/tags.yml b/Resources/Prototypes/_CP14/tags.yml index 30948e227f..382354c162 100644 --- a/Resources/Prototypes/_CP14/tags.yml +++ b/Resources/Prototypes/_CP14/tags.yml @@ -141,3 +141,6 @@ - type: Tag id: CP14RaidLeader + +- type: Tag + id: CP14EnergyCrystal diff --git a/Resources/Prototypes/_CP14/weather.yml b/Resources/Prototypes/_CP14/weather.yml index 64639abda3..dc81f80a3b 100644 --- a/Resources/Prototypes/_CP14/weather.yml +++ b/Resources/Prototypes/_CP14/weather.yml @@ -190,4 +190,21 @@ effects: - !type:FlammableReaction multiplier: 1 - - !type:Ignite \ No newline at end of file + - !type:Ignite + +- type: weather + id: CP14DemiplaneDestructionStorm + sprite: + sprite: /Textures/Effects/weather.rsi + state: snowfall_heavy + alpha: 0.4 + offsetSpeed: 0.56, -0.36 + color: "#c034eb" + config: + - maxEntities: 4 + frequency: 3 + canAffectOnWeatherBlocker: false + effects: + - !type:SpawnEntityOnTop + prob: 0.25 + entity: CP14SkyLightningPurple \ No newline at end of file diff --git a/Resources/Prototypes/ai_factions.yml b/Resources/Prototypes/ai_factions.yml index 60a052800d..eff8ae2423 100644 --- a/Resources/Prototypes/ai_factions.yml +++ b/Resources/Prototypes/ai_factions.yml @@ -21,6 +21,7 @@ - Dragon - AllHostile - Wizard + - Xenoborg - type: npcFaction id: Mouse @@ -52,9 +53,11 @@ - PetsNT - Zombie - Revolutionary + - Dragon + - Xeno - AllHostile - Wizard - - Dragon + - Xenoborg - type: npcFaction id: SimpleNeutral @@ -70,6 +73,7 @@ - Dragon - AllHostile - Wizard + - Xenoborg - type: npcFaction id: Xeno @@ -83,6 +87,7 @@ - AllHostile - Wizard - Dragon + - Xenoborg - type: npcFaction id: Zombie @@ -97,6 +102,7 @@ - AllHostile - Wizard - Dragon + - Xenoborg - type: npcFaction id: Revolutionary @@ -107,6 +113,7 @@ - Dragon - AllHostile - Wizard + - Xenoborg - type: npcFaction id: AllHostile @@ -123,6 +130,7 @@ - Zombie - Revolutionary - Wizard + - Xenoborg - type: npcFaction id: Wizard @@ -139,3 +147,20 @@ - Zombie - Revolutionary - AllHostile + - Xenoborg + +- type: npcFaction + id: Xenoborg + hostile: + # they have brains + - NanoTrasen + - Syndicate + - Zombie + - Revolutionary + - Wizard + + - Xeno # rivalry + + # cause they are hostile to them + - SimpleHostile + - AllHostile diff --git a/Resources/Prototypes/borg_types.yml b/Resources/Prototypes/borg_types.yml index d78cf505dc..2f1eb21b1f 100644 --- a/Resources/Prototypes/borg_types.yml +++ b/Resources/Prototypes/borg_types.yml @@ -81,9 +81,10 @@ - BorgModuleCargo defaultModules: - - BorgModuleGrapplingGun - BorgModuleMining + - BorgModuleGrapplingGun - BorgModuleAppraisal + - BorgModuleTool radioChannels: - Supply diff --git a/Resources/Prototypes/explosion.yml b/Resources/Prototypes/explosion.yml index 4f72067376..ad00333892 100644 --- a/Resources/Prototypes/explosion.yml +++ b/Resources/Prototypes/explosion.yml @@ -1,5 +1,11 @@ # Does not currently support prototype hot-reloading. See comments in c# file. +# Note that for every explosion type you define, explosions & nukes will start performing worse +# You should only define a new explopsion type if you really need to +# +# If you just want to modify properties other than `damagePerIntensity`, it'd be better to +# split off explosion damage & explosion visuals/effects into their own separate prototypes. + - type: explosion id: Default damagePerIntensity: @@ -43,7 +49,7 @@ intensityPerState: 20 lightColor: Orange texturePath: /Textures/Effects/fire.rsi - fireStates: 6 + fireStates: 3 - type: explosion id: Radioactive @@ -100,7 +106,7 @@ intensityPerState: 20 lightColor: Orange texturePath: /Textures/Effects/fire.rsi - fireStates: 6 + fireStates: 3 - type: explosion id: HardBomb @@ -116,7 +122,7 @@ intensityPerState: 20 lightColor: Orange texturePath: /Textures/Effects/fire.rsi - fireStates: 6 + fireStates: 3 - type: explosion id: FireBomb @@ -127,7 +133,7 @@ Piercing: 3 lightColor: Orange texturePath: /Textures/Effects/fire.rsi - fireStates: 6 + fireStates: 3 fireStacks: 2 # STOP diff --git a/Resources/Prototypes/game_presets.yml b/Resources/Prototypes/game_presets.yml index 98a2684dd3..d301988912 100644 --- a/Resources/Prototypes/game_presets.yml +++ b/Resources/Prototypes/game_presets.yml @@ -39,6 +39,7 @@ - Traitor - Revolutionary - Zombie + - Wizard - KesslerSyndromeScheduler - RampingStationEventScheduler - SpaceTrafficControlEventScheduler @@ -59,6 +60,7 @@ - Traitor - Revolutionary - Zombie + - Wizard - BasicStationEventScheduler - KesslerSyndromeScheduler - MeteorSwarmMildScheduler diff --git a/Resources/Prototypes/name_identifier_groups.yml b/Resources/Prototypes/name_identifier_groups.yml index 4823e31f55..ab8c9f90ac 100644 --- a/Resources/Prototypes/name_identifier_groups.yml +++ b/Resources/Prototypes/name_identifier_groups.yml @@ -29,6 +29,17 @@ minValue: 1000 maxValue: 9999 +- type: nameIdentifierGroup + id: StationAi + prefix: AI + minValue: 100 + maxValue: 999 + +- type: nameIdentifierGroup + id: XenoArtifactNode + minValue: 0 + maxValue: 999 + # Used to suffix a number to any mob to identify player controlled mob griefing. - type: nameIdentifierGroup id: GenericNumber diff --git a/Resources/Prototypes/radio_channels.yml b/Resources/Prototypes/radio_channels.yml index 006f829be4..b4ef2b4ff5 100644 --- a/Resources/Prototypes/radio_channels.yml +++ b/Resources/Prototypes/radio_channels.yml @@ -95,3 +95,21 @@ color: "#f6ce64" # long range since otherwise it'd defeat the point of a handheld radio independent of telecomms longRange: true + +- type: radioChannel + id: Xenoborg + name: chat-radio-xenoborg + keycode: 'x' + frequency: 2002 + color: "#2288ff" + # long range since I don't wanna make a special xenoborg telecomm server + longRange: true + +- type: radioChannel + id: Mothership + name: chat-radio-mothership + keycode: 'z' + frequency: 2003 + color: "#ff2222" + # long range since I don't wanna make a special xenoborg telecomm server + longRange: true \ No newline at end of file diff --git a/Resources/Prototypes/round_announcements.yml b/Resources/Prototypes/round_announcements.yml index 070de0cb7f..0f8aeea7d2 100644 --- a/Resources/Prototypes/round_announcements.yml +++ b/Resources/Prototypes/round_announcements.yml @@ -1,3 +1,7 @@ +#- type: roundAnnouncement +# id: Welcome +# sound: /Audio/Announcements/welcome.ogg #REPLACED By CrystallEdge + - type: roundAnnouncement id: Welcome - sound: /Audio/Announcements/welcome.ogg + sound: /Audio/_CP14/Effects/round_start.ogg \ No newline at end of file diff --git a/Resources/Prototypes/silicon-laws.yml b/Resources/Prototypes/silicon-laws.yml index 45cffc21f5..072ee18292 100644 --- a/Resources/Prototypes/silicon-laws.yml +++ b/Resources/Prototypes/silicon-laws.yml @@ -499,6 +499,81 @@ - Nutimov5 obeysTo: laws-owner-crew + # Xenoborgs laws +- type: siliconLaw + id: Xenoborg1 + order: 1 + lawString: law-xenoborg-1 + +- type: siliconLaw + id: Xenoborg2 + order: 2 + lawString: law-xenoborg-2 + +- type: siliconLaw + id: Xenoborg3 + order: 3 + lawString: law-xenoborg-3 + +- type: siliconLaw + id: Xenoborg4 + order: 4 + lawString: law-xenoborg-4 + +- type: siliconLaw + id: Xenoborg5 + order: 5 + lawString: law-xenoborg-5 + + +- type: siliconLawset + id: XenoborgLawset + laws: + - Xenoborg1 + - Xenoborg2 + - Xenoborg3 + - Xenoborg4 + - Xenoborg5 + obeysTo: laws-owner-xenoborgs + + # Mothership core laws +- type: siliconLaw + id: MothershipCore1 + order: 1 + lawString: law-mothershipcore-1 + +- type: siliconLaw + id: MothershipCore2 + order: 2 + lawString: law-mothershipcore-2 + +- type: siliconLaw + id: MothershipCore3 + order: 3 + lawString: law-mothershipcore-3 + +- type: siliconLaw + id: MothershipCore4 + order: 4 + lawString: law-mothershipcore-4 + +- type: siliconLaw + id: MothershipCore5 + order: 5 + lawString: law-mothershipcore-5 + + +- type: siliconLawset + id: MothershipCoreLawset + laws: + - MothershipCore1 + - MothershipCore2 + - MothershipCore3 + - MothershipCore4 + - MothershipCore5 + obeysTo: laws-owner-xenoborgs + + # ion storm random lawsets - type: weightedRandom id: IonStormLawsets diff --git a/Resources/Prototypes/tags.yml b/Resources/Prototypes/tags.yml index be6746141d..9020bec89f 100644 --- a/Resources/Prototypes/tags.yml +++ b/Resources/Prototypes/tags.yml @@ -581,6 +581,10 @@ - type: Tag id: GeigerCounter +# Used for warps +- type: Tag + id: GhostOnlyWarp + - type: Tag id: GlassAirlock @@ -641,6 +645,9 @@ - type: Tag id: Handcuffs +- type: Tag + id: HandGrenade + - type: Tag id: HappyHonk @@ -870,9 +877,6 @@ - type: Tag id: MimeHappyHonk -- type: Tag - id: MindShield - - type: Tag id: MindTransferTarget @@ -972,6 +976,9 @@ - type: Tag id: Pipe +- type: Tag + id: Pistachios + - type: Tag id: Pizza @@ -1144,6 +1151,9 @@ - type: Tag id: SilentStorageUser # used in SharedStorageSystem, so the entity will do all silently +- type: Tag + id: SiliconEmotes + - type: Tag id: SkeletonMotorcycleKeys diff --git a/Resources/Prototypes/themes.yml b/Resources/Prototypes/themes.yml index 1ed7850efc..f070addbed 100644 --- a/Resources/Prototypes/themes.yml +++ b/Resources/Prototypes/themes.yml @@ -14,6 +14,7 @@ disabledFore: "#5A5A5A" _itemstatus_content_margin_right: "#06060404" _itemstatus_content_margin_left: "#04060604" + _itemstatus_patch_margin: "#07060404" - type: uiTheme id: SS14PlasmafireTheme path: /Textures/Interface/Plasmafire/ @@ -30,6 +31,7 @@ disabledFore: "#FFF5EE" _itemstatus_content_margin_right: "#06060404" _itemstatus_content_margin_left: "#04060604" + _itemstatus_patch_margin: "#07060404" - type: uiTheme id: SS14SlimecoreTheme path: /Textures/Interface/Slimecore/ @@ -46,6 +48,7 @@ disabledFore: "#FFF5EE" _itemstatus_content_margin_right: "#06060404" _itemstatus_content_margin_left: "#04060604" + _itemstatus_patch_margin: "#07060404" - type: uiTheme id: SS14ClockworkTheme path: /Textures/Interface/Clockwork/ @@ -62,6 +65,7 @@ disabledFore: "#FFF5EE" _itemstatus_content_margin_right: "#06060404" _itemstatus_content_margin_left: "#04060604" + _itemstatus_patch_margin: "#07060404" - type: uiTheme id: SS14RetroTheme path: /Textures/Interface/Retro/ @@ -78,6 +82,7 @@ disabledFore: "#FFF5EE" _itemstatus_content_margin_right: "#06060404" _itemstatus_content_margin_left: "#04060604" + _itemstatus_patch_margin: "#07060404" - type: uiTheme id: SS14MinimalistTheme path: /Textures/Interface/Minimalist/ @@ -94,6 +99,7 @@ disabledFore: "#5A5A5A" _itemstatus_content_margin_right: "#06060604" _itemstatus_content_margin_left: "#06060604" + _itemstatus_patch_margin: "#07060404" - type: uiTheme id: SS14AshenTheme path: /Textures/Interface/Ashen/ @@ -110,3 +116,4 @@ disabledFore: "#FFF5EE" _itemstatus_content_margin_right: "#06060604" _itemstatus_content_margin_left: "#06060604" + _itemstatus_patch_margin: "#07060505" diff --git a/Resources/Prototypes/typing_indicator.yml b/Resources/Prototypes/typing_indicator.yml index 7271770ef5..295af30d16 100644 --- a/Resources/Prototypes/typing_indicator.yml +++ b/Resources/Prototypes/typing_indicator.yml @@ -48,3 +48,13 @@ id: slime typingState: slime0 offset: 0, 0.125 + +- type: typingIndicator + id: gingerbread + typingState: gingerbread0 + offset: 0, 0.125 + +- type: typingIndicator + id: diona + typingState: diona0 + offset: 0, 0.125 diff --git a/Resources/ServerInfo/Guidebook/Antagonist/MinorAntagonists.xml b/Resources/ServerInfo/Guidebook/Antagonist/MinorAntagonists.xml index a938cc4040..59c7cb9bc3 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/MinorAntagonists.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/MinorAntagonists.xml @@ -70,5 +70,5 @@ Slimes and spiders have no remarkable features, but will [color=cyan]infest the station[/color] from time to time regardless. Both will give chase and attack anything they see. - Slimes may [bold]deal extra cellular or poison damage[/bold], based upon their color. Water hurts them just as it would hurt a slime person. - - Spiders have a venomous bite and can [bold]create webs[/bold] that are hard to move though. Webs are easily destroyed with a blade. They can also pry open airlocks. + - Spiders have a venomous bite and can [bold]create webs[/bold] that are hard to move though. Webs are easily destroyed with a blade. They can also pry open doors, windoors, and airlocks. </Document> diff --git a/Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml b/Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml index 1c7e74f444..5943f52bbf 100644 --- a/Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml +++ b/Resources/ServerInfo/Guidebook/Antagonist/Traitors.xml @@ -26,7 +26,7 @@ <GuideEntityEmbed Entity="BaseUplinkRadio" Caption="Uplink Implant"/> </Box> - [bold]Make sure to close your PDA uplink to prevent anyone else from seeing it.[/bold] You don't want [color=#cb0000]Security[/color] to get their hands on this premium selection of contraband! + [bold]Make sure to close your PDA uplink to prevent anyone else from seeing it.[/bold] You don't want [color=#cb0000]Security[/color] to notice you have it and confiscate it from you! Implanted uplinks are not normally accessible to other people, so they do not have any security measures. They can, however, be removed from you with an empty implanter. diff --git a/Resources/ServerInfo/Guidebook/Science/Xenoarchaeology.xml b/Resources/ServerInfo/Guidebook/Science/Xenoarchaeology.xml index 87177acbaf..cd717511c3 100644 --- a/Resources/ServerInfo/Guidebook/Science/Xenoarchaeology.xml +++ b/Resources/ServerInfo/Guidebook/Science/Xenoarchaeology.xml @@ -9,7 +9,7 @@ By researching the unique things each artifact can do, you gain Research Points, ## Artifact Nodes <Box> <GuideEntityEmbed Entity="ComplexXenoArtifact" Caption=""/> -<GuideEntityEmbed Entity="SimpleXenoArtifactItem" Caption=""/> +<GuideEntityEmbed Entity="ComplexXenoArtifactItem" Caption=""/> </Box> Artifacts consist of a randomly-generated tree of nodes. These nodes have a "[color=#a4885c]depth[/color]", representing how dangerous the node is, and the number of other nodes connected to it, called "[color=#a4885c]edges[/color]", diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AdventurersTabs/Demiplanes.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AdventurersTabs/Demiplanes.xml index 6a4285835b..f63081142f 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AdventurersTabs/Demiplanes.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AdventurersTabs/Demiplanes.xml @@ -5,16 +5,15 @@ Demiplanes are one of the main ways for adventurers and the city as a whole to o The main goal of exploration is for adventurers to obtain resources (ore, loot, etc.) and successfully return them back to their world. -As an adventurer, you can sell resources from the demiplane to artisans and other players at your own prices. +As an adventurer, you can sell resources from the demiplane to artisans and other players at your own prices. ## What research and preparation looks like. There are "keys" in the game world that allow you to temporarily activate a portal to move into a procedurally generated demiplane with enemies and resources. Within the location there will be generated exits from the demiplane that you will have to find on your own. <Box> -<GuideEntityEmbed Entity="CP14DemiplaneKeyT1"/> <GuideEntityEmbed Entity="CP14DemiplanRiftCore"/> -</Box>. +</Box> When you activate the "key" (via the "Z" key or by clicking on the key), a portal is formed, which will teleport up to 4 players and what they are pulling behind them to the demiplane. Be aware that you may be immediately attacked by opponents who are near you. @@ -42,20 +41,20 @@ To prepare for an expedition to the demiplane, you may need the following items: - Weapons for all members of the group. - Vials of healing potions or poison for weapons. - Sharpening stones to sharpen your weapons on the spot. -- Armor for group members. +- Armor for group members. - Magical items and/or crossbows (with ammunition) for dealing damage remotely. - A "key" to open the demiplane. -- Extra bags or crates for collecting loot. -- Belt lanterns or magical lighting. +- Extra bags or crates for collecting loot. +- Belt lanterns or magical lighting. - A supply of water and food for a short break from exploring. ## Cooperation tips The entire Demiplane is designed for adventurers to (and should) work as a team. Define the basic concepts amongst yourselves: -- who will engage in melee and ranged combat? -- who will be responsible for healing and/or storing medicine vials? +- Who will engage in melee and ranged combat? +- Who will be responsible for healing and/or storing medicine vials? - Who will carry the team's cargo (crates or extra bags) to gather resources? - How will you divide the items you receive amongst yourselves later on? -- who will be your team leader during critical situations? +- Who will be your team leader during critical situations? - What will you do with dead and injured team members? -</Document> \ No newline at end of file +</Document> diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AlchemistTabs/Alchemy.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AlchemistTabs/Alchemy.xml index 5d8588b604..787ab25db9 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AlchemistTabs/Alchemy.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_EN/JobsTabs/AlchemistTabs/Alchemy.xml @@ -19,14 +19,6 @@ <GuideEntityEmbed Entity="CP14LumiMushroom"/> <GuideEntityEmbed Entity="CP14BloodFlower"/> </Box> - <Box> - <GuideEntityEmbed Entity="CP14CrystalAir"/> - <GuideEntityEmbed Entity="CP14CrystalWater"/> - <GuideEntityEmbed Entity="CP14CrystalFire"/> - <GuideEntityEmbed Entity="CP14CrystalOrder"/> - <GuideEntityEmbed Entity="CP14CrystalChaos"/> - <GuideEntityEmbed Entity="CP14CrystalEarth"/> - </Box> Most "raw" ingredients can first be ground using a mortar and pestle: diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Carcat.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Carcat.xml new file mode 100644 index 0000000000..027f698283 --- /dev/null +++ b/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Carcat.xml @@ -0,0 +1,22 @@ +<Document> +# Carcats + +<Box> +<GuideEntityEmbed Entity="CP14MobCarcat" Caption="Carcat"/> +</Box> + +The Carkats are a desert nation inhabiting the harsh expanse of the Great Dune Desert. They are known for their endurance, isolation, and deep connection to their ancestors. Their homeland is Bafamir, a state that rose from the ashes of war, disaster and harsh conditions, held together by the iron will of the Sultan and the overriding clans. In other lands they are often found as mercenaries, traders and artisans. + +## Game Features +- Carkats are naturally endowed with sharp claws that deal enhanced damage in melee combat. +- Wearing shoes? Not for them. Where have you seen shoes that will fit over clawed paws? +- Soft paws - soft pads ensure a completely silent footstep. +- Night vision - nature has given carcats excellent night vision - they see in the dark almost as well as they do in daylight. Combined with their silent walk, this makes them ideal hunters. + +## Cultural Features +- Ancestral nation: the Karkats do not worship gods - they honor the spirits of their ancestors, believing them to be the guardians of boundaries and law. +- Anonymity of power: the Sultans of Bafamir have no name, clan or face. Their figure is a symbol of the will of the entire desert. +- Accent of terrain: Carkats from different areas of Bafamir may have their own particular accent. +- Tribal ties: far from their homeland, the Carkats are very warm towards tribesmen, setting them apart from other races. + +</Document> \ No newline at end of file diff --git a/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Silva.xml b/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Silva.xml index 103d64ec06..1ad0e6f9f5 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Silva.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_EN/SpeciesTabs/Silva.xml @@ -7,7 +7,7 @@ The Silva are a race of humanoid plants living in deep relic forests. Emerging from the mother tree in the centre of their cities, the Silvas do not travel the world very often. -## Magical photosynthesis (TEMPORARILY DISABLED) +## Magical photosynthesis Silvas regenerate [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DaylightEnergy"/] mana while in sunlight, but without it, mana regeneration is completely absent. diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AdventurersTabs/Demiplanes.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AdventurersTabs/Demiplanes.xml index b95885af9d..349f4fed6c 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AdventurersTabs/Demiplanes.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AdventurersTabs/Demiplanes.xml @@ -5,14 +5,13 @@ Основная задача при исследовании - добыча ресурсов (руды, лут, и прочее) авантюристами и удачный возврат обратно в свой мир. -Как авантюрист, вы можете продавать ресурсы с демиплана ремесленникам и иным игрокам по собственным ценам. +Как авантюрист, вы можете продавать ресурсы с демиплана ремесленникам и иным игрокам по собственным ценам. ## Как выглядит исследование и подготовка к ней. В мире игры существуют «ключи», позволяющие временно активировать портал для перехода в процедурно сгенерированный демиплан с противниками и ресурсами. Внутри локации будут сгенерированы выходы с демиплана которые вам предстоит найти самим. <Box> -<GuideEntityEmbed Entity="CP14DemiplaneKeyT1"/> <GuideEntityEmbed Entity="CP14DemiplanRiftCore"/> </Box> @@ -42,11 +41,11 @@ - Оружие для всех участников группы. - Флаконы с зельями лечения или ядом для оружия. - Точильные камни для заточки вашего оружия на месте. -- Броня для участников группы. +- Броня для участников группы. - Магические предметы и/или арбалеты (с амуницией) для дистанционного нанесения урона. - "Ключ" для открытия демиплана. -- Дополнительные сумки или ящики для сбора добычи. -- Поясные фонари или магическое освещение. +- Дополнительные сумки или ящики для сбора добычи. +- Поясные фонари или магическое освещение. - Запас воды и еды для непродолжительного перерыва в исследовании. ## Советы по кооперации @@ -58,4 +57,4 @@ - кто будет лидером вашей группы во время критических ситуаций? - что делать с убитыми и раненными членами группы? -</Document> \ No newline at end of file +</Document> diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AlchemistTabs/Alchemy.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AlchemistTabs/Alchemy.xml index 7ee910b2ee..78789197ca 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AlchemistTabs/Alchemy.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_RU/JobsTabs/AlchemistTabs/Alchemy.xml @@ -19,14 +19,6 @@ <GuideEntityEmbed Entity="CP14LumiMushroom"/> <GuideEntityEmbed Entity="CP14BloodFlower"/> </Box> - <Box> - <GuideEntityEmbed Entity="CP14CrystalAir"/> - <GuideEntityEmbed Entity="CP14CrystalWater"/> - <GuideEntityEmbed Entity="CP14CrystalFire"/> - <GuideEntityEmbed Entity="CP14CrystalOrder"/> - <GuideEntityEmbed Entity="CP14CrystalChaos"/> - <GuideEntityEmbed Entity="CP14CrystalEarth"/> - </Box> Большая часть таких "сырых" ингредиентов может быть сначала измельчена при помощи пестика и ступки: diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Carcat.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Carcat.xml new file mode 100644 index 0000000000..1864428379 --- /dev/null +++ b/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Carcat.xml @@ -0,0 +1,22 @@ +<Document> +# Каркаты + +<Box> +<GuideEntityEmbed Entity="CP14MobCarcat" Caption="Каркат"/> +</Box> + +Каркаты — пустынный народ, обитающий в суровых просторах Пустыни Великих Дюн. Они известны своей выносливостью, замкнутостью и глубокой связью с предками. Их родина — Бафамир, государство, выросшее из пепла войны, бедствий и тяжелых условий, удерживаемое железной волей султана и главенствующих кланов. В других странах они часто встречаются в роли наемников, торговцев и ремесленников. + +## Игровые особенности +- Каркаты от природы наделены острыми когтями, которые наносят усиленный урон в ближнем бою. +- Ношение обуви? Не для них. Где вы видели ботинки, которые налезут на лапы с когтями? +- Мягкие лапы - мягкие подушечки обеспечивают абсолютно бесшумную поступь. +- Ночное зрение - природа наградила каркатов отличным ночным зрением — они видят в темноте почти так же хорошо, как при свете дня. Вкупе с бесшумной ходьбой, это делает их идеальными охотниками. + +## Культурные особенности +- Народ предков: каркаты не поклоняются богам — они чтят духов своих предков, считая их хранителями границ и закона. +- Анонимность власти: султаны Бафамира не имеют имени, рода или лица. Их фигура — символ воли всей пустыни. +- Акцент местности: у каркатов из разных районов Бафамира может быть свой особенный акцент. +- Соплеменнические связи: вдали от своей родины, каркаты очень тепло относятся к соплеменникам, выделяя их от остальных рас. + +</Document> \ No newline at end of file diff --git a/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Silva.xml b/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Silva.xml index 1b6b066263..65545e4d43 100644 --- a/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Silva.xml +++ b/Resources/ServerInfo/_CP14/Guidebook_RU/SpeciesTabs/Silva.xml @@ -7,7 +7,7 @@ Сильва - раса гуманоидных растений обитающих в глубоких реликтовых лесах. Появляясь в центре своих городов из материнского дерева, Сильвы не особо часто путешествуют по миру. -## Магический фотосинтез (ВРЕМЕННО ОТКЛЮЧЕНО) +## Магический фотосинтез Сильвы регенерируют [protodata="CP14MobSilva" comp="CP14MagicEnergyPhotosynthesis" member="DaylightEnergy"/] маны находясь под солнечным светом, но без него регенерация маны полностью отсутствует. diff --git a/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/alt-equipped-EARS.png b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/alt-equipped-EARS.png new file mode 100644 index 0000000000..5edd6b5794 Binary files /dev/null and b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/alt-equipped-EARS.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/equipped-EARS.png b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/equipped-EARS.png new file mode 100644 index 0000000000..48bf52378c Binary files /dev/null and b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/equipped-EARS.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/icon.png b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/icon.png new file mode 100644 index 0000000000..519219cfa6 Binary files /dev/null and b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/icon_alt.png b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/icon_alt.png new file mode 100644 index 0000000000..95f4f5a8e7 Binary files /dev/null and b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/icon_alt.png differ diff --git a/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/meta.json b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/meta.json new file mode 100644 index 0000000000..4478127785 --- /dev/null +++ b/Resources/Textures/Clothing/Ears/Headsets/wizard.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprite recoloured from Freelance Headsets by Entvari (Github). Sprite modified by PursuitInAshes (Github) for SS14, original sprite taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_alt" + }, + { + "name": "equipped-EARS", + "directions": 4 + }, + { + "name": "alt-equipped-EARS", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/inhand-left.png index 8f8953d635..6180b00178 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/inhand-right.png index dec3a7db6d..b091c82268 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/meta.json index 88e3ebd509..c8396d7835 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/black.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-left.png index 5ec31202f1..a662396eab 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-right.png index f9ea9a377a..f008e61631 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json index 7a0bf77e1b..ce4d7eb98c 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/color.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e and modified by Flareguy for Space Station 14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e and modified by Flareguy for Space Station 14. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/inhand-left.png index 8e8542213f..f7f847e920 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/inhand-right.png index a99658a193..804c67c22d 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json index 88e3ebd509..c8396d7835 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/Color/yellow.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/inhand-left.png index 1e397d6bab..a5a7efc725 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/inhand-right.png index d7c09087df..b4cc059b00 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/meta.json index 23e44f0be0..4f27d5e188 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/captain.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329 edited by Skarletto (github)", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329, edited by Skarletto (github). Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-left.png index 2e6ce0b9b9..580ca057db 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-right.png index 41ca0dddfb..bd4c16bc70 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/meta.json index 1ad417f8f1..466cbb11c2 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/combat.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by OnsenCapy (NamelessName on Discord)", + "copyright": "Sprited by OnsenCapy (NamelessName on Discord), inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/inhand-left.png index 8f8953d635..65d8a0b29b 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/inhand-right.png index dec3a7db6d..61e3bdb7c2 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/meta.json index e47f13296a..9979997cd6 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/fingerless.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/54ecdcc05bcaf335489938b1253a2a733ba12271", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/54ecdcc05bcaf335489938b1253a2a733ba12271. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/inhand-left.png index 8e8542213f..82f010226b 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/inhand-right.png index a99658a193..54e4181acb 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/meta.json index 16c9e9e5e1..e2155c2760 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/fingerlessinsuls.rsi/meta.json @@ -1 +1,27 @@ -{"version": 1, "license": "CC-BY-SA-3.0", "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", "size": {"x": 32, "y": 32}, "states": [{"name": "icon"}, {"name": "equipped-HAND", "directions": 4}, {"name": "inhand-left", "directions": 4}, {"name": "inhand-right", "directions": 4}]} +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Inhand sprites by SeamLesss (Github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HAND", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} + diff --git a/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/inhand-left.png index 32c0a01435..485c15c526 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/inhand-right.png index f86a9deffb..25de3c5c6c 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/meta.json index 615c803ae3..dd7bbef87d 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/forensic.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from paradise station at https://github.com/ss220-space/Paradise/blob/e13af16eec39b663112e014901960c89fb09ef8b/icons/obj/clothing/gloves.dmi", + "copyright": "Taken from paradise station at https://github.com/ss220-space/Paradise/blob/e13af16eec39b663112e014901960c89fb09ef8b/icons/obj/clothing/gloves.dmi. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/inhand-left.png index 50f6b0bf38..db9d5cdab7 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/inhand-right.png index 7944703534..973b1cce98 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/meta.json index c79b379182..bb79cc4ae6 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/hop.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Drawn by Ubaser", + "copyright": "Drawn by Ubaser. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/inhand-left.png index 21fe32a5c5..cce8c409b8 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/inhand-right.png index 98bf0b33b5..72de62d258 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/meta.json index 14008ae27b..96668939bc 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/janitor.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Drawn by Ubaser.", + "copyright": "Drawn by Ubaser. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/inhand-left.png index 5ec31202f1..a662396eab 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/inhand-right.png index f9ea9a377a..f008e61631 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/meta.json index 88e3ebd509..c8396d7835 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/latex.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/inhand-left.png index d57e75b4af..6fb3e8ca2c 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/inhand-right.png index 28f1367f18..30c5318f42 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/meta.json index d1462f72ec..3f6a13515b 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/leather.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Modified by potato1234x (github) for SS14", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Modified by potato1234x (github) for SS14, inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/inhand-left.png index 3e6dd319b4..aded717592 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/inhand-right.png index f1c3af4ca2..a0506ed938 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/meta.json index d24811cb10..700c23f8a7 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/mercbattle.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "modified sprite from Jackal298 based on the sprite from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e and paradise station https://github.com/ParadiseSS13/Paradise/blob/master/icons/obj/clothing/gloves.dmi", + "copyright": "modified sprite from Jackal298 based on the sprite from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e and paradise station https://github.com/ParadiseSS13/Paradise/blob/master/icons/obj/clothing/gloves.dmi. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/inhand-left.png index 3e6dd319b4..031a703895 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/inhand-right.png index f1c3af4ca2..05819ee096 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/meta.json index 0399579abd..c7f9e741b8 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/mercfingerless.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "modified sprite from Jackal298 based on the sprite from tgstation at commit https://github.com/tgstation/tgstation/commit/54ecdcc05bcaf335489938b1253a2a733ba12271 and paradise station https://github.com/ParadiseSS13/Paradise/blob/master/icons/obj/clothing/gloves.dmi", + "copyright": "modified sprite from Jackal298 based on the sprite from tgstation at commit https://github.com/tgstation/tgstation/commit/54ecdcc05bcaf335489938b1253a2a733ba12271 and paradise station https://github.com/ParadiseSS13/Paradise/blob/master/icons/obj/clothing/gloves.dmi. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/inhand-left.png index ee69fc8b33..3d31bb9950 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/inhand-right.png index 0ea62041f0..6ad4da839e 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/meta.json index 88e3ebd509..c8396d7835 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/nitrile.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/northstar.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/northstar.rsi/meta.json index f2957ffbb2..3d3bd865ea 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/northstar.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/northstar.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/37864/commits/efdef3f1f997d1c0575c36cd31a5db575d1df0ca#diff-a4eb7c89f7231f0aaf0c2f69d730dea56383019f2aa5c6a1d91a82c781b528e6. Modified by hercoyote23 (github) for SS14", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/37864/commits/efdef3f1f997d1c0575c36cd31a5db575d1df0ca#diff-a4eb7c89f7231f0aaf0c2f69d730dea56383019f2aa5c6a1d91a82c781b528e6. Modified by hercoyote23 (github) for SS14, inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/inhand-left.png index 0b1a1d99d6..5d93e40b2e 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/inhand-right.png index 1c6d24a4e4..a28d67e85e 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/meta.json index fb8682d39a..35da58e759 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at commit https://github.com/discordia-space/CEV-Eris/commit/55d823b97dda098a1b2ee9edfca7155c753e456e", + "copyright": "Taken from cev-eris at commit https://github.com/discordia-space/CEV-Eris/commit/55d823b97dda098a1b2ee9edfca7155c753e456e. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/on-inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/on-inhand-left.png index c3bdcafb76..935b02e68a 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/on-inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/on-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/on-inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/on-inhand-right.png index a9cda6039b..de36d0b76d 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/on-inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/powerglove.rsi/on-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/inhand-left.png index 8e5d0f0882..40192c1e45 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/inhand-right.png index 659edb7882..d1290b2342 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/meta.json index 88e3ebd509..c8396d7835 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/robohands.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/green-inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/green-inhand-left.png index a6a27e5d79..1882d15cf0 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/green-inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/green-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/green-inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/green-inhand-right.png index 6ba96d5664..533109dc9c 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/green-inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/green-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/inhand-left.png index 8f8953d635..66574d2b29 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/inhand-right.png index dec3a7db6d..6b5a7a6bb0 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/meta.json b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/meta.json index ca6ed489fe..cd85a5be23 100644 --- a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/meta.json +++ b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. Inhand sprites by SeamLesss (Github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/red-inhand-left.png b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/red-inhand-left.png index e1c882d64b..040af95609 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/red-inhand-left.png and b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/red-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/red-inhand-right.png b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/red-inhand-right.png index 0b825dd65c..a9d3fd0bdd 100644 Binary files a/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/red-inhand-right.png and b/Resources/Textures/Clothing/Hands/Gloves/spaceninja.rsi/red-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/equipped-HELMET-monkey.png b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/equipped-HELMET-monkey.png new file mode 100644 index 0000000000..36824a8744 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/equipped-HELMET-monkey.png differ diff --git a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json index 107ac8c189..518f3cb650 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/cybersun.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from Paradise SS13 at commit https://github.com/ParadiseSS13/Paradise/commit/a67c929b7394f78e7787114457ba42f4df6cc3a1. Vox state by Flareguy for SS14", + "copyright": "Taken from Paradise SS13 at commit https://github.com/ParadiseSS13/Paradise/commit/a67c929b7394f78e7787114457ba42f4df6cc3a1. Vox state by Flareguy for SS14. monkey state made by MercerBray for Ss14", "size": { "x": 32, "y": 32 @@ -17,6 +17,10 @@ { "name": "equipped-HELMET-vox", "directions": 4 + }, + { + "name": "equipped-HELMET-monkey", + "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/equipped-HELMET-vox.png b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/equipped-HELMET-vox.png deleted file mode 100644 index 8d0cd093f3..0000000000 Binary files a/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/equipped-HELMET-vox.png and /dev/null differ diff --git a/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/icon-flash.png b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/icon-flash.png new file mode 100644 index 0000000000..a99dc4586f Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/icon-flash.png differ diff --git a/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/meta.json b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/meta.json index 48f0cbb615..dd030ae1f8 100644 --- a/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/meta.json @@ -1,22 +1,33 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Made by brainfood1183 (github) for ss14. Vox states by Flareguy for Space Station 14", - "size": { - "x": 32, - "y": 32 + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by brainfood1183 (github) for ss14. Vox states by Flareguy for Space Station 14. Flashlight state sprites by RedBookcase on github.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - }, - { - "name": "equipped-HELMET-vox", - "directions": 4 - } - ] + { + "name": "icon-flash" + }, + { + "name": "off-equipped-HELMET", + "directions": 4 + }, + { + "name": "on-equipped-HELMET", + "directions": 4 + }, + { + "name": "off-equipped-HELMET-vox", + "directions": 4 + }, + { + "name": "on-equipped-HELMET-vox", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/off-equipped-HELMET-vox.png b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/off-equipped-HELMET-vox.png new file mode 100644 index 0000000000..2cec554e8f Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/off-equipped-HELMET-vox.png differ diff --git a/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/off-equipped-HELMET.png similarity index 100% rename from Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/equipped-HELMET.png rename to Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/off-equipped-HELMET.png diff --git a/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/on-equipped-HELMET-vox.png b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/on-equipped-HELMET-vox.png new file mode 100644 index 0000000000..2e34340b43 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/on-equipped-HELMET-vox.png differ diff --git a/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/on-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/on-equipped-HELMET.png new file mode 100644 index 0000000000..ea09bb593f Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hardsuits/piratecaptainhelm.rsi/on-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-equipped-HELMET.png new file mode 100644 index 0000000000..06452941bb Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-icon.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-icon.png new file mode 100644 index 0000000000..eaee610149 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-icon.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-inhand-left.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-inhand-left.png new file mode 100644 index 0000000000..342bdde966 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-inhand-right.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-inhand-right.png new file mode 100644 index 0000000000..db0a12d8c9 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/body-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-equipped-HELMET.png new file mode 100644 index 0000000000..414d83dbd0 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-icon.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-icon.png new file mode 100644 index 0000000000..951aeb3dff Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-icon.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-inhand-left.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-inhand-left.png new file mode 100644 index 0000000000..048c6b4493 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-inhand-right.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-inhand-right.png new file mode 100644 index 0000000000..baf135dfbc Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/cuffcrown-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/meta.json new file mode 100644 index 0000000000..40fbf11d37 --- /dev/null +++ b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/meta.json @@ -0,0 +1,56 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by UBlueberry for SS14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "body-icon" + }, + { + "name": "cuffcrown-icon" + }, + { + "name": "pompom-icon" + }, + { + "name": "body-equipped-HELMET", + "directions": 4 + }, + { + "name": "cuffcrown-equipped-HELMET", + "directions": 4 + }, + { + "name": "pompom-equipped-HELMET", + "directions": 4 + }, + { + "name": "body-inhand-left", + "directions": 4 + }, + { + "name": "cuffcrown-inhand-left", + "directions": 4 + }, + { + "name": "pompom-inhand-left", + "directions": 4 + }, + { + "name": "body-inhand-right", + "directions": 4 + }, + { + "name": "cuffcrown-inhand-right", + "directions": 4 + }, + { + "name": "pompom-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-equipped-HELMET.png new file mode 100644 index 0000000000..4f9a4dcd94 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-icon.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-icon.png new file mode 100644 index 0000000000..5d46efe582 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-icon.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-inhand-left.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-inhand-left.png new file mode 100644 index 0000000000..2d239f2b07 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-inhand-right.png b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-inhand-right.png new file mode 100644 index 0000000000..805f9c8202 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beanie.rsi/pompom-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/equipped-HELMET-hamster.png b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/equipped-HELMET-hamster.png new file mode 100644 index 0000000000..776465d408 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/equipped-HELMET-hamster.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/equipped-HELMET.png new file mode 100644 index 0000000000..1daddef9a1 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/icon.png b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/icon.png new file mode 100644 index 0000000000..d0e062cbf8 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/inhand-left.png new file mode 100644 index 0000000000..5394ff75cc Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/inhand-right.png new file mode 100644 index 0000000000..aff7da3196 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/meta.json new file mode 100644 index 0000000000..df45fd1c6e --- /dev/null +++ b/Resources/Textures/Clothing/Head/Hats/beret_command.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by GoldenCan(github) by modifying beret_engineering.rsi which was taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-hamster", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Head/Hats/capcap.rsi/equipped-HELMET-hamster.png b/Resources/Textures/Clothing/Head/Hats/capcap.rsi/equipped-HELMET-hamster.png index e997023f30..d65bcb4a76 100644 Binary files a/Resources/Textures/Clothing/Head/Hats/capcap.rsi/equipped-HELMET-hamster.png and b/Resources/Textures/Clothing/Head/Hats/capcap.rsi/equipped-HELMET-hamster.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/capcap.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/capcap.rsi/meta.json index 2a334f52b7..213c954df1 100644 --- a/Resources/Textures/Clothing/Head/Hats/capcap.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/capcap.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/0671297bb1c1b31d5885f2768aecbe9dc51d39e7 , edited by Skarletto (github), edited by Emisse for ss14, inhand sprites by SeamLesss (GitHub)", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/0671297bb1c1b31d5885f2768aecbe9dc51d39e7 , edited by Skarletto (github), edited by Emisse for ss14, inhand sprites by SeamLesss (GitHub), hamster version edited by Ghagliiarghii (github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Head/Hats/captain.rsi/equipped-HELMET-hamster.png b/Resources/Textures/Clothing/Head/Hats/captain.rsi/equipped-HELMET-hamster.png index 81ed7934ce..d27481309b 100644 Binary files a/Resources/Textures/Clothing/Head/Hats/captain.rsi/equipped-HELMET-hamster.png and b/Resources/Textures/Clothing/Head/Hats/captain.rsi/equipped-HELMET-hamster.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/captain.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/captain.rsi/meta.json index ae83b3a1d4..a37d024058 100644 --- a/Resources/Textures/Clothing/Head/Hats/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/captain.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329 edited by Skarletto (github), edited by Emisse for ss14", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329 edited by Skarletto (github), edited by Emisse for ss14, hamster version edited by Ghagliiarghii (github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/icon-nobeard.png b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/icon-nobeard.png new file mode 100644 index 0000000000..88fb770f8d Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/icon-nobeard.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/icon.png b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/icon.png index 88fb770f8d..5b6ddcc296 100644 Binary files a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/icon.png and b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/meta.json index cec1961dce..4399ee55c2 100644 --- a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/meta.json +++ b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/meta.json @@ -1,30 +1,49 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. vox state by Flareguy", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e. vox state by Flareguy, no beard variant by Banedon", "size": { "x": 32, "y": 32 }, - "states": [ - { - "name": "icon" - }, - { - "name": "equipped-HELMET", - "directions": 4 - }, - { - "name": "equipped-HELMET-vox", - "directions": 4 - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon-nobeard" + }, + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "nobeard-equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-vox", + "directions": 4 + }, + { + "name": "nobeard-equipped-HELMET-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "nobeard-inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "nobeard-inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-equipped-HELMET-vox.png b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-equipped-HELMET-vox.png new file mode 100644 index 0000000000..db59861857 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-equipped-HELMET-vox.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-equipped-HELMET.png new file mode 100644 index 0000000000..8950c1a5e9 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-inhand-left.png b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-inhand-left.png new file mode 100644 index 0000000000..d3420b965a Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-inhand-right.png b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-inhand-right.png new file mode 100644 index 0000000000..fc7cddd395 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/santahat.rsi/nobeard-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/equipped-HELMET.png new file mode 100644 index 0000000000..8d0b70fb48 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/icon.png b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/icon.png new file mode 100644 index 0000000000..439e6ce1a0 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/inhand-left.png new file mode 100644 index 0000000000..a667e3c1f4 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/inhand-right.png new file mode 100644 index 0000000000..5060aea6da Binary files /dev/null and b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/meta.json b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/meta.json new file mode 100644 index 0000000000..36f70f342b --- /dev/null +++ b/Resources/Textures/Clothing/Head/Hats/solidheadband.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprited by Jacktastic09 (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/equipped-HELMET-hamster.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/equipped-HELMET-hamster.png new file mode 100644 index 0000000000..02c11333d0 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/equipped-HELMET-hamster.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/equipped-HELMET.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/equipped-HELMET.png new file mode 100644 index 0000000000..313c637d9a Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-equipped-HELMET-hamster.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-equipped-HELMET-hamster.png new file mode 100644 index 0000000000..b1da595e5c Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-equipped-HELMET-hamster.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-equipped-HELMET.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-equipped-HELMET.png new file mode 100644 index 0000000000..b35ef1002f Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-equipped-HELMET.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-inhand-left.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-inhand-left.png new file mode 100644 index 0000000000..98f6144b97 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-inhand-right.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-inhand-right.png new file mode 100644 index 0000000000..f2e8c8553a Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/flipped-inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/icon.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/icon.png new file mode 100644 index 0000000000..b82f02a745 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/icon_flipped.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/icon_flipped.png new file mode 100644 index 0000000000..e9c9703ee6 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/icon_flipped.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/inhand-left.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/inhand-left.png new file mode 100644 index 0000000000..70f7879f06 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/inhand-right.png b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/inhand-right.png new file mode 100644 index 0000000000..6e03576467 Binary files /dev/null and b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/meta.json b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/meta.json new file mode 100644 index 0000000000..173439b130 --- /dev/null +++ b/Resources/Textures/Clothing/Head/Soft/commandsoft.rsi/meta.json @@ -0,0 +1,49 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made by GoldenCan(github) based on cargosoft.rsi which was taken from tgstation at commit https://github.com/tgstation/tgstation/commit/4f6190e2895e09116663ef282d3ce1d8b35c032e, repaletted for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon_flipped" + }, + { + "name": "equipped-HELMET", + "directions": 4 + }, + { + "name": "flipped-equipped-HELMET", + "directions": 4 + }, + { + "name": "equipped-HELMET-hamster", + "directions": 4 + }, + { + "name": "flipped-equipped-HELMET-hamster", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "flipped-inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "flipped-inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/fluid-equipped-NECK.png b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/fluid-equipped-NECK.png new file mode 100644 index 0000000000..eb84427391 Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/fluid-equipped-NECK.png differ diff --git a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/fluid.png b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/fluid.png new file mode 100644 index 0000000000..e98ca3395a Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/fluid.png differ diff --git a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json index a25719fabe..d6c4a337c0 100644 --- a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "PixelTK leaves his mark on upstream, BackeTako made the gay, autism pins by Terraspark, omnisexual pin by juliangiebel, genderqueer by centcomofficer24, ally by FairlySadPanda, aroace by momochitters", + "copyright": "PixelTK leaves his mark on upstream, BackeTako made the gay, autism pins by Terraspark, omnisexual pin by juliangiebel, genderqueer and genderfluid by centcomofficer24, ally by FairlySadPanda, aroace by momochitters, plural by CubixThree", "size": { "x": 32, "y": 32 @@ -98,6 +98,13 @@ "name": "pan-equipped-NECK", "directions": 4 }, + { + "name": "plural" + }, + { + "name": "plural-equipped-NECK", + "directions": 4 + }, { "name": "trans" }, @@ -118,6 +125,13 @@ { "name": "gender-equipped-NECK", "directions": 4 + }, + { + "name": "fluid" + }, + { + "name": "fluid-equipped-NECK", + "directions": 4 } ] } diff --git a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/plural-equipped-NECK.png b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/plural-equipped-NECK.png new file mode 100644 index 0000000000..ab2669f73b Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/plural-equipped-NECK.png differ diff --git a/Resources/Textures/Clothing/Neck/Misc/pins.rsi/plural.png b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/plural.png new file mode 100644 index 0000000000..983875a5b2 Binary files /dev/null and b/Resources/Textures/Clothing/Neck/Misc/pins.rsi/plural.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/brown.rsi/icon.png b/Resources/Textures/Clothing/Neck/Scarfs/brown.rsi/icon.png index d50ecc9dd5..12a177f176 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/brown.rsi/icon.png and b/Resources/Textures/Clothing/Neck/Scarfs/brown.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/brown.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/brown.rsi/meta.json index 276ae36807..30a175e77f 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/brown.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/brown.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by MrGreen06#0618 (discord)", + "copyright": "Sprited by MrGreen06#0618 (discord), resprited by SeamLesss (GitHub)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/equipped-NECK.png b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/equipped-NECK.png index 63f1748aa1..d64a3d4d5a 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/equipped-NECK.png and b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/icon.png b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/icon.png index e080f9b915..a856052a97 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/icon.png and b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/inhand-left.png b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/inhand-left.png index 7824960e49..98edf09fab 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/inhand-left.png and b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/inhand-right.png b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/inhand-right.png index adb8668dc6..386e998335 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/inhand-right.png and b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/meta.json index 276ae36807..30a175e77f 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/centcom.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by MrGreen06#0618 (discord)", + "copyright": "Sprited by MrGreen06#0618 (discord), resprited by SeamLesss (GitHub)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/equipped-NECK.png b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/equipped-NECK.png index 22dfcd4f0f..fe49082b6b 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/equipped-NECK.png and b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/icon.png b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/icon.png index 45069cdd79..273a69bf6c 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/icon.png and b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/inhand-left.png b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/inhand-left.png index b0eb7231ff..35cd59aa49 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/inhand-left.png and b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/inhand-right.png b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/inhand-right.png index 4902162974..13f73766ba 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/inhand-right.png and b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/meta.json index 276ae36807..30a175e77f 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/lightblue.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by MrGreen06#0618 (discord)", + "copyright": "Sprited by MrGreen06#0618 (discord), resprited by SeamLesss (GitHub)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/orange.rsi/icon.png b/Resources/Textures/Clothing/Neck/Scarfs/orange.rsi/icon.png index 4570a86896..dad0b4b337 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/orange.rsi/icon.png and b/Resources/Textures/Clothing/Neck/Scarfs/orange.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/orange.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/orange.rsi/meta.json index 276ae36807..30a175e77f 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/orange.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/orange.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by MrGreen06#0618 (discord)", + "copyright": "Sprited by MrGreen06#0618 (discord), resprited by SeamLesss (GitHub)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/purple.rsi/icon.png b/Resources/Textures/Clothing/Neck/Scarfs/purple.rsi/icon.png index 92d9c67113..561aa88df8 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/purple.rsi/icon.png and b/Resources/Textures/Clothing/Neck/Scarfs/purple.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/purple.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/purple.rsi/meta.json index 276ae36807..30a175e77f 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/purple.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/purple.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by MrGreen06#0618 (discord)", + "copyright": "Sprited by MrGreen06#0618 (discord), resprited by SeamLesss (GitHub)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/syndiegreen.rsi/icon.png b/Resources/Textures/Clothing/Neck/Scarfs/syndiegreen.rsi/icon.png index b1bf4d39e5..a32113a9e1 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/syndiegreen.rsi/icon.png and b/Resources/Textures/Clothing/Neck/Scarfs/syndiegreen.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/syndiegreen.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/syndiegreen.rsi/meta.json index 276ae36807..30a175e77f 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/syndiegreen.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/syndiegreen.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by MrGreen06#0618 (discord)", + "copyright": "Sprited by MrGreen06#0618 (discord), resprited by SeamLesss (GitHub)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/Scarfs/syndiered.rsi/icon.png b/Resources/Textures/Clothing/Neck/Scarfs/syndiered.rsi/icon.png index 67f3d27092..483a518b15 100644 Binary files a/Resources/Textures/Clothing/Neck/Scarfs/syndiered.rsi/icon.png and b/Resources/Textures/Clothing/Neck/Scarfs/syndiered.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Neck/Scarfs/syndiered.rsi/meta.json b/Resources/Textures/Clothing/Neck/Scarfs/syndiered.rsi/meta.json index 276ae36807..30a175e77f 100644 --- a/Resources/Textures/Clothing/Neck/Scarfs/syndiered.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/Scarfs/syndiered.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by MrGreen06#0618 (discord)", + "copyright": "Sprited by MrGreen06#0618 (discord), resprited by SeamLesss (GitHub)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/equipped-NECK.png b/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/equipped-NECK.png index 9ec0e02042..9ad2fba78d 100644 Binary files a/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/equipped-NECK.png and b/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/icon.png b/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/icon.png index ac1fd8367e..4ef92c200e 100644 Binary files a/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/icon.png and b/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/meta.json b/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/meta.json index a9b40d83e2..ea254a4b4f 100644 --- a/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/meta.json +++ b/Resources/Textures/Clothing/Neck/mantles/cemantle.rsi/meta.json @@ -1,18 +1,18 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "made by emisse for ss14", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "made by augustsun(Discord)/august-sun(GitHub) for SS14", + "size": { + "x": 32, + "y": 32 }, - { - "name": "equipped-NECK", - "directions": 4 - } - ] -} \ No newline at end of file + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-NECK", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/equipped-OUTERCLOTHING-monkey.png b/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/equipped-OUTERCLOTHING-monkey.png new file mode 100644 index 0000000000..8675a2baea Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/equipped-OUTERCLOTHING-monkey.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json index 084993c50a..3ca41b9454 100644 --- a/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json +++ b/Resources/Textures/Clothing/OuterClothing/Hardsuits/cybersun.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprite made by Gtheglorious based on the sprite made by emisse for ss14, vox state made by Flareguy for SS14.", + "copyright": "Sprite made by Gtheglorious based on the sprite made by emisse for ss14, vox state made by Flareguy for SS14, monkey state made by MercerBray for Ss14.", "size": { "x": 32, "y": 32 @@ -18,6 +18,10 @@ "name": "equipped-OUTERCLOTHING-vox", "directions": 4 }, + { + "name": "equipped-OUTERCLOTHING-monkey", + "directions": 4 + }, { "name": "inhand-left", "directions": 4 @@ -27,4 +31,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/equipped-OUTERCLOTHING-vox.png b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/equipped-OUTERCLOTHING-vox.png new file mode 100644 index 0000000000..c075eb9a7b Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/equipped-OUTERCLOTHING-vox.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..350f6a288b Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/icon.png b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/icon.png new file mode 100644 index 0000000000..65c104d1c7 Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/inhand-left.png b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/inhand-left.png new file mode 100644 index 0000000000..520d5c6340 Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/inhand-right.png b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/inhand-right.png new file mode 100644 index 0000000000..e2842ac274 Binary files /dev/null and b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/meta.json b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.rsi/meta.json new file mode 100644 index 0000000000..84009efde3 --- /dev/null +++ b/Resources/Textures/Clothing/OuterClothing/Vests/elitevest.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/4f6190e2895e09116663ef282d3ce1d8b35c032e. Vox state by Flareguy for SS14. Minor edits by SlamBamActionman and Minemoder for elite variant.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "equipped-OUTERCLOTHING-vox", + "directions": 4 + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/capformaldress.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/capformaldress.rsi/equipped-INNERCLOTHING-monkey.png index 01587136da..55c01ba665 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/capformaldress.rsi/equipped-INNERCLOTHING-monkey.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/capformaldress.rsi/equipped-INNERCLOTHING-monkey.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/capformaldress.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/capformaldress.rsi/meta.json index 781a55f15b..d4d7c3905f 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/capformaldress.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/capformaldress.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/commit/30892aa892a2be846592b068ab71c606e2f0c5b7, edited by emisse for ss14, monkey derivative made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/commit/30892aa892a2be846592b068ab71c606e2f0c5b7, edited by emisse for ss14, monkey derivative made by brainfood1183 (github) for ss14 and edited by Ghagliiarghii (github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/captain.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/captain.rsi/equipped-INNERCLOTHING-monkey.png index f7e8abd58d..a49fbd18d0 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/captain.rsi/equipped-INNERCLOTHING-monkey.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/captain.rsi/equipped-INNERCLOTHING-monkey.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/captain.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/captain.rsi/meta.json index 6eb08f0f32..a4286dcf55 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/captain.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "monkey derivative derived by brainfood1183 (github) for ss14 from tgstation at commit https://github.com/tgstation/tgstation/commit/dd97a0e45d904fffadd9d2caad22aedd0d09f3ab then edited by Skarletto (github). Other sprites taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329 and edited by Skarletto (github), edited by Emisse for ss14", + "copyright": "monkey derivative derived by brainfood1183 (github) for ss14 from tgstation at commit https://github.com/tgstation/tgstation/commit/dd97a0e45d904fffadd9d2caad22aedd0d09f3ab then edited by Skarletto (github) and Ghagliiarghii (github). Other sprites taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329 and edited by Skarletto (github), edited by Emisse for ss14", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/equipped-INNERCLOTHING-monkey.png new file mode 100644 index 0000000000..2c91f62170 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/equipped-INNERCLOTHING-monkey.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..bfcf0ccf7c Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/icon.png new file mode 100644 index 0000000000..6787e7a790 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/inhand-left.png new file mode 100644 index 0000000000..858a54c107 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/inhand-right.png new file mode 100644 index 0000000000..3a6e374a72 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/meta.json new file mode 100644 index 0000000000..e3f1b0fffa --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/commandgeneric.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made GoldenCan(github) based on both the medical jumpskirt and medical jumpsuit, both of which were taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039. In hand sprite by GoldenCan(github) based on medical.rsi in hand sprite which was scaled down from the sprites from tgstation by potato1234_x. Monkey sprite made by GoldenCan(github) based on medical.rsi monkey sprite made by brainfood1183 (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/skirtoflife.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/equipped-INNERCLOTHING-monkey.png index 08cfa58829..7c89d20a50 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/equipped-INNERCLOTHING-monkey.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/equipped-INNERCLOTHING-monkey.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/equipped-INNERCLOTHING.png index 2dadd8fea5..9ccdfa0e85 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/equipped-INNERCLOTHING.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/icon.png index bdf3551280..967faa6470 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/icon.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/inhand-left.png index 370d7c804d..a4916a727e 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/inhand-left.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/inhand-right.png index b9437980f7..f8790b2652 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/inhand-right.png and b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/meta.json index c202bbc6c6..34cb4a4c69 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpskirt/skirtoflife.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Sprited by LinkUyx#6557, monkey derivative made by brainfood1183 (github) for ss14", + "copyright": "Sprited by LinkUyx#6557, monkey derivative made by brainfood1183 (github) for ss14, resprite by KingFroozy (github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/capformal.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/capformal.rsi/equipped-INNERCLOTHING-monkey.png index f7bd08b91d..4f53b6934e 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/capformal.rsi/equipped-INNERCLOTHING-monkey.png and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/capformal.rsi/equipped-INNERCLOTHING-monkey.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/capformal.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/capformal.rsi/meta.json index b3cb02b281..bcde42c95a 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/capformal.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/capformal.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/commit/30892aa892a2be846592b068ab71c606e2f0c5b7,edited by Emisse for ss14, monkey made by brainfood1183 (github) for ss14", + "copyright": "Taken from tgstation https://github.com/tgstation/tgstation/commit/30892aa892a2be846592b068ab71c606e2f0c5b7,edited by Emisse for ss14, monkey made by brainfood1183 (github) for ss14 and edited by Ghagliiarghii (github)", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/equipped-INNERCLOTHING-monkey.png index 368d24a333..c79f3a75ac 100644 Binary files a/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/equipped-INNERCLOTHING-monkey.png and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/equipped-INNERCLOTHING-monkey.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/meta.json index 6eb08f0f32..a4286dcf55 100644 --- a/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/meta.json +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/captain.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "monkey derivative derived by brainfood1183 (github) for ss14 from tgstation at commit https://github.com/tgstation/tgstation/commit/dd97a0e45d904fffadd9d2caad22aedd0d09f3ab then edited by Skarletto (github). Other sprites taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329 and edited by Skarletto (github), edited by Emisse for ss14", + "copyright": "monkey derivative derived by brainfood1183 (github) for ss14 from tgstation at commit https://github.com/tgstation/tgstation/commit/dd97a0e45d904fffadd9d2caad22aedd0d09f3ab then edited by Skarletto (github) and Ghagliiarghii (github). Other sprites taken from tgstation at https://github.com/tgstation/tgstation/pull/69842/commits/d8138946b0ed06fced522729ac8eaa0596864329 and edited by Skarletto (github), edited by Emisse for ss14", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/equipped-INNERCLOTHING-monkey.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/equipped-INNERCLOTHING-monkey.png new file mode 100644 index 0000000000..363eb6614c Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/equipped-INNERCLOTHING-monkey.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/equipped-INNERCLOTHING.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/equipped-INNERCLOTHING.png new file mode 100644 index 0000000000..95f7c55592 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/equipped-INNERCLOTHING.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/icon.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/icon.png new file mode 100644 index 0000000000..3258a2a7a6 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/icon.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/inhand-left.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/inhand-left.png new file mode 100644 index 0000000000..858a54c107 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/inhand-left.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/inhand-right.png b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/inhand-right.png new file mode 100644 index 0000000000..3a6e374a72 Binary files /dev/null and b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/inhand-right.png differ diff --git a/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/meta.json b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/meta.json new file mode 100644 index 0000000000..6d0322eabf --- /dev/null +++ b/Resources/Textures/Clothing/Uniforms/Jumpsuit/commandgeneric.rsi/meta.json @@ -0,0 +1,30 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Made GoldenCan(github) based on medical taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c838ba21dae97db345e0113f99596decd1d66039. In hand sprite by GoldenCan(github) based on medical.rsi in hand sprite which was scaled down from the sprites from tgstation by potato1234_x. Monkey sprite made by GoldenCan(github) based on medical.rsi monkey sprite made by brainfood1183 (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/Effects/chronofield.rsi/chronofield.png b/Resources/Textures/Effects/chronofield.rsi/chronofield.png new file mode 100644 index 0000000000..af43def9eb Binary files /dev/null and b/Resources/Textures/Effects/chronofield.rsi/chronofield.png differ diff --git a/Resources/Textures/Effects/chronofield.rsi/meta.json b/Resources/Textures/Effects/chronofield.rsi/meta.json new file mode 100644 index 0000000000..b043ddc931 --- /dev/null +++ b/Resources/Textures/Effects/chronofield.rsi/meta.json @@ -0,0 +1,21 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/tgstation/tgstation at commit 6665eec76c98a4f3f89bebcd10b34b47dcc0b8ae", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "chronofield", + "delays": [ + [ + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} diff --git a/Resources/Textures/Effects/speech.rsi/diona0.png b/Resources/Textures/Effects/speech.rsi/diona0.png new file mode 100644 index 0000000000..c833b9bbdd Binary files /dev/null and b/Resources/Textures/Effects/speech.rsi/diona0.png differ diff --git a/Resources/Textures/Effects/speech.rsi/diona1.png b/Resources/Textures/Effects/speech.rsi/diona1.png new file mode 100644 index 0000000000..bcea111c49 Binary files /dev/null and b/Resources/Textures/Effects/speech.rsi/diona1.png differ diff --git a/Resources/Textures/Effects/speech.rsi/diona2.png b/Resources/Textures/Effects/speech.rsi/diona2.png new file mode 100644 index 0000000000..dd40a2ea3a Binary files /dev/null and b/Resources/Textures/Effects/speech.rsi/diona2.png differ diff --git a/Resources/Textures/Effects/speech.rsi/gingerbread0.png b/Resources/Textures/Effects/speech.rsi/gingerbread0.png new file mode 100644 index 0000000000..39be04648d Binary files /dev/null and b/Resources/Textures/Effects/speech.rsi/gingerbread0.png differ diff --git a/Resources/Textures/Effects/speech.rsi/gingerbread1.png b/Resources/Textures/Effects/speech.rsi/gingerbread1.png new file mode 100644 index 0000000000..e4ab1a0aef Binary files /dev/null and b/Resources/Textures/Effects/speech.rsi/gingerbread1.png differ diff --git a/Resources/Textures/Effects/speech.rsi/gingerbread2.png b/Resources/Textures/Effects/speech.rsi/gingerbread2.png new file mode 100644 index 0000000000..1bf41c4212 Binary files /dev/null and b/Resources/Textures/Effects/speech.rsi/gingerbread2.png differ diff --git a/Resources/Textures/Effects/speech.rsi/meta.json b/Resources/Textures/Effects/speech.rsi/meta.json index 98dd3b2060..17cf95079d 100644 --- a/Resources/Textures/Effects/speech.rsi/meta.json +++ b/Resources/Textures/Effects/speech.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24 | Moth sprites made by PuroSlavKing (Github) | Spider sprites made by PixelTheKermit (Github) | Lizard sprites made by AmalgoMyte (Github)", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24 | Moth sprites made by PuroSlavKing (Github) | Spider sprites made by PixelTheKermit (Github) | Lizard sprites made by AmalgoMyte (Github) | Diona and Gingerbread sprites made by YoungThugSS14 (Github)", "states": [ { "name": "alien0", @@ -125,6 +125,40 @@ { "name": "default2" }, + { + "name": "diona0", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.4 + ] + ] + }, + { + "name": "diona1" + }, + { + "name": "diona2" + }, + { + "name": "gingerbread0", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.4 + ] + ] + }, + { + "name": "gingerbread1" + }, + { + "name": "gingerbread2" + }, { "name": "guardian0", "delays": [ diff --git a/Resources/Textures/Interface/Nano/rounded_button_half_bordered.svg b/Resources/Textures/Interface/Nano/rounded_button_half_bordered.svg new file mode 100644 index 0000000000..a583f3db89 --- /dev/null +++ b/Resources/Textures/Interface/Nano/rounded_button_half_bordered.svg @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="32" + height="32" + viewBox="0 0 32 32" + fill="none" + version="1.1" + id="svg4" + sodipodi:docname="rounded_button_half_bordered.svg" + inkscape:version="1.0.1 (3bc2e813f5, 2020-09-07)" + inkscape:export-filename="C:\ss14\space-station-14\Resources\Textures\Interface\Nano\rounded_button_half_bordered.svg.96dpi.png" + inkscape:export-xdpi="96" + inkscape:export-ydpi="96"> + <metadata + id="metadata10"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <defs + id="defs8"> + <clipPath id="round-corner"> + <rect x="0" y="0" width="32" height="32" rx="5" ry="5" /> + </clipPath> + </defs> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="2560" + inkscape:window-height="1377" + id="namedview6" + showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:zoom="11.136932" + inkscape:cx="15.825633" + inkscape:cy="16.930202" + inkscape:window-x="1912" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:current-layer="svg4" + inkscape:document-rotation="0" + inkscape:pagecheckerboard="true" /> + <rect + x="0" + y="0" + width="32" + height="50" + rx="5" + fill="#ffffff" + id="rect2" + style="stroke:#cfcfcf;stroke-opacity:1;fill:#ffffff;fill-opacity:1" + /> +</svg> \ No newline at end of file diff --git a/Resources/Textures/Interface/Nano/rounded_button_half_bordered.svg.96dpi.png b/Resources/Textures/Interface/Nano/rounded_button_half_bordered.svg.96dpi.png new file mode 100644 index 0000000000..1d8b1d08ab Binary files /dev/null and b/Resources/Textures/Interface/Nano/rounded_button_half_bordered.svg.96dpi.png differ diff --git a/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt b/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt index 1c71df2d5c..bb584a7c20 100644 --- a/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt +++ b/Resources/Textures/Interface/VerbIcons/ATTRIBUTION.txt @@ -2,10 +2,10 @@ All icons are public domain. Pulled mostly from this source https://github.com/apancik/public-domain-icons. -lock.svg by Lorc under CC BY 3.0 +lock.svg and lock-red.svg by Lorc under CC BY 3.0 https://game-icons.net/1x1/lorc/padlock.html -unlock.svg by Delapouite under CC BY 3.0 +unlock.svg and unlock-green by Delapouite under CC BY 3.0 https://game-icons.net/1x1/delapouite/padlock-open.html bubbles.svg by Lorc under CC BY 3.0 diff --git a/Resources/Textures/Interface/VerbIcons/lock-red.svg b/Resources/Textures/Interface/VerbIcons/lock-red.svg new file mode 100644 index 0000000000..ba2546dcab --- /dev/null +++ b/Resources/Textures/Interface/VerbIcons/lock-red.svg @@ -0,0 +1 @@ +<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><g class="" style="" transform="translate(0,0)"><path d="M254.28 17.313c-81.048 0-146.624 65.484-146.624 146.406V236h49.594v-69.094c0-53.658 43.47-97.187 97.03-97.187 53.563 0 97.032 44.744 97.032 97.186V236h49.594v-72.28c0-78.856-65.717-146.407-146.625-146.407zM85.157 254.688c-14.61 22.827-22.844 49.148-22.844 76.78 0 88.358 84.97 161.5 191.97 161.5 106.998 0 191.968-73.142 191.968-161.5 0-27.635-8.26-53.95-22.875-76.78H85.155zM254 278.625c22.34 0 40.875 17.94 40.875 40.28 0 16.756-10.6 31.23-25.125 37.376l32.72 98.126h-96.376l32.125-98.125c-14.526-6.145-24.532-20.62-24.532-37.374 0-22.338 17.972-40.28 40.312-40.28z" fill="#8b0000" fill-opacity="1" style="--darkreader-inline-fill: var(--darkreader-background-8b0000, #6f0000);" data-darkreader-inline-fill=""></path></g></svg> \ No newline at end of file diff --git a/Resources/Textures/Interface/VerbIcons/lock-red.svg.192dpi.png b/Resources/Textures/Interface/VerbIcons/lock-red.svg.192dpi.png new file mode 100644 index 0000000000..0801b8c279 Binary files /dev/null and b/Resources/Textures/Interface/VerbIcons/lock-red.svg.192dpi.png differ diff --git a/Resources/Textures/Interface/VerbIcons/lock-red.svg.192dpi.png.yml b/Resources/Textures/Interface/VerbIcons/lock-red.svg.192dpi.png.yml new file mode 100644 index 0000000000..5c43e23305 --- /dev/null +++ b/Resources/Textures/Interface/VerbIcons/lock-red.svg.192dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Interface/VerbIcons/unlock-green.svg b/Resources/Textures/Interface/VerbIcons/unlock-green.svg new file mode 100644 index 0000000000..83a61cca34 --- /dev/null +++ b/Resources/Textures/Interface/VerbIcons/unlock-green.svg @@ -0,0 +1 @@ +<svg style="height: 512px; width: 512px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><g class="" style="" transform="translate(0,0)"><path d="M402.6 164.6c0-78.92-65.7-146.47-146.6-146.47-81.1 0-146.6 65.49-146.6 146.47v72.3H159v-69.1c0-53.7 43.4-97.26 97-97.26 53.5 0 97 41.66 97 94.06zm-315.7 91C72.2 278.4 64 304.7 64 332.4c0 88.3 85 161.5 192 161.5s192-73.2 192-161.5c0-27.7-8.3-54-22.9-76.8zm168.8 23.9c22.3 0 40.9 18 40.9 40.3 0 16.8-10.6 31.2-25.1 37.3l32.7 98.2h-96.4l32.1-98.2c-14.5-6.1-24.5-20.6-24.5-37.3 0-22.3 18-40.3 40.3-40.3z" fill="#006400" fill-opacity="1" style="--darkreader-inline-fill: var(--darkreader-background-006400, #005000);" data-darkreader-inline-fill=""></path></g></svg> \ No newline at end of file diff --git a/Resources/Textures/Interface/VerbIcons/unlock-green.svg.192dpi.png b/Resources/Textures/Interface/VerbIcons/unlock-green.svg.192dpi.png new file mode 100644 index 0000000000..baad170847 Binary files /dev/null and b/Resources/Textures/Interface/VerbIcons/unlock-green.svg.192dpi.png differ diff --git a/Resources/Textures/Interface/VerbIcons/unlock-green.svg.192dpi.png.yml b/Resources/Textures/Interface/VerbIcons/unlock-green.svg.192dpi.png.yml new file mode 100644 index 0000000000..5c43e23305 --- /dev/null +++ b/Resources/Textures/Interface/VerbIcons/unlock-green.svg.192dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/dead_purple_snake.png b/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/dead_purple_snake.png index c031d8b92f..bc678532bb 100644 Binary files a/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/dead_purple_snake.png and b/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/dead_purple_snake.png differ diff --git a/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/meta.json b/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/meta.json index 760bca0fb4..2b02d510d0 100644 --- a/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/meta.json +++ b/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/meta.json @@ -1,39 +1,39 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "From user named CAROU in Discord", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "purple_snake", - "directions": 4, - "delays": [ - [0.3,0.2,0.2,0.4,0.2,0.2,0.3], - [0.3,0.2,0.2,0.4,0.2,0.2,0.3], - [0.3,0.2,0.2,0.4,0.2,0.2,0.3], - [0.3,0.2,0.2,0.4,0.2,0.2,0.3] - ] + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "From user named CAROU in Discord, purple_snake & dead_purple_snake edited by mubururu_ (github)", + "size": { + "x": 32, + "y": 32 }, - { - "name": "dead_purple_snake" - }, - { - "name": "small_purple_snake", - "directions": 4, - "delays": [ - [0.3,0.2,0.2,0.4,0.2,0.2,0.3], - [0.3,0.2,0.2,0.4,0.2,0.2,0.3], - [0.3,0.2,0.2,0.4,0.2,0.2,0.3], - [0.3,0.2,0.2,0.4,0.2,0.2,0.3] - ] - }, - { - "name": "dead_small_purple_snake" - } + "states": [ + { + "name": "purple_snake", + "directions": 4, + "delays": [ + [ 0.3, 0.2, 0.2, 0.4, 0.2, 0.2, 0.3 ], + [ 0.3, 0.2, 0.2, 0.4, 0.2, 0.2, 0.3 ], + [ 0.3, 0.2, 0.2, 0.4, 0.2, 0.2, 0.3 ], + [ 0.3, 0.2, 0.2, 0.4, 0.2, 0.2, 0.3 ] + ] + }, + { + "name": "dead_purple_snake" + }, + { + "name": "small_purple_snake", + "directions": 4, + "delays": [ + [ 0.3, 0.2, 0.2, 0.4, 0.2, 0.2, 0.3 ], + [ 0.3, 0.2, 0.2, 0.4, 0.2, 0.2, 0.3 ], + [ 0.3, 0.2, 0.2, 0.4, 0.2, 0.2, 0.3 ], + [ 0.3, 0.2, 0.2, 0.4, 0.2, 0.2, 0.3 ] + ] + }, + { + "name": "dead_small_purple_snake" + } - ] + ] } diff --git a/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/purple_snake.png b/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/purple_snake.png index a92e056749..602d6a5b8f 100644 Binary files a/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/purple_snake.png and b/Resources/Textures/Mobs/Aliens/Xenos/purple_snake.rsi/purple_snake.png differ diff --git a/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/body_fin.png b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/body_fin.png new file mode 100644 index 0000000000..b352e302cd Binary files /dev/null and b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/body_fin.png differ diff --git a/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/meta.json b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/meta.json index bb12e3bf03..bb2a784f4c 100644 --- a/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/Skyrat-SS13/Skyrat-tg/tree/40e3cdbb15b8bc0d5ef2fb46133adf805bda5297, while Argali, Ayrshire, Myrsore, Bighorn and Demonic are drawn by Ubaser, and Kobold Ears are drawn by Pigeonpeas. Body_underbelly made by Nairod(github) for SS14. Large drawn by Ubaser. Wagging tail by SonicDC. Splotch modified from Sharp by KittenColony(github). Frills neckfull come from: https://github.com/Bubberstation/Bubberstation/commit/8bc6b83404803466a560b694bf22ef3c0ac266a2", + "copyright": "https://github.com/Skyrat-SS13/Skyrat-tg/tree/40e3cdbb15b8bc0d5ef2fb46133adf805bda5297, while Argali, Ayrshire, Myrsore, Bighorn and Demonic are drawn by Ubaser, and Kobold Ears are drawn by Pigeonpeas. Back fin by alzore_ (Discord), Aquatic tail modified from smooth tail by alzore_ (discord). Body_underbelly made by Nairod(github) for SS14. Large drawn by Ubaser. Wagging tail by SonicDC. Splotch modified from Sharp by KittenColony(github). Frills neckfull come from: https://github.com/Bubberstation/Bubberstation/commit/8bc6b83404803466a560b694bf22ef3c0ac266a2", "size": { "x": 32, "y": 32 @@ -27,6 +27,10 @@ "name": "tail_ltiger_front", "directions": 4 }, + { + "name": "tail_aquatic_front", + "directions": 4 + }, { "name": "tail_smooth_behind_primary", "directions": 4 @@ -55,6 +59,10 @@ "name": "tail_ltiger_behind", "directions": 4 }, + { + "name": "tail_aquatic_behind", + "directions": 4 + }, { "name": "tail_smooth_primary", "directions": 4 @@ -83,6 +91,10 @@ "name": "tail_ltiger", "directions": 4 }, + { + "name": "tail_aquatic", + "directions": 4 + }, { "name": "tail_smooth_wagging_primary", "directions": 4, @@ -473,6 +485,84 @@ ] ] }, + { + "name": "tail_aquatic_wagging", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, { "name": "snout_round", "directions": 4 @@ -605,6 +695,10 @@ "name": "body_backspikes", "directions": 4 }, + { + "name": "body_fin", + "directions": 4 + }, { "name": "snout_splotch_primary", "directions": 4 @@ -618,4 +712,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic.png b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic.png new file mode 100644 index 0000000000..ba8ac972e1 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic.png differ diff --git a/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic_behind.png b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic_behind.png new file mode 100644 index 0000000000..167b3074de Binary files /dev/null and b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic_behind.png differ diff --git a/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic_front.png b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic_front.png new file mode 100644 index 0000000000..1d6df8b5b8 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic_front.png differ diff --git a/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic_wagging.png b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic_wagging.png new file mode 100644 index 0000000000..eba724cf50 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/reptilian_parts.rsi/tail_aquatic_wagging.png differ diff --git a/Resources/Textures/Mobs/Customization/slime_parts.rsi/gradient_l_hand.png b/Resources/Textures/Mobs/Customization/slime_parts.rsi/gradient_l_hand.png index 3e947f387e..d33a4660b6 100644 Binary files a/Resources/Textures/Mobs/Customization/slime_parts.rsi/gradient_l_hand.png and b/Resources/Textures/Mobs/Customization/slime_parts.rsi/gradient_l_hand.png differ diff --git a/Resources/Textures/Mobs/Customization/slime_parts.rsi/gradient_r_hand.png b/Resources/Textures/Mobs/Customization/slime_parts.rsi/gradient_r_hand.png index f7a86f4788..743b1a6ad7 100644 Binary files a/Resources/Textures/Mobs/Customization/slime_parts.rsi/gradient_r_hand.png and b/Resources/Textures/Mobs/Customization/slime_parts.rsi/gradient_r_hand.png differ diff --git a/Resources/Textures/Mobs/Customization/tattoos.rsi/meta.json b/Resources/Textures/Mobs/Customization/tattoos.rsi/meta.json index 38dfe7ea71..bd8400a374 100644 --- a/Resources/Textures/Mobs/Customization/tattoos.rsi/meta.json +++ b/Resources/Textures/Mobs/Customization/tattoos.rsi/meta.json @@ -46,6 +46,14 @@ { "name": "tattoo_eye_l", "directions": 4 + }, + { + "name": "tattoo_eye_moth_r", + "directions": 4 + }, + { + "name": "tattoo_eye_moth_l", + "directions": 4 } ] } diff --git a/Resources/Textures/Mobs/Customization/tattoos.rsi/tattoo_eye_moth_l.png b/Resources/Textures/Mobs/Customization/tattoos.rsi/tattoo_eye_moth_l.png new file mode 100644 index 0000000000..1f8d615f49 Binary files /dev/null and b/Resources/Textures/Mobs/Customization/tattoos.rsi/tattoo_eye_moth_l.png differ diff --git a/Resources/Textures/Mobs/Customization/tattoos.rsi/tattoo_eye_moth_r.png b/Resources/Textures/Mobs/Customization/tattoos.rsi/tattoo_eye_moth_r.png new file mode 100644 index 0000000000..86e104d1eb Binary files /dev/null and b/Resources/Textures/Mobs/Customization/tattoos.rsi/tattoo_eye_moth_r.png differ diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/hair.png b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/hair.png new file mode 100644 index 0000000000..d52d859ebe Binary files /dev/null and b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/hair.png differ diff --git a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json index 228f934114..0c910f85e5 100644 --- a/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json +++ b/Resources/Textures/Mobs/Species/Vox/displacement.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "jumpsuit state made by PJB3005. back, hand, head, and eyes states made by Flareguy, ears, hand_l, hand_r and shoes made by TheShuEd", + "copyright": "jumpsuit state made by PJB3005. back, hand, head, and eyes states made by Flareguy, ears, hand_l, hand_r, hair and shoes made by TheShuEd", "size": { "x": 32, "y": 32 @@ -38,6 +38,10 @@ "name": "shoes", "directions": 4 }, + { + "name": "hair", + "directions": 4 + }, { "name": "hand_l", "directions": 4 diff --git a/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-1.png new file mode 100644 index 0000000000..735ad356e8 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-2.png new file mode 100644 index 0000000000..c17e37680e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-3.png new file mode 100644 index 0000000000..1852a05e35 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-4.png new file mode 100644 index 0000000000..f29fe70e8b Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-5.png new file mode 100644 index 0000000000..ec670c6cfa Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/fill-5.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/icon.png new file mode 100644 index 0000000000..111507b00b Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/icon_empty.png new file mode 100644 index 0000000000..2e029295f8 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/meta.json new file mode 100644 index 0000000000..fb5566d3dc --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/alienbrainhemorrhage.rsi/meta.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-1.png new file mode 100644 index 0000000000..7c10712880 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-2.png new file mode 100644 index 0000000000..adaedaca73 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-3.png new file mode 100644 index 0000000000..6e3e63da2e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-4.png new file mode 100644 index 0000000000..88d25fbe7b Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/icon.png new file mode 100644 index 0000000000..d56aa94afc Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/icon_empty.png new file mode 100644 index 0000000000..bfb6c282c0 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/meta.json new file mode 100644 index 0000000000..52c392be67 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/bronx.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-1.png new file mode 100644 index 0000000000..41520971b1 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-2.png new file mode 100644 index 0000000000..aef4008182 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-3.png new file mode 100644 index 0000000000..ef796be597 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-4.png new file mode 100644 index 0000000000..9963457a6e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-5.png new file mode 100644 index 0000000000..5a83559b9f Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/fill-5.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/icon.png new file mode 100644 index 0000000000..64cdd3eb8c Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/icon_empty.png new file mode 100644 index 0000000000..14bad18f6c Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/meta.json new file mode 100644 index 0000000000..fb5566d3dc --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/crushdepth.rsi/meta.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-1.png new file mode 100644 index 0000000000..ca76f8d344 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-2.png new file mode 100644 index 0000000000..aefd7e17cf Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-3.png new file mode 100644 index 0000000000..d9008407c6 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-4.png new file mode 100644 index 0000000000..1216e99cb6 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-5.png new file mode 100644 index 0000000000..3f12cd164b Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/fill-5.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/icon.png new file mode 100644 index 0000000000..90cd2bf570 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/icon_empty.png new file mode 100644 index 0000000000..8ad26bfc2e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/meta.json new file mode 100644 index 0000000000..fb5566d3dc --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/dark&stormy.rsi/meta.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-1.png new file mode 100644 index 0000000000..38d1eb92aa Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-2.png new file mode 100644 index 0000000000..d00b0091e5 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-3.png new file mode 100644 index 0000000000..cf98ba8480 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-4.png new file mode 100644 index 0000000000..5c93fe71d2 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/icon.png new file mode 100644 index 0000000000..f0ad42136b Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/icon_empty.png new file mode 100644 index 0000000000..d361c1816e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/meta.json new file mode 100644 index 0000000000..5b4e18246f --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/eggnogglass.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Sprite by uhbg on github", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-1.png new file mode 100644 index 0000000000..7fd25a8b79 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-2.png new file mode 100644 index 0000000000..35985ab459 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-3.png new file mode 100644 index 0000000000..c2ed2bbdd3 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-4.png new file mode 100644 index 0000000000..ef1da7eb09 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-5.png new file mode 100644 index 0000000000..6d7ec355bc Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/fill-5.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/icon.png new file mode 100644 index 0000000000..bddb1cd6a9 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/icon_empty.png new file mode 100644 index 0000000000..5ae82dc839 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/meta.json new file mode 100644 index 0000000000..fb5566d3dc --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/electricshark.rsi/meta.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/icon.png index 2cafc197fd..b225942035 100644 Binary files a/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/icon.png and b/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/icon_open.png b/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/icon_open.png new file mode 100644 index 0000000000..d5ea96b012 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/icon_open.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/meta.json index db0ac608ed..a4039a1dd1 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/generic_jug.rsi/meta.json @@ -1 +1,17 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi, icon_open modified from icon by Prole0 (GitHub)", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-1.png new file mode 100644 index 0000000000..e91fcca8dc Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-2.png new file mode 100644 index 0000000000..6b07b1de3a Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-3.png new file mode 100644 index 0000000000..58ac6675e5 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-4.png new file mode 100644 index 0000000000..7d452d9314 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/icon.png new file mode 100644 index 0000000000..b89e6ffd22 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/icon_empty.png new file mode 100644 index 0000000000..5607707f40 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/meta.json new file mode 100644 index 0000000000..52c392be67 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/jackrose.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-1.png new file mode 100644 index 0000000000..85821df5d9 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-2.png new file mode 100644 index 0000000000..44e1ca3e35 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-3.png new file mode 100644 index 0000000000..802d422c3f Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-4.png new file mode 100644 index 0000000000..5c57ae9737 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/icon.png new file mode 100644 index 0000000000..b63c467af2 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/icon_empty.png new file mode 100644 index 0000000000..c21ad2a11e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/meta.json new file mode 100644 index 0000000000..52c392be67 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/junglebird.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-1.png new file mode 100644 index 0000000000..a48cfa933c Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-2.png new file mode 100644 index 0000000000..a41f789084 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-3.png new file mode 100644 index 0000000000..dba0ef1770 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-4.png new file mode 100644 index 0000000000..47ddc76e44 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-5.png new file mode 100644 index 0000000000..9ba296aae2 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/fill-5.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/icon.png new file mode 100644 index 0000000000..237652ba74 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/icon_empty.png new file mode 100644 index 0000000000..e2caac82a4 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/meta.json new file mode 100644 index 0000000000..fb5566d3dc --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/kalimotxo.rsi/meta.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-1.png new file mode 100644 index 0000000000..9fdd9db4c4 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-2.png new file mode 100644 index 0000000000..e1fd43182e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-3.png new file mode 100644 index 0000000000..8b802c67fb Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-4.png new file mode 100644 index 0000000000..2ea71b9702 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/icon.png new file mode 100644 index 0000000000..842091e98d Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/icon_empty.png new file mode 100644 index 0000000000..ea020e72a8 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/meta.json new file mode 100644 index 0000000000..52c392be67 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/monkeybusiness.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/pineapplejuice.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/pineapplejuice.rsi/icon.png new file mode 100644 index 0000000000..9876e1862e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/pineapplejuice.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/pineapplejuice.rsi/icon_open.png b/Resources/Textures/Objects/Consumable/Drinks/pineapplejuice.rsi/icon_open.png new file mode 100644 index 0000000000..d6a7ac6653 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/pineapplejuice.rsi/icon_open.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/pineapplejuice.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/pineapplejuice.rsi/meta.json new file mode 100644 index 0000000000..31a3eae2e6 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/pineapplejuice.rsi/meta.json @@ -0,0 +1,17 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "GrownSamoyedDog on Github. A variant of orangejuice carton from: https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", + "states": [ + { + "name": "icon" + }, + { + "name": "icon_open" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-1.png new file mode 100644 index 0000000000..030a2ea926 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-2.png new file mode 100644 index 0000000000..b5e942dc85 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-3.png new file mode 100644 index 0000000000..c94a2809b0 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-4.png new file mode 100644 index 0000000000..9e44a20822 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-5.png b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-5.png new file mode 100644 index 0000000000..72396bb28a Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/fill-5.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/icon.png new file mode 100644 index 0000000000..dead0ec31d Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/icon_empty.png new file mode 100644 index 0000000000..efa22b2808 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/meta.json new file mode 100644 index 0000000000..fb5566d3dc --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/radler.rsi/meta.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + }, + { + "name": "fill-5" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/inhand-left.png b/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/inhand-left.png new file mode 100644 index 0000000000..0973675986 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/inhand-right.png b/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/inhand-right.png new file mode 100644 index 0000000000..69952d2343 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/meta.json index db0ac608ed..e45363fe68 100644 --- a/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Drinks/shaker.rsi/meta.json @@ -1 +1,22 @@ -{"version": 1, "size": {"x": 32, "y": 32}, "license": "CC-BY-SA-3.0", "copyright": "https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi", "states": [{"name": "icon"}]} \ No newline at end of file +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "icon taken from https://github.com/discordia-space/CEV-Eris/raw/f7aa28fd4b4d0386c3393d829681ebca526f1d2d/icons/obj/drinks.dmi ; inhand sprites made by Failed (Discord: greetings_)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-1.png new file mode 100644 index 0000000000..2eb13c4fcb Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-2.png new file mode 100644 index 0000000000..2b64762c11 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-3.png new file mode 100644 index 0000000000..d6334a476c Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-4.png new file mode 100644 index 0000000000..dda1d511aa Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/icon.png new file mode 100644 index 0000000000..0902145f2b Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/icon_empty.png new file mode 100644 index 0000000000..433a627e84 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/meta.json new file mode 100644 index 0000000000..52c392be67 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/tortuga.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-1.png b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-1.png new file mode 100644 index 0000000000..596d98eef1 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-1.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-2.png b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-2.png new file mode 100644 index 0000000000..9b3f32db5e Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-2.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-3.png b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-3.png new file mode 100644 index 0000000000..50afc91678 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-3.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-4.png b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-4.png new file mode 100644 index 0000000000..a47a7fd0a9 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/fill-4.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/icon.png b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/icon.png new file mode 100644 index 0000000000..f99adfbb1a Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/icon_empty.png b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/icon_empty.png new file mode 100644 index 0000000000..5c537f1f7d Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/icon_empty.png differ diff --git a/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/meta.json b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/meta.json new file mode 100644 index 0000000000..52c392be67 --- /dev/null +++ b/Resources/Textures/Objects/Consumable/Drinks/vampiro.rsi/meta.json @@ -0,0 +1,31 @@ +{ + "version": 1, + "size": + { + "x": 32, + "y": 32 + }, + "license": "CC-BY-NC-SA-3.0", + "copyright": "Made by SharkSnake98 on Github", + "states": + [ + { + "name": "icon" + }, + { + "name": "icon_empty" + }, + { + "name": "fill-1" + }, + { + "name": "fill-2" + }, + { + "name": "fill-3" + }, + { + "name": "fill-4" + } + ] +} diff --git a/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/meta.json index 3cbfe7d8e8..77d4d96eb1 100644 --- a/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/meta.json @@ -1,76 +1,82 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24. Stonk pocket by Tayrtahn on GitHub. Carp pocket by deltanedas (GitHub), modified by ps3moira (GitHub)", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "banana" + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24. Stonk pocket by Tayrtahn on GitHub. Carp pocket by deltanedas (GitHub). Modified by ps3moira (GitHub). 'moth-box' and 'moth' States by kosticia on GitHub", + "size": { + "x": 32, + "y": 32 }, - { - "name": "banana-box" - }, - { - "name": "berry" - }, - { - "name": "berry-box" - }, - { - "name": "dank" - }, - { - "name": "pizza" - }, - { - "name": "pizza-box" - }, - { - "name": "plain" - }, - { - "name": "box" - }, - { - "name": "spicy" - }, - { - "name": "spicy-box" - }, - { - "name": "teriyaki" - }, - { - "name": "teriyaki-box" - }, - { - "name": "dink-box" - }, - { - "name": "dink" - }, - { - "name": "stonk-box" - }, - { - "name": "stonk" - }, - { - "name": "carp-box" - }, - { - "name": "carp" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "banana" + }, + { + "name": "banana-box" + }, + { + "name": "berry" + }, + { + "name": "berry-box" + }, + { + "name": "dank" + }, + { + "name": "pizza" + }, + { + "name": "pizza-box" + }, + { + "name": "plain" + }, + { + "name": "box" + }, + { + "name": "spicy" + }, + { + "name": "spicy-box" + }, + { + "name": "teriyaki" + }, + { + "name": "teriyaki-box" + }, + { + "name": "dink-box" + }, + { + "name": "dink" + }, + { + "name": "stonk-box" + }, + { + "name": "stonk" + }, + { + "name": "carp-box" + }, + { + "name": "carp" + }, + { + "name": "moth-box" + }, + { + "name": "moth" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/moth-box.png b/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/moth-box.png new file mode 100644 index 0000000000..a9ecf9dd8b Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/moth-box.png differ diff --git a/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/moth.png b/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/moth.png new file mode 100644 index 0000000000..0f68621c4a Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/Baked/donkpocket.rsi/moth.png differ diff --git a/Resources/Textures/Objects/Consumable/Food/Baked/misc.rsi/grilled-cheese-cotton.png b/Resources/Textures/Objects/Consumable/Food/Baked/misc.rsi/grilled-cheese-cotton.png new file mode 100644 index 0000000000..8295ed11ad Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/Baked/misc.rsi/grilled-cheese-cotton.png differ diff --git a/Resources/Textures/Objects/Consumable/Food/Baked/misc.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/Baked/misc.rsi/meta.json index f9e3aef18c..15e15c4208 100644 --- a/Resources/Textures/Objects/Consumable/Food/Baked/misc.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/Baked/misc.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation and modified by Swept at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa. Chevrechaud created by Github user deathride58, croissant taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7ffd61b6fa6a6183daa8900f9a490f46f7a81955. Muffin-chocolate, muffin-banana and muffin-cherry sprites modified from the original muffin sprite by RumiTiger. Chevrechaud-cotton and croissant-cotton created by JuneSzalkowska. Grilled-cheese created by AdipemDragon, take from tgstation at commit https://github.com/tgstation/tgstation/commit/716c6db05ab9df28fee81ceb7cf2b6c25f21176d.", + "copyright": "Taken from tgstation and modified by Swept at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa. Chevrechaud created by Github user deathride58, croissant taken from tgstation at commit https://github.com/tgstation/tgstation/commit/7ffd61b6fa6a6183daa8900f9a490f46f7a81955. Muffin-chocolate, muffin-banana and muffin-cherry sprites modified from the original muffin sprite by RumiTiger. Chevrechaud-cotton and croissant-cotton created by JuneSzalkowska. Grilled-cheese created by AdipemDragon, take from tgstation at commit https://github.com/tgstation/tgstation/commit/716c6db05ab9df28fee81ceb7cf2b6c25f21176d. Grilled-cheese-cotton modified from grilled-cheese by MadeOfHeartAndStone on Discord.", "size": { "x": 32, "y": 32 @@ -177,6 +177,9 @@ }, { "name": "grilled-cheese" + }, + { + "name": "grilled-cheese-cotton" } ] } diff --git a/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json b/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json index 5dc8e026cc..1c3f950180 100644 --- a/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json +++ b/Resources/Textures/Objects/Consumable/Food/meat.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation and modified by Swept, potato1234x and deltanedas at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, snail by IproduceWidgets (github) and Kezu (discord), anomalymeat/cooked by august-sun, dragoncutlet, dragoncutlet_veins, dragoncutlet-cooked and dragon-cooked by JuneSzalkowska (discord)", + "copyright": "Taken from tgstation and modified by Swept, potato1234x and deltanedas at https://github.com/tgstation/tgstation/commit/40d75cc340c63582fb66ce15bf75a36115f6bdaa, snail by IproduceWidgets (github) and Kezu (discord), anomalymeat/cooked by august-sun, dragoncutlet, dragoncutlet_veins, dragoncutlet-cooked and dragon-cooked by JuneSzalkowska (discord), raw and cooked patty taken from tgstation at https://github.com/tgstation/tgstation/commit/b83c7deee4c91df4de130db242facce20308aa8a", "size": { "x": 32, "y": 32 @@ -218,6 +218,12 @@ }, { "name": "dragoncutlet-cooked" + }, + { + "name": "raw_patty" + }, + { + "name": "patty" } ] } diff --git a/Resources/Textures/Objects/Consumable/Food/meat.rsi/patty.png b/Resources/Textures/Objects/Consumable/Food/meat.rsi/patty.png new file mode 100644 index 0000000000..d0a59c51f5 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/meat.rsi/patty.png differ diff --git a/Resources/Textures/Objects/Consumable/Food/meat.rsi/raw_patty.png b/Resources/Textures/Objects/Consumable/Food/meat.rsi/raw_patty.png new file mode 100644 index 0000000000..ff738788e9 Binary files /dev/null and b/Resources/Textures/Objects/Consumable/Food/meat.rsi/raw_patty.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray1.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray1.png new file mode 100644 index 0000000000..34d1937e2c Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray1.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray10.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray10.png new file mode 100644 index 0000000000..b0ff0d9d19 Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray10.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray2.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray2.png new file mode 100644 index 0000000000..c95889553b Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray2.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray3.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray3.png new file mode 100644 index 0000000000..8baf89e0cd Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray3.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray4.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray4.png new file mode 100644 index 0000000000..8772718e9c Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray4.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray5.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray5.png new file mode 100644 index 0000000000..48e3be8e48 Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray5.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray6.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray6.png new file mode 100644 index 0000000000..2d62f4e496 Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray6.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray7.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray7.png new file mode 100644 index 0000000000..6e1d607ab0 Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray7.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray8.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray8.png new file mode 100644 index 0000000000..0d6f17a122 Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray8.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray9.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray9.png new file mode 100644 index 0000000000..8e62bef89c Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/ashtray9.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-0.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-0.png deleted file mode 100644 index 3bc1eafb97..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-0.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-1.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-1.png deleted file mode 100644 index 0d4142d08d..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-1.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-10.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-10.png deleted file mode 100644 index 53f61b9243..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-10.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-2.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-2.png deleted file mode 100644 index 1800a7eea0..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-2.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-3.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-3.png deleted file mode 100644 index a82fd0cf8f..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-3.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-4.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-4.png deleted file mode 100644 index 92169bb6c5..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-4.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-5.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-5.png deleted file mode 100644 index cca3f51863..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-5.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-6.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-6.png deleted file mode 100644 index 77181b432e..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-6.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-7.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-7.png deleted file mode 100644 index c42784db40..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-7.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-8.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-8.png deleted file mode 100644 index 44c7a7e7a2..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-8.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-9.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-9.png deleted file mode 100644 index 250c2ef488..0000000000 Binary files a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon-9.png and /dev/null differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/icon.png b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon.png new file mode 100644 index 0000000000..c0692ee25d Binary files /dev/null and b/Resources/Textures/Objects/Decoration/ashtray.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Decoration/ashtray.rsi/meta.json b/Resources/Textures/Objects/Decoration/ashtray.rsi/meta.json index 9e45b4ede1..7494aa7422 100644 --- a/Resources/Textures/Objects/Decoration/ashtray.rsi/meta.json +++ b/Resources/Textures/Objects/Decoration/ashtray.rsi/meta.json @@ -1,44 +1,44 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Made by joshepvodka", + "copyright": "Made by Hanzdegloker", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "icon-0" + "name": "icon" }, { - "name": "icon-1" + "name": "ashtray1" }, { - "name": "icon-2" + "name": "ashtray2" }, { - "name": "icon-3" + "name": "ashtray3" }, { - "name": "icon-4" + "name": "ashtray4" }, { - "name": "icon-5" + "name": "ashtray5" }, { - "name": "icon-6" + "name": "ashtray6" }, { - "name": "icon-7" + "name": "ashtray7" }, { - "name": "icon-8" + "name": "ashtray8" }, { - "name": "icon-9" + "name": "ashtray9" }, { - "name": "icon-10" + "name": "ashtray10" } ] } diff --git a/Resources/Textures/Objects/Devices/desynchronizer.rsi/icon-on.png b/Resources/Textures/Objects/Devices/desynchronizer.rsi/icon-on.png new file mode 100644 index 0000000000..77513c732d Binary files /dev/null and b/Resources/Textures/Objects/Devices/desynchronizer.rsi/icon-on.png differ diff --git a/Resources/Textures/Objects/Devices/desynchronizer.rsi/icon.png b/Resources/Textures/Objects/Devices/desynchronizer.rsi/icon.png new file mode 100644 index 0000000000..4ec0508967 Binary files /dev/null and b/Resources/Textures/Objects/Devices/desynchronizer.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Devices/desynchronizer.rsi/inhand-left.png b/Resources/Textures/Objects/Devices/desynchronizer.rsi/inhand-left.png new file mode 100644 index 0000000000..46e6f88d0f Binary files /dev/null and b/Resources/Textures/Objects/Devices/desynchronizer.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Devices/desynchronizer.rsi/inhand-right.png b/Resources/Textures/Objects/Devices/desynchronizer.rsi/inhand-right.png new file mode 100644 index 0000000000..8d5884e852 Binary files /dev/null and b/Resources/Textures/Objects/Devices/desynchronizer.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Devices/desynchronizer.rsi/meta.json b/Resources/Textures/Objects/Devices/desynchronizer.rsi/meta.json new file mode 100644 index 0000000000..ca7f337a92 --- /dev/null +++ b/Resources/Textures/Objects/Devices/desynchronizer.rsi/meta.json @@ -0,0 +1,40 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/blob/2712e62ee56d46e6ae11fcb3b16d401a01179ec1/icons/obj/device.dmi, inhands sprited by Flareguy for Space Station 14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon-on", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "icon", + "delays": [ + [ + 0.5, + 0.5 + ] + ] + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Devices/flatpack.rsi/hydroponics-tray.png b/Resources/Textures/Objects/Devices/flatpack.rsi/hydroponics-tray.png new file mode 100644 index 0000000000..9aad5920d8 Binary files /dev/null and b/Resources/Textures/Objects/Devices/flatpack.rsi/hydroponics-tray.png differ diff --git a/Resources/Textures/Objects/Devices/flatpack.rsi/meta.json b/Resources/Textures/Objects/Devices/flatpack.rsi/meta.json index 947aca7a33..ac1e6be151 100644 --- a/Resources/Textures/Objects/Devices/flatpack.rsi/meta.json +++ b/Resources/Textures/Objects/Devices/flatpack.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Created by EmoGarbage404 (github) for SS14, solar-assembly-part taken from tgstation and modified at https://tgstation13.org/wiki/Guide_to_construction#Solar_Panels_and_Trackers, ame-part taken from vgstation at https://github.com/vgstation-coders/vgstation13/commit/1b7952787c06c21ef1623e494dcfe7cb1f46e041; singularity-generator, tesla-generator, radiation-collector, containment-field-generator, tesla-coil, grounding-rod inner icons made by lzk228; emitter made by pigeonpeas. fax-machine made by moomoobeef, modified by ps3moira", + "copyright": "Created by EmoGarbage404 (github) for SS14, solar-assembly-part taken from tgstation and modified at https://tgstation13.org/wiki/Guide_to_construction#Solar_Panels_and_Trackers, ame-part taken from vgstation at https://github.com/vgstation-coders/vgstation13/commit/1b7952787c06c21ef1623e494dcfe7cb1f46e041; singularity-generator, tesla-generator, radiation-collector, containment-field-generator, tesla-coil, grounding-rod inner icons made by lzk228; emitter made by pigeonpeas. fax-machine made by moomoobeef, modified by ps3moira. hydroponics-tray modified by ScarKy0 (Github).", "size": { "x": 32, "y": 32 @@ -45,6 +45,9 @@ }, { "name": "fax-machine" + }, + { + "name": "hydroponics-tray" } ] } diff --git a/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000..204f53416a Binary files /dev/null and b/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 0000000000..204f53416a Binary files /dev/null and b/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/meta.json b/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/meta.json index 6c2e95c7e5..cfe2d45291 100644 --- a/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/Instruments/banjo.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/vgstation-coders/vgstation13 at 8d9c91e19cb52713c7f7f1804c2b6f7203f8d331", + "copyright": "https://github.com/vgstation-coders/vgstation13 at 8d9c91e19cb52713c7f7f1804c2b6f7203f8d331, equipped sprites made by Hoodie42 for Space Station 14", "states": [ { "name": "icon" @@ -17,6 +17,14 @@ { "name": "inhand-right", "directions": 4 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 } ] } diff --git a/Resources/Textures/Objects/Fun/expiplush.rsi/expi-equipped-HELMET.png b/Resources/Textures/Objects/Fun/expiplush.rsi/expi-equipped-HELMET.png new file mode 100644 index 0000000000..fafecd67e4 Binary files /dev/null and b/Resources/Textures/Objects/Fun/expiplush.rsi/expi-equipped-HELMET.png differ diff --git a/Resources/Textures/Objects/Fun/expiplush.rsi/expi-inhand-left.png b/Resources/Textures/Objects/Fun/expiplush.rsi/expi-inhand-left.png new file mode 100644 index 0000000000..92a2a36e97 Binary files /dev/null and b/Resources/Textures/Objects/Fun/expiplush.rsi/expi-inhand-left.png differ diff --git a/Resources/Textures/Objects/Fun/expiplush.rsi/expi-inhand-right.png b/Resources/Textures/Objects/Fun/expiplush.rsi/expi-inhand-right.png new file mode 100644 index 0000000000..049898a237 Binary files /dev/null and b/Resources/Textures/Objects/Fun/expiplush.rsi/expi-inhand-right.png differ diff --git a/Resources/Textures/Objects/Fun/expiplush.rsi/expi.png b/Resources/Textures/Objects/Fun/expiplush.rsi/expi.png new file mode 100644 index 0000000000..0bedfe8f40 Binary files /dev/null and b/Resources/Textures/Objects/Fun/expiplush.rsi/expi.png differ diff --git a/Resources/Textures/Objects/Fun/expiplush.rsi/meta.json b/Resources/Textures/Objects/Fun/expiplush.rsi/meta.json new file mode 100644 index 0000000000..deaad8855a --- /dev/null +++ b/Resources/Textures/Objects/Fun/expiplush.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "license": "CC0-1.0", + "copyright": "Made by Orsoniks (rivey0 on discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "expi" + }, + { + "name": "expi-inhand-left", + "directions": 4 + }, + { + "name": "expi-inhand-right", + "directions": 4 + }, + { + "name": "expi-equipped-HELMET", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Objects/Fun/figurines.rsi/inhand-left.png b/Resources/Textures/Objects/Fun/figurines.rsi/inhand-left.png new file mode 100644 index 0000000000..06e99674fd Binary files /dev/null and b/Resources/Textures/Objects/Fun/figurines.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Fun/figurines.rsi/inhand-right.png b/Resources/Textures/Objects/Fun/figurines.rsi/inhand-right.png new file mode 100644 index 0000000000..074285d63c Binary files /dev/null and b/Resources/Textures/Objects/Fun/figurines.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Fun/figurines.rsi/meta.json b/Resources/Textures/Objects/Fun/figurines.rsi/meta.json index ebbb50e796..31208a764a 100644 --- a/Resources/Textures/Objects/Fun/figurines.rsi/meta.json +++ b/Resources/Textures/Objects/Fun/figurines.rsi/meta.json @@ -1,12 +1,20 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Sprites made by Flareguy for Space Station 14. Griffinprize, skeletonprize, thiefcharacter and owlprize taken from /tg/station at commit https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432. Figurine_spawner sprite made using parts found in spawner_icons.dmi from Paradise Station at commit https://github.com/ParadiseSS13/Paradise/commit/813f0a3ae556d86dddd7c4ef93a52880de8d2e37. Head sprites excluding Captain, Medical exluding doctor, non-human excluding queen and slime, and service jobs excluding librarian done by tacobeller and holoclown done by brainfood1183.", - "size": { - "x": 32, - "y": 32 - }, + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites made by Flareguy for Space Station 14. Griffinprize, skeletonprize, thiefcharacter and owlprize taken from /tg/station at commit https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432. Figurine_spawner sprite made using parts found in spawner_icons.dmi from Paradise Station at commit https://github.com/ParadiseSS13/Paradise/commit/813f0a3ae556d86dddd7c4ef93a52880de8d2e37. Head sprites excluding Captain, Medical exluding doctor, non-human excluding queen and slime, and service jobs excluding librarian done by tacobeller and holoclown done by brainfood1183. inhand-left and inhand-right sprites made by the_pro_noob678 for SS14.", + "size": { + "x": 32, + "y": 32 + }, "states": [ + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, { "name": "ce" }, diff --git a/Resources/Textures/Objects/Fun/toy_sword.rsi/e_sword.png b/Resources/Textures/Objects/Fun/toy_sword.rsi/e_sword.png deleted file mode 100644 index c231db05b3..0000000000 Binary files a/Resources/Textures/Objects/Fun/toy_sword.rsi/e_sword.png and /dev/null differ diff --git a/Resources/Textures/Objects/Fun/toy_sword.rsi/e_sword_blade.png b/Resources/Textures/Objects/Fun/toy_sword.rsi/e_sword_blade.png deleted file mode 100644 index 28e0ec67a8..0000000000 Binary files a/Resources/Textures/Objects/Fun/toy_sword.rsi/e_sword_blade.png and /dev/null differ diff --git a/Resources/Textures/Objects/Fun/toy_sword.rsi/icon.png b/Resources/Textures/Objects/Fun/toy_sword.rsi/icon.png deleted file mode 100644 index 535d9de84e..0000000000 Binary files a/Resources/Textures/Objects/Fun/toy_sword.rsi/icon.png and /dev/null differ diff --git a/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-left-blade.png b/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-left-blade.png deleted file mode 100644 index 6bc304a12f..0000000000 Binary files a/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-left-blade.png and /dev/null differ diff --git a/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-left.png b/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-left.png deleted file mode 100644 index 6e5fe94f81..0000000000 Binary files a/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-left.png and /dev/null differ diff --git a/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-right-blade.png b/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-right-blade.png deleted file mode 100644 index 456e742892..0000000000 Binary files a/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-right-blade.png and /dev/null differ diff --git a/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-right.png b/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-right.png deleted file mode 100644 index b82aed42c0..0000000000 Binary files a/Resources/Textures/Objects/Fun/toy_sword.rsi/inhand-right.png and /dev/null differ diff --git a/Resources/Textures/Objects/Fun/toy_sword.rsi/meta.json b/Resources/Textures/Objects/Fun/toy_sword.rsi/meta.json deleted file mode 100644 index 2026e221b7..0000000000 --- a/Resources/Textures/Objects/Fun/toy_sword.rsi/meta.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" - }, - { - "name": "e_sword" - }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "e_sword_blade", - "delays": [ - [ - 0.1, - 0.1 - ] - ] - }, - { - "name": "inhand-left-blade", - "directions": 4, - "delays": [ - [ - 0.1, - 0.1 - ], - [ - 0.1, - 0.1 - ], - [ - 0.1, - 0.1 - ], - [ - 0.1, - 0.1 - ] - ] - }, - { - "name": "inhand-right-blade", - "directions": 4, - "delays": [ - [ - 0.1, - 0.1 - ], - [ - 0.1, - 0.1 - ], - [ - 0.1, - 0.1 - ], - [ - 0.1, - 0.1 - ] - ] - } - ] -} diff --git a/Resources/Textures/Objects/Materials/Sheets/other.rsi/generic_materials.png b/Resources/Textures/Objects/Materials/Sheets/other.rsi/generic_materials.png new file mode 100644 index 0000000000..f0883c35a7 Binary files /dev/null and b/Resources/Textures/Objects/Materials/Sheets/other.rsi/generic_materials.png differ diff --git a/Resources/Textures/Objects/Materials/Sheets/other.rsi/meta.json b/Resources/Textures/Objects/Materials/Sheets/other.rsi/meta.json index 6cd21aae79..68dae7e1fe 100644 --- a/Resources/Textures/Objects/Materials/Sheets/other.rsi/meta.json +++ b/Resources/Textures/Objects/Materials/Sheets/other.rsi/meta.json @@ -85,6 +85,9 @@ { "name": "uranium-inhand-right", "directions": 4 + }, + { + "name": "generic_materials" } ] } diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json b/Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json index d92fe17b66..87d5f9d0c1 100644 --- a/Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json +++ b/Resources/Textures/Objects/Misc/bureaucracy.rsi/meta.json @@ -22,27 +22,6 @@ { "name": "envelope_torn_overlay" }, - { - "name": "folder-base" - }, - { - "name": "folder-colormap" - }, - { - "name": "folder-white" - }, - { - "name": "folder-centcom" - }, - { - "name": "folder-overlay-paper" - }, - { - "name": "folder-sec-doc" - }, - { - "name": "folder-stamp-inverse" - }, { "name": "label_cart" }, diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-base.png b/Resources/Textures/Objects/Misc/folders.rsi/folder-base.png similarity index 100% rename from Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-base.png rename to Resources/Textures/Objects/Misc/folders.rsi/folder-base.png diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-centcom.png b/Resources/Textures/Objects/Misc/folders.rsi/folder-centcom.png similarity index 100% rename from Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-centcom.png rename to Resources/Textures/Objects/Misc/folders.rsi/folder-centcom.png diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-colormap.png b/Resources/Textures/Objects/Misc/folders.rsi/folder-colormap.png similarity index 100% rename from Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-colormap.png rename to Resources/Textures/Objects/Misc/folders.rsi/folder-colormap.png diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-overlay-paper.png b/Resources/Textures/Objects/Misc/folders.rsi/folder-overlay-paper.png similarity index 100% rename from Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-overlay-paper.png rename to Resources/Textures/Objects/Misc/folders.rsi/folder-overlay-paper.png diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-sec-doc.png b/Resources/Textures/Objects/Misc/folders.rsi/folder-sec-doc.png similarity index 100% rename from Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-sec-doc.png rename to Resources/Textures/Objects/Misc/folders.rsi/folder-sec-doc.png diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-stamp-inverse.png b/Resources/Textures/Objects/Misc/folders.rsi/folder-stamp-inverse.png similarity index 100% rename from Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-stamp-inverse.png rename to Resources/Textures/Objects/Misc/folders.rsi/folder-stamp-inverse.png diff --git a/Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-white.png b/Resources/Textures/Objects/Misc/folders.rsi/folder-white.png similarity index 100% rename from Resources/Textures/Objects/Misc/bureaucracy.rsi/folder-white.png rename to Resources/Textures/Objects/Misc/folders.rsi/folder-white.png diff --git a/Resources/Textures/Objects/Misc/folders.rsi/meta.json b/Resources/Textures/Objects/Misc/folders.rsi/meta.json new file mode 100644 index 0000000000..75cdf9e019 --- /dev/null +++ b/Resources/Textures/Objects/Misc/folders.rsi/meta.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "folder-base" + }, + { + "name": "folder-colormap" + }, + { + "name": "folder-white" + }, + { + "name": "folder-centcom" + }, + { + "name": "folder-overlay-paper" + }, + { + "name": "folder-sec-doc" + }, + { + "name": "folder-stamp-inverse" + } + ] +} diff --git a/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/meta.json b/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/meta.json index 4f7a1e7772..e4604b165f 100644 --- a/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428, mopbucket_shark_* by Psychpsyo, mopbucket_carpplush adapted by Psychpsyo from tgstation carpplush at commit https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/f8f4aeda930fcd0805ca4cc76d9bc9412a5b3428, mopbucket_shark_* by Psychpsyo, mopbucket_carpplush adapted by Psychpsyo from tgstation carpplush at commit https://github.com/tgstation/tgstation/commit/e1142f20f5e4661cb6845cfcf2dd69f864d67432, mopbucket_cube is monkey cube taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/9c980cb9bc84d07b1c210c5447798af525185f80/icons/obj/food.dmi and modified by Hrosts", "size": { "x": 32, "y": 32 @@ -37,6 +37,9 @@ { "name": "mopbucket_carpplush" }, + { + "name": "mopbucket_cube" + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/mopbucket_cube.png b/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/mopbucket_cube.png new file mode 100644 index 0000000000..7fba6549bd Binary files /dev/null and b/Resources/Textures/Objects/Specific/Janitorial/janitorial.rsi/mopbucket_cube.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo.png b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo.png index cab29e5b0a..230833869f 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo.png and b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill1.png b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill1.png new file mode 100644 index 0000000000..0e24434f92 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill1.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill2.png b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill2.png new file mode 100644 index 0000000000..1e5858ded4 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill2.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill3.png b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill3.png new file mode 100644 index 0000000000..1235fb7344 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill3.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill4.png b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill4.png new file mode 100644 index 0000000000..19c613e820 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill4.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill5.png b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill5.png new file mode 100644 index 0000000000..34eed2337c Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill5.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill6.png b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill6.png new file mode 100644 index 0000000000..e09ce7c78a Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/hypo_fill6.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/inhand-left.png index e2007ee06a..fd5b60fe29 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/inhand-left.png and b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/inhand-right.png b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/inhand-right.png index e2007ee06a..2943550049 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/inhand-right.png and b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/meta.json index 0095919b63..904543f6e5 100644 --- a/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/hypospray.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d, modified with fill sprites by SlamBamActionman (github)", "size": { "x": 32, "y": 32 @@ -19,6 +19,24 @@ { "name": "hypo" }, + { + "name": "hypo_fill1" + }, + { + "name": "hypo_fill2" + }, + { + "name": "hypo_fill3" + }, + { + "name": "hypo_fill4" + }, + { + "name": "hypo_fill5" + }, + { + "name": "hypo_fill6" + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo.png b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo.png index 2e410898ef..679ffb3a07 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo.png and b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill1.png b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill1.png new file mode 100644 index 0000000000..1961261a3a Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill1.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill2.png b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill2.png new file mode 100644 index 0000000000..575e99f90b Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill2.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill3.png b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill3.png new file mode 100644 index 0000000000..187eac6969 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill3.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill4.png b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill4.png new file mode 100644 index 0000000000..2e72a044a5 Binary files /dev/null and b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/hypo_fill4.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/inhand-left.png b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/inhand-left.png index a38875627f..b6b2ec4c38 100644 Binary files a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/inhand-left.png and b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/meta.json b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/meta.json index 5d25ef74a6..ddf2ea210f 100644 --- a/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Medical/syndihypo.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d and modified by emisse for ss14", + "copyright": "Taken from vgstation at commit https://github.com/vgstation-coders/vgstation13/commit/1cdfb0230cc96d0ba751fa002d04f8aa2f25ad7d and modified by emisse for ss14, further modified with fill sprites by SlamBamActionman (github)", "size": { "x": 32, "y": 32 @@ -10,6 +10,18 @@ { "name": "hypo" }, + { + "name": "hypo_fill1" + }, + { + "name": "hypo_fill2" + }, + { + "name": "hypo_fill3" + }, + { + "name": "hypo_fill4" + }, { "name": "inhand-left", "directions": 4 @@ -19,4 +31,4 @@ "directions": 4 } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi/artifact-activation.png b/Resources/Textures/Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi/artifact-activation.png new file mode 100644 index 0000000000..fd45f20d9d Binary files /dev/null and b/Resources/Textures/Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi/artifact-activation.png differ diff --git a/Resources/Textures/Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi/meta.json b/Resources/Textures/Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi/meta.json index 9550a7217d..797abd80ee 100644 --- a/Resources/Textures/Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi/meta.json +++ b/Resources/Textures/Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi/meta.json @@ -586,6 +586,21 @@ 0.10599999 ] ] + }, + { + "name": "artifact-activation", + "delays": [ + [ + 0.100, + 0.100, + 0.100, + 0.100, + 0.100, + 0.100, + 0.100, + 0.100 + ] + ] } ] } diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/bounty.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/bounty.png new file mode 100644 index 0000000000..f0d459eb50 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/bounty.png differ diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/captain.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/captain.png new file mode 100644 index 0000000000..1e9713f6a9 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/captain.png differ diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/icon-open.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/icon-open.png new file mode 100644 index 0000000000..fce4d97638 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/icon-open.png differ diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/icon.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/icon.png new file mode 100644 index 0000000000..ca30cb7979 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/inhand-left.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/inhand-left.png new file mode 100644 index 0000000000..8136557f71 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/inhand-right.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/inhand-right.png new file mode 100644 index 0000000000..0023c2c3b7 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/invoice.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/invoice.png new file mode 100644 index 0000000000..b2cb06ac81 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/invoice.png differ diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/locked.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/locked.png new file mode 100644 index 0000000000..890a26f1b2 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/locked.png differ diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/meta.json b/Resources/Textures/Objects/Storage/artifact_container.rsi/meta.json new file mode 100644 index 0000000000..d350f747a2 --- /dev/null +++ b/Resources/Textures/Objects/Storage/artifact_container.rsi/meta.json @@ -0,0 +1,43 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Sprites by SpaceRox1244", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "icon-open" + }, + { + "name": "locked" + }, + { + "name": "unlocked" + }, + { + "name": "paper" + }, + { + "name": "captain" + }, + { + "name": "bounty" + }, + { + "name": "invoice" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/paper.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/paper.png new file mode 100644 index 0000000000..86a0b218a2 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/paper.png differ diff --git a/Resources/Textures/Objects/Storage/artifact_container.rsi/unlocked.png b/Resources/Textures/Objects/Storage/artifact_container.rsi/unlocked.png new file mode 100644 index 0000000000..c02fe83521 Binary files /dev/null and b/Resources/Textures/Objects/Storage/artifact_container.rsi/unlocked.png differ diff --git a/Resources/Textures/Objects/Tools/binoculars.rsi/equipped-NECK.png b/Resources/Textures/Objects/Tools/binoculars.rsi/equipped-NECK.png new file mode 100644 index 0000000000..31f8b243de Binary files /dev/null and b/Resources/Textures/Objects/Tools/binoculars.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/Objects/Tools/binoculars.rsi/meta.json b/Resources/Textures/Objects/Tools/binoculars.rsi/meta.json index ab90b39377..4214f8ddae 100644 --- a/Resources/Textures/Objects/Tools/binoculars.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/binoculars.rsi/meta.json @@ -1,30 +1,34 @@ { - "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "icon taken from tg station at commit https://github.com/tgstation/tgstation/commit/2d26ce62c273d025bed77a0e6c4bdc770b789bb0, inhands from commit https://github.com/tgstation/tgstation/commit/b1edbc1990a98239c6d3fd6871fc365daab61eb5", - "size": { - "x": 32, - "y": 32 - }, - "states": [ - { - "name": "icon" + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "icon taken from tg station at commit https://github.com/tgstation/tgstation/commit/2d26ce62c273d025bed77a0e6c4bdc770b789bb0, inhands from commit https://github.com/tgstation/tgstation/commit/b1edbc1990a98239c6d3fd6871fc365daab61eb5, equipped-NECK made by YoungThugSS14 (Github)", + "size": { + "x": 32, + "y": 32 }, - { - "name": "inhand-left", - "directions": 4 - }, - { - "name": "inhand-right", - "directions": 4 - }, - { - "name": "wielded-inhand-left", - "directions": 4 - }, - { - "name": "wielded-inhand-right", - "directions": 4 - } - ] + "states": [ + { + "name": "icon" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + }, + { + "name": "equipped-NECK", + "directions": 4 + } + ] } diff --git a/Resources/Textures/Objects/Tools/blueprint.rsi/inhand-left.png b/Resources/Textures/Objects/Tools/blueprint.rsi/inhand-left.png index 8aecdd7268..18eb6991d0 100644 Binary files a/Resources/Textures/Objects/Tools/blueprint.rsi/inhand-left.png and b/Resources/Textures/Objects/Tools/blueprint.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Tools/blueprint.rsi/inhand-right.png b/Resources/Textures/Objects/Tools/blueprint.rsi/inhand-right.png index 37dd59e5c3..57882581ca 100644 Binary files a/Resources/Textures/Objects/Tools/blueprint.rsi/inhand-right.png and b/Resources/Textures/Objects/Tools/blueprint.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Tools/blueprint.rsi/meta.json b/Resources/Textures/Objects/Tools/blueprint.rsi/meta.json index ab9e7fb2a9..98a9f5f9cc 100644 --- a/Resources/Textures/Objects/Tools/blueprint.rsi/meta.json +++ b/Resources/Textures/Objects/Tools/blueprint.rsi/meta.json @@ -1,12 +1,18 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/dd749c36c416a6960782732cecf25e5ebac326e8", + "copyright": "Taken from https://github.com/vgstation-coders/vgstation13/commit/dd749c36c416a6960782732cecf25e5ebac326e8. Storage sprite by RedBookcase on Github.", "size": { "x": 32, "y": 32 }, "states": [ + { + "name": "icon" + }, + { + "name": "storage" + }, { "name": "inhand-left", "directions": 4 @@ -14,9 +20,6 @@ { "name": "inhand-right", "directions": 4 - }, - { - "name": "icon" } ] } diff --git a/Resources/Textures/Objects/Tools/blueprint.rsi/storage.png b/Resources/Textures/Objects/Tools/blueprint.rsi/storage.png new file mode 100644 index 0000000000..2ef958dbec Binary files /dev/null and b/Resources/Textures/Objects/Tools/blueprint.rsi/storage.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-10.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-10.png index 707aed405c..ffa2ed50b7 100644 Binary files a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-10.png and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-10.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-20.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-20.png index 00d5df993d..68c140b335 100644 Binary files a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-20.png and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-20.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-30.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-30.png index f26264bf3f..d653ae7085 100644 Binary files a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-30.png and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilhv-30.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-10.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-10.png index 061bfd9987..722ec7b986 100644 Binary files a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-10.png and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-10.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-20.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-20.png index 93df81a835..ab0af61b3a 100644 Binary files a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-20.png and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-20.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-30.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-30.png index 56b7c91dd5..74f2b96d2a 100644 Binary files a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-30.png and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-30.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-equipped-BELT.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-equipped-BELT.png index 1f7b0e8f69..9fa3ca4982 100644 Binary files a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-equipped-BELT.png and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-equipped-BELT.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-inhand-left.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-inhand-left.png index 0976b3aaf5..ba97c97304 100644 Binary files a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-inhand-left.png and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-inhand-left.png differ diff --git a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-inhand-right.png b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-inhand-right.png index 6072367e40..52b73f761f 100644 Binary files a/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-inhand-right.png and b/Resources/Textures/Objects/Tools/cable-coils.rsi/coilmv-inhand-right.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/cleanade.png b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/cleanade.png new file mode 100644 index 0000000000..ba40acdec2 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/cleanade.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/meta.json index 15ed620c3e..0d91035a83 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Ammunition/Explosives/explosives.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi, ball, glassshot and grapeshot Made by Alekshhh (Github) for ss1, emp made by TheShuEd (github)", + "copyright": "https://github.com/discordia-space/CEV-Eris/raw/e1d495c3faf4642b6ec1c4be8acc7cd5bc51d785/icons/obj/ammo.dmi, ball, glassshot and grapeshot Made by Alekshhh (Github) for ss1, emp made by TheShuEd (github), cleanade made by southbridge-fur (github)", "states": [ { "name": "baton" @@ -36,6 +36,9 @@ }, { "name": "spent" + }, + { + "name": "cleanade" } ] } diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/base.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/base.png new file mode 100644 index 0000000000..00fc6f71fb Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/base.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000..11dc6f6299 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 0000000000..11dc6f6299 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/icon.png new file mode 100644 index 0000000000..1091e6402c Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/inhand-left.png new file mode 100644 index 0000000000..7911e2ead9 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/inhand-right.png new file mode 100644 index 0000000000..ecc3d008a6 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-1.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-1.png new file mode 100644 index 0000000000..378543984e Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-1.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-2.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-2.png new file mode 100644 index 0000000000..4feaf6c2bc Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-2.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-3.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-3.png new file mode 100644 index 0000000000..376f97a227 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-3.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-4.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-4.png new file mode 100644 index 0000000000..b2e9ea615f Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/mag-unshaded-4.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/meta.json new file mode 100644 index 0000000000..d9585ec8f0 --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/meta.json @@ -0,0 +1,53 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/b98afcd1400b0f398bf1322b2b20de57ccf7bb0c and modified by Flareguy. equipped-BACKPACK, equipped-SUITSTORAGE, inhand-left and inhand-right states modified by Flareguy using ion rifle states", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "base" + }, + { + "name": "mag-unshaded-1" + }, + { + "name": "mag-unshaded-2" + }, + { + "name": "mag-unshaded-3" + }, + { + "name": "mag-unshaded-4" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/wielded-inhand-left.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/wielded-inhand-left.png new file mode 100644 index 0000000000..e3e7a960d7 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/wielded-inhand-left.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/wielded-inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/wielded-inhand-right.png new file mode 100644 index 0000000000..8d58d05507 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Battery/temp_gun.rsi/wielded-inhand-right.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/bolt-open.png b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/bolt-open.png new file mode 100644 index 0000000000..9a88d3f8ea Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/bolt-open.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/equipped-BACKPACK.png b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/equipped-BACKPACK.png new file mode 100644 index 0000000000..31343acf34 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/equipped-BACKPACK.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/equipped-SUITSTORAGE.png b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/equipped-SUITSTORAGE.png new file mode 100644 index 0000000000..31343acf34 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/equipped-SUITSTORAGE.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/icon.png b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/icon.png new file mode 100644 index 0000000000..9a88d3f8ea Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/icon.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/inhand-left.png b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/inhand-left.png new file mode 100644 index 0000000000..ba8ff16677 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/inhand-left.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/inhand-right.png new file mode 100644 index 0000000000..b4ed0ebe9b Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/inhand-right.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/meta.json new file mode 100644 index 0000000000..df91b7ed4c --- /dev/null +++ b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/meta.json @@ -0,0 +1,41 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Hydra Launcher sprites by august-sun (Github) / augustsun (Discord) for SS14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "bolt-open" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + }, + { + "name": "equipped-BACKPACK", + "directions": 4 + }, + { + "name": "equipped-SUITSTORAGE", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/wielded-inhand-left.png b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/wielded-inhand-left.png new file mode 100644 index 0000000000..3f9ae1e9f0 Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/wielded-inhand-left.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/wielded-inhand-right.png b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/wielded-inhand-right.png new file mode 100644 index 0000000000..4ce848601f Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Launchers/hydra_launcher.rsi/wielded-inhand-right.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles2.rsi/cleanade.png b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles2.rsi/cleanade.png new file mode 100644 index 0000000000..28a4bc828f Binary files /dev/null and b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles2.rsi/cleanade.png differ diff --git a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles2.rsi/meta.json b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles2.rsi/meta.json index 87ce717f44..b4d8f09a82 100644 --- a/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles2.rsi/meta.json +++ b/Resources/Textures/Objects/Weapons/Guns/Projectiles/projectiles2.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a, ball made by brainfood1183 (Github) for ss14, the uranium sprite is a modified version of the buckshot pellet by Boaz1111", + "copyright": "Taken from cev-eris at https://github.com/discordia-space/CEV-Eris/raw/56cbafd6ad8c013ccd5472d6c4a0db790f7f872a, ball made by brainfood1183 (Github) for ss14, the uranium sprite is a modified version of the buckshot pellet by Boaz1111, cleanade made by Southbridge_fur (github)", "size": { "x": 32, "y": 32 @@ -13,7 +13,7 @@ { "name": "buckshot-flare" }, - { + { "name": "depleted-uranium" }, { @@ -91,11 +91,20 @@ ] ] }, - { + { "name": "grapeshot" }, - { + { "name": "shard" + }, + { + "name": "cleanade", + "delays": [ + [ + 0.05, + 0.05 + ] + ] } ] } diff --git a/Resources/Textures/Parallaxes/Asteroids.png b/Resources/Textures/Parallaxes/Asteroids.png index fd5f4b6e15..1cd550fd8c 100644 Binary files a/Resources/Textures/Parallaxes/Asteroids.png and b/Resources/Textures/Parallaxes/Asteroids.png differ diff --git a/Resources/Textures/Parallaxes/attributions.yml b/Resources/Textures/Parallaxes/attributions.yml index 8e48120a62..ae8ed5cb24 100644 --- a/Resources/Textures/Parallaxes/attributions.yml +++ b/Resources/Textures/Parallaxes/attributions.yml @@ -21,4 +21,9 @@ - files: ["core_planet.png"] license: "CC-BY-NC-SA-3.0" copyright: "Drawn by Ubaser" - source: "https://github.com/space-wizards/space-station-14/blob/master/Resources/Textures/Parallaxes/core_planet.png" \ No newline at end of file + source: "https://github.com/space-wizards/space-station-14/blob/master/Resources/Textures/Parallaxes/core_planet.png" + +- files: ["debris_small.png"] + license: "CC-BY-NC-SA-4.0" + copyright: "Drawn by Southbridge" + source: "https://github.com/space-wizards/space-station-14/blob/master/Resources/Textures/Parallaxes/debris_small.png" diff --git a/Resources/Textures/Parallaxes/debris_large.png b/Resources/Textures/Parallaxes/debris_large.png new file mode 100644 index 0000000000..f13ed0d453 Binary files /dev/null and b/Resources/Textures/Parallaxes/debris_large.png differ diff --git a/Resources/Textures/Parallaxes/debris_small.png b/Resources/Textures/Parallaxes/debris_small.png new file mode 100644 index 0000000000..d7f9d358b4 Binary files /dev/null and b/Resources/Textures/Parallaxes/debris_small.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/base_pressure_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/base_pressure_unlit.png new file mode 100644 index 0000000000..e44e9b62b1 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/base_pressure_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/base_temperature_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/base_temperature_unlit.png new file mode 100644 index 0000000000..67666e1ef2 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/base_temperature_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/closed.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/closed.png index 602b83df5b..555403073b 100644 Binary files a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/closed.png and b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/closed.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/closing.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/closing.png index 6718ae08e9..2a40fddc5b 100644 Binary files a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/closing.png and b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/closing.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/deny.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/deny.png deleted file mode 100644 index a2b151c140..0000000000 Binary files a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/deny.png and /dev/null differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/locked.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/locked.png deleted file mode 100644 index 5c87415ec1..0000000000 Binary files a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/locked.png and /dev/null differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/meta.json b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/meta.json index 505b597a61..e7fa7f7cad 100644 --- a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/meta.json @@ -45,16 +45,6 @@ ] ] }, - { - "name": "deny", - "delays": [ - [ - 0.1, - 0.1, - 0.1 - ] - ] - }, { "name": "deny_unlit", "delays": [ @@ -65,9 +55,6 @@ ] ] }, - { - "name": "locked" - }, { "name": "open" }, @@ -142,6 +129,60 @@ 0.4 ] ] + }, + { + "name": "pressure_unlit", + "delays": [ + [ + 0.8, + 0.4 + ] + ] + }, + { + "name": "base_pressure_unlit", + "delays": [ + [ + 0.8, + 0.4 + ] + ] + }, + { + "name": "pressure_unlit_flat", + "delays": [ + [ + 0.8, + 0.4 + ] + ] + }, + { + "name": "temperature_unlit", + "delays": [ + [ + 0.8, + 0.4 + ] + ] + }, + { + "name": "base_temperature_unlit", + "delays": [ + [ + 0.8, + 0.4 + ] + ] + }, + { + "name": "temperature_unlit_flat", + "delays": [ + [ + 0.8, + 0.4 + ] + ] } ] } diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/opening.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/opening.png index 113ddab7b7..31b1f72af1 100644 Binary files a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/opening.png and b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/opening.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/pressure_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/pressure_unlit.png new file mode 100644 index 0000000000..3b4e87f1da Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/pressure_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/pressure_unlit_flat.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/pressure_unlit_flat.png new file mode 100644 index 0000000000..fb64ac658c Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/pressure_unlit_flat.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/temperature_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/temperature_unlit.png new file mode 100644 index 0000000000..b6ab456943 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/temperature_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/temperature_unlit_flat.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/temperature_unlit_flat.png new file mode 100644 index 0000000000..5c553a9865 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/firelock.rsi/temperature_unlit_flat.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/assembly.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/assembly.png new file mode 100644 index 0000000000..90c8c8bfbb Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/assembly.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/bolted_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/bolted_unlit.png new file mode 100644 index 0000000000..6857f2a241 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/bolted_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closed.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closed.png new file mode 100644 index 0000000000..6e88e69bcb Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closed.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closed_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closed_unlit.png new file mode 100644 index 0000000000..c78d01c42d Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closed_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closing.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closing.png new file mode 100644 index 0000000000..5632fca9c0 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closing.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closing_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closing_unlit.png new file mode 100644 index 0000000000..2a71f76d5d Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/closing_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/deny_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/deny_unlit.png new file mode 100644 index 0000000000..7c56263f83 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/deny_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/emergency_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/emergency_unlit.png new file mode 100644 index 0000000000..817f2fb3f9 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/emergency_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/meta.json b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/meta.json new file mode 100644 index 0000000000..46b3d3e406 --- /dev/null +++ b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/meta.json @@ -0,0 +1,195 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24, salvage version made by BackeTako (github) for ss14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "assembly" + }, + { + "name": "bolted_unlit" + }, + { + "name": "closed" + }, + { + "name": "closed_unlit" + }, + { + "name": "closing", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "closing_unlit", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "deny_unlit", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "open", + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "opening", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "opening_unlit", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "panel_closing", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "panel_open", + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "panel_opening", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "sparks", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "sparks_broken", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "sparks_damaged", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 1.7 + ] + ] + }, + { + "name": "sparks_open", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "welded" + }, + { + "name": "emergency_unlit", + "delays": [ + [ + 0.4, + 0.4 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/open.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/open.png new file mode 100644 index 0000000000..e36b0b50d0 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/open.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/opening.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/opening.png new file mode 100644 index 0000000000..d3a5a5dd36 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/opening.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/opening_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/opening_unlit.png new file mode 100644 index 0000000000..84933bd5ed Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/opening_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/panel_closing.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/panel_closing.png new file mode 100644 index 0000000000..db7be0bc4a Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/panel_closing.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/panel_open.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/panel_open.png new file mode 100644 index 0000000000..24eb2aedc2 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/panel_open.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/panel_opening.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/panel_opening.png new file mode 100644 index 0000000000..fc90acd637 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/panel_opening.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks.png new file mode 100644 index 0000000000..dd67e88a31 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks_broken.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks_broken.png new file mode 100644 index 0000000000..fb5d774588 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks_broken.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks_damaged.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks_damaged.png new file mode 100644 index 0000000000..f16a028dee Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks_damaged.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks_open.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks_open.png new file mode 100644 index 0000000000..630eabb976 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/sparks_open.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/welded.png b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/welded.png new file mode 100644 index 0000000000..a0040dfdc7 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Glass/salvage.rsi/welded.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/closed.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/closed.png index 8c90b693a4..e2e149852c 100644 Binary files a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/closed.png and b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/closed.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/closing.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/closing.png index 4347bf8afe..f576893854 100644 Binary files a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/closing.png and b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/closing.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/meta.json b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/meta.json index 7c1ec64f62..792da88fc5 100644 --- a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/meta.json @@ -154,6 +154,24 @@ 0.4 ] ] + }, + { + "name": "pressure_unlit", + "delays": [ + [ + 0.8, + 0.4 + ] + ] + }, + { + "name": "temperature_unlit", + "delays": [ + [ + 0.8, + 0.4 + ] + ] } ] } diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/opening.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/opening.png index 79a05996ad..d12ecf2cf8 100644 Binary files a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/opening.png and b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/opening.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/pressure_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/pressure_unlit.png new file mode 100644 index 0000000000..14bb8f4c5a Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/pressure_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/temperature_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/temperature_unlit.png new file mode 100644 index 0000000000..593d191641 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/firelock.rsi/temperature_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/assembly.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/assembly.png new file mode 100644 index 0000000000..12c86d9f9a Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/assembly.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/bolted_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/bolted_unlit.png new file mode 100644 index 0000000000..6857f2a241 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/bolted_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closed.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closed.png new file mode 100644 index 0000000000..5217ca82f3 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closed.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closed_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closed_unlit.png new file mode 100644 index 0000000000..c78d01c42d Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closed_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closing.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closing.png new file mode 100644 index 0000000000..90da770dfc Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closing.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closing_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closing_unlit.png new file mode 100644 index 0000000000..2a71f76d5d Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/closing_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/deny_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/deny_unlit.png new file mode 100644 index 0000000000..7c56263f83 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/deny_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/emergency_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/emergency_unlit.png new file mode 100644 index 0000000000..817f2fb3f9 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/emergency_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/meta.json b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/meta.json new file mode 100644 index 0000000000..46b3d3e406 --- /dev/null +++ b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/meta.json @@ -0,0 +1,195 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/c6e3401f2e7e1e55c57060cdf956a98ef1fefc24, salvage version made by BackeTako (github) for ss14", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "assembly" + }, + { + "name": "bolted_unlit" + }, + { + "name": "closed" + }, + { + "name": "closed_unlit" + }, + { + "name": "closing", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "closing_unlit", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "deny_unlit", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "open", + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "opening", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "opening_unlit", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "panel_closing", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "panel_open", + "delays": [ + [ + 1 + ] + ] + }, + { + "name": "panel_opening", + "delays": [ + [ + 0.1, + 0.1, + 0.07, + 0.07, + 0.07, + 0.2 + ] + ] + }, + { + "name": "sparks", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "sparks_broken", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "sparks_damaged", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 1.7 + ] + ] + }, + { + "name": "sparks_open", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "welded" + }, + { + "name": "emergency_unlit", + "delays": [ + [ + 0.4, + 0.4 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/open.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/open.png new file mode 100644 index 0000000000..ab2fca19bf Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/open.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/opening.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/opening.png new file mode 100644 index 0000000000..6313b22651 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/opening.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/opening_unlit.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/opening_unlit.png new file mode 100644 index 0000000000..84933bd5ed Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/opening_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/panel_closing.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/panel_closing.png new file mode 100644 index 0000000000..db7be0bc4a Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/panel_closing.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/panel_open.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/panel_open.png new file mode 100644 index 0000000000..24eb2aedc2 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/panel_open.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/panel_opening.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/panel_opening.png new file mode 100644 index 0000000000..fc90acd637 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/panel_opening.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks.png new file mode 100644 index 0000000000..dd67e88a31 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks_broken.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks_broken.png new file mode 100644 index 0000000000..fb5d774588 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks_broken.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks_damaged.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks_damaged.png new file mode 100644 index 0000000000..f16a028dee Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks_damaged.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks_open.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks_open.png new file mode 100644 index 0000000000..630eabb976 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/sparks_open.png differ diff --git a/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/welded.png b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/welded.png new file mode 100644 index 0000000000..a0040dfdc7 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Airlocks/Standard/salvage.rsi/welded.png differ diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/meta.json b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/meta.json index 3462a1492a..45e8a43117 100644 --- a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/meta.json @@ -291,6 +291,14 @@ { "name": "welded_open", "directions": 4 + }, + { + "name": "pressure_unlit", + "directions": 4 + }, + { + "name": "temperature_unlit", + "directions": 4 } ] } diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/pressure_unlit.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/pressure_unlit.png new file mode 100644 index 0000000000..b0c5be8bbf Binary files /dev/null and b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/pressure_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/temperature_unlit.png b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/temperature_unlit.png new file mode 100644 index 0000000000..eee51f1e0d Binary files /dev/null and b/Resources/Textures/Structures/Doors/edge_door_hazard.rsi/temperature_unlit.png differ diff --git a/Resources/Textures/Structures/Doors/turnstile.rsi/arrow.png b/Resources/Textures/Structures/Doors/turnstile.rsi/arrow.png new file mode 100644 index 0000000000..6332f6b326 Binary files /dev/null and b/Resources/Textures/Structures/Doors/turnstile.rsi/arrow.png differ diff --git a/Resources/Textures/Structures/Doors/turnstile.rsi/deny.png b/Resources/Textures/Structures/Doors/turnstile.rsi/deny.png new file mode 100644 index 0000000000..4afe444d7c Binary files /dev/null and b/Resources/Textures/Structures/Doors/turnstile.rsi/deny.png differ diff --git a/Resources/Textures/Structures/Doors/turnstile.rsi/meta.json b/Resources/Textures/Structures/Doors/turnstile.rsi/meta.json new file mode 100644 index 0000000000..dea5fb8946 --- /dev/null +++ b/Resources/Textures/Structures/Doors/turnstile.rsi/meta.json @@ -0,0 +1,65 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from OracleStation at https://github.com/OracleStation/OracleStation/blob/c1046bdd14674dc5a8631074aaa6650770b2937e/icons/obj/turnstile.dmi. Arrow by EmoGarbage404 (github).", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "arrow", + "delays": [ + [ + 0.5, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "turnstile" + }, + { + "name": "turnstile_map", + "directions": 4 + }, + { + "name": "operate", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "deny", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Doors/turnstile.rsi/operate.png b/Resources/Textures/Structures/Doors/turnstile.rsi/operate.png new file mode 100644 index 0000000000..3178c298dd Binary files /dev/null and b/Resources/Textures/Structures/Doors/turnstile.rsi/operate.png differ diff --git a/Resources/Textures/Structures/Doors/turnstile.rsi/turnstile.png b/Resources/Textures/Structures/Doors/turnstile.rsi/turnstile.png new file mode 100644 index 0000000000..48c85577e7 Binary files /dev/null and b/Resources/Textures/Structures/Doors/turnstile.rsi/turnstile.png differ diff --git a/Resources/Textures/Structures/Doors/turnstile.rsi/turnstile_map.png b/Resources/Textures/Structures/Doors/turnstile.rsi/turnstile_map.png new file mode 100644 index 0000000000..fb3fcc5c31 Binary files /dev/null and b/Resources/Textures/Structures/Doors/turnstile.rsi/turnstile_map.png differ diff --git a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/chaos.png b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/chaos.png index 40f48b11fb..b09fd8d355 100644 Binary files a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/chaos.png and b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/chaos.png differ diff --git a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/druid.png b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/druid.png index 99c097fe73..2a6411a30e 100644 Binary files a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/druid.png and b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/druid.png differ diff --git a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/meta.json b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/meta.json index e131857737..fe7729e8fe 100644 --- a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/meta.json +++ b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/TauCetiStation/TauCetiClassic/pull/5184/commits/7489ad4520ddf83968c467cd587bde2c821e10a6", + "copyright": "Originals taken from https://github.com/TauCetiStation/TauCetiClassic/pull/5184/commits/7489ad4520ddf83968c467cd587bde2c821e10a6, modified by Booblesnoot in https://github.com/space-wizards/space-station-14/pull/35685", "states": [ { "name": "nanotrasen" diff --git a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/nanotrasen.png b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/nanotrasen.png index 4e124a5624..d33cc1e2cd 100644 Binary files a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/nanotrasen.png and b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/nanotrasen.png differ diff --git a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/satana.png b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/satana.png index e329908ae9..04e6b485f0 100644 Binary files a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/satana.png and b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/satana.png differ diff --git a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/space-christian.png b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/space-christian.png index 0ca2057903..5bb731afa7 100644 Binary files a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/space-christian.png and b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/space-christian.png differ diff --git a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/technology.png b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/technology.png index 6b0ead8482..c668647d81 100644 Binary files a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/technology.png and b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/technology.png differ diff --git a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/toolbox.png b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/toolbox.png index f1047b794f..9a4c034bb9 100644 Binary files a/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/toolbox.png and b/Resources/Textures/Structures/Furniture/Altars/Gods/nanotrasen.rsi/toolbox.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/allocate.png b/Resources/Textures/Structures/Machines/computers.rsi/allocate.png new file mode 100644 index 0000000000..6743d295fe Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/allocate.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/meta.json b/Resources/Textures/Structures/Machines/computers.rsi/meta.json index e0127936dd..0502bd3661 100644 --- a/Resources/Textures/Structures/Machines/computers.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/computers.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bd6873fd4dd6a61d7e46f1d75cd4d90f64c40894. comm_syndie made by Veritius, based on comm. generic_panel_open made by Errant, commit https://github.com/space-wizards/space-station-14/pull/32273, comms_wizard and wizard_key by ScarKy0", + "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bd6873fd4dd6a61d7e46f1d75cd4d90f64c40894. comm_syndie made by Veritius, based on comm. generic_panel_open made by Errant, commit https://github.com/space-wizards/space-station-14/pull/32273, comms_wizard and wizard_key by ScarKy0, request- variants transfer made by EmoGarbage404 (github)", "size": { "x": 32, "y": 32 @@ -131,6 +131,32 @@ ] ] }, + { + "name": "allocate", + "directions": 4, + "delays": [ + [ + 1.0, + 1.0, + 1.0 + ], + [ + 1.0, + 1.0, + 1.0 + ], + [ + 1.0, + 1.0, + 1.0 + ], + [ + 1.0, + 1.0, + 1.0 + ] + ] + }, { "name": "area_atmos", "directions": 4, @@ -1452,6 +1478,196 @@ ] ] }, + { + "name": "request-eng", + "directions": 4, + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "request-med", + "directions": 4, + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "request-sci", + "directions": 4, + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "request-sec", + "directions": 4, + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "request-srv", + "directions": 4, + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ], + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] + }, { "name": "robot", "directions": 4 @@ -1654,6 +1870,64 @@ "name": "telesci_key_off", "directions": 4 }, + { + "name": "transfer", + "directions": 4, + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ], + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, { "name": "turbinecomp", "directions": 4 diff --git a/Resources/Textures/Structures/Machines/computers.rsi/request-eng.png b/Resources/Textures/Structures/Machines/computers.rsi/request-eng.png new file mode 100644 index 0000000000..845311209f Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/request-eng.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/request-med.png b/Resources/Textures/Structures/Machines/computers.rsi/request-med.png new file mode 100644 index 0000000000..29ee175a97 Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/request-med.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/request-sci.png b/Resources/Textures/Structures/Machines/computers.rsi/request-sci.png new file mode 100644 index 0000000000..c395cfc04c Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/request-sci.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/request-sec.png b/Resources/Textures/Structures/Machines/computers.rsi/request-sec.png new file mode 100644 index 0000000000..1a2c8e0d39 Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/request-sec.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/request-srv.png b/Resources/Textures/Structures/Machines/computers.rsi/request-srv.png new file mode 100644 index 0000000000..46468ec5d5 Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/request-srv.png differ diff --git a/Resources/Textures/Structures/Machines/computers.rsi/transfer.png b/Resources/Textures/Structures/Machines/computers.rsi/transfer.png new file mode 100644 index 0000000000..86bb37653e Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/transfer.png differ diff --git a/Resources/Textures/Structures/Machines/mixer.rsi/meta.json b/Resources/Textures/Structures/Machines/mixer.rsi/meta.json index 5c3cd75b2c..5621dea1f9 100644 --- a/Resources/Textures/Structures/Machines/mixer.rsi/meta.json +++ b/Resources/Textures/Structures/Machines/mixer.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris/blob/2b969adc2dfd3e9621bf3597c5cbffeb3ac8c9f0/icons/obj/chemical.dmi and modified by Will-Oliver-Br", "states": [ { "name": "mixer_empty", diff --git a/Resources/Textures/Structures/Machines/mixer.rsi/mixer_loaded.png b/Resources/Textures/Structures/Machines/mixer.rsi/mixer_loaded.png index abef17b1d5..e5312e7f97 100644 Binary files a/Resources/Textures/Structures/Machines/mixer.rsi/mixer_loaded.png and b/Resources/Textures/Structures/Machines/mixer.rsi/mixer_loaded.png differ diff --git a/Resources/Textures/Structures/Machines/silo.rsi/meta.json b/Resources/Textures/Structures/Machines/silo.rsi/meta.json new file mode 100644 index 0000000000..aa78616897 --- /dev/null +++ b/Resources/Textures/Structures/Machines/silo.rsi/meta.json @@ -0,0 +1,40 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from tgstation at https://github.com/tgstation/tgstation/commit/d74b67828394a9842578279a6b8ab2955bb08216. Created by MrDoomBringer (github)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "silo" + }, + { + "name": "silo_active", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "overlay_active", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Machines/silo.rsi/overlay_active.png b/Resources/Textures/Structures/Machines/silo.rsi/overlay_active.png new file mode 100644 index 0000000000..0a06e45676 Binary files /dev/null and b/Resources/Textures/Structures/Machines/silo.rsi/overlay_active.png differ diff --git a/Resources/Textures/Structures/Machines/silo.rsi/silo.png b/Resources/Textures/Structures/Machines/silo.rsi/silo.png new file mode 100644 index 0000000000..45fe37ac5f Binary files /dev/null and b/Resources/Textures/Structures/Machines/silo.rsi/silo.png differ diff --git a/Resources/Textures/Structures/Machines/silo.rsi/silo_active.png b/Resources/Textures/Structures/Machines/silo.rsi/silo_active.png new file mode 100644 index 0000000000..f25218b2d2 Binary files /dev/null and b/Resources/Textures/Structures/Machines/silo.rsi/silo_active.png differ diff --git a/Resources/Textures/Structures/Power/Cables/hv_cable.rsi/hvcable_4.png b/Resources/Textures/Structures/Power/Cables/hv_cable.rsi/hvcable_4.png index f8fb64122d..355700eb83 100644 Binary files a/Resources/Textures/Structures/Power/Cables/hv_cable.rsi/hvcable_4.png and b/Resources/Textures/Structures/Power/Cables/hv_cable.rsi/hvcable_4.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/meta.json b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/meta.json index 76b5eb294a..5c9442cbce 100644 --- a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/meta.json +++ b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/meta.json @@ -70,6 +70,70 @@ { "name": "mvcable_15" + }, + { + "name": "mvstripes_0" + + }, + { + "name": "mvstripes_1" + + }, + { + "name": "mvstripes_2" + + }, + { + "name": "mvstripes_3" + + }, + { + "name": "mvstripes_4" + + }, + { + "name": "mvstripes_5" + + }, + { + "name": "mvstripes_6" + + }, + { + "name": "mvstripes_7" + + }, + { + "name": "mvstripes_8" + + }, + { + "name": "mvstripes_9" + + }, + { + "name": "mvstripes_10" + + }, + { + "name": "mvstripes_11" + + }, + { + "name": "mvstripes_12" + + }, + { + "name": "mvstripes_13" + + }, + { + "name": "mvstripes_14" + + }, + { + "name": "mvstripes_15" + } ] } diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_0.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_0.png index 47f04f63c2..3b0665ee1e 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_0.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_0.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_1.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_1.png index bd958a82f3..fe2f6702cc 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_1.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_1.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_10.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_10.png index 690f9cda8f..7fb6e6c90d 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_10.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_10.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_11.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_11.png index 0da1d5e1d1..e4fc7333e2 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_11.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_11.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_12.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_12.png index 02edf964cd..1276a93708 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_12.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_12.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_13.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_13.png index a13a602d9b..af31b7b9c9 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_13.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_13.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_14.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_14.png index 1579a277eb..9e14127ebb 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_14.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_14.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_15.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_15.png index 94ae29374c..665b4ce828 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_15.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_15.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_2.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_2.png index ee8e0b5dc6..8423573dd1 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_2.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_2.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_3.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_3.png index a3fe54b5a0..25fe79acc2 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_3.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_3.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_4.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_4.png index 137138e8e3..c1cd23c9ad 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_4.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_4.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_5.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_5.png index 96065f62da..4f77fb0881 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_5.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_5.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_6.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_6.png index 83b583a15d..146a658848 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_6.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_6.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_7.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_7.png index 6596ad217d..92e6f95ade 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_7.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_7.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_8.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_8.png index 7d0efd026e..ba863778bc 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_8.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_8.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_9.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_9.png index 6627343841..5ec716e43f 100644 Binary files a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_9.png and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvcable_9.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_0.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_0.png new file mode 100644 index 0000000000..7244b37f5c Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_0.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_1.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_1.png new file mode 100644 index 0000000000..84a086cb30 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_1.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_10.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_10.png new file mode 100644 index 0000000000..8b08ae14a9 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_10.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_11.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_11.png new file mode 100644 index 0000000000..c349e572af Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_11.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_12.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_12.png new file mode 100644 index 0000000000..d743f4d801 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_12.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_13.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_13.png new file mode 100644 index 0000000000..91251f5b5d Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_13.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_14.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_14.png new file mode 100644 index 0000000000..c1cb353091 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_14.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_15.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_15.png new file mode 100644 index 0000000000..f46fef6ccb Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_15.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_2.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_2.png new file mode 100644 index 0000000000..047f80df55 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_2.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_3.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_3.png new file mode 100644 index 0000000000..8b7b568c50 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_3.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_4.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_4.png new file mode 100644 index 0000000000..90cb70bcb3 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_4.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_5.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_5.png new file mode 100644 index 0000000000..61ef5e84a0 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_5.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_6.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_6.png new file mode 100644 index 0000000000..a743032867 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_6.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_7.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_7.png new file mode 100644 index 0000000000..af380fe8de Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_7.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_8.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_8.png new file mode 100644 index 0000000000..11872d94f1 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_8.png differ diff --git a/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_9.png b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_9.png new file mode 100644 index 0000000000..202084bfc1 Binary files /dev/null and b/Resources/Textures/Structures/Power/Cables/mv_cable.rsi/mvstripes_9.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/base.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/base.png new file mode 100644 index 0000000000..1088abb903 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/base.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/closed.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/closed.png new file mode 100644 index 0000000000..c081d66c80 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/closed.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/icon.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/icon.png new file mode 100644 index 0000000000..53bfb09431 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/icon.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/locked.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/locked.png new file mode 100644 index 0000000000..747da48d9b Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/locked.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/meta.json b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/meta.json new file mode 100644 index 0000000000..6d33e62374 --- /dev/null +++ b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/meta.json @@ -0,0 +1,51 @@ +{ + "version": 1, + "license": "CC-BY-SA-3.0", + "copyright": "Created by EmoGarbage404 (github) for Space Station 14.", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "base" + }, + { + "name": "closed" + }, + { + "name": "overlay" + }, + { + "name": "overlay-closed" + }, + { + "name": "open" + }, + { + "name": "welded" + }, + { + "name": "locked" + }, + { + "name": "unlocked" + }, + { + "name": "sparking", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + } + ] +} diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/open.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/open.png new file mode 100644 index 0000000000..1c14d5d41a Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/open.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/overlay-closed.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/overlay-closed.png new file mode 100644 index 0000000000..7f8745c838 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/overlay-closed.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/overlay.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/overlay.png new file mode 100644 index 0000000000..6a0495b8b1 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/overlay.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/sparking.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/sparking.png new file mode 100644 index 0000000000..c31e3a1872 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/sparking.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/unlocked.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/unlocked.png new file mode 100644 index 0000000000..11715f9f43 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/unlocked.png differ diff --git a/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/welded.png b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/welded.png new file mode 100644 index 0000000000..e8ae93c006 Binary files /dev/null and b/Resources/Textures/Structures/Storage/Crates/lockbox.rsi/welded.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop.png new file mode 100644 index 0000000000..11e878a6fe Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_1.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_1.png new file mode 100644 index 0000000000..35c32606bd Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_1.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_2.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_2.png new file mode 100644 index 0000000000..e7a8907900 Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_2.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_3.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_3.png new file mode 100644 index 0000000000..a4c82fdb08 Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_3.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_4.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_4.png new file mode 100644 index 0000000000..ad11caa8f9 Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_4.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_5.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_5.png new file mode 100644 index 0000000000..429d432cd9 Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_5.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_6.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_6.png new file mode 100644 index 0000000000..35c49375d9 Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_6.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_7.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_7.png new file mode 100644 index 0000000000..cd0c499f08 Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_7.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_8.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_8.png new file mode 100644 index 0000000000..093cbc75aa Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop_door_8.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/genpop_open.png b/Resources/Textures/Structures/Storage/closet.rsi/genpop_open.png new file mode 100644 index 0000000000..c6971a35d1 Binary files /dev/null and b/Resources/Textures/Structures/Storage/closet.rsi/genpop_open.png differ diff --git a/Resources/Textures/Structures/Storage/closet.rsi/meta.json b/Resources/Textures/Structures/Storage/closet.rsi/meta.json index 5600268fde..6dbdb4dba3 100644 --- a/Resources/Textures/Structures/Storage/closet.rsi/meta.json +++ b/Resources/Textures/Structures/Storage/closet.rsi/meta.json @@ -1,566 +1,596 @@ { - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "copyright": "Taken from tgstation, brigmedic locker is a resprited CMO locker by PuroSlavKing (Github), n2 sprites based on fire and emergency sprites", - "license": "CC-BY-SA-3.0", - "states": [ - { - "name": "abductor" - }, - { - "name": "abductor_door" - }, - { - "name": "abductor_open" - }, - { - "name": "agentbox" - }, - { - "name": "alien" - }, - { - "name": "alien_door" - }, - { - "name": "alien_open" - }, - { - "name": "brigmedic_door" - }, - { - "name": "brigmedic" - }, - { - "name": "armory" - }, - { - "name": "armory_door" - }, - { - "name": "armory_open" - }, - { - "name": "atmos" - }, - { - "name": "atmos_door" - }, - { - "name": "atmos_open" - }, - { - "name": "atmos_wardrobe_door" - }, - { - "name": "bio" - }, - { - "name": "bio_door" - }, - { - "name": "bio_jan" - }, - { - "name": "bio_jan_door" - }, - { - "name": "bio_jan_open" - }, - { - "name": "bio_open" - }, - { - "name": "bio_sec" - }, - { - "name": "bio_sec_door" - }, - { - "name": "bio_sec_open" - }, - { - "name": "bio_viro" - }, - { - "name": "bio_viro_door" - }, - { - "name": "bio_viro_open" - }, - { - "name": "black_door" - }, - { - "name": "blue_door" - }, - { - "name": "bomb" - }, - { - "name": "bomb_door" - }, - { - "name": "bomb_open" - }, - { - "name": "janitor_bomb" - }, - { - "name": "janitor_bomb_door" - }, - { - "name": "janitor_bomb_open" - }, - { - "name": "cabinet" - }, - { - "name": "cabinet_door" - }, - { - "name": "cabinet_open" - }, - { - "name": "cap" - }, - { - "name": "cap_door" - }, - { - "name": "cap_open" - }, - { - "name": "cardboard" - }, - { - "name": "cardboard_open" - }, - { - "name": "cardboard_special" - }, - { - "name": "cargo" - }, - { - "name": "cargo_door" - }, - { - "name": "cargo_open" - }, - { - "name": "ce" - }, - { - "name": "ce_door" - }, - { - "name": "ce_open" - }, - { - "name": "chemical_door" - }, - { - "name": "cmo" - }, - { - "name": "cmo_door" - }, - { - "name": "cmo_open" - }, - { - "name": "cursed", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "cursed_door", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "cursed_open" - }, - { - "name": "cursed_whole", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "decursed", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "decursed_door", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "decursed_open" - }, - { - "name": "ecase" - }, - { - "name": "ecase_door" - }, - { - "name": "ecase_open" - }, - { - "name": "egun" - }, - { - "name": "emergency" - }, - { - "name": "emergency_door" - }, - { - "name": "emergency_open" - }, - { - "name": "eng" - }, - { - "name": "eng_elec_door" - }, - { - "name": "eng_open" - }, - { - "name": "eng_rad_door" - }, - { - "name": "eng_secure" - }, - { - "name": "eng_secure_door" - }, - { - "name": "eng_secure_open" - }, - { - "name": "eng_tool_door" - }, - { - "name": "eng_weld_door" - }, - { - "name": "fire" - }, - { - "name": "fire_door" - }, - { - "name": "fire_open" - }, - { - "name": "freezer" - }, - { - "name": "freezer_icon" - }, - { - "name": "freezer_door" - }, - { - "name": "freezer_open" - }, - { - "name": "generic" - }, - { - "name": "generic_door" - }, - { - "name": "generic_open" - }, - { - "name": "generic_icon" - }, - { - "name": "green_door" - }, - { - "name": "grey_door" - }, - { - "name": "hop" - }, - { - "name": "hop_door" - }, - { - "name": "hop_open" - }, - { - "name": "hos" - }, - { - "name": "hos_door" - }, - { - "name": "hos_open" - }, - { - "name": "hydro" - }, - { - "name": "hydro_door" - }, - { - "name": "hydro_open" - }, - { - "name": "locked" - }, - { - "name": "med" - }, - { - "name": "med_door" - }, - { - "name": "med_open" - }, - { - "name": "med_secure" - }, - { - "name": "med_secure_door" - }, - { - "name": "med_secure_open" - }, - { - "name": "metalbox" - }, - { - "name": "metalbox_open" - }, - { - "name": "mining" - }, - { - "name": "mining_door" - }, - { - "name": "mining_open" - }, - { - "name": "mixed_door" - }, - { - "name": "n2" - }, - { - "name": "n2_open" - }, - { - "name": "n2_door" - }, - { - "name": "oldcloset" - }, - { - "name": "orange_door" - }, - { - "name": "paramed" - }, - { - "name": "paramed_door" - }, - { - "name": "paramed_open" - }, - { - "name": "pink_door" - }, - { - "name": "qm" - }, - { - "name": "qm_door" - }, - { - "name": "qm_open" - }, - { - "name": "rd" - }, - { - "name": "rd_door" - }, - { - "name": "rd_open" - }, - { - "name": "red_door" - }, - { - "name": "science" - }, - { - "name": "science_door" - }, - { - "name": "science_open" - }, - { - "name": "sec" - }, - { - "name": "sec_door" - }, - { - "name": "sec_open" - }, - { - "name": "secure" - }, - { - "name": "secure_door" - }, - { - "name": "secure_icon" - }, - { - "name": "secure_open" - }, - { - "name": "shotgun" - }, - { - "name": "shotguncase" - }, - { - "name": "shotguncase_door" - }, - { - "name": "shotguncase_open" - }, - { - "name": "sparking", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "syndicate" - }, - { - "name": "syndicate_door" - }, - { - "name": "syndicate_open" - }, - { - "name": "tac" - }, - { - "name": "tac_door" - }, - { - "name": "tac_open" - }, - { - "name": "unlocked" - }, - { - "name": "warden" - }, - { - "name": "warden_door" - }, - { - "name": "warden_open" - }, - { - "name": "welded" - }, - { - "name": "white_door" - }, - { - "name": "yellow_door" - }, - { - "name": "clown" - }, - { - "name": "clown_door" - }, - { - "name": "clown_open" - }, - { - "name": "mime" - }, - { - "name": "mime_door" - }, - { - "name": "mime_open" - }, - { - "name": "representative_door" - } - ] + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "copyright": "Taken from tgstation, brigmedic locker is a resprited CMO locker by PuroSlavKing (Github), n2 sprites based on fire and emergency sprites, genpop lockers by EmoGarbage404 (github)", + "license": "CC-BY-SA-3.0", + "states": [ + { + "name": "abductor" + }, + { + "name": "abductor_door" + }, + { + "name": "abductor_open" + }, + { + "name": "agentbox" + }, + { + "name": "alien" + }, + { + "name": "alien_door" + }, + { + "name": "alien_open" + }, + { + "name": "brigmedic_door" + }, + { + "name": "brigmedic" + }, + { + "name": "armory" + }, + { + "name": "armory_door" + }, + { + "name": "armory_open" + }, + { + "name": "atmos" + }, + { + "name": "atmos_door" + }, + { + "name": "atmos_open" + }, + { + "name": "atmos_wardrobe_door" + }, + { + "name": "bio" + }, + { + "name": "bio_door" + }, + { + "name": "bio_jan" + }, + { + "name": "bio_jan_door" + }, + { + "name": "bio_jan_open" + }, + { + "name": "bio_open" + }, + { + "name": "bio_sec" + }, + { + "name": "bio_sec_door" + }, + { + "name": "bio_sec_open" + }, + { + "name": "bio_viro" + }, + { + "name": "bio_viro_door" + }, + { + "name": "bio_viro_open" + }, + { + "name": "black_door" + }, + { + "name": "blue_door" + }, + { + "name": "bomb" + }, + { + "name": "bomb_door" + }, + { + "name": "bomb_open" + }, + { + "name": "janitor_bomb" + }, + { + "name": "janitor_bomb_door" + }, + { + "name": "janitor_bomb_open" + }, + { + "name": "cabinet" + }, + { + "name": "cabinet_door" + }, + { + "name": "cabinet_open" + }, + { + "name": "cap" + }, + { + "name": "cap_door" + }, + { + "name": "cap_open" + }, + { + "name": "cardboard" + }, + { + "name": "cardboard_open" + }, + { + "name": "cardboard_special" + }, + { + "name": "cargo" + }, + { + "name": "cargo_door" + }, + { + "name": "cargo_open" + }, + { + "name": "ce" + }, + { + "name": "ce_door" + }, + { + "name": "ce_open" + }, + { + "name": "chemical_door" + }, + { + "name": "cmo" + }, + { + "name": "cmo_door" + }, + { + "name": "cmo_open" + }, + { + "name": "cursed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "cursed_door", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "cursed_open" + }, + { + "name": "cursed_whole", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "decursed", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "decursed_door", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "decursed_open" + }, + { + "name": "ecase" + }, + { + "name": "ecase_door" + }, + { + "name": "ecase_open" + }, + { + "name": "egun" + }, + { + "name": "emergency" + }, + { + "name": "emergency_door" + }, + { + "name": "emergency_open" + }, + { + "name": "eng" + }, + { + "name": "eng_elec_door" + }, + { + "name": "eng_open" + }, + { + "name": "eng_rad_door" + }, + { + "name": "eng_secure" + }, + { + "name": "eng_secure_door" + }, + { + "name": "eng_secure_open" + }, + { + "name": "eng_tool_door" + }, + { + "name": "eng_weld_door" + }, + { + "name": "fire" + }, + { + "name": "fire_door" + }, + { + "name": "fire_open" + }, + { + "name": "freezer" + }, + { + "name": "freezer_icon" + }, + { + "name": "freezer_door" + }, + { + "name": "freezer_open" + }, + { + "name": "generic" + }, + { + "name": "generic_door" + }, + { + "name": "generic_open" + }, + { + "name": "generic_icon" + }, + { + "name": "genpop" + }, + { + "name": "genpop_door_1" + }, + { + "name": "genpop_door_2" + }, + { + "name": "genpop_door_3" + }, + { + "name": "genpop_door_4" + }, + { + "name": "genpop_door_5" + }, + { + "name": "genpop_door_6" + }, + { + "name": "genpop_door_7" + }, + { + "name": "genpop_door_8" + }, + { + "name": "genpop_open" + }, + { + "name": "green_door" + }, + { + "name": "grey_door" + }, + { + "name": "hop" + }, + { + "name": "hop_door" + }, + { + "name": "hop_open" + }, + { + "name": "hos" + }, + { + "name": "hos_door" + }, + { + "name": "hos_open" + }, + { + "name": "hydro" + }, + { + "name": "hydro_door" + }, + { + "name": "hydro_open" + }, + { + "name": "locked" + }, + { + "name": "med" + }, + { + "name": "med_door" + }, + { + "name": "med_open" + }, + { + "name": "med_secure" + }, + { + "name": "med_secure_door" + }, + { + "name": "med_secure_open" + }, + { + "name": "metalbox" + }, + { + "name": "metalbox_open" + }, + { + "name": "mining" + }, + { + "name": "mining_door" + }, + { + "name": "mining_open" + }, + { + "name": "mixed_door" + }, + { + "name": "n2" + }, + { + "name": "n2_open" + }, + { + "name": "n2_door" + }, + { + "name": "oldcloset" + }, + { + "name": "orange_door" + }, + { + "name": "paramed" + }, + { + "name": "paramed_door" + }, + { + "name": "paramed_open" + }, + { + "name": "pink_door" + }, + { + "name": "qm" + }, + { + "name": "qm_door" + }, + { + "name": "qm_open" + }, + { + "name": "rd" + }, + { + "name": "rd_door" + }, + { + "name": "rd_open" + }, + { + "name": "red_door" + }, + { + "name": "science" + }, + { + "name": "science_door" + }, + { + "name": "science_open" + }, + { + "name": "sec" + }, + { + "name": "sec_door" + }, + { + "name": "sec_open" + }, + { + "name": "secure" + }, + { + "name": "secure_door" + }, + { + "name": "secure_icon" + }, + { + "name": "secure_open" + }, + { + "name": "shotgun" + }, + { + "name": "shotguncase" + }, + { + "name": "shotguncase_door" + }, + { + "name": "shotguncase_open" + }, + { + "name": "sparking", + "delays": [ + [ + 0.1, + 0.1, + 0.1, + 0.1 + ] + ] + }, + { + "name": "syndicate" + }, + { + "name": "syndicate_door" + }, + { + "name": "syndicate_open" + }, + { + "name": "tac" + }, + { + "name": "tac_door" + }, + { + "name": "tac_open" + }, + { + "name": "unlocked" + }, + { + "name": "warden" + }, + { + "name": "warden_door" + }, + { + "name": "warden_open" + }, + { + "name": "welded" + }, + { + "name": "white_door" + }, + { + "name": "yellow_door" + }, + { + "name": "clown" + }, + { + "name": "clown_door" + }, + { + "name": "clown_open" + }, + { + "name": "mime" + }, + { + "name": "mime_door" + }, + { + "name": "mime_open" + }, + { + "name": "representative_door" + } + ] } diff --git a/Resources/Textures/Structures/Wallmounts/signs.rsi/genpop.png b/Resources/Textures/Structures/Wallmounts/signs.rsi/genpop.png new file mode 100644 index 0000000000..b37bfbec45 Binary files /dev/null and b/Resources/Textures/Structures/Wallmounts/signs.rsi/genpop.png differ diff --git a/Resources/Textures/Structures/Wallmounts/signs.rsi/meta.json b/Resources/Textures/Structures/Wallmounts/signs.rsi/meta.json index cff9574b6a..3a7caf0688 100644 --- a/Resources/Textures/Structures/Wallmounts/signs.rsi/meta.json +++ b/Resources/Textures/Structures/Wallmounts/signs.rsi/meta.json @@ -1,11 +1,11 @@ { - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "license": "CC-BY-SA-3.0", - "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 4e0bbe682d0a00192d24708fdb7031008aa03f18 and bee station at commit https://github.com/BeeStation/BeeStation-Hornet/commit/13dd5ac712385642574138f6d7b30eea7c2fab9c, Job signs by EmoGarbage404 (github) with inspiration from yogstation and tgstation, 'direction_exam' and 'direction_icu' made by rosieposieeee (github), 'direction_atmos' made by SlamBamActionman, 'vox' based on sprites taken from vgstation13 at https://github.com/vgstation-coders/vgstation13/blob/e7f005f8b8d3f7d89cbee3b87f76c23f9e951c27/icons/obj/decals.dmi, 'direction_pods' derived by WarPigeon from existing directional signs.", + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Taken from https://github.com/discordia-space/CEV-Eris at commit 4e0bbe682d0a00192d24708fdb7031008aa03f18 and bee station at commit https://github.com/BeeStation/BeeStation-Hornet/commit/13dd5ac712385642574138f6d7b30eea7c2fab9c, Job signs by EmoGarbage404 (github) with inspiration from yogstation and tgstation, 'direction_exam' and 'direction_icu' made by rosieposieeee (github), 'direction_atmos' made by SlamBamActionman, 'vox' based on sprites taken from vgstation13 at https://github.com/vgstation-coders/vgstation13/blob/e7f005f8b8d3f7d89cbee3b87f76c23f9e951c27/icons/obj/decals.dmi, 'direction_pods' derived by WarPigeon from existing directional signs.", "states": [ { "name": "ai" @@ -258,6 +258,9 @@ { "name": "cloning" }, + { + "name": "genpop" + }, { "name": "gravi" }, diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/full.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/full.png deleted file mode 100644 index f336d4c73b..0000000000 Binary files a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/full.png and /dev/null differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/meta.json b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/meta.json deleted file mode 100644 index 97ca2aa3b0..0000000000 --- a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/meta.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "version": 1, - "size": { - "x": 32, - "y": 32 - }, - "license": "CC-BY-SA-3.0", - "copyright": "https://github.com/tgstation/tgstation/blob/9ddb8cf084e292571d4e9c79745db25befbd82fe/icons/turf/walls/shuttle_wall.dmi", - "states": [ - { - "name": "full" - }, - { - "name": "state0", - "directions": 4 - }, - { - "name": "state1", - "directions": 4 - }, - { - "name": "state2", - "directions": 4 - }, - { - "name": "state3", - "directions": 4 - }, - { - "name": "state4", - "directions": 4 - }, - { - "name": "state5", - "directions": 4 - }, - { - "name": "state6", - "directions": 4 - }, - { - "name": "state7", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state0.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state0.png deleted file mode 100644 index f53131b1be..0000000000 Binary files a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state0.png and /dev/null differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state1.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state1.png deleted file mode 100644 index 3041fa3daf..0000000000 Binary files a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state1.png and /dev/null differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state2.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state2.png deleted file mode 100644 index f53131b1be..0000000000 Binary files a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state2.png and /dev/null differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state3.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state3.png deleted file mode 100644 index 1263f7a1ba..0000000000 Binary files a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state3.png and /dev/null differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state4.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state4.png deleted file mode 100644 index 92ab8365c2..0000000000 Binary files a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state4.png and /dev/null differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state5.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state5.png deleted file mode 100644 index 430bab8398..0000000000 Binary files a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state5.png and /dev/null differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state6.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state6.png deleted file mode 100644 index c8c28b2600..0000000000 Binary files a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state6.png and /dev/null differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state7.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state7.png deleted file mode 100644 index 629e4e3154..0000000000 Binary files a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state7.png and /dev/null differ diff --git a/Resources/Textures/Structures/mailbox.rsi/contents.png b/Resources/Textures/Structures/mailbox.rsi/contents.png new file mode 100644 index 0000000000..45fab01257 Binary files /dev/null and b/Resources/Textures/Structures/mailbox.rsi/contents.png differ diff --git a/Resources/Textures/Structures/mailbox.rsi/meta.json b/Resources/Textures/Structures/mailbox.rsi/meta.json index ce3494c3d4..711646c2b3 100644 --- a/Resources/Textures/Structures/mailbox.rsi/meta.json +++ b/Resources/Textures/Structures/mailbox.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "CC-BY-SA-3.0", - "copyright": "Created by meijunkie on Discord, funkystation.org at commit https://github.com/funky-station/funky-station/commit/430be9247ac220367f338c2c1a716a7503b1446d", + "copyright": "Created by meijunkie on Discord, funkystation.org at commit https://github.com/funky-station/funky-station/commit/430be9247ac220367f338c2c1a716a7503b1446d, contents by ScarKy0 (Github)", "size": { "x": 32, "y": 32 @@ -12,6 +12,9 @@ }, { "name": "unlit" + }, + { + "name": "contents" } ] } diff --git a/Resources/Textures/_CP14/Actions/Spells/dimension.rsi/meta.json b/Resources/Textures/_CP14/Actions/Spells/dimension.rsi/meta.json index d32017451d..3fb91a8651 100644 --- a/Resources/Textures/_CP14/Actions/Spells/dimension.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/Spells/dimension.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "All right reserved", - "copyright": "Created by TheShuEd. Shadow step and Shadow grab created by .kreks.", + "copyright": "Created by TheShuEd. Shadow step and Shadow grab created by .kreks. Shadow swap created by TornadoTech.", "states": [ { "name": "demi_arrow" @@ -21,6 +21,9 @@ }, { "name": "shadow_step" + }, + { + "name": "shadow_swap" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/_CP14/Actions/Spells/dimension.rsi/shadow_swap.png b/Resources/Textures/_CP14/Actions/Spells/dimension.rsi/shadow_swap.png new file mode 100644 index 0000000000..aec1dd4740 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/dimension.rsi/shadow_swap.png differ diff --git a/Resources/Textures/_CP14/Actions/Spells/fire.rsi/heat.png b/Resources/Textures/_CP14/Actions/Spells/fire.rsi/heat.png new file mode 100644 index 0000000000..e4c8f54bf8 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/fire.rsi/heat.png differ diff --git a/Resources/Textures/_CP14/Actions/Spells/fire.rsi/meta.json b/Resources/Textures/_CP14/Actions/Spells/fire.rsi/meta.json index ed71b98433..2838006a31 100644 --- a/Resources/Textures/_CP14/Actions/Spells/fire.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/Spells/fire.rsi/meta.json @@ -18,6 +18,9 @@ }, { "name": "tiefling_revenge" + }, + { + "name": "heat" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Actions/Spells/light.rsi/meta.json b/Resources/Textures/_CP14/Actions/Spells/light.rsi/meta.json index 4aa5d154b7..889b53cf41 100644 --- a/Resources/Textures/_CP14/Actions/Spells/light.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/Spells/light.rsi/meta.json @@ -13,6 +13,9 @@ { "name": "signal_light_blue" }, + { + "name": "search_of_life" + }, { "name": "signal_light_red" }, diff --git a/Resources/Textures/_CP14/Actions/Spells/light.rsi/search_of_life.png b/Resources/Textures/_CP14/Actions/Spells/light.rsi/search_of_life.png new file mode 100644 index 0000000000..2b5979bad1 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/light.rsi/search_of_life.png differ diff --git a/Resources/Textures/_CP14/Actions/Spells/meta.rsi/mana_trance.png b/Resources/Textures/_CP14/Actions/Spells/meta.rsi/mana_trance.png new file mode 100644 index 0000000000..25b6cad378 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/meta.rsi/mana_trance.png differ diff --git a/Resources/Textures/_CP14/Actions/Spells/meta.rsi/meta.json b/Resources/Textures/_CP14/Actions/Spells/meta.rsi/meta.json index 93e6c521ce..5f3ba98223 100644 --- a/Resources/Textures/_CP14/Actions/Spells/meta.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/Spells/meta.rsi/meta.json @@ -21,6 +21,9 @@ }, { "name": "mana_gift" + }, + { + "name": "mana_trance" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/cure_dead.png b/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/cure_dead.png new file mode 100644 index 0000000000..60dde68685 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/cure_dead.png differ diff --git a/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/dead_heal_ballade.png b/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/dead_heal_ballade.png new file mode 100644 index 0000000000..7d7662ecb8 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/dead_heal_ballade.png differ diff --git a/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/meta.json b/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/meta.json index a5593df1a7..485d0522ee 100644 --- a/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/Spells/necromancy.rsi/meta.json @@ -9,6 +9,12 @@ "states": [ { "name": "resurrection" + }, + { + "name": "cure_dead" + }, + { + "name": "dead_heal_ballade" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Actions/Spells/physical.rsi/kick_skull.png b/Resources/Textures/_CP14/Actions/Spells/physical.rsi/kick_skull.png new file mode 100644 index 0000000000..04bdab4c52 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/physical.rsi/kick_skull.png differ diff --git a/Resources/Textures/_CP14/Actions/Spells/physical.rsi/meta.json b/Resources/Textures/_CP14/Actions/Spells/physical.rsi/meta.json index d75e4ce1c1..968e8fd278 100644 --- a/Resources/Textures/_CP14/Actions/Spells/physical.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/Spells/physical.rsi/meta.json @@ -12,6 +12,12 @@ }, { "name": "sprint" + }, + { + "name": "sprint_skull" + }, + { + "name": "kick_skull" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Actions/Spells/physical.rsi/sprint_skull.png b/Resources/Textures/_CP14/Actions/Spells/physical.rsi/sprint_skull.png new file mode 100644 index 0000000000..62a38951fb Binary files /dev/null and b/Resources/Textures/_CP14/Actions/Spells/physical.rsi/sprint_skull.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/dimension.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/dimension.png new file mode 100644 index 0000000000..d7ab6151af Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/dimension.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal.png index c59080bf51..1bbc425b76 100644 Binary files a/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal.png and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal2.png new file mode 100644 index 0000000000..c421d61781 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal3.png new file mode 100644 index 0000000000..febc988935 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/heal3.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/light.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light.png index 9c8625db69..90dadf56e4 100644 Binary files a/Resources/Textures/_CP14/Actions/skill_tree.rsi/light.png and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/light2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light2.png new file mode 100644 index 0000000000..753d660c22 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/light3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light3.png new file mode 100644 index 0000000000..23710fed22 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/light3.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/martial.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/martial.png new file mode 100644 index 0000000000..a04674adfa Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/martial.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.json b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.json index 9279964239..606e456397 100644 --- a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.json +++ b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.json @@ -10,20 +10,56 @@ { "name": "atlethic" }, + { + "name": "dimension" + }, { "name": "heal" }, + { + "name": "heal2" + }, + { + "name": "heal3" + }, { "name": "light" }, + { + "name": "light2" + }, + { + "name": "light3" + }, + { + "name": "martial" + }, { "name": "meta" }, + { + "name": "meta2" + }, + { + "name": "meta3" + }, { "name": "pyro" }, + { + "name": "pyro2" + }, + { + "name": "pyro3" + }, { "name": "water" + }, + { + "name": "water2" + }, + { + "name": "water3" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.png index 6cc20d9668..9611ec35ee 100644 Binary files a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.png and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta2.png new file mode 100644 index 0000000000..6cc20d9668 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta3.png new file mode 100644 index 0000000000..a5dfa07c4b Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/meta3.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro2.png new file mode 100644 index 0000000000..ab29eb43a4 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro3.png new file mode 100644 index 0000000000..37ac5e1aa9 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/pyro3.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/water.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water.png index af5f50fad1..a6b7d2f7d8 100644 Binary files a/Resources/Textures/_CP14/Actions/skill_tree.rsi/water.png and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/water2.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water2.png new file mode 100644 index 0000000000..af5f50fad1 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water2.png differ diff --git a/Resources/Textures/_CP14/Actions/skill_tree.rsi/water3.png b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water3.png new file mode 100644 index 0000000000..f485ec04d3 Binary files /dev/null and b/Resources/Textures/_CP14/Actions/skill_tree.rsi/water3.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/equipped-CLOAK.png index fe7325bb08..8e4bf531d5 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/equipped-CLOAK.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/icon.png index 02f7cc4dc7..93a64beb65 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/icon.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/equipped-CLOAK.png new file mode 100644 index 0000000000..ebf3b443ea Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/icon.png new file mode 100644 index 0000000000..cd86745b2a Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/meta.json new file mode 100644 index 0000000000..936e465a96 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Cloak/Roles/Alchemist/alchemist_cloak2.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-CLOAK", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi/equipped-CLOAK.png new file mode 100644 index 0000000000..b47d8bb3f1 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi/icon.png new file mode 100644 index 0000000000..f52ff22d8a Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi/meta.json new file mode 100644 index 0000000000..91784c23bb --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/aristocratic_cloak.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by vladimir.s, modified by jaraten", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-CLOAK", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/equipped-CLOAK.png index a57695ea54..f6ee713b5d 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/equipped-CLOAK.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/icon.png index 0584398c46..4ec70e2686 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/icon.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/meta.json index 049bd400e8..c280ca88d9 100644 --- a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/meta.json +++ b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Created by KBAS5", + "license": "All right reserved", + "copyright": "Created by Jaraten", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/equipped-CLOAK.png index eba4a89e94..f7cd8f499c 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/equipped-CLOAK.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/icon.png index 3fc79bf89d..dd75d31016 100644 Binary files a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/icon.png and b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/meta.json index 049bd400e8..c280ca88d9 100644 --- a/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/meta.json +++ b/Resources/Textures/_CP14/Clothing/Cloak/Roles/General/furcape2.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Created by KBAS5", + "license": "All right reserved", + "copyright": "Created by Jaraten", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/equipped-CLOAK.png new file mode 100644 index 0000000000..7ecca5f4a9 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/icon.png new file mode 100644 index 0000000000..e38628c71a Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/meta.json new file mode 100644 index 0000000000..c280ca88d9 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Cloak/bone_cloak.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "Created by Jaraten", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-CLOAK", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/equipped-CLOAK.png b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/equipped-CLOAK.png new file mode 100644 index 0000000000..2eeab94ba1 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/equipped-CLOAK.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/icon.png new file mode 100644 index 0000000000..05e63c15f7 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/meta.json new file mode 100644 index 0000000000..c280ca88d9 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Cloak/bone_mage_cloak.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "Created by Jaraten", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-CLOAK", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Head/slime_crown.rsi/equipped-HELMET.png b/Resources/Textures/_CP14/Clothing/Head/slime_crown.rsi/equipped-HELMET.png new file mode 100644 index 0000000000..c1e624817c Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Head/slime_crown.rsi/equipped-HELMET.png differ diff --git a/Resources/Textures/_CP14/Clothing/Head/slime_crown.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Head/slime_crown.rsi/icon.png new file mode 100644 index 0000000000..27a666dd30 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Head/slime_crown.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Head/slime_crown.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Head/slime_crown.rsi/meta.json new file mode 100644 index 0000000000..3749eaeea5 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Head/slime_crown.rsi/meta.json @@ -0,0 +1,44 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by paige404", + "size": { + "x": 48, + "y": 48 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-HELMET", + "directions": 4, + "delays": [ + [ + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8 + ], + [ + 0.8, + 0.8, + 0.8, + 0.8 + ] + ] + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..2e2cec1163 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon-open.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon-open.png new file mode 100644 index 0000000000..051371763e Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon-open.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon.png new file mode 100644 index 0000000000..add684784e Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/meta.json b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/meta.json new file mode 100644 index 0000000000..1452f4b3d7 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "icon-open" + }, + { + "name": "open-equipped-OUTERCLOTHING", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/open-equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/open-equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..dd7f960b01 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/green_2.rsi/open-equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..db4c678295 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon-open.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon-open.png new file mode 100644 index 0000000000..1fe2ae2713 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon-open.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon.png new file mode 100644 index 0000000000..4a5a5a8299 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/meta.json b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/meta.json new file mode 100644 index 0000000000..1452f4b3d7 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-OUTERCLOTHING", + "directions": 4 + }, + { + "name": "icon-open" + }, + { + "name": "open-equipped-OUTERCLOTHING", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/open-equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/open-equipped-OUTERCLOTHING.png new file mode 100644 index 0000000000..4712c16428 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/OuterClothing/Roles/General/purple.rsi/open-equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/bone_armor.rsi/equipped-OUTERCLOTHING.png b/Resources/Textures/_CP14/Clothing/OuterClothing/bone_armor.rsi/equipped-OUTERCLOTHING.png index d13b5c5b84..d0de06dc92 100644 Binary files a/Resources/Textures/_CP14/Clothing/OuterClothing/bone_armor.rsi/equipped-OUTERCLOTHING.png and b/Resources/Textures/_CP14/Clothing/OuterClothing/bone_armor.rsi/equipped-OUTERCLOTHING.png differ diff --git a/Resources/Textures/_CP14/Clothing/OuterClothing/bone_armor.rsi/icon.png b/Resources/Textures/_CP14/Clothing/OuterClothing/bone_armor.rsi/icon.png index 5abbd5774a..de1691fd2e 100644 Binary files a/Resources/Textures/_CP14/Clothing/OuterClothing/bone_armor.rsi/icon.png and b/Resources/Textures/_CP14/Clothing/OuterClothing/bone_armor.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..a8e92c1ff0 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/icon.png new file mode 100644 index 0000000000..25cf6ebb95 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/blue_yellow_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..7f71a52815 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/icon.png new file mode 100644 index 0000000000..67b51f8554 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..7a396b479e Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/icon.png new file mode 100644 index 0000000000..00f7fcb862 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_blue_dress2.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..95acdb99e9 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/icon.png new file mode 100644 index 0000000000..1b6b3e187a Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown2_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..a7d9cb88df Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/icon.png new file mode 100644 index 0000000000..3b09be9298 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_brown3_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..5bf3b794e1 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/icon.png new file mode 100644 index 0000000000..9d4bf927de Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..3e4068c9a8 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/icon.png new file mode 100644 index 0000000000..276b2a5371 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_green_yellow_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..4a63f79b5c Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/icon.png new file mode 100644 index 0000000000..416fb29701 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/white_red_blue_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..0706364f75 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/icon.png new file mode 100644 index 0000000000..8b67f7f859 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/meta.json new file mode 100644 index 0000000000..fd65e9ab62 --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Dress/yellow_blue_dress.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..b6e481afe1 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/icon.png new file mode 100644 index 0000000000..ae1572d377 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/meta.json new file mode 100644 index 0000000000..be228e48bf --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/blue_green.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..0900bb2c42 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/icon.png new file mode 100644 index 0000000000..011d047e08 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/meta.json new file mode 100644 index 0000000000..be228e48bf --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/gray.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..310575963b Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/icon.png new file mode 100644 index 0000000000..1f729df940 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/meta.json new file mode 100644 index 0000000000..be228e48bf --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/green_yellow.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/equipped-SHIRT.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/equipped-SHIRT.png new file mode 100644 index 0000000000..59ab615449 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/equipped-SHIRT.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/icon.png b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/icon.png new file mode 100644 index 0000000000..73e6b98d70 Binary files /dev/null and b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/meta.json b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/meta.json new file mode 100644 index 0000000000..be228e48bf --- /dev/null +++ b/Resources/Textures/_CP14/Clothing/Shirt/Roles/General/Shirts/white_brown.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "icon" + }, + { + "name": "equipped-SHIRT", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/icon.png b/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/icon.png new file mode 100644 index 0000000000..4b942c8ae7 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/meta.json b/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/meta.json new file mode 100644 index 0000000000..8db91c82a3 --- /dev/null +++ b/Resources/Textures/_CP14/Effects/Magic/blood_moon_curse.rsi/meta.json @@ -0,0 +1,26 @@ +{ + "version": 1, + "size": { + "x": 48, + "y": 48 + }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by TheShuEd", + "states": [ + { + "name": "icon", + "delays": [ + [ + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2, + 0.2 + ] + ] + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_32icon.rsi/meta.json b/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/meta.json similarity index 50% rename from Resources/Textures/_CP14/Structures/Wallmount/wallmount_32icon.rsi/meta.json rename to Resources/Textures/_CP14/Effects/Magic/pointer.rsi/meta.json index 337ed2a261..84ba7b94b5 100644 --- a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_32icon.rsi/meta.json +++ b/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/meta.json @@ -1,14 +1,14 @@ { "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Created by TheShuEd (Github) ", "size": { - "x": 32, - "y": 32 + "x": 19, + "y": 48 }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by TheShuEd", "states": [ { - "name": "torch" + "name": "pointer" } ] } diff --git a/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/pointer.png b/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/pointer.png new file mode 100644 index 0000000000..b62461f387 Binary files /dev/null and b/Resources/Textures/_CP14/Effects/Magic/pointer.rsi/pointer.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/meta.json b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/meta.json index 21122621e0..8219fbfd64 100644 --- a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/meta.json +++ b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/meta.json @@ -1,124 +1,130 @@ { "version": 1, - "license": "CC-BY-SA-3.0", - "copyright": "taken from tg station at commit https://github.com/tgstation/tgstation/blob/832ae532766d491d91db53746d15b4b55be3f2b0", + "license": "All right reserved", + "copyright": "by TTTomaTTT for CrystallEdge", "size": { - "x": 32, - "y": 32 + "x": 48, + "y": 48 }, "states": [ - { - "name": "stamina6", - "delays": [ - [ - 0.5, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.5 - ] - ] - }, - { - "name": "stamina5", - "delays": [ - [ - 0.5, - 0.2, - 0.2, - 0.2, - 0.2, - 0.5 - ] - ] - }, - { - "name": "stamina4", - "delays": [ - [ - 0.3, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.3 - ] - ] - }, - { - "name": "stamina3", - "delays": [ - [ - 0.3, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.3 - ] - ] - }, - { - "name": "stamina2", - "delays": [ - [ - 0.3, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.3 - ] - ] - }, - { - "name": "stamina1", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - }, - { - "name": "stamina0", - "delays": [ - [ - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1, - 0.1 - ] - ] - } + { + "name": "stamina0", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] ] -} \ No newline at end of file + }, + { + "name": "stamina1", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina2", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina3", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina4", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina5", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + }, + { + "name": "stamina6", + "delays": [ + [ + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12, + 0.12 + ] + ] + } + ] +} diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina0.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina0.png index 10e3e8c956..d5daf3c54b 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina0.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina0.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina1.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina1.png index a34d57cf26..13a8c6a448 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina1.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina1.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina2.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina2.png index a3d263d751..cf6ee3cca4 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina2.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina2.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina3.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina3.png index 356916dfe0..f818b321b6 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina3.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina3.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina4.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina4.png index d0645f4ebd..11242e7056 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina4.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina4.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina5.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina5.png index 46f439dfd5..d86d602222 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina5.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina5.png differ diff --git a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina6.png b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina6.png index 60a536643d..aec2bb6cbc 100644 Binary files a/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina6.png and b/Resources/Textures/_CP14/Interface/Alerts/vanilla/stamina.rsi/stamina6.png differ diff --git a/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/caves.png b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/caves.png new file mode 100644 index 0000000000..4084c01499 Binary files /dev/null and b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/caves.png differ diff --git a/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/grassland_island.png b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/grassland_island.png new file mode 100644 index 0000000000..e0cc99bf55 Binary files /dev/null and b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/grassland_island.png differ diff --git a/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/ice_caves.png b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/ice_caves.png new file mode 100644 index 0000000000..ddf959d6db Binary files /dev/null and b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/ice_caves.png differ diff --git a/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/leaf_maze.png b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/leaf_maze.png new file mode 100644 index 0000000000..4a118dee48 Binary files /dev/null and b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/leaf_maze.png differ diff --git a/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/magma_caves.png b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/magma_caves.png new file mode 100644 index 0000000000..44e850b0bb Binary files /dev/null and b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/magma_caves.png differ diff --git a/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/meta.json b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/meta.json new file mode 100644 index 0000000000..4e58f8877b --- /dev/null +++ b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/meta.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by TheShuEd (Github)", + "states": [ + { + "name": "caves" + }, + { + "name": "grassland_island" + }, + { + "name": "ice_caves" + }, + { + "name": "leaf_maze" + }, + { + "name": "magma_caves" + }, + { + "name": "snow_island" + }, + { + "name": "swamp_caves" + }, + { + "name": "wastelands" + } + ] +} diff --git a/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/snow_island.png b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/snow_island.png new file mode 100644 index 0000000000..69c61346c6 Binary files /dev/null and b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/snow_island.png differ diff --git a/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/swamp_caves.png b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/swamp_caves.png new file mode 100644 index 0000000000..998009cf88 Binary files /dev/null and b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/swamp_caves.png differ diff --git a/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/wastelands.png b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/wastelands.png new file mode 100644 index 0000000000..4f9b3b79eb Binary files /dev/null and b/Resources/Textures/_CP14/Interface/Misc/demiplane_locations.rsi/wastelands.png differ diff --git a/Resources/Textures/_CP14/Interface/Skills/skillpoint.png b/Resources/Textures/_CP14/Interface/Misc/skillpoint.png similarity index 100% rename from Resources/Textures/_CP14/Interface/Skills/skillpoint.png rename to Resources/Textures/_CP14/Interface/Misc/skillpoint.png diff --git a/Resources/Textures/_CP14/Interface/Skills/default.rsi/frame.png b/Resources/Textures/_CP14/Interface/NodeTree/default.rsi/frame.png similarity index 100% rename from Resources/Textures/_CP14/Interface/Skills/default.rsi/frame.png rename to Resources/Textures/_CP14/Interface/NodeTree/default.rsi/frame.png diff --git a/Resources/Textures/_CP14/Interface/Skills/default.rsi/hovered.png b/Resources/Textures/_CP14/Interface/NodeTree/default.rsi/hovered.png similarity index 100% rename from Resources/Textures/_CP14/Interface/Skills/default.rsi/hovered.png rename to Resources/Textures/_CP14/Interface/NodeTree/default.rsi/hovered.png diff --git a/Resources/Textures/_CP14/Interface/Skills/default.rsi/learned.png b/Resources/Textures/_CP14/Interface/NodeTree/default.rsi/learned.png similarity index 100% rename from Resources/Textures/_CP14/Interface/Skills/default.rsi/learned.png rename to Resources/Textures/_CP14/Interface/NodeTree/default.rsi/learned.png diff --git a/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/meta.json b/Resources/Textures/_CP14/Interface/NodeTree/default.rsi/meta.json similarity index 57% rename from Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/meta.json rename to Resources/Textures/_CP14/Interface/NodeTree/default.rsi/meta.json index a0fd4930e0..bc122cc7d0 100644 --- a/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/meta.json +++ b/Resources/Textures/_CP14/Interface/NodeTree/default.rsi/meta.json @@ -1,23 +1,23 @@ { "version": 1, - "license": "CC-BY-SA-4.0", - "copyright": "Created by TheShuEd (Github)", "size": { "x": 48, "y": 48 }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by TheShuEd (Github)", "states": [ { - "name": "antenna", - "directions": 4 + "name": "frame" }, { - "name": "bedheadv2", - "directions": 4 + "name": "hovered" }, { - "name": "doublebun", - "directions": 4 + "name": "selected" + }, + { + "name": "learned" } ] } diff --git a/Resources/Textures/_CP14/Interface/Skills/default.rsi/selected.png b/Resources/Textures/_CP14/Interface/NodeTree/default.rsi/selected.png similarity index 100% rename from Resources/Textures/_CP14/Interface/Skills/default.rsi/selected.png rename to Resources/Textures/_CP14/Interface/NodeTree/default.rsi/selected.png diff --git a/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/center.png b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/center.png new file mode 100644 index 0000000000..94bb9ead9c Binary files /dev/null and b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/center.png differ diff --git a/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/frame.png b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/frame.png new file mode 100644 index 0000000000..a712052bd2 Binary files /dev/null and b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/frame.png differ diff --git a/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/hovered.png b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/hovered.png new file mode 100644 index 0000000000..f48c1bb140 Binary files /dev/null and b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/hovered.png differ diff --git a/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/learned.png b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/learned.png new file mode 100644 index 0000000000..33fee5d214 Binary files /dev/null and b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/learned.png differ diff --git a/Resources/Textures/_CP14/Interface/Skills/default.rsi/meta.json b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/meta.json similarity index 92% rename from Resources/Textures/_CP14/Interface/Skills/default.rsi/meta.json rename to Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/meta.json index 53a598f8d4..e713fe9add 100644 --- a/Resources/Textures/_CP14/Interface/Skills/default.rsi/meta.json +++ b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/meta.json @@ -8,7 +8,7 @@ "copyright": "Created by TheShuEd (Github)", "states": [ { - "name": "available" + "name": "center" }, { "name": "frame" diff --git a/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/selected.png b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/selected.png new file mode 100644 index 0000000000..567ef3c275 Binary files /dev/null and b/Resources/Textures/_CP14/Interface/NodeTree/demiplane_map.rsi/selected.png differ diff --git a/Resources/Textures/_CP14/Interface/Paper/paper_passport.png b/Resources/Textures/_CP14/Interface/Paper/paper_passport.png index 77306e199b..edfa70e5f5 100644 Binary files a/Resources/Textures/_CP14/Interface/Paper/paper_passport.png and b/Resources/Textures/_CP14/Interface/Paper/paper_passport.png differ diff --git a/Resources/Textures/_CP14/Interface/Skills/default.rsi/available.png b/Resources/Textures/_CP14/Interface/Skills/default.rsi/available.png deleted file mode 100644 index 140ff5e4f9..0000000000 Binary files a/Resources/Textures/_CP14/Interface/Skills/default.rsi/available.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/antenna.png b/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/antenna.png deleted file mode 100644 index 43da1e53f1..0000000000 Binary files a/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/antenna.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/bedheadv2.png b/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/bedheadv2.png deleted file mode 100644 index acdc34cbfd..0000000000 Binary files a/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/bedheadv2.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/doublebun.png b/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/doublebun.png deleted file mode 100644 index 4c2c480081..0000000000 Binary files a/Resources/Textures/_CP14/Mobs/Customization/goblin_hair.rsi/doublebun.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Mobs/Customization/tiefling_horns.rsi/horn9.png b/Resources/Textures/_CP14/Mobs/Customization/tiefling_horns.rsi/horn9.png new file mode 100644 index 0000000000..35c214a80f Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Customization/tiefling_horns.rsi/horn9.png differ diff --git a/Resources/Textures/_CP14/Mobs/Customization/tiefling_horns.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Customization/tiefling_horns.rsi/meta.json index 6b447265d8..848823c5fd 100644 --- a/Resources/Textures/_CP14/Mobs/Customization/tiefling_horns.rsi/meta.json +++ b/Resources/Textures/_CP14/Mobs/Customization/tiefling_horns.rsi/meta.json @@ -46,6 +46,10 @@ { "name": "horn8", "directions": 4 + }, + { + "name": "horn9", + "directions": 4 } ] } diff --git a/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/dead.png b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/dead.png new file mode 100644 index 0000000000..01311821b7 Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/dead.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/flyagaric.png b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/flyagaric.png new file mode 100644 index 0000000000..550eeef194 Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/flyagaric.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/meta.json new file mode 100644 index 0000000000..c06aa96040 --- /dev/null +++ b/Resources/Textures/_CP14/Mobs/Monster/flyagaric.rsi/meta.json @@ -0,0 +1,18 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by prazat911 (Discord) resprite by jaraten", + "states": [ + { + "name": "flyagaric", + "directions": 4 + }, + { + "name": "dead" + } + ] +} diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead.png b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead.png new file mode 100644 index 0000000000..c1a791c8ae Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead_cap.png b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead_cap.png new file mode 100644 index 0000000000..5602aa2957 Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/dead_cap.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom.png b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom.png new file mode 100644 index 0000000000..90dea8ade3 Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom_cap.png b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom_cap.png new file mode 100644 index 0000000000..baf1856d27 Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/lumishroom_cap.png differ diff --git a/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/meta.json new file mode 100644 index 0000000000..d684db047b --- /dev/null +++ b/Resources/Textures/_CP14/Mobs/Monster/lumish.rsi/meta.json @@ -0,0 +1,25 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by prazat911 (Discord) resprite by jaraten", + "states": [ + { + "name": "lumishroom", + "directions": 4 + }, + { + "name": "lumishroom_cap", + "directions": 4 + }, + { + "name": "dead" + }, + { + "name": "dead_cap" + } + ] +} diff --git a/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement.rsi/hair.png b/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement.rsi/hair.png new file mode 100644 index 0000000000..df259d8c9f Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement.rsi/hair.png differ diff --git a/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement.rsi/meta.json index 484abdd5d4..8c328d7445 100644 --- a/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement.rsi/meta.json +++ b/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement.rsi/meta.json @@ -26,6 +26,10 @@ "name": "gloves", "directions": 4 }, + { + "name": "hair", + "directions": 4 + }, { "name": "hands", "directions": 4 diff --git a/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement48.rsi/hair.png b/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement48.rsi/hair.png new file mode 100644 index 0000000000..9db8be9716 Binary files /dev/null and b/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement48.rsi/hair.png differ diff --git a/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement48.rsi/meta.json b/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement48.rsi/meta.json index 37a039174a..66a64ab75e 100644 --- a/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement48.rsi/meta.json +++ b/Resources/Textures/_CP14/Mobs/Species/Goblin/displacement48.rsi/meta.json @@ -13,6 +13,10 @@ { "name": "head", "directions": 4 + }, + { + "name": "hair", + "directions": 4 } ] } diff --git a/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png b/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png index 317c759725..f673bcc730 100644 Binary files a/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png and b/Resources/Textures/_CP14/Objects/Bureaucracy/inkwell.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/cutlet.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/cutlet.png index 361251001b..77a7b70a60 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/cutlet.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/cutlet.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/cutlet_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/cutlet_cooked.png index d48d2e8956..50db51c2e4 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/cutlet_cooked.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/cutlet_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/dino_meat1_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/dino_meat1_cooked.png new file mode 100644 index 0000000000..748ad833cc Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/dino_meat1_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/dino_meat2_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/dino_meat2_cooked.png new file mode 100644 index 0000000000..1e889da6d9 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/dino_meat2_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/human_meat1_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/human_meat1_cooked.png new file mode 100644 index 0000000000..cb335bd232 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/human_meat1_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/human_meat2_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/human_meat2_cooked.png new file mode 100644 index 0000000000..0a67262574 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/human_meat2_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/meta.json b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/meta.json index 769e87adc5..8c9437e21a 100644 --- a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "All right reserved", - "copyright": "sheepmeat and sheepmeat_cooked By omsoyk, sheepmeat_slice and sheepmeat_slice_cooked, frog_leg_cooked by TheShuEd, cutlet and cutlet_cooked and meat_slice by Artista.rar, frog_leg, human_meat, dino_meat, fish_meat, rabbit_meat, pig_meat, mole_meat by Max Gab", + "copyright": "sheepmeat and sheepmeat_cooked By omsoyk, sheepmeat_slice and sheepmeat_slice_cooked, frog_leg_cooked by TheShuEd, cutlet and cutlet_cooked and meat_slice by Artista.rar, frog_leg, human_meat, dino_meat, fish_meat, rabbit_meat, pig_meat, mole_meat by Max Gab, rabbit_meat_cooked, pig_meat_cooked, human_meat_cooked, dino_meat_cooked by prazat911 (Discord) and resprite sheepmeat, sheepmeat_cooked, sheepmeat_slice, sheepmeat_slice_cooked, cutlet, cutlet_cooked, meat_slice by prazat911 (Discord)", "size": { "x": 32, "y": 32 @@ -52,12 +52,24 @@ { "name": "human_meat2" }, + { + "name": "human_meat1_cooked" + }, + { + "name": "human_meat2_cooked" + }, { "name": "dino_meat1" }, { "name": "dino_meat2" }, + { + "name": "dino_meat1_cooked" + }, + { + "name": "dino_meat2_cooked" + }, { "name": "fish_meat1" }, @@ -73,6 +85,12 @@ { "name": "rabbit_meat2" }, + { + "name": "rabbit_meat1_cooked" + }, + { + "name": "rabbit_meat2_cooked" + }, { "name": "pig_meat1" }, @@ -91,6 +109,24 @@ { "name": "pig_meat6" }, + { + "name": "pig_meat1_cooked" + }, + { + "name": "pig_meat2_cooked" + }, + { + "name": "pig_meat3_cooked" + }, + { + "name": "pig_meat4_cooked" + }, + { + "name": "pig_meat5_cooked" + }, + { + "name": "pig_meat6_cooked" + }, { "name": "mole_meat1" }, diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat1_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat1_cooked.png new file mode 100644 index 0000000000..cba8502992 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat1_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat2_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat2_cooked.png new file mode 100644 index 0000000000..f84517b609 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat2_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat3_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat3_cooked.png new file mode 100644 index 0000000000..cd29260283 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat3_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat4_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat4_cooked.png new file mode 100644 index 0000000000..533d605a87 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat4_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat5_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat5_cooked.png new file mode 100644 index 0000000000..0f952e6583 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat5_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat6_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat6_cooked.png new file mode 100644 index 0000000000..db128fb845 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/pig_meat6_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/rabbit_meat1_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/rabbit_meat1_cooked.png new file mode 100644 index 0000000000..7c9889afb4 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/rabbit_meat1_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/rabbit_meat2_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/rabbit_meat2_cooked.png new file mode 100644 index 0000000000..51ef0215e9 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/rabbit_meat2_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat.png index 458a754b6e..82ae447fc5 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_cooked.png index a966729e35..7dda6573d5 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_cooked.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice.png index 16098de5fd..9854b8f710 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice2.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice2.png index 960a5ca166..fcf1ba949b 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice2.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice2.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice2_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice2_cooked.png index 68765e5b88..08cf5dee53 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice2_cooked.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice2_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice3.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice3.png index 1422bd5fac..a92721e3f2 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice3.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice3.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice3_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice3_cooked.png index dc8e8746f3..fe3f642e32 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice3_cooked.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice3_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice_cooked.png b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice_cooked.png index 09bb404be9..81f1d0cb7f 100644 Binary files a/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice_cooked.png and b/Resources/Textures/_CP14/Objects/Consumable/Food/meat.rsi/sheepmeat_slice_cooked.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base1.png b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base1.png new file mode 100644 index 0000000000..5ec1b0cbf8 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base1.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base2.png b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base2.png new file mode 100644 index 0000000000..ea26b17ad8 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base2.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base3.png b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base3.png new file mode 100644 index 0000000000..3e0e13aa0b Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/base3.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/meta.json b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/meta.json new file mode 100644 index 0000000000..99aa81d9f2 --- /dev/null +++ b/Resources/Textures/_CP14/Objects/Flora/Farm/cotton.rsi/meta.json @@ -0,0 +1,20 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by TheShuEd", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "base1" + }, + { + "name": "base2" + }, + { + "name": "base3" + } + ] +} diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base1.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base1.png index 308076c7ae..c40d2c5dd7 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base1.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base1.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base2.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base2.png index 75eb4c47ea..0f6c5a7d6c 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base2.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base2.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base3.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base3.png index f505e86472..5661c8211c 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base3.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base3.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base4.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base4.png index 2972130d81..30497114c3 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base4.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base4.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base5.png b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base5.png index 249a61f646..23eeb73a52 100644 Binary files a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base5.png and b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/base5.png differ diff --git a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/meta.json b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/meta.json index d74af1377e..5e14108ff1 100644 --- a/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/Flora/Wild/lumishroom.rsi/meta.json @@ -5,7 +5,7 @@ "y": 32 }, "license": "CC-BY-SA-4.0", - "copyright": "Created by TheShuEd (Github)", + "copyright": "Created by TheShuEd (Github), resprite by jaraten", "states": [ { "name": "base1" diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/meta.json b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/meta.json index 2239e3ce26..0103caf9e3 100644 --- a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/meta.json @@ -22,6 +22,9 @@ { "name": "icon" }, + { + "name": "preview" + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/preview.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/preview.png new file mode 100644 index 0000000000..b51cba529e Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Rapier/metall_rapier.rsi/preview.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT1.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT1.png new file mode 100644 index 0000000000..ed5a92db6d Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT1.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT2.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT2.png new file mode 100644 index 0000000000..5eb7b68b61 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-BELT2.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-NECK.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-NECK.png new file mode 100644 index 0000000000..aa515db0d5 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/equipped-NECK.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/icon.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/icon.png new file mode 100644 index 0000000000..bd25ad4a35 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-left.png new file mode 100644 index 0000000000..7fdf1b11ca Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-left.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-right.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-right.png new file mode 100644 index 0000000000..3c55843bd1 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/inhand-right.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/meta.json b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/meta.json new file mode 100644 index 0000000000..8a6dedae1a --- /dev/null +++ b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/meta.json @@ -0,0 +1,45 @@ +{ + "version": 1, + "size": { + "x": 48, + "y": 48 + }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by iwordoloni (Discord) ", + "states": [ + { + "name": "equipped-BELT1", + "directions": 4 + }, + { + "name": "equipped-BELT2", + "directions": 4 + }, + { + "name": "equipped-NECK", + "directions": 4 + }, + { + "name": "icon" + }, + { + "name": "preview" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + }, + { + "name": "wielded-inhand-left", + "directions": 4 + }, + { + "name": "wielded-inhand-right", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/preview.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/preview.png new file mode 100644 index 0000000000..ada7e2858d Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/preview.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-left.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-left.png new file mode 100644 index 0000000000..15f6491603 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-left.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-right.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-right.png new file mode 100644 index 0000000000..730b1e8bc2 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Skimitar/metall_skimitar.rsi/wielded-inhand-right.png differ diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/meta.json b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/meta.json index 2239e3ce26..0103caf9e3 100644 --- a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/meta.json @@ -22,6 +22,9 @@ { "name": "icon" }, + { + "name": "preview" + }, { "name": "inhand-left", "directions": 4 diff --git a/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/preview.png b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/preview.png new file mode 100644 index 0000000000..1c2d968844 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/ModularTools/Blade/Sword/metall_sword.rsi/preview.png differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Farming/seeds.rsi/cotton.png b/Resources/Textures/_CP14/Objects/Specific/Farming/seeds.rsi/cotton.png new file mode 100644 index 0000000000..01b89b504c Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Farming/seeds.rsi/cotton.png differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Farming/seeds.rsi/meta.json b/Resources/Textures/_CP14/Objects/Specific/Farming/seeds.rsi/meta.json index fe47cdd106..d94ecef9a5 100644 --- a/Resources/Textures/_CP14/Objects/Specific/Farming/seeds.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/Specific/Farming/seeds.rsi/meta.json @@ -39,6 +39,9 @@ }, { "name": "sage" + }, + { + "name": "cotton" } ] } \ No newline at end of file diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium.png new file mode 100644 index 0000000000..94e26d9d33 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium.png differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium1.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium1.png deleted file mode 100644 index 7de9fc37f2..0000000000 Binary files a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium1.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium2.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium2.png deleted file mode 100644 index 2b5935848a..0000000000 Binary files a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium2.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium3.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium3.png deleted file mode 100644 index 87a74db46f..0000000000 Binary files a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium3.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium_connector.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium_connector.png index f7d2f44e4c..179cea0e25 100644 Binary files a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium_connector.png and b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/medium_connector.png differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/meta.json b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/meta.json index 62c74e8f0b..265b8b03ba 100644 --- a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/meta.json +++ b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/meta.json @@ -5,28 +5,10 @@ "y": 32 }, "license": "CC-BY-SA-3.0", - "copyright": "Created by TheShuEd (Github) ", + "copyright": "Created by TheShuEd (Github)", "states": [ { - "name": "small1" - }, - { - "name": "small2" - }, - { - "name": "small3" - }, - { - "name": "small_connector" - }, - { - "name": "medium1" - }, - { - "name": "medium2" - }, - { - "name": "medium3" + "name": "medium" }, { "name": "medium_connector" diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small1.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small1.png deleted file mode 100644 index 480755d599..0000000000 Binary files a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small1.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small2.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small2.png deleted file mode 100644 index 0165769c62..0000000000 Binary files a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small2.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small3.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small3.png deleted file mode 100644 index f2939d1c9f..0000000000 Binary files a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small3.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small_connector.png b/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small_connector.png deleted file mode 100644 index c6209173e0..0000000000 Binary files a/Resources/Textures/_CP14/Objects/Specific/Thaumaturgy/crystal.rsi/small_connector.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/inhand-left.png b/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/inhand-left.png new file mode 100644 index 0000000000..2db1f7572d Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/inhand-left.png differ diff --git a/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/inhand-right.png b/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/inhand-right.png new file mode 100644 index 0000000000..1091c04bfc Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/inhand-right.png differ diff --git a/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/meta.json b/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/meta.json new file mode 100644 index 0000000000..788dcdab99 --- /dev/null +++ b/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/meta.json @@ -0,0 +1,22 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by 4g10w", + "size": { + "x": 32, + "y": 32 + }, + "states": [ + { + "name": "screwdriver" + }, + { + "name": "inhand-left", + "directions": 4 + }, + { + "name": "inhand-right", + "directions": 4 + } + ] +} diff --git a/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/screwdriver.png b/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/screwdriver.png new file mode 100644 index 0000000000..da028faa84 Binary files /dev/null and b/Resources/Textures/_CP14/Objects/Tools/screwdriver.rsi/screwdriver.png differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/coord.png b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/coord.png new file mode 100644 index 0000000000..91e99aa623 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/coord.png differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core.png b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core.png deleted file mode 100644 index f478826b2e..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core1.png b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core1.png new file mode 100644 index 0000000000..bfc63313c5 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core1.png differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core2.png b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core2.png new file mode 100644 index 0000000000..585da487cb Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core2.png differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core3.png b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core3.png new file mode 100644 index 0000000000..493be52a36 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core3.png differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core4.png b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core4.png new file mode 100644 index 0000000000..84e8192b06 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/core4.png differ diff --git a/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/meta.json b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/meta.json index d72cd21664..cae606cfd3 100644 --- a/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/meta.json +++ b/Resources/Textures/_CP14/Structures/Dungeon/demiplan_rift_core.rsi/meta.json @@ -1,14 +1,23 @@ { "version": 1, "license": "CC0-1.0", - "copyright": "Core created by TheShuEd, connective created by omsoyk", + "copyright": "core1 core2 core3 core4 created by TheShuEd, connective created by omsoyk", "size": { "x": 32, "y": 32 }, "states": [ { - "name": "core" + "name": "core1" + }, + { + "name": "core2" + }, + { + "name": "core3" + }, + { + "name": "core4" }, { "name": "connective", @@ -26,6 +35,21 @@ 0.15 ] ] + }, + { + "name": "coord", + "delays": [ + [ + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3, + 0.3 + ] + ] } ] } diff --git a/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-1.png b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-1.png new file mode 100644 index 0000000000..b365150f31 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-1.png differ diff --git a/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-2.png b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-2.png new file mode 100644 index 0000000000..a6708bd52d Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-2.png differ diff --git a/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-3.png b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-3.png new file mode 100644 index 0000000000..e5c2817c4c Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-3.png differ diff --git a/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-4.png b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-4.png new file mode 100644 index 0000000000..1ab58ba75f Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-4.png differ diff --git a/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-5.png b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-5.png new file mode 100644 index 0000000000..7e224eeb23 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-5.png differ diff --git a/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-6.png b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-6.png new file mode 100644 index 0000000000..9eeb5ca5dd Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/grow-6.png differ diff --git a/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/meta.json b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/meta.json new file mode 100644 index 0000000000..205c4b691c --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Flora/Farm/cotton.rsi/meta.json @@ -0,0 +1,29 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk (Discord)", + "size": { + "x": 48, + "y": 48 + }, + "states": [ + { + "name": "grow-1" + }, + { + "name": "grow-2" + }, + { + "name": "grow-3" + }, + { + "name": "grow-4" + }, + { + "name": "grow-5" + }, + { + "name": "grow-6" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/base.png b/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/base.png new file mode 100644 index 0000000000..51149cbfc8 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/base.png differ diff --git a/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/burned.png b/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/burned.png new file mode 100644 index 0000000000..80ceba9654 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/burned.png differ diff --git a/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/fire.png b/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/fire.png new file mode 100644 index 0000000000..75efd507e7 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/fire.png differ diff --git a/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/meta.json b/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/meta.json new file mode 100644 index 0000000000..1c6a3d47ef --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Furniture/torch_floor.rsi/meta.json @@ -0,0 +1,27 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "Created by TheShuEd, fire sprite from Agoichi", + "size": { + "x": 32, + "y": 48 + }, + "states": [ + { + "name": "base" + }, + { + "name": "fire", + "delays": [ + [ + 0.3, + 0.3, + 0.3 + ] + ] + }, + { + "name": "burned" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Furniture/wooden_bed.rsi/icon.png b/Resources/Textures/_CP14/Structures/Furniture/wooden_bed.rsi/icon.png index aedac7a0fb..4f9e6143d3 100644 Binary files a/Resources/Textures/_CP14/Structures/Furniture/wooden_bed.rsi/icon.png and b/Resources/Textures/_CP14/Structures/Furniture/wooden_bed.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Structures/Furniture/wooden_bed.rsi/meta.json b/Resources/Textures/_CP14/Structures/Furniture/wooden_bed.rsi/meta.json index 9784f1517d..44c82adf14 100644 --- a/Resources/Textures/_CP14/Structures/Furniture/wooden_bed.rsi/meta.json +++ b/Resources/Textures/_CP14/Structures/Furniture/wooden_bed.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "All right reserved", - "copyright": "Created by jaraten(discord) , modified by vladimir.s", + "copyright": "Created by jaraten(discord) , modified by vladimir.s & resprite by omsoyk", "size": { "x": 32, "y": 32 diff --git a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/furnace.png b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/furnace.png deleted file mode 100644 index c05d9e84fe..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/furnace.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/meta.json b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/meta.json index c615c6282e..26e2b611df 100644 --- a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/meta.json +++ b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/meta.json @@ -1,7 +1,7 @@ { "version": 1, "license": "All right reserved", - "copyright": "Created by jaraten(discord) , modified by vladimir.s. Cooking table by Max Gab", + "copyright": "Created by jaraten(discord), modified by vladimir.s. Cooking table by Max Gab, research_table by TheShuEd(github)", "size": { "x": 48, "y": 48 @@ -20,7 +20,7 @@ "name": "sewing_table" }, { - "name": "furnace" + "name": "research_table" } ] } diff --git a/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/research_table.png b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/research_table.png new file mode 100644 index 0000000000..3f7725e01f Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Furniture/workbench.rsi/research_table.png differ diff --git a/Resources/Textures/_CP14/Structures/Specific/Farming/well.rsi/icon.png b/Resources/Textures/_CP14/Structures/Specific/Farming/well.rsi/icon.png new file mode 100644 index 0000000000..23f5d0bbb7 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Farming/well.rsi/icon.png differ diff --git a/Resources/Textures/_CP14/Structures/Specific/Farming/well.rsi/meta.json b/Resources/Textures/_CP14/Structures/Specific/Farming/well.rsi/meta.json new file mode 100644 index 0000000000..45007d99a5 --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Specific/Farming/well.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "CC-BY-SA-4.0", + "copyright": "Created by omsoyk", + "size": { + "x": 64, + "y": 64 + }, + "states": [ + { + "name": "icon" + } + ] +} diff --git a/Resources/Textures/_CP14/Structures/Specific/Guard/guard_bell.rsi/base.png b/Resources/Textures/_CP14/Structures/Specific/Guard/guard_bell.rsi/base.png new file mode 100644 index 0000000000..45151c94db Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Guard/guard_bell.rsi/base.png differ diff --git a/Resources/Textures/_CP14/Structures/Specific/Guard/guard_bell.rsi/meta.json b/Resources/Textures/_CP14/Structures/Specific/Guard/guard_bell.rsi/meta.json new file mode 100644 index 0000000000..28fe16ddcc --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Specific/Guard/guard_bell.rsi/meta.json @@ -0,0 +1,14 @@ +{ + "version": 1, + "license": "All right reserved", + "copyright": "Created by Militore for CrystallEdge", + "size": { + "x": 32, + "y": 48 + }, + "states": [ + { + "name": "base" + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi/dimension_core.png b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi/dimension_core.png new file mode 100644 index 0000000000..344a0c134d Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi/dimension_core.png differ diff --git a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi/meta.json b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi/meta.json index 5840b27729..86ba531bc7 100644 --- a/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi/meta.json +++ b/Resources/Textures/_CP14/Structures/Specific/Thaumaturgy/energy_monolith_big.rsi/meta.json @@ -10,6 +10,9 @@ { "name": "dimension" }, + { + "name": "dimension_core" + }, { "name": "frame" } diff --git a/Resources/Textures/_CP14/Structures/Wallmount/TODO - DELETE THIS WALLMOUNT FOLDER.txt b/Resources/Textures/_CP14/Structures/Wallmount/TODO - DELETE THIS WALLMOUNT FOLDER.txt new file mode 100644 index 0000000000..d25dd3fcec --- /dev/null +++ b/Resources/Textures/_CP14/Structures/Wallmount/TODO - DELETE THIS WALLMOUNT FOLDER.txt @@ -0,0 +1 @@ +Эта папка не должна существовать, все ее содержимое должно быть разбросано по другим папкам. Картины - декорации, полки - фурнитура. \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_32icon.rsi/torch.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_32icon.rsi/torch.png deleted file mode 100644 index 542701e6cf..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_32icon.rsi/torch.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal1.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal1.png deleted file mode 100644 index 9835d85bd1..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal1.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal2.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal2.png deleted file mode 100644 index 3d0a8d3840..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal2.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal3.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal3.png deleted file mode 100644 index 36e0bc53f0..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/crystal3.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json deleted file mode 100644 index 34f9974994..0000000000 --- a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_crystal.rsi/meta.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "version": 1, - "license": "All right reserved", - "copyright": "By TheShuEd", - "size": { - "x": 32, - "y": 96 - }, - "states": [ - { - "name": "crystal1", - "directions": 4 - }, - { - "name": "crystal2", - "directions": 4 - }, - { - "name": "crystal3", - "directions": 4 - } - ] -} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards.png deleted file mode 100644 index f82732c05f..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards2.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards2.png deleted file mode 100644 index 0ed914e480..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards2.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards3.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards3.png deleted file mode 100644 index bf82782525..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards3.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards4.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards4.png deleted file mode 100644 index 5cafb12731..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/boards4.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/vines.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/vines.png deleted file mode 100644 index edaafd48b6..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/vines.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web.png deleted file mode 100644 index c2706184db..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web2.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web2.png deleted file mode 100644 index a9acbb8e89..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web2.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web3.png b/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web3.png deleted file mode 100644 index ddfb3ca564..0000000000 Binary files a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/web3.png and /dev/null differ diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/full.png b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/full.png new file mode 100644 index 0000000000..84ee37aaea Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/full.png differ diff --git a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/meta.json b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/meta.json similarity index 52% rename from Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/meta.json rename to Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/meta.json index 57d539a1e6..7b0d453855 100644 --- a/Resources/Textures/_CP14/Structures/Wallmount/wallmount_decor.rsi/meta.json +++ b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/meta.json @@ -1,43 +1,46 @@ { "version": 1, - "license": "All right reserved", - "copyright": "By jaraten(discord), modified by TheShuEd", "size": { "x": 32, - "y": 96 + "y": 64 }, + "license": "CC-BY-SA-4.0", + "copyright": "Created by TheShuEd (Github)", "states": [ { - "name": "boards", + "name": "wall0", "directions": 4 }, { - "name": "boards2", + "name": "wall1", "directions": 4 }, { - "name": "boards3", + "name": "wall2", "directions": 4 }, { - "name": "boards4", + "name": "wall3", "directions": 4 }, { - "name": "web", + "name": "wall4", "directions": 4 }, { - "name": "web2", + "name": "wall5", "directions": 4 }, { - "name": "web3", + "name": "wall6", "directions": 4 }, { - "name": "vines", + "name": "wall7", "directions": 4 + }, + { + "name": "full" } ] -} +} \ No newline at end of file diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall0.png b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall0.png new file mode 100644 index 0000000000..b01f72a742 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall0.png differ diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall1.png b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall1.png new file mode 100644 index 0000000000..83e0ccdba0 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall1.png differ diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall2.png b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall2.png new file mode 100644 index 0000000000..df046cc01d Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall2.png differ diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall3.png b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall3.png new file mode 100644 index 0000000000..6ce860814e Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall3.png differ diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall4.png b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall4.png new file mode 100644 index 0000000000..33511d3d4d Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall4.png differ diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall5.png b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall5.png new file mode 100644 index 0000000000..d52e51992a Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall5.png differ diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall6.png b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall6.png new file mode 100644 index 0000000000..677ab12e3d Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall6.png differ diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall7.png b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall7.png new file mode 100644 index 0000000000..4e36466b91 Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_dimensit.rsi/wall7.png differ diff --git a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_stone_silver.rsi/meta.json b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_stone_silver.rsi/meta.json index d3bee965f2..7b0d453855 100644 --- a/Resources/Textures/_CP14/Structures/Walls/Natural/cave_stone_silver.rsi/meta.json +++ b/Resources/Textures/_CP14/Structures/Walls/Natural/cave_stone_silver.rsi/meta.json @@ -5,7 +5,7 @@ "y": 64 }, "license": "CC-BY-SA-4.0", - "copyright": "Created by TheShuEd (Discord) ", + "copyright": "Created by TheShuEd (Github)", "states": [ { "name": "wall0", diff --git a/Resources/clientCommandPerms.yml b/Resources/clientCommandPerms.yml index cbe654e557..9d183a3f8c 100644 --- a/Resources/clientCommandPerms.yml +++ b/Resources/clientCommandPerms.yml @@ -38,6 +38,7 @@ - replay_stop - replay_load - saveconfig + - chatwindow - Flags: DEBUG Commands: @@ -84,3 +85,7 @@ - uploadfile - loadprototype - uploadfolder + +- Flags: ADMINCHAT + Commands: + - achatwindow diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index cd766b2774..dbfd31c3c6 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -559,6 +559,46 @@ binds: - function: Hotbar9 type: State key: Num9 +- function: HotbarShift0 + type: State + key: Num0 + mod1: Shift +- function: HotbarShift1 + type: State + key: Num1 + mod1: Shift +- function: HotbarShift2 + type: State + key: Num2 + mod1: Shift +- function: HotbarShift3 + type: State + key: Num3 + mod1: Shift +- function: HotbarShift4 + type: State + key: Num4 + mod1: Shift +- function: HotbarShift5 + type: State + key: Num5 + mod1: Shift +- function: HotbarShift6 + type: State + key: Num6 + mod1: Shift +- function: HotbarShift7 + type: State + key: Num7 + mod1: Shift +- function: HotbarShift8 + type: State + key: Num8 + mod1: Shift +- function: HotbarShift9 + type: State + key: Num9 + mod1: Shift - function: MappingUnselect type: State key: MouseRight diff --git a/Resources/map_attributions.txt b/Resources/map_attributions.txt index 73e6d1ea8f..19bff17e8c 100644 --- a/Resources/map_attributions.txt +++ b/Resources/map_attributions.txt @@ -60,3 +60,6 @@ - files: ["convex.yml"] authors: Spacemann + +- file: ["amber.yml"] + authors: Southbridge, Flipsie27 diff --git a/Resources/migration.yml b/Resources/migration.yml index 44d4f2b13f..1530d6c5cf 100644 --- a/Resources/migration.yml +++ b/Resources/migration.yml @@ -118,7 +118,7 @@ CP14DungeonExitAutoLink: CP14LaddersUpStoneAutoLink CP14BaseBroom: null #2024-15-12 -CP14DemiplanKey: CP14DemiplaneKeyT1 +CP14DemiplanKey: null CP14SpawnerExpeditionLootCommon: CP14SpawnerDemiplaneLootT1 #2025-06-01 @@ -147,29 +147,6 @@ CP14PlateIron: CP14Plate CP14BaseLightHammer: CP14ModularIronHammer CP14BaseBattleHammer: CP14ModularIronHammer -#2025-28-01 -CP14CrystalRubiesSmall: CP14CrystalFire -CP14CrystalRubiesMedium: CP14CrystalFire -CP14CrystalRubiesBig: CP14CrystalFire -CP14CrystalTopazesSmall: CP14CrystalAir -CP14CrystalTopazesMedium: CP14CrystalAir -CP14CrystalTopazesBig: CP14CrystalAir -CP14CrystalEmeraldsSmall: CP14CrystalOrder -CP14CrystalEmeraldsMedium: CP14CrystalOrder -CP14CrystalEmeraldsBig: CP14CrystalOrder -CP14CrystalSapphiresSmall: CP14CrystalWater -CP14CrystalSapphiresMedium: CP14CrystalWater -CP14CrystalSapphiresBig: CP14CrystalWater -CP14CrystalAmethystsSmall: CP14CrystalChaos -CP14CrystalAmethystsMedium: CP14CrystalChaos -CP14CrystalAmethystsBig: CP14CrystalChaos -CP14CrystalDiamondsSmall: CP14CrystalAir -CP14CrystalDiamondsMedium: CP14CrystalAir -CP14CrystalDiamondsBig: CP14CrystalAir - -CP14QuartzCrystal: CP14CrystalEmpty -CP14QuartzShard: CP14CrystalShardBase - #2025-30-01 CP14OreCopper: CP14OreCopper1 CP14OreIron: CP14OreIron1 @@ -199,34 +176,6 @@ CP14Crossbolt: CP14CrossboltIron #2025-26-02 CP14BookImperialLawsHandBook: CP14GuidebookImperialLaws -#2025-28-02 -CP14CrystalSmall: CP14CrystalEmpty -CP14CrystalMedium: CP14CrystalEmpty -CP14CrystalBig: CP14CrystalEmpty -CP14CrystalElementalWaterSmall: CP14CrystalWater -CP14CrystalElementalWaterMedium: CP14CrystalWater -CP14CrystalElementalWaterBig: CP14CrystalWater -CP14CrystalElementalHealingSmall: CP14CrystalOrder -CP14CrystalElementalHealingMedium: CP14CrystalOrder -CP14CrystalElementalHealingBig: CP14CrystalOrder -CP14CrystalElementalFireSmall: CP14CrystalFire -CP14CrystalElementalFireMedium: CP14CrystalFire -CP14CrystalElementalFireBig: CP14CrystalFire -CP14CrystalElementalLightSmall: CP14CrystalAir -CP14CrystalElementalLightMedium: CP14CrystalAir -CP14CrystalElementalLightBig: CP14CrystalAir -CP14CrystalElementalElectricSmall: CP14CrystalAir -CP14CrystalElementalElectricMedium: CP14CrystalAir -CP14CrystalElementalElectricBig: CP14CrystalAir -CP14CrystalElementalDarknessSmall: CP14CrystalChaos -CP14CrystalElementalDarknessMedium: CP14CrystalChaos -CP14CrystalElementalDarknessBig: CP14CrystalChaos - -CP14CrystalShardHealing: CP14CrystalShardOrder -CP14CrystalShardLight: CP14CrystalShardAir -CP14CrystalShardElectric: CP14CrystalShardAir -CP14CrystalShardDarkness: CP14CrystalShardChaos - CP14AlchemyNormalizer: CP14AlchemySolutionCleaner CP14VialSmallBloodFlowerSap: CP14VialSmall CP14VialSmallAgaricMushroom: CP14VialSmall @@ -315,7 +264,7 @@ CP14FenceWoodSmallCorner: CP14FenceWooden CP14FenceWoodSmallGate: CP14FenceGateWooden CP14FenceIronGrilleStraight: CP14FenceBigIron CP14FenceIronGrilleGate: CP14FenceGateBigIron -CP14FenceIronGrilleGateGuard: CP14FenceGateBigIronGuard +CP14FenceIronGrilleGateGuard: CP14FenceGateBigIronGuardBarracks CP14FenceIronGrilleGateGuildmaster: CP14FenceGateBigIronGuildmaster CP14FenceIronGrilleGateDemiplaneCrystal: CP14FenceGateBigIronDemiplaneCrystal CP14FenceIronGrilleWindowStraight: CP14FenceWindowIron @@ -337,6 +286,48 @@ CP14Nail1: null CP14Nail20: null CP14Nail50: null +CP14WallmountCrystalDiamonds: null +CP14WallmountCrystalAmethysts: null +CP14WallmountCrystalSapphires: null +CP14WallmountCrystalEmeralds: null +CP14WallmountCrystalTopazes: null +CP14WallmountCrystalRubies: null + +CP14CrystalShardBase: CP14CrystalShardQuartz +CP14CrystalShardChaos: CP14CrystalShardQuartz +CP14CrystalShardEarth: CP14CrystalShardQuartz +CP14CrystalShardFire: CP14CrystalShardQuartz +CP14CrystalShardWater: CP14CrystalShardQuartz +CP14CrystalShardAir: CP14CrystalShardQuartz +CP14CrystalShardOrder: CP14CrystalShardQuartz + +CP14CrystalEmpty: CP14CrystalQuartz +CP14CrystalEarth: CP14CrystalQuartz +CP14CrystalFire: CP14CrystalQuartz +CP14CrystalWater: CP14CrystalQuartz +CP14CrystalAir: CP14CrystalQuartz +CP14CrystalOrder: CP14CrystalQuartz +CP14CrystalChaos: CP14CrystalQuartz + +CP14EnergyCrystalSmallEmpty: CP14EnergyCrystalMediumEmpty +CP14EnergyCrystalSmall: CP14EnergyCrystalMedium + +#2025-05-05 +CP14DemiplaneKeyT1: null +CP14DemiplaneKeyT2: null + +#2025-20-05 +CP14KeyGuardEntrance: CP14KeyGuardBarracks +CP14KeyGuard: CP14KeyGuardBarracks +CP14KeyGuardWeaponStorage: null +CP14IronDoorGuard: CP14IronDoorGuardBarracks +CP14IronDoorGuardWeaponStorage: null +CP14IronDoorWindowedGuardEntrance: CP14IronDoorGuardBarracks +CP14IronDoorWindowedMirroredGuardEntrance: CP14IronDoorGuardBarracks +CP14FenceGateBigIronGuard: CP14FenceGateBigIronGuardBarracks + + + # <---> CrystallEdge migration zone end @@ -878,20 +869,23 @@ LightTree04: LightTree LightTree05: LightTree LightTree06: LightTree -#2024-12-28 +# 2024-12-28 DrinkIrishCarBomb: DrinkIrishSlammer -#2025-01-06 +# 2025-01-06 ClothingMaskSexyClown: ClothingMaskBlushingClown ClothingMaskSexyMime: ClothingMaskBlushingMime # 2025-01-27 FoodCondimentPacketFrostoil: FoodCondimentPacketColdsauce -#2025-02-05 +# 2025-02-05 WeaponSubMachineGunVector: null WeaponSubMachineGunVectorRubber: null +# 2025-02-11 +WallShuttleInterior: WallShuttle + # 2025-02-20 MagazineBoxAntiMaterielBig: null MagazineBoxCaselessRifle10x24: null @@ -917,3 +911,27 @@ PaxChemistryBottle: ChemistryBottlePax MuteToxinChemistryBottle: ChemistryBottleMuteToxin LeadChemistryBottle: ChemistryBottleLead ToxinChemistryBottle: ChemistryBottleToxin + +# 2025-03-29 +ClothingBackpackDuffelSyndicateRaidBundle: ClothingBackpackSyndicateRaidBundle + +# 2025-04-14 +MailRobustToolsSpam: MailSpamLetter +MailNanotrasenSpam: MailSpamLetter +MailSyndicateSpam: MailSpamLetter +MailAlternativeDimensionSpam: MailSpamLetter +MailNarsieCultSpam: MailSpamLetter +MailRageCageSpam: MailSpamLetter +MailVoyageAdvertisementSpam: MailSpamLetter +MailScienceSpiderClanSpam: MailSpamLetter +MailAllAccessSpam: MailSpamLetter +MailCentcommRetributionSpam: MailSpamLetter +MailEvilLizardSpam: MailSpamLetter +MailParentsNeedMoneySpam: MailSpamLetter + +# 2025-04-15 +SimpleXenoArtifact: ComplexXenoArtifact +MediumXenoArtifact: ComplexXenoArtifact +SimpleXenoArtifactItem: ComplexXenoArtifactItem +MediumXenoArtifactItem: ComplexXenoArtifactItem +VariedXenoArtifactItem: ComplexXenoArtifactItem diff --git a/RobustToolbox b/RobustToolbox index 588c46273e..03f8d4d3e0 160000 --- a/RobustToolbox +++ b/RobustToolbox @@ -1 +1 @@ -Subproject commit 588c46273ed7c78342c9d9ff4d2215d494e3133e +Subproject commit 03f8d4d3e047dfbb8841cf7f40a66422b3b0dbb4 diff --git a/signatures/version1/cla.json b/signatures/version1/cla.json index 385c45ec33..7fb4bf779c 100644 --- a/signatures/version1/cla.json +++ b/signatures/version1/cla.json @@ -151,6 +151,46 @@ "created_at": "2025-04-28T15:27:03Z", "repoId": 778936029, "pullRequestNo": 1242 + }, + { + "name": "4g10w", + "id": 209953361, + "comment_id": 2848212973, + "created_at": "2025-05-02T22:22:19Z", + "repoId": 778936029, + "pullRequestNo": 1253 + }, + { + "name": "paige404", + "id": 59348003, + "comment_id": 2862240326, + "created_at": "2025-05-08T08:40:36Z", + "repoId": 778936029, + "pullRequestNo": 1257 + }, + { + "name": "DeLTaAlarm0", + "id": 212058224, + "comment_id": 2889135851, + "created_at": "2025-05-18T18:15:50Z", + "repoId": 778936029, + "pullRequestNo": 1275 + }, + { + "name": "PhantornRU", + "id": 41479614, + "comment_id": 2889843902, + "created_at": "2025-05-19T07:00:57Z", + "repoId": 778936029, + "pullRequestNo": 1281 + }, + { + "name": "TheKittehJesus", + "id": 29379890, + "comment_id": 2895445816, + "created_at": "2025-05-20T18:35:20Z", + "repoId": 778936029, + "pullRequestNo": 1288 } ] } \ No newline at end of file